WCF + SSL wsDualHttpBinding или netTcpBinding - PullRequest
1 голос
/ 12 января 2010

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

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

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


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

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

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

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

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

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

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

Ответы [ 2 ]

4 голосов
/ 13 января 2010

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

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

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

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

0 голосов
/ 05 ноября 2010

Для ответа user248724,

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

...