Является ли WCF Duplex хорошим выбором? - PullRequest
9 голосов
/ 02 марта 2011

После разработки мини-проекта с WCF duplex (Служба чата | Служба SMS) я получил очко, которое, возможно, не верно !!

Я полагал, что теория дуплекса хороша и полезна, но есть много проблем с использованием Wcf Duplex . (например, надежный сеанс, исключения тайм-аута, управление адресами клиента на стороне сервера, управление прокси на стороне клиента)

я не прав? я что-то пропустил?

Для получения дополнительной информации я использовал wsDualHttpBinding, а не tcpBinding.

1 Ответ

14 голосов
/ 02 марта 2011

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

WsDualHttpBinding, сам по себе является специальным видом дуплексной связи.Лично мне это не нравится, потому что люди часто злоупотребляют этим.Проблема состоит в том, что эта привязка использует два отдельных соединения - одно от клиента к серверу и второе от сервера к клиенту.Это большая разница с net.tcp, где используется только соединение, инициированное от клиента к серверу.Очевидно, что использование WsDualHttpBinding через Интернет (= у вас нет контроля над клиентскими машинами) становится намного сложнее, потому что каждый клиент должен настроить свой брандмауэр (на компьютере, на домашнем интернет-шлюзе и т. Д.), Чтобы разрешить соединение через некоторый порт.Также, если вы хотите запустить более одного экземпляра приложения на одном клиентском компьютере, каждый экземпляр должен использовать свой собственный порт.

...