Выбор технологий для создания каркаса Ajax RIA с использованием строительных лесов - PullRequest
0 голосов
/ 10 июля 2010

Создание достойного RIA-приложения, интенсивно использующего данные, до сих пор сложно.Несмотря на наличие тонны каркасов.

Я собираюсь создать свой собственный фреймворк для такого рода приложений.Одним из ключевых требований является создание лесов (создание пользовательского интерфейса из модели).Другой - это серверная часть .NET.Я знаю о динамических данных asp.net, oracle ADF, fornax / sculptor и т. Д. (Да, два последних предназначены для Java).Существует множество серверных сред, таких как Django (на основе Python), Grails (на основе Groovy), ruby ​​on rails.Они обычно содержат некоторые ORM и виды лесов.Но главная проблема для меня заключается в том, что они не содержат клиентской среды.Они генерируют код пользовательского интерфейса скаффолдинга, но его нельзя использовать повторно в коде, написанном от руки.Мне также не нравится подход asp.net WebForms с «серверными элементами управления».Даже если генерируются все серверные разметки (например, или похожие JSF / JSP).

С другой стороны, существуют (даже более) клиентские инфраструктуры.Они обычно не связаны с технологиями серверов.Здесь у нас есть Dojo, ExtJS, SmartClient, QooxDoo и другие. Все они предлагают нам написать JS-код и сделать немного CSS / HTML дизайна.Это неплохо, но JS-код (так как он является скриптовым кодом) очень подвержен ошибкам.

Поэтому мое первоначальное видение состояло в том, чтобы взять asp.net mvc для серверной части и взять какую-нибудь хорошую клиентскую среду.Проблема в том, какой выбрать.

Моим первым решением было взять инструментарий Dojo.Это фреймворк с множеством полезных свойств для JS (mixins, pub / sub, соединения, Defered, модули, Json-синтаксический анализатор, шаблоны Dijit, абстракции данных) и имеет много виджетов.И это бесплатно.

Но потом я посмотрел на ExtJS.Я еще не изучал это.Но их демо очень приятно.Мне показалось, что качество графического интерфейса намного лучше, чем у виджетов Dojo.Но ExtJS стоит денег для коммерческого использования.Но платить деньги за хороший фреймворк - не большая проблема.
Тогда я посмотрел на SmartClient.Специально для витрина SmartGWT .Я должен сказать, что каждый, кто выбирает фреймворк / библиотеку Ajax, должен это видеть.Это потрясающе.Это клиентская библиотека (SmartClient), встроенная в GWT.Таким образом, мы можем создать удивительное приложение Ajax с Java.С компилируемым языком, без языка сценариев!Большой!Но их еще больше - SmartGWT EE.Он легко интегрирует клиентский код (сгенерированный из Java) с серверными объектами Java, обеспечивая двустороннюю привязку данных между моделью данных (связанной с сервером) и элементами управления графическим интерфейсом.
Это то, что мне нужно, но мне нужна такая вещьдля .NET.Да, я знаю о скрипте №.Но это очень ограничено (c # 1.0).Там также JSC .Работает, даже отладка.Но это далеко от возможностей GWT + SmartGWT.

Так что, глядя на такую ​​красоту, создание фреймворка с asp.net mvc + dojo больше не кажется хорошей идеей.

Я уверен, что многие из вас сталкивались с похожими проблемами: как эффективно соединить клиентскую часть Ajax RIA со стороной сервера в приложениях, требующих большого объема данных (например, для предприятий / интрасетей) (не веб-сайтов).Так какой подход / технологии еще имеет смысл рассмотреть?

ps Я даже рассматриваю возможность использования GWT.Но я должен использовать две IDE: одну для клиентского кода (java) и другую для серверного кода (asp.net mvc).Но это не предел мечтаний.

1 Ответ

1 голос
/ 13 июля 2010

Если многоразовые леса являются ключевой проблемой, это одна из самых сильных сторон SmartGWT / SmartClient.Посмотрите, как мало кода требуется для полностью функционирующего экрана CRUD здесь:

http://www.smartclient.com/smartgwt/showcase/#featured_pattern_reuse

И обратите внимание, что вы можете делать очень детализированные переопределения сгенерированного моделью интерфейса, при этом избегая дублирования:

http://www.smartclient.com/smartgwt/showcase/#layout_form_databinding

Да, SmartGWT EE для .NET не существует, однако интеграция с .NET довольно проста с использованием RESTDataSource:

http://www.smartclient.com/smartgwt/showcase/#restfulds_xml_integration_category

И одним из вариантов получения источников данных из существующих объектов / таблиц является использование способности SmartGWT читать схему XML:

http://www.smartclient.com/smartgwt/showcase/#featured_xsd_ds

Это можно использовать в сочетании с наследованием источника данных, например, вы можете объявить, что DataSource, настроенный для взаимодействия REST с вашим сервером, наследует определения своего поля от DataSource, который автоматически получается из XML-схемы:

http://www.smartclient.com/smartgwtee/javadoc/com/smartgwt/client/data/DataSource.html#setInheritsFrom%28com.smartgwt.client.data.DataSource%29

...