我正在开发一个变得非常臃肿的WCF Web服务。您使用什么技术来分解合同的实施?
答案 0 :(得分:4)
你有几个选择:
首先,您可以将所有内容保留在一个类中,但使用C#的分部类功能将其拆分为不同的文件。
其次,您可以让主服务类将请求传递给逻辑组织的许多其他实际类之一。
第三种方法是考虑重构以减少您拥有的操作数量。实际上是否有用于你所暴露的所有方法?
最后,您始终可以将服务拆分为多个WCF服务。
答案 1 :(得分:1)
如果您不提供更多信息,很难回答您的问题。 您的意思是您的服务接口是膨胀的还是类实现?很难回答,如果我没有看到代码,或者没有其他信息,无论如何,我会尝试:
请注意,WCF服务基本上只是一个实现接口的常规类,并且在其方法上有一些属性。因此所有其他优秀的OO设计规则都适用于它。考虑它的作用,它是否真的有单一的责任,如果不是尝试将一些责任外包给你的服务所依赖的其他类。如果需要非默认构造函数,请使用IInstanceProvider创建服务类,并为其提供依赖项(或者如果使用Windsor Container,则使用WCF工具)。
如果你真的想要,你可以继承你的继承链,并将一些代码移动到基类。但是我没有这样做,而且总是喜欢使用组合而不是继承。
检查您的服务合同,并考虑它的真实性。也许你应该做的就是把它分成几个更小,更有凝聚力的服务。