WCF + SSL wsDualHttpBinding или netTcpBinding

Мне нужно создать автономную службу WCF. Мне нужно безопасное дуплексное соединение между клиентом и сервером через Интернет.

Я прочитал некоторые документы WCF и обнаружил, что netTcpBinding подходит для приложений интрасети, потому что SSL - это только точка 2. Если это интернет-приложение, соединение не должно быть точкой 2, я прав? так что SSL в транспортной безопасности с netTcpBinding не подходит?

Итак, какую комбинацию мне следует использовать для создания безопасного дуплексного Интернет-приложения? большое спасибо.


Я пробовал http://www.codeproject.com/KB/WCF/WCFWPFChat.aspx в этом руководстве используется netTcpBinding и localhost конечной точки.

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

Клиентская программа может общаться с каждой программой cients на разных машинах, НО соединение обратного вызова будет потеряно через одну минуту.

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

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

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

Есть ли способ сохранить соединение обратного вызова netTcpBinding, как в wsDualHttpBinding?


person user248724    schedule 12.01.2010    source источник


Ответы (2)


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

Если вам действительно нужно дуплексное соединение (например, обратные вызовы, инициированные сервером), ни один из них не будет работать очень хорошо через Интернет, если у вас нет точного контроля над брандмауэрами на обоих концах (клиент все равно должен предоставить общедоступную конечную точку HTTP. чтобы сервер перезвонил). Лучше всего использовать новые службы ретрансляции с .NET 4.0 - это позволяет имитировать инициируемое сервером соединение через брандмауэры.

РЕДАКТИРОВАТЬ: теперь это называется AppFabric и является частью инфраструктуры Windows Azure.

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

person nitzmahone    schedule 12.01.2010

Чтобы ответить user248724,

Клиентская программа может общаться с каждой программой cients на разных машинах, НО соединение обратного вызова будет потеряно через одну минуту через одну минуту.

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

person Matx    schedule 05.11.2010