Гарантирован ли правильный порядок сообщений TCP WCF для нескольких потоков отправки? - PullRequest
3 голосов
/ 17 апреля 2010

Существует одно соединение WCF, использующее TCP. Два потока на сервере записывают в это соединение последовательно. Всегда ли гарантируется, что клиент первым обработает первое сообщение? Насколько я понимаю, это должно быть гарантировано.

Ответы [ 3 ]

2 голосов
/ 17 апреля 2010

«Канал» является последовательным, поэтому я думаю, что ответ здесь - да.

Но с 2 (независимыми) потоками значение 'first' не совсем определено.

1 голос
/ 05 июля 2010

Я думаю, что вопрос Хенка (что подразумевается под «первой» веткой) очень интересен.

Учитывая, что потоки могут быть приостановлены в любой момент, возможно ли, чтобы поток A мог завершить выполнение метода Send () до потока B, но поток B первым вернется к пользовательскому коду?

С точки зрения вызывающего абонента это выглядело бы так, как если бы поток B завершил отправку первым.

0 голосов
/ 17 апреля 2010

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

Операция записи в канал является атомарной, и передача TCP гарантированно будет в порядке. Как указывал Хенк, канал полностью последовательный. Это просто всегда происходит на клиенте в том же порядке.

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