我是否知道在WCF中使用channelfactory类。如果服务中有任何代码更改,是否有助于我们阻止手动更新服务引用?
答案 0 :(得分:3)
这是构建客户端代理以调用服务的过程的一部分。
默认情况下,如果您执行“添加服务引用”,您只需获得一个(myService)Client
类,您可以对其进行实例化和使用。
幕后工作包括两个步骤:
为您的服务合约(ChannelFactory<T>
)创建渠道工厂 - 这是一个能够创建合约特定渠道的类(您之间的通讯链接)客户端和正在调用的服务)
然后使用该频道工厂实际创建频道,以建立链接。
创建频道工厂是一个相当昂贵的步骤 - 因此,如果您手动执行此操作,您可能希望尽可能长时间地缓存该频道工厂。
从渠道工厂创建实际渠道并不是一项繁重的任务。
因此,如果您确实可以访问您的服务合同(例如,通过共享合同),您可以将创建客户端代理的过程分解为两个步骤,并希望优化第一个(通过缓存渠道工厂)。
但是再一次:这要求您直接访问您的服务合同 - 通常只有在您控制通信的两端并且两端都是.NET的情况下才会这样。