在过去的两年里,我一直在使用TCP / IP协议上的通信层使用WCF在c#3.5中开发分布式应用程序;到目前为止,我一直在使用集成的Add Service Reference ...在客户端生成服务代理,但我也知道使用通道工厂创建通信通道(因此访问服务合同方法)是一种可行的方法。 / p>
问题非常简单(请解答答案):
(请告诉我是否需要更多情境化来回答)
答案 0 :(得分:1)
对我来说,使用自定义代理的一个原因是能够在客户端和服务器上使用相同的接口[类型]和域类型。自动生成会创建相当多的类,这将不可避免地增加程序集的大小,因此如果您正在构建一个下载时间至关重要的Silverlight应用程序,或者如果您有大量的内存限制,那么通道工厂可能就是您的选择。
我也喜欢渠道工厂的DRY-ness,因为我通常都有我的域名对象,为什么要再次生成它们?特别是如果我有一堆商业逻辑。当然,这实际上只适用于wcf到wcf通信,如果你正在与任何其他服务交谈,你想要生成域对象
(我还假设域类型和接口在它们自己的程序集中,与实际的后端持久性代码分开)