WCF - можно ли переключаться между однопоточными и многопоточными чисто через конфиг? - PullRequest
2 голосов
/ 07 июля 2011

Я разработал службу WCF (которая прослушивает очередь MSMQ). Я не вставлял никакого кода, связанного с многопоточностью, поэтому он по умолчанию выполняется многопоточным способом. Это будет хорошо (и, скорее всего, желательно) для живой среды, однако сейчас этот сервис все еще тестируется. У меня нет полного контроля над тем, когда сообщения появляются в тестовой очереди, поэтому я нахожусь в ситуации, когда многие могут появиться одновременно.

Служба выполняет много диагностических журналов, но механизм ведения журналов, который я обязан использовать («стандарт компании»), не поддерживает потоки. Таким образом, получается, что тогда несколько потоков запускаются одновременно, и моя регистрация становится полной неразберихой. Я хотел бы уменьшить количество потоков до 1 во время тестирования.

Я видел различные способы достижения однопоточности в коде, но мне действительно не хочется выпускать один двоичный файл для Test и другой двоичный файл для Live.

Я знаю, что WCF довольно сильно использует файлы конфигурации, поэтому мне было интересно, есть ли какой-нибудь способ, основанный исключительно на config, сообщить службе WCF, слушать ли в однопоточном или многопоточном режиме?

ТИА, Пит

Ответы [ 2 ]

1 голос
/ 07 июля 2011

См. Этот вопрос: Количество пользовательских потоков WCF MSMQ

Рад, что это помогло!

1 голос
/ 07 июля 2011

Вы можете поместить весь код в службу внутри класса-оболочки, который инфраструктура Dependency Injection может внедрить во время выполнения.

С помощью Dependency Injection вы можете настроить, реализовывать ли зависимость как одиночную илив качестве экземпляра для каждого запроса.

Однако тестирования приложения в «однопоточном режиме» будет недостаточно.

В качестве альтернативы, почему бы не включить текущий выполняющийся threadid в информацию журнала - затем отфильтроватьфайл журнала по threadid при необходимости?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...