Распространение DataGrid / ArrayCollection в реальном времени при изменении значений в приложении Flex - PullRequest
0 голосов
/ 20 мая 2010

Я видел несколько скринкастов, демонстрирующих интеграцию между blazeds и flex, а также некоторые учебные пособия по lcds, управляемые моделями или нет.

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

Мне интересно, как, черт возьми, это делается и как воспроизвести.

Эта функция зависит от решения Edge / LCDS? Я так не думаю, но я никогда не видел код, объясняющий это.

Я чувствую, что это может или не может зависеть от JMS / MQ / протоколов обмена сообщениями или если это своего рода двухсторонняя синхронизация и распространение сбора между экземплярами одного и того же результата службы.

Спасибо за любые комментарии.

Приветствия

Эрнани

Ответы [ 3 ]

4 голосов
/ 21 мая 2010

Вы можете реализовать эту функцию как с 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). Все они подробно описаны в блоге Damon .

Если вы хотите, чтобы какой-то код пошел и загрузил BlazeDS и ознакомился с примерами, есть несколько примеров функций обмена сообщениями. Также в загрузку входит сервер tomcat, и примеры уже развернуты на нем.

1 голос
/ 21 мая 2010

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

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

Я понимаю, что это основная причина использования LiveCycle Data Services поверх BlazeDS. WebORB также имеет функциональность push, как и GraniteDS. Я также видел демонстрации, где это делается с ColdFusion.

Если ни один из этих вариантов не доступен для вас, вы застряли, проводя какой-то опрос на удаленном сервере.

К сожалению, у меня нет конкретных примеров кода, которыми можно поделиться.

0 голосов
/ 12 октября 2010

Простой пример, показывающий, как это сделать с помощью 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 только для того, чтобы получить эту функцию.

--- Джим Пламондон, Midnight Coders (создатели WebORB)

...