Я думаю, в конце концов, сервисы Duplex - это просто еще одна неудачная архитектура от Microsoft.Это одна из тех вещей, которые на бумаге выглядели очень хорошо, но просто разваливались при ближайшем рассмотрении.
Слишком много недостатков:
1) Использование сеанса для установления клиентского слушателя сервером,Это информация о сеансе хранится в памяти.Следовательно, сам сервер не может быть сбалансирован по нагрузке.Или, если бы он был сбалансирован по нагрузке, вам нужно включить ip affinity, но теперь, если один из серверов засыпан, вы не можете просто добавить другой и ожидать, что все эти сеансы автоматически перенесутся на новый сервер.
2) Для каждого клиента, сидящего за маршрутизатором / брандмауэром / распределителем нагрузки, необходимо создать новую конечную точку с определенным портом.В противном случае маршрутизатор не сможет правильно направить сообщения обратного вызова соответствующему клиенту.Альтернативой является наличие маршрутизатора, который позволяет пользовательскому программированию перенаправлять определенный путь к определенному серверу.Опять высокий заказ.Или другой способ - для клиента с обратным вызовом разместить свою собственную базу данных и обмениваться данными через базу данных <- Может работать в некоторых ситуациях, когда лицензионные сборы не являются проблемой ... но это создает много сложностей и так обременительно дляклиент плюс он смешивает прикладной и сервисный уровни вместе (что может быть приемлемо в некоторой исключительной ситуации, но не сверх огромных затрат на установку) </p>
3) Все это в основном говорит о том, что дуплекс практически бесполезен.Если вам нужно перезвонить, то вы хорошо настроите хост wcf на стороне клиента.Это будет проще и гораздо более масштабируемым.Кроме того, существует меньшая связь между клиентом и сервером.
Лучшее дуплексное решение для масштабируемой архитектуры, в конце концов, не использует его.