2010-05-20 7 views
0

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

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

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

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

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

Спасибо за любые входные данные.

Приветствия,

Эрнани

ответ

4

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

+0

Отличный ответ. Я также хотел бы добавить, что в Tour de Flex есть некоторые живые примеры функций управления сообщениями и данными: http://flex.org/tour Образцы управления данными могут быть разбиты на данный момент из-за базы данных вниз. Но команда TDF работает над этим. –

+0

Спасибо, большой ответ действительно, поэтому, чтобы возобновить этот вопрос, это можно сделать только с помощью конечной точки MQ? Я думал об управлении этим только с помощью RemoteObjects, но это кажется невозможным, не так ли? –

+0

Да, это ... загрузить Spring Integration Samples (http://static.springsource.org/spring-flex/docs/1.0.x/reference/html/ch06.html), и вы найдете образец с использованием ActiveMQ. Да, это почти невозможно, вам нужно использовать производителей и объекты потребителей. Практически невозможно, что вы можете что-то сделать, внедряя свой собственный опрос на основе периодических удаленных вызовов, но это слишком много. –

1

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

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

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

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

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

+0

Спасибо за Ваш ответ, но образцы с LCDS гораздо проще, так как я видел, это должно быть способом определить это в более простой способ. Я чувствую, что это нужно, чтобы сохранить какое-то состояние приложения последнего загруженного массива и сбросить назад или опросить его. Это видео обеспечивает образец моделируемой функции на LCDS. Учитывая, что BlaceDS - это небольшая версия LCDS, и нам нужно обеспечить некоторую репликацию состояний, это должно быть обязательным элементом в BlazeDS. http://vimeo.com/6612999 Еще раз спасибо. –

0

Простой пример, показывающий, как это сделать с помощью WebORB можно найти здесь: http://www.kensodev.com/2009/11/01/synchronize-client-application-using-flexweborb-net/

Этот пример основан на WebORB 3 для .NET; WebORB 4 теперь доступен для .NET и Java.

Точка: это просто мозг без использования WebORB, который БЕСПЛАТНО (хотя доступна и платная версия Enterprise). Не дай бог, чтобы кто-то должен был выложить $ 30 тыс. Для LCDS только для того, чтобы получить эту функцию.

--- Джим Пламондон, Полночь Кодеры (производители WebORB)