0

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

var serviceConsumer = new ServiceConsumer(new MailingServiceClient())

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

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

  1. 包装每个服务的每个调用。
  2. 覆盖 scvutil.exe 生成的类的默认 IDisposable 行为

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

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

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

4

1 回答 1

0

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

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

http://wcfproxygenerator.codeplex.com/

似乎对我来说工作正常。

于 2010-07-08T09:21:20.290 回答