【问题标题】:WCF one service or multiple servicesWCF 一项服务或多项服务
【发布时间】:2009-07-24 02:03:18
【问题描述】:

我是设置 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 个服务类?

【问题讨论】:

    标签: wcf


    【解决方案1】:

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

    我认为拥有这 5 个独立的服务没有任何问题 - 我会说,将它们全部合并成一个大服务并没有真正获得任何好处。我更愿意将它们分开并“精益求精”。

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

    再次重申:我认为你做得很好 - 我看不出有任何令人信服的理由或受益于拥有一项大型服务而不是拥有五项更小、更灵活的服务。

    想一想 - 我可能建议的唯一真正改变是尝试设计您的服务,以便它们更接近您的应用想要做的事情(即您希望您的应用执行的操作以及您的服务要处理的操作) ),而不是将它们建模得太接近数据库。尝试考虑“面向任务”或操作,而不是他们将存储数据的底层存储。

    马克

    【讨论】:

    • 同意基于任务的方法。最好不要将服务视为存储库,而应将其视为 IMO 用例控制器。我要指出,尽管拥有 5 个独立的服务可能是更好的封装,但它有时确实会增加配置/维护/部署开销。并非总是如此,但值得牢记。
    猜你喜欢
    • 2013-06-29
    • 1970-01-01
    • 1970-01-01
    • 2013-07-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多