Подобный веб-серверу разработки Visual Studio (Кассини) ограничение, что это только серверы на localhost, у меня есть Реализация услуги WCF, которая только необходима на localhost.
Я не возражал бы против других машин, имеющих доступ, за исключением того, что Windows Firewall запрашивает, чтобы позволить программе слушать на внешне стоящем NIC. Так как это только необходимо внутренне, я ограничил бы конфигурацию Серверной стороны WCF так, чтобы она не смещалась детектор брандмауэра.
binding.HostNameComparisonMode = HostNameComparisonMode.Exact
правильное решение? Я не вижу, как это достаточно.
====
Как Кассини, эта Реализация услуги является заместителем для чего-то еще, что ДЕЙСТВИТЕЛЬНО требует сетевой связи. Клиент может быть настроен для соединения с реальным сервером или поддельной реализацией, работающей localhost.
Это зависит от того, как вы размещаете сайт. Если вы находитесь в IIS7 или WAS, то WCF использует режим согласования IIS. В противном случае, если вы используете HostNameComparisonMode.Exact
, то да, имя хоста всегда будет критическим фактором в сопоставлении. Если имя хоста не совпадает, диспетчеризация, как правило, завершается неудачей.
Следует отметить, что exact не является на 100% абсолютно точным... он все еще допускает некоторую вариацию в имени хоста. Если у вас есть и имя хоста NetBios и полное имя DNS, соответствие все еще будет происходить, поскольку WCF рассматривает эти два как одно и то же.
Я думаю, что вы подходите к этому неверно. Вы должны использовать привязку именованного канала, которая должна поддерживать любой шаблон обмена сообщениями, который вы используете (он поддерживает запрос-ответ, а также те же режимы параллелизма и состояния сеанса, которые поддерживает WS).
Из раздела MSDN под названием «Выбор транспорта» (выделено мной):
Когда использовать именованный транспортный канал
Именованный канал - это объект в {{1} } Ядро операционной системы Windows, такое как раздел общей памяти, который процессы могут использовать для связи. Именованный канал имеет имя и может использоваться для односторонней или дуплексной связи между процессами на одной машине.
Если требуется обмен данными между различными приложениями WCF на одном компьютере, и вы хотите предотвратить обмен данными с другого компьютера , используйте именованные каналы. транспорт. Дополнительным ограничением является то, что процессы, запущенные с удаленного рабочего стола Windows , могут быть ограничены одним и тем же сеансом удаленного рабочего стола Windows , если они не имеют повышенных прав привилегии.
Это полностью соответствует вашим требованиям и должно быть не более чем изменением конфигурации.