【问题标题】:how to create and manage wcf service clients?如何创建和管理 wcf 服务客户端?
【发布时间】:2010-07-06 09:55:17
【问题描述】:

起初,我将它们视为任何依赖项,将它们在 ctor 中传递给使用服务的类:

var serviceConsumer = new ServiceConsumer(new MailingServiceClient())

问题在于,一旦服务抛出异常,它就会进入故障状态并且不会回复任何请求,因此需要重新初始化。

此外,我熟悉了这样一个事实,即 wcf 服务可能在某些情况下无法正确释放,因为生成的代理的 dispose 方法被破坏(调用关闭而不检查故障状态)并且遇到了几种方法来克服它:

  1. wrapping every call to every service.
  2. override the default IDisposable behavior of the scvutil.exe-generated class

由于出于测试原因,我不希望消费者代码自己创建服务客户端,所以我的问题是:

  • 如何维持正常工作的服务?

  • 如何仍然使用依赖注入来实现可测试性?

【问题讨论】:

标签: wcf dispose fault


【解决方案1】:

找到了一个不错的解决方案。

替代 VS 的代理生成器,并围绕默认代理生成一个包装器,用于处理代理故障、超时和正确处置。

http://wcfproxygenerator.codeplex.com/

对我来说似乎工作得很好。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-10-15
    • 1970-01-01
    • 1970-01-01
    • 2010-11-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多