gpt4 book ai didi

wcf - ChannelFactory 与使用 Svcutil 的预生成代理的性能

转载 作者:行者123 更新时间:2023-12-04 19:43:07 25 4
gpt4 key购买 nike

Svcutil 生成的代理是否比运行时使用的 ChannelFactory 提供更好的性能? ChannelFactory 是否默认缓存代理?

我将 .NET 4 与一项服务一起使用,该服务有 100 多个操作和 500 多个参与其中的数据契约(Contract)。

当我使用 ChannelFactory<T> , 返回我的代理需要很长时间。有人可以建议哪种方法是创建代理的最佳方式吗?

我的代码如下所示:

EndpointAddress endPoint = new EndpointAddress(url);
// My own API which gives the custom binding I create programatically
CustomBinding binding = BindingFactory.GetCustomBinding("WSECustomBinding");
ChannelFactory<T> factory = new ChannelFactory<T>(binding, endPoint);

最佳答案

当您使用 Svcutil 生成代码时,您会得到一个扩展 ClientBase 的类。 ,它是 ChannelFactory 的包装器.

Svcutil 代理允许您将服务作为对象的方法调用,而不是直接与 ChannelFactories/Channels 交互,除此之外,确实提供了一些额外的功能,例如缓存 channel 工厂,但在幕后它是 the same engine .

从您的代码中不清楚您在做什么,但是您是否在每次操作调用时都创建了 ChannelFactory?创建 ChannelFactory 的开销很大,您通常会缓存该实例,然后使用它来打开、使用和关闭 Channels 以进行操作调用。

有关更详细的说明,请参阅以下页面:

  • Performance Improvement for WCF Client Proxy Creation in .NET 3.5 and Best Practices
  • Best Practice: Always open WCF client proxy explicitly when it is shared
  • 关于wcf - ChannelFactory<T> 与使用 Svcutil 的预生成代理的性能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9528743/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com