Как общаться в этой системе? - PullRequest
3 голосов
/ 08 апреля 2011

Мы намерены разработать систему с тремя «ярусами».

  1. HQ, с одним сервером
  2. много "узлов" на региональной основе
  3. пользователей, с iPad.

Штаб-квартира осуществляет двустороннюю связь с узлами, которые осуществляют двустороннюю связь с пользователями. Пользователи никогда не общаются ни со штаб-квартирой, ни наоборот.

Полномочия, которые должны быть предписаны приложением Windows от HQ (с использованием Delphi) и собственным настольным приложением для iPad пользователей. У них нет мнения об узлах.

Если есть веские технические аргументы, я мог бы превзойти их с «декрета» до «предпочтения» в программе Windows (и, на самом деле, сделать его основанным на браузере). Узлы не имеют графического интерфейса, они просто сидят и играют посредников.

Как лучше всего взаимодействовать между этими вещами (SOAP / HTTP / AJAX / jQuery / home-brewed-protocol-on-top-of-TCP / что-то еще?) Лучше всего использовать тот же конец протокола, чтобы конец или разные протоколы для hq <-> узла и узла <-> iPad?

Оба конца каждого из этих двух интерфейсов могут захотеть инициировать транзакцию (что я легко могу сделать, если разверну свой собственный протокол), поэтому я должен использовать push / pull / long-poll или как?

Я надеюсь, что это описание имеет смысл. Пожалуйста, задавайте вопросы, если это не так. Спасибо.


Обновление:
Размер файла обычно ниже 1 МБ, и вряд ли он будет больше 10 МБ или даже 5 МБ. Второй файл не будет отправлен до подтверждения первого файла.

Файлы передаются «вниз» от штаб-квартиры к узлу на iPad. Файлы никогда не будут течь "в гору", но будут некоторые небольшие пакеты данных (в дополнение к acks), которые инициируются действием пользователя на iPad. Они пойдут на локальный узел, а затем в штаб-квартиру. Мы, вероятно, говорим <128 байтов. </p>

Я полагаю, что также будет общий контроль и обслуживание с низкой скоростью во всех направлениях.

Ответы [ 3 ]

5 голосов
/ 08 апреля 2011

Для push / pull (публикация / подписка или одноранговая связь) могут использоваться межплатформенные брокеры сообщений. Я не уверен, есть ли (iOS) клиентские библиотеки для Microsoft Message Queue (MSMQ), но я также оценил бы решения с открытым исходным кодом, такие как HornetQ , Apache ActiveMQ , Apollo , OpenMQ , Apache QPid или RabbitMQ .

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

Существуют клиентские библиотеки Delphi и Free Pascal , доступные для многих корпоративных продуктов с открытым исходным кодом. (Я являюсь автором некоторых из них, поддерживающих ActiveMQ, Apollo, HornetQ, OpenMQ и RabbitMQ)

2 голосов
/ 08 апреля 2011

Ознакомьтесь с MessagePack: http://msgpack.org/

Кроме того, здесь больше обсуждений RPC по SO:

Возможно, ICE вас заинтересует: http://zeroc.com/index.html
У них есть слой iOS: http://zeroc.com/icetouch/index.html

1 голос
/ 08 апреля 2011

ИМХО слишком мало реквизитов, чтобы решить, какую технологию использовать.Какие данные обмениваются, как часто, какого размера?Существуют ли ограничения времени запроса / ответа?и т. д. и т. д. Никогда не начинайте выбирать технологию, прежде чем глубоко поймете свои потребности.

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