2014-01-06 16 views
0

Я новичок в веб-сервисах WCF. Мое требование - создать службу WCF, которая является оболочкой для стороннего COM-объекта DLL.WCF принимает одновременные запросы

Предположим, что dll занимает 5 секунд, чтобы рассчитать один конкретный вход.

Когда я создал службу и протестировал ее (используя тестовый клиент WCF), сценарий, я вижу, что я не могу отправить второй запрос до завершения первого запроса.

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

Я тестировал это, но проблема в том, что я получаю ответ, не завершая запрос.

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

Можете ли вы, пожалуйста, дайте мне знать, как я могу это исправить, учитывая производительность?

Моя служба будет расходоваться несколькими SAP Portals клиентов с помощью SAP PI

ответ

0

ConcurrencyMode для обслуживания можно установить приложения [ServiceBehavior] атрибут класса службы реализации ServiceContract. http://msdn.microsoft.com/en-us/library/system.servicemodel.concurrencymode(v=vs.110).aspx

Однако в вашей ситуации, когда вы обращаетесь к COM-компоненту в службе, я сначала проверил модель Threading для COM-компонента, то есть реализует ли она Apartment (STA) или MTA. Если COM-компонент реализует модель Threading Apartment, вызов COM-вызова будет сериализован. Таким образом, изменение WCF ConcurrencyMode не окажет никакого влияния.

HTH, Amit Bhatia

Смежные вопросы