WCF一个服务或多个服务

时间:2009-07-23 17:57:47

标签: wcf

我是设置WCF的新手,我已将它放在我的项目中,但我在我的一个WCF项目中有5个不同的“服务”,我想知道我是否正在做正确的事情。我现在的服务是1-1到我的数据库表。我最终得到了类似的东西:

public class Projects : IProjects
{
    public List<Project> GetAll()
    {
        return (from p in Connection.Data.Projects
                select new Project {ID = p.id, Name = p.name}).ToList();
    }

    public Project GetByID(int id)
    {
        return (from p in Connection.Data.Projects
                where p.id == id
                select new Project {ID = p.id, Name = p.name}).First();
    }

    public Project AddProject(string name)
    {
        var project = new Data.Projects {name = name};
        Connection.Data.AddToProjects(project);
        Connection.Data.SaveChanges();

        return new Project {ID = project.id, Name = project.name};
    }

    public void DeleteProject(int id)
    {
        var project = (from p in Connection.Data.Projects
                       where p.id == id
                       select new Project {ID = p.id, Name = p.name}).First();

        Connection.Data.DeleteObject(project);
        Connection.Data.SaveChanges();
    }
}

我的项目中的每个表都有类似的类。我是否应该找到一种方法来使用与子类的1个服务连接或将其保存为每个表1个服务类?

1 个答案:

答案 0 :(得分:8)

“这取决于!” :-)所有IT和编程问题的标准答案: - )

我认为拥有这5项独立服务没有任何问题 - 我不会通过将它们合并为一项大型服务来获得任何收益,我会说。我宁愿将它们分开并“精益求精”。

如果您有五个单独的服务,您还可以分别管理每个服务的访问权限,例如:让某些用​​户组使用一种服务,而不是另一种服务。

再说一遍:我认为你做得很好 - 我没有看到任何令人信服的理由或从拥有一个巨大的服务而不是五个更小,更灵活的服务中受益。

来想一想 - 我可能建议的唯一真正的改变是尝试设计你的服务,使它们与你的应用程序想要做的事情更紧密地匹配(即你期望你的应用程序以及你的服务处理的操作),而不是将它们与数据库建立得太近。尝试思考“面向任务”或操作方面,而不是他们将存储数据的底层商店。

马克