WCF - 可以纯粹通过配置在单线程和多线程之间切换吗?

时间:2011-07-07 14:57:24

标签: wcf service config single-threaded

我开发了一个WCF服务(恰好在MSMQ队列上侦听)。我没有放入任何特定的与线程相关的代码,因此它默认以多线程方式运行。这对于实时环境来说很好(并且最可能是期望的),但是现在这个服务仍在测试中。我无法完全控制消息何时出现在测试队列中,所以我遇到了很多可能会出现的情况。

该服务执行了大量的诊断日志记录,但我必须使用的日志记录机制(“公司标准”)不支持线程。所以结果就是当时有几个线程运行我的日志变得一团糟。我想做的是在测试时将线程数量调回1。

我已经看到了在代码中实现单线程的各种方法,但我真的不想将一个二进制文件发布到Test和另一个二进制文件到Live。

我知道WCF对配置文件的使用非常热,所以我想知道是否有某种方式,纯粹在配置中,告诉WCF服务是否在单线程或多线程模式下监听?

TIA, 皮特

2 个答案:

答案 0 :(得分:1)

您可以将所有代码放在服务中,在依赖注入框架可以在运行时注入的包装类中。

使用依赖注入,您可以配置是将实现依赖关系实现为单例还是实现每个请求实例。

但是,以“单线程模式”测试应用程序是不够的。

或者,为什么不在日志信息中包含当前正在执行的threadid - 然后根据需要按threadid过滤日志文件?

答案 1 :(得分:1)

请参阅此问题:WCF MSMQ consumer thread count

很高兴这有帮助!