Могут ли конечные точки WCF TCP и HTTP иметь один и тот же порт? - PullRequest
5 голосов
/ 16 июня 2010

Меня интересует один сервер WCF, который предоставляет интерфейсы HTTP и TCP. Он будет использоваться с клиентами Silverlight, поэтому предполагается, что HTTP-интерфейс будет использоваться для безопасной связи, а TCP будет использоваться в остальное время.

Возможно ли, чтобы эти два интерфейса использовали один и тот же порт в своих конечных точках, например http://localhost:9000/ и net.tcp: // localhost: 9000 /?

Ответы [ 2 ]

4 голосов
/ 16 июня 2010

Нет, это невозможно.Если у вас включена служба общего доступа к TCP-портам, у вас может быть несколько служб, прослушивающих один и тот же TCP-порт.Прослушиватель Windows HTTP также позволит вам иметь несколько служб, использующих общий порт (например, консольное приложение и IIS могут одновременно прослушивать порт 80 по разным URL-адресам).Но вы не можете использовать несколько привязок на одном и том же порту.

Но я все равно не вижу преимущества в этом.Я бы лично оставил конечную точку HTTP на порту 80, и, конечно, ваша конечная точка TCP ограничена верхним диапазоном портов.Я не уверен, какой сценарий вы пытаетесь включить.

0 голосов
/ 16 июня 2010

На TCP-порте может быть только один «слушатель», поэтому, если сервер WCF не выполняет какое-либо мультиплексирование на уровне протокола (т. Е. Если он читает заголовок HTTP, отправьте его обработчику HTTP, в противном случае отправьте его«необработанный» обработчик), вам придется использовать разные порты.

Конечно, самый быстрый способ выяснить это - настроить сервер с обоими этими интерфейсами и одним и тем же портом и проверить журналы на наличие ошибок.,Скорее всего, каждый из них будет пытаться подключиться к порту 9000 из своего собственного потока или процесса, а второй потерпит неудачу.

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