gpt4 book ai didi

c# - WCF 客户端代理初始化

转载 作者:太空狗 更新时间:2023-10-29 20:09:01 25 4
gpt4 key购买 nike

我正在使用 WCF 服务并使用 VS 2008 服务引用创建其代理。

我正在寻找调用 WCF 服务方法的最佳模式

  • 我是否应该在每次调用服务方法时创建客户端代理实例并在完成后立即关闭客户端?当我分析我的客户端应用程序时,我可以看到在初始化代理客户端时需要花费大量时间来获取 channel
  • 我是否应该为客户端代理使用单例模式,以便我可以使用唯一一次实例并摆脱重新初始化的开销?这种做法有什么隐藏的问题吗?

我正在使用 .Net framework 3.5 SP1,basicHttp 绑定(bind),几乎没有定制。

最佳答案

这取决于 ;-)

如果您的应用程序中有一个序列需要一个接一个调用,您可以卡在代理客户端上并继续使用它来进行更多调用。请注意检查“故障”状态 - 如果服务器发生错误,客户端代理和服务器之间的 channel 可能“故障”,因此您的客户端代理变得不可用。

此外 - 昂贵的部分是创建 ChannelFactory<T> - 在代码中创建客户端代理时,您可以尝试将这两个步骤分开:

ChannelFactory<IYourService> factory = new ChannelFactory<IYourService>();

坚持那个 channel 工厂,例如将其缓存在某处

第二步在时间和马力方面应该少得多:

IYourService client = factory.CreateChannel();

您可以在每次调用(或调用序列)之前执行此步骤,并且不会因此而导致性能下降,真的。

我强烈建议尽可能避免使用单例 - 这就像打开一 jar 蠕虫,除非绝对、肯定必须这样做(例如,管理对单个资源的访问,该资源仅供一个调用者使用)时间)。

马克

关于c# - WCF 客户端代理初始化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1681787/

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