This文章建议将WCF服务解决方案拆分为2个项目,1个用于合同程序集,1个用于实现程序集。
为什么这有利?我能从这次分裂中获得什么?感谢。
答案 0 :(得分:3)
明显的优势是您可以将服务合同dll文件共享给您的客户端。当您在客户端和服务器之间共享公共服务合同dll时,您的客户端可以使用ChannelFactory
类的服务。
ChannelFactory<IHelloWorld> channel = new ChannelFactory<IHelloWorld>("tcp");
(客户端可以使用WCF服务的两种不同方式。(Using ChannelFactory Vs. Proxies in WCF)
答案 1 :(得分:1)
一般而言(不是专门针对WCF服务)从设计的角度来看,将接口与实现分开是一种良好的做法。
但是,对于WCF服务,您必须小心:如果接口项目包含服务方法使用的对象的接口,那么WCF服务接口不应该是接口项目的一部分,而是在实施项目。原因是WCF服务操作不应在其方法签名中使用接口类型,因为接口类型无法序列化(以可互操作的方式)。它们应该使用实现类型,因此它们应该是实现项目的一部分,因为否则您需要将接口项目的引用添加到实现项目中。那将是糟糕的设计,并会使界面与实现的分离无用。