Стоит ли инвестировать в GraniteDS для разработки Flex + Java?

Я новичок в разработке Flex и RIA в целом. У меня есть служба Java + Spring + Hibernate в стиле CRUD, поверх которой я пишу пользовательский интерфейс Flex. В настоящее время я использую BlazeDS. Это внутреннее приложение, работающее в локальной сети.

Мне стало очевидно, что работа RIA больше похожа на настольное приложение, чем на веб-приложение, поскольку мы загружаем всю модель и работаем с ней непосредственно на клиенте (или, по крайней мере, с той частью, которая нас интересует). . Это не очень хорошо сочетается с BlazeDS, потому что на самом деле он поддерживает только удаленное взаимодействие, а не управление данными, поэтому может потребоваться много дополнительной работы, чтобы убедиться, что клиенты синхронизированы, и избежать перезагрузки модели, которая может быть большой (тем более, что ленивая загрузка невозможна).

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

LiveCycle слишком дорогой. Бесплатная версия WebOrb для Java действительно выполняет только удаленное взаимодействие.

Войдите в GraniteDS. Насколько я могу судить, это единственное бесплатное решение, в котором есть многие функции управления данными LiveCycle. Я начал немного просматривать его документацию и внезапно почувствовал, что это еще одно болото фреймворка, которое мне придется изучить, чтобы запустить приложение.

Итак, мой вопрос к аудитории StackOverflow:

1) вы рекомендуете GraniteDS, особенно если мой текущий стек Java - Spring + Hibernate?

2) в какой момент, по вашему мнению, он начинает приносить плоды? То есть, на каком уровне сложности приложения, по вашему мнению, использование GraniteDS действительно делает разработку намного лучше? Каким образом?


person Boden    schedule 12.06.2009    source источник
comment
знали ли вы, что существует бесплатная версия сервисов данных Live Cycle? adobe.com/products/livecycle/dataservices/faq.html   -  person AndrewB    schedule 13.06.2009
comment
Лицензия довольно ограничительная ... один процессор.   -  person Boden    schedule 14.06.2009
comment
Я столкнулся с той же проблемой, где именно это закончилось?   -  person HDave    schedule 22.10.2010
comment
@HDAve - к сожалению, я отказался от этой идеи и остановился на обычном веб-приложении. Эти альтернативы реальным проектам просто не стоят для меня хлопот / риска.   -  person Boden    schedule 22.10.2010
comment
Под обычным веб-приложением вы имеете в виду html / javascript / ajax вместо Flex? Вы все еще используете Flex ... но с обычными веб-методами RemoteObject (или SOAP, или REST)? Если так, то я склоняюсь к тому, чтобы ... обрабатывать данные самостоятельно, а не использовать модный модуль управления данными. Тем не менее, я все еще использую Flex / Blaze ... поскольку я думаю, что он имеет много других преимуществ.   -  person HDave    schedule 23.10.2010


Ответы (5)


Если вы привержены Spring и не хотите представлять Seam, я не думаю, что Granite DS даст вам что-то большее, чем Blaze DS. Существует полезная утилита, которая гарантирует, что в клиенте одновременно существует только один экземпляр любой одной сущности, но на самом деле это довольно легко сделать с несколькими экземплярами Dictionary со слабыми ссылками и некоторой пост-обработкой, применяемой к вызовам сервера. . Многие другие функции специфичны для шва, как упоминается здесь, в документации:

http://www.graniteds.org/confluence/display/DOC/6.+Tide+Data+Framework

Как правило, подход Tide сводится к минимуму количества кода, необходимого для работы между клиентом и сервером. Его принципы очень похожи на принципы JBoss Seam, что является основной причиной того, что первая интеграция Tide была выполнена с этим фреймворком. Также доступны интеграции со Spring и EJB 3, но они немного более ограничены.

Однако я думаю, что подход Granite к управлению данными - это большое улучшение по сравнению с подходом Livecycle, потому что они действительно совсем другие. Из документации по граниту:

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

Это отличается от того, как Livecycle DS использует «управляемые коллекции», где вы вызываете fill () для захвата больших массивов данных, а затем вызываете методы commit () для массового сохранения изменений. Это рассматривает бэкэнд как API доступа к необработанным данным и начинает усложняться (или просто полностью разваливаться), когда у вас есть детальные требования к безопасности. Поэтому я думаю, что подход Гранита гораздо более работоспособен.

person cliff.meyers    schedule 15.06.2009
comment
Управление данными - это функция, которая меня интересует больше всего. Мне не ясно из документации - эта функция правильно работает только с Seam? - person Boden; 16.06.2009

Все функции управления данными (сериализация отдельных объектов JPA, кэширование клиентских объектов, разбиение на страницы данных ...) работают с Spring. GraniteDS ничего не требует, вам нужен только Seam, если вы хотите использовать Seam на сервере.

person Community    schedule 06.07.2009

Фактически, бесплатная версия WebORB для Java действительно управляет данными. Недавно я опубликовал сравнение WebORB для Java, LiveCycle DS, BlazeDS и GraniteDS. Вы можете просмотреть эту сравнительную таблицу здесь: http://bit.ly/d7RVnJ Мне были бы интересны ваши комментарии и отзывы, поскольку мы хотим, чтобы это было наиболее полное сравнение функций в Интернете.

Привет, Кэтлин

person Kathleen Erickson    schedule 16.05.2010

Вы смотрели проект интеграции spring-blazeDS?

person ethyreal    schedule 11.08.2009
comment
Конечно, пользуюсь. Мой вопрос касается GraniteDS, поскольку он может восполнить некоторые из недостающих функций BlazeDS (например, управление данными). - person Boden; 12.08.2009

GraniteDS с Seam Framework, Hibernate и MySql - очень хорошая комбинация. Что я делаю, так это создаю базу данных, использую seamgen для создания объектов гибернации, а затем работаю оттуда.

person Community    schedule 15.08.2009