WCF 一项服务或多项服务

标签 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 个服务类?

最佳答案

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

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

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

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

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

马克

关于WCF 一项服务或多项服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1173438/

相关文章:

wcf - 在单个端口上托管多个 TCP WCF 服务端点

c# - 在 WCF 4.X 中配置 netTcpBinding 的正确方法是什么

silverlight - 从 Silverlight 4 调用 https WCF 服务仅适用于 fiddler 和 VS2010

c# - 使用 JSON.NET 序列化公共(public)属性

c# - 将值传递给 ObjectParameter 变量

c# - Task.Delay 值得取消吗?

wcf - MVC 中的消息传递工作流

c# - C# 中的线程上下文到底是什么?

c# - 在 .NET 4.5 或更高版本中使用 WCF 连接到远程 JSON/XML REST 服务+

c# - 将多个参数发布到 WCF 服务