2010-03-18 31 views
2

因此,我已将我的WCF服务合约分离为离散合约以供重复使用。WCF - 分离服务合同和部分派生?

我用IOneServiceContract包含3个函数:Function1,Function2,Function3。

我已将此服务合约分为两个独立的服务合约:IServiceContract1和IServiceContract2。 IServiceContract1包含Function1,IServiceContract2包含Function2和Function3。这将允许我重新使用离散的IServiceContract1和/或IServiceContract2来构建代表公共服务合同的新服务合同。

知道了这一点......,希望我没有搞砸的描述,这样就可以不遵守休息...

我有两个服务IService1和IService2。
IService1实现IServiceContract1和IServiceContract2。这是完美的,因为IService1需要实现所有的功能:Function1,Function2,Function3。

然而,IService2不需要实现IServiceContract2的所有功能,只需要Function1。

IService2是否有部分实施合同的方法?我知道这听起来很荒谬。处理这种情况的正确方法是尝试从逻辑上分离IServiceContract2,以便IService2只需实现它需要的部分?

谢谢

回答

1

如果要实施服务合同,则必须全部实施。这就是为什么S.O.L.I.D. development principle中的“I”被称为“接口隔离原则”:使接口尽可能小,以便实现者不必实施他真正不感兴趣的一堆方法。

看来你基本上已经接受了这个原则 - 问题是:你能否以不同的方式分割你的方法?或者将它们分成三个单独的服务合同会受到伤害吗?

+0

谢谢你......我在想这可能是答案,只是想要额外的确认,我猜...我将采取的方法和分割出来,然后继承他们在类中,目前包含两个......方式IServiceContract2可以只使用需要和IServiceContract1可以继续继承所有... 再次感谢您的答案... – dwhittenburg 2010-03-19 13:45:59