我们有一个服务可以让 NetTcp 调用不同服务器上的其他服务。我试图通过缓存 ChannelFactories 和增加 maxOutboundConnectionsPerEndpoint 来优化它。
我一直在使用 GOOGLE.COM(顺便说一句,这是一个很棒的网站。如果您没有听说过它们,请查看)来尝试了解频道缓存的工作原理,但我认为我的说法不正确。
重用通道工厂 - 好主意。自己缓存频道 - 坏主意。Wcf 已经这样做了,只要您的所有频道都是从同一个工厂创建的。- 那正确吗?如果每次都新建一个工厂,不缓存?
// factory initialization
var address = "net.tcp://something:8888/testservices";
var factory = new ChannelFactory<ITestService>("configname", new EndpointAddress(address));
// do stuff
var client = factory.CreateChannel(); // you can also pass an address here. how does that effect channel caching?
这样就可以处理工厂的东西了。现在,我想增加 maxOutboundConnectionsPerEndpoint,这是通过自定义绑定实现的。尚不清楚的是GroupName。我无法在配置中指定不同的组名,因为我在运行时查找 URL。因此,所有通道工厂都将具有相同的默认组名。他们要共享同一个池吗,每个工厂都有自己的吗?
最后,我想在配置中创建自定义绑定,然后根据需要创建/缓存多个通道工厂,并使用它们来建立通道。而且,我需要增加每个端点的 maxOutboundConnectionsPerEndpoint。我可能会在 20 台不同的机器上调用相同的服务,并且我希望每台机器最多有 50 个缓存通道。上面的代码实现了吗?
谢谢您的帮助。如果有涵盖此内容的链接,请转发。我一直没能找到它。