2 потока обращаются к службе WCF с поведением по умолчанию - PullRequest
0 голосов
/ 28 октября 2009

У меня есть клиент, который запускает 2 потока, каждый из которых пытается получить доступ к службе wcf. Служба определяется с использованием поведения по умолчанию

AppService = new ServiceHost(typeof(MyService),
                             new Uri[] { new Uri(netTcpLocalhostSimple) });


AppService .AddServiceEndpoint(
                typeof(IMyServiceContract),
                new NetTcpBinding(SecurityMode.None),
                netTcpLocalhostSimple);

По умолчанию - служба WCF работает в режиме одиночного подключения, то есть принимает только один вызов за раз.

Однако, когда я отлаживаю сервер, я обнаружил, что 2 рабочих потока обрабатывают запрос одновременно.

Как это может произойти - если я не установил это?

1 Ответ

1 голос
/ 28 октября 2009

Вы немного не согласны с вашим предположением по умолчанию; по умолчанию WCF использует подход к сеансам для протокола с учетом сеанса, а NetTcp использует транспортный сеанс. Для не поддерживающего сеанс протокола используется индивидуальный вызов.

Таким образом, каждый клиентский прокси-сервер - в вашем случае каждый поток - получает отдельный экземпляр класса обслуживания, который будет обслуживать этого конкретного клиента, пока сеанс не будет завершен клиентом по таймауту или по вине.

Дело в том, что каждый запрашивающий клиент получает свой собственный экземпляр службы, что также означает: каждый экземпляр службы должен иметь дело только с одним данным клиентом, например, многопоточность и т. д. не является проблемой, и, следовательно, программирование класса обслуживания намного проще.

Что вы ожидаете / что вам нужно?

Марк

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