Распространение DataGrid / ArrayCollection в реальном времени при изменении значений в приложении Flex
Я видел несколько скринкастов, демонстрирующих интеграцию между blazeds и flex, а также некоторые учебные пособия по lcds, управляемые моделями или нет.
Я видел, что некоторые из них докладчик открывает 2 браузера, и как только вы измените одно значение в сетке, он распространяется на все другие сетки, которые представляют данные.
Мне интересно, как, черт возьми, это делается, и как воспроизвести.
Эта функция зависит от решения Edge / LCDS? Я так не думаю, но я никогда не видел код, объясняющий это.
Я чувствую, что это может или не может зависеть от JMS / MQ / протоколов обмена сообщениями или если это своего рода двухсторонняя синхронизация и распространение сбора между экземплярами одного и того же результата службы.
Спасибо за любые комментарии.
Ура,
Эрнани
3 ответа
Вы можете реализовать эту функцию как с BlazeDS, так и с LiveCycle Data Services. BlazeDS предоставляет функции удаленного доступа и обмена сообщениями (функции обмена сообщениями позволяют синхронизировать данные между клиентами), LCDS расширяет BlazeDS, добавляя новые функции, такие как управление данными (повышение производительности), создание PDF, сервер EDGE для работы с зонами DMZ), Разработка MDA, интеграция с порталом и т. Д. Он также добавляет некоторые расширенные функции обмена сообщениями, такие как объединение сообщений, регулирование, надежность.
BlazeDS является бесплатным и открытым исходным кодом и, на мой взгляд, надежное решение, вы можете использовать его, если вы хотите синхронизировать данные между клиентами. LCDS добавляет много вещей, но клиенты LCDS должны иметь большой бюджет.
Как это работает? Для этой функции нет JMS (однако BlazeDS может интегрироваться с JMS-провайдером, поэтому у вас может быть один клиент в broswser, а второй - приложение SWING). Вместо этого на сервере есть несколько очередей сообщений и граф издатель-подписчик. Чтобы передать данные от клиентов на сервер, есть несколько вариантов, более сложные доступны только для LCDS: HTTP-опрос, HTTP-длинный опрос, потоковая передача HTTP, сокеты RTMP (только LCDS). Все они подробно описаны в блоге Дэймона.
Если вы хотите, чтобы какой-то код пошел, скачал BlazeDS и взглянул на примеры, есть несколько, показывающих функции обмена сообщениями. Также в загрузку входит сервер tomcat, и примеры уже развернуты на нем.
Для этого вам нужно поддерживать соединение с открытым сокетом между клиентом и сервером, чтобы сервер мог передавать данные обратно клиенту.
Я считаю, что протокол RTMP был использован для этой двусторонней связи.
Я понимаю, что это основная причина для использования LiveCycle Data Services поверх BlazeDS. WebORB также имеет функциональность push, как и GraniteDS. Я также видел демонстрации, где это делается с ColdFusion.
Если ни один из этих вариантов не доступен для вас, вы застряли, проводя какой-то опрос на удаленном сервере.
К сожалению, у меня нет конкретных примеров кода для обмена.
Простой пример, показывающий, как сделать это с помощью WebORB, можно найти здесь: http://www.kensodev.com/2009/11/01/synchronize-client-application-using-flexweborb-net/
Этот образец основан на WebORB 3 для.NET; WebORB 4 теперь доступен как для.NET, так и для Java.
Суть в том, что это просто невероятно просто, используя WebORB, БЕСПЛАТНО (хотя также доступна платная версия Enterprise). Дай Бог, чтобы кто-нибудь выложил $30K за LCDS только для того, чтобы получить эту функцию.
--- Джим Пламондон, Полночные кодеры (создатели WebORB)