2

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

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

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

我知道 WCF 在使用配置文件方面非常热门,所以我想知道是否有某种方式,纯粹基于配置,告诉 WCF 服务是在单线程还是多线程模式下侦听?

TIA,皮特

4

2 回答 2

1

You could place all of the code within the service, inside a wrapper class that a Dependency Injection framework could inject at runtime.

With Dependency Injection you can configure whether to implement the dependency as a singleton, or as a per request instance.

However, testing the app in "single threaded mode" will not be sufficient.

Alternatively, why not include the current executing threadid in the logging info - then filter the logfile by threadid as required?

于 2011-07-07T15:03:50.187 回答
1

看到这个问题: WCF MSMQ 消费者线程数

很高兴这有帮助!

于 2011-07-07T16:28:38.430 回答