拥有许多小型 wcf 服务比拥有一个更好吗?

Is having many small wcf services better then one?

我正在开发出租车服务软件。我的软件由作为服务器的 wcf 服务和作为客户端的 wpf 应用程序组成。功能在增长,我的 wcf 服务现在有超过 50 个方法。我正在考虑将我的一个大 WCF 服务拆分为几个小服务。 这样做是个好主意吗?

IME,如果将服务拆分只会为通用功能(如数据库访问)创建大量复制代码,或者需要添加诸如附加功能之类的东西才能使服务相互通信,从而使事情变得复杂,我建议不要。

另一个原因:你的容错场景现在变得更复杂了。如果你的整个单体服务死掉是一回事——那么什么都不起作用。但是,如果您有 4 个需要协同工作的相关服务,那么您现在必须智能地处理部分故障场景,例如如果服务 #3 出现故障,而其他服务有一半完成的工作需要它。现在,您必须能够在等待 #3 恢复的同时让事情恢复到一致的状态,或者能够持久化内容,以便您可以在它出现时返回它。您的错误消息数量也刚刚增加。

如果您可以为每项服务明确划分责任,我会说是的。不过,您应该尽量避免或尽量减少服务之间的耦合。请记住,如果您更改合同,您将破坏现有客户,但听起来您可以控制这些。

这是一个很常见的场景,您可以通过确保您的服务层本质上是一个外观来帮助自己,以便更容易地移动东西。