WCF一个服务或多个服务

Eri*_*ood 8 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();
    }
}
Run Code Online (Sandbox Code Playgroud)

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

mar*_*c_s 8

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

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

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

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

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