C# WCF自动生成代理与自定义代理:选择哪种方式、何时以及为什么?

C# WCF自动生成代理与自定义代理:选择哪种方式、何时以及为什么?,c#,.net,wcf,web-services,proxy,C#,.net,Wcf,Web Services,Proxy,在过去的两年中,我一直在c#3.5中开发一个分布式应用程序,在TCP/IP协议的通信层使用WCF;到目前为止,我一直在使用集成添加服务参考。。。在客户端生成服务代理,但我也知道使用通道工厂创建通信通道(从而访问服务契约方法)是一种可行的方法 问题非常简单(请对答案进行论证): 这两种方法的优缺点是什么 在大多数情况下,是否应该首选“自动”生成方法?如果是,为什么 在任何情况下(如有),是否有理由/需要“定制”方法 (请告诉我是否需要更多的上下文化来回答)对于我来说,使用自定义代理的一个原因是

在过去的两年中,我一直在c#3.5中开发一个分布式应用程序,在TCP/IP协议的通信层使用WCF;到目前为止,我一直在使用集成添加服务参考。。。在客户端生成服务代理,但我也知道使用通道工厂创建通信通道(从而访问服务契约方法)是一种可行的方法

问题非常简单(请对答案进行论证):

  • 这两种方法的优缺点是什么
  • 在大多数情况下,是否应该首选“自动”生成方法?如果是,为什么
  • 在任何情况下(如有),是否有理由/需要“定制”方法

(请告诉我是否需要更多的上下文化来回答)

对于我来说,使用自定义代理的一个原因是能够在客户端和服务器上使用相同的接口[type]和域类型。自动生成创建了相当多的类,这些类将不可避免地增加程序集的大小,因此,如果您正在构建一个下载时间非常关键的silverlight应用程序,或者如果您有大量内存限制,那么channel factory可能是一条路要走

我也喜欢channel factory的枯燥,因为我通常都有我的域对象,为什么还要再次生成它们呢?特别是如果我有一大堆商业逻辑的话。当然,这实际上只适用于wcf到wcf的通信,如果您正在与任何其他服务通信,您可能希望生成域对象


(这里我还假设域类型和接口在它们自己的程序集中,与实际的后端持久性代码分离)

对于我来说,使用自定义代理的一个原因是能够在客户端和服务器上使用相同的接口[类型]和域类型。自动生成创建了相当多的类,这些类将不可避免地增加程序集的大小,因此,如果您正在构建一个下载时间非常关键的silverlight应用程序,或者如果您有大量内存限制,那么channel factory可能是一条路要走

我也喜欢channel factory的枯燥,因为我通常都有我的域对象,为什么还要再次生成它们呢?特别是如果我有一大堆商业逻辑的话。当然,这实际上只适用于wcf到wcf的通信,如果您正在与任何其他服务通信,您可能希望生成域对象

(这里我还假设域类型和接口在它们自己的程序集中,与实际的后端持久性代码分离)