Двунаправленная клиент-серверная архитектура / реализация - PullRequest
0 голосов
/ 08 июня 2009

У меня есть система, в которой мне нужно двунаправленное соединение между клиентом и сервером. В некоторых случаях клиенту необходимо инициировать связь с сервером, чтобы задать вопрос, запросить статус, получить некоторые данные и т. Д. {У нас есть система ИИ, которая выполняет повторяющиеся задачи, мониторинг, формирование отчетов, оповещение и т. Д. И клиентские приложения, позволяют нам взаимодействовать с сервером.} В других случаях сервер должен сообщать о некоторых изменениях в статусе или предупреждать клиента. Мы используем .NET для реализации системы и рассмотрели несколько различных архитектур:

A) Откройте канал TCP и управляйте связью на низком уровне. Это, кажется, отвечает нашим потребностям, но было довольно нестабильным, в первую очередь потому, что нашим командам не хватает хорошего опыта в низкоуровневых коммуникационных протоколах.

B) Использовать удаленное взаимодействие .NET, в котором обе системы выступают в качестве хоста - клиент регистрирует сервер в качестве удаленного хоста, и после установления соединения сервер продолжает работу и регистрирует клиента в качестве удаленного хоста в разностном канале. , Похоже, что это нормально работает для базовых сообщений, но есть случаи, когда нам нужно поддерживать «диалог» между клиентом и сервером. Наличие нескольких клиентов под этой архитектурой кажется немного сложным.

C) Забудьте о двунаправленной связи и используйте архитектуру опроса для опроса сервера на наличие новых сообщений - работает нормально, но создает чрезмерно болтливую систему и усложняет «разговоры» между клиентом и сервером.

Есть мысли о лучшем подходе? Любые другие подходы рекомендуется?

Ответы [ 4 ]

1 голос
/ 08 июня 2009

У меня был хороший опыт (на уровне «доказательства концепции» - еще не развернул его в производстве) с XMPP в качестве протокола для такой двунаправленной связи; хотя его в основном рассматривают с точки зрения приложений интерактивного чата, на самом деле это протокол общего назначения, и он имеет реализации .NET. Альтернативой Microsoft может быть MSMQ.

1 голос
/ 08 июня 2009

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

0 голосов
/ 30 апреля 2014

Как насчет использования Duplex Service в WCF, если клиенты являются устройствами IOS или устройствами Android? будут ли эти клиенты поддерживать обратные вызовы?

0 голосов
/ 08 июня 2009

WCF может показаться хорошим выбором. На CodeProject есть довольно хорошее руководство, описывающее, как реализовать клиент-серверное приложение для чата.

Существует также серия веб-трансляций здесь и книга того же автора

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