c# - wcf 决定 : one service multiple contracts or many services

标签 c# wcf architecture

我正在使用 .NET 4 为客户创建一个小型客户端服务器应用程序。我应该创建一个实现多个契约(Contract)(IInvoice、IPurchase、ISalesOrder 等)的巨型服务,还是应该创建多个服务,每个服务在多个端口上运行一个契约(Contract)?我的问题特别是对这两种选择的利弊感兴趣。另外,回答这个问题的常用方法是什么?

我真正的困境是我没有做出此决定的经验,而且我对 wcf 的经验也很少,因此我需要帮助来理解此类决定的技术含义。

最佳答案

不要创建一个实现 n 个服务契约的大型服务。这些类型的服务很容易创建,但最终会成为令人头疼的维护问题,并且无法很好地扩展。另外,如果有一个开发组竞争 checkin / checkout ,您将遇到各种代码合并冲突。

也不要创建太多服务。避免让您的服务过于细化的陷阱。尝试基于功能创建服务。这些服务公开的方法也不应该是细粒度的。你最好使用更少的方法来做更多的事情。避免通过创建 GetUser(userObject user) 创建类似的函数,如 GetUserByID(int ID)、GetUserByName(string Name)。您将拥有更少的代码、更容易的维护和更好的可发现性。

最后,无论您做什么,您可能只需要一个端口。

更新 12/2018 有趣的是自从我写这篇文章以来事情发生了怎样的变化。现在有了微服务模式,我正在创建很多带有聊天 API 的服务:)

关于c# - wcf 决定 : one service multiple contracts or many services,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17424392/

相关文章:

c# - MVC 4. ModelState.IsValid 总是返回 true

c# - MySql .NET 连接器返回字节数组而不是实际类型

c# - 向 https 发出 HTTP 请求时发生错误 -> 握手失败

c# - WCF 服务返回 400 错误请求

java - jax-ws Web 服务层到基于 hibernate 的数据提供程序

architecture - BEAM 在 elixir 编程语言的 iex 中代表什么?

java - 干净的架构/MVP : Using different repositories for different models. 可以吗?

c# - 使用 ODP.Net 的问题

c# - 无法在 Entity Framework 中使用 SQL 查询获取数据

wcf - 使用 WP7 使用 WCF Rest 服务