Веб-сайт, вызывающий службу Windows с обратным вызовом - PullRequest
0 голосов
/ 22 августа 2011

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

У кого-нибудь есть совет, пожалуйста?

Ответы [ 2 ]

2 голосов
/ 22 августа 2011

Природа любого общения в сети ненадежна. Утверждение:

Я изучал использование обратных вызовов, но также читал, что они могут быть ненадежными

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

Тем не менее, вы можете хранить клиента вашей службы WCF в HttpApplicationState (если вызов для всего приложения) или HttpSessionState (если вызов локально для сеанса).

При создании прокси убедитесь, что вы отметили опцию (или указали в контракте), что вы используете асинхронные вызовы.

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

Когда вызов завершится, вы сохраните результат в состоянии сеанса.

Если об этом нужно знать клиенту на переднем крае, браузер должен будет опросить ваш сайт, проверить возвращаемый результат, перенаправить на страницу, которая может отображать результаты при заполнении результата. .

1 голос
/ 22 августа 2011

Выбор привязки для вашего приложения зависит от

  1. Архитектура вашего приложения
  2. Требования
  3. требуется совместимость или нет.
  4. время отклика приложения
  5. наличие времени для реализации
  6. Инфраструктура, которую вы используете или хотите использовать.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...