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