.net 通道工厂级-WCF

.net 通道工厂级-WCF,.net,wcf,.net,Wcf,我可以知道channelfactory类在WCF中的用法吗。如果服务中有任何代码更改,它是否有助于我们防止手动更新服务引用?这是构建客户端代理以调用服务过程的一部分 默认情况下,如果您执行“添加服务引用”,您只需获得一个(myService)客户机类,您可以实例化并使用该类 这在幕后是一个分两步的过程: 为您的服务合同创建一个频道工厂(ChannelFactory)-这是一个能够创建特定于合同的频道的类(您的客户与被调用的服务之间的通信链接) 然后使用该频道工厂实际创建一个频道,以建立链接

我可以知道channelfactory类在WCF中的用法吗。如果服务中有任何代码更改,它是否有助于我们防止手动更新服务引用?

这是构建客户端代理以调用服务过程的一部分

默认情况下,如果您执行“添加服务引用”,您只需获得一个
(myService)客户机
类,您可以实例化并使用该类

这在幕后是一个分两步的过程:

  • 为您的服务合同创建一个频道工厂(
    ChannelFactory
    )-这是一个能够创建特定于合同的频道的类(您的客户与被调用的服务之间的通信链接)

  • 然后使用该频道工厂实际创建一个频道,以建立链接

创建通道工厂是一个相当昂贵的步骤——因此,如果手动创建,您可能希望尽可能长时间地缓存该通道工厂

从通道工厂创建实际的通道几乎不是一项密集的任务

因此,如果您确实可以访问服务合同(例如,通过共享合同),您可以将创建客户端代理的过程分为两个步骤,并希望优化第一个步骤(通过缓存通道工厂)


但同样:这要求您可以直接访问服务合同-通常只有在您控制通信的两端并且两端都是.NET的情况下才可以。是否仍可以使用Visual Studio的“添加服务引用”,但为代理提供以前创建的频道工厂?换句话说,我只想覆盖通道工厂的创建并提供我自己的,以便优化代理的实例化。