Вопрос

Я работаю над проектом, где мы пытаемся создать замену графического интерфейса для старого приложения.Прежде чем мы действительно внедрим функциональность, мы начали прототипирование с помощью Eclipse RCP (Rich Client Platform) и GWT (Google widget toolkit, расширенное интернет-приложение).Каков ваш опыт работы с графическими интерфейсами RIA и RCP?Когда имеет смысл использовать RIA и в каких ситуациях богатый клиент больше подходит?При нынешних возможностях RIA провести черту становится все труднее и труднее..Есть ли у вас какой-нибудь опыт?


Редактировать:Все ваши ответы действительно интересны.Я хотел бы принять их все, поскольку они вносят свой вклад в ответ на мой, признаю, довольно открытый вопрос.Так что мой голос за каждого из них.Надеюсь, награда будет разделена между вами.

Это было полезно?

Решение

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

Большим преимуществом использования GWT является простота развертывания по сравнению с чем-то вроде RCP.Для пользователя нет ничего проще, чем указать своему веб-браузеру на URL-адрес, а для операционной группы нет ничего проще, чем отправить код на сервер, отскочить от него и на этом закончить.

Что касается функциональности, то большой областью, где GWT будет испытывать недостаток, будет более богатая визуализация данных:построение графиков, дерева / узла, сетевых диаграмм и т.д.Это возможно с помощью GWT и некоторой помощи на сервере, но ограничения DHTML начинают проявляться даже при использовании такого мощного инструментария, как GWT.С другой стороны, RCP предоставляет вам всю мощь Java 2D для визуализации всего, что вы хотите.Такого рода функции могут быть вам не нужны, но именно они делают приложения действительно интересными, а не просто набором элементов управления вкладками, деревом и таблицей данных.

Я разрабатываю с Adobe Flex уже несколько лет и нахожу его действительно мощным, обладающим более или менее теми же преимуществами развертывания, что и что-то вроде GWT, но предлагающим ту же мощность, что и RCP.Возможно, вы тоже захотите это проверить.

Другие советы

Несмотря на то, что GWT имеет большое значение, он не обеспечивает такой гибкости и доступности, как обычное приложение.

Несмотря на то, что приложение GWT может делать почти все, что может реальное приложение, ряд факторов указывает на то, что RCP был бы лучшим инструментом.

  • Повторная работа
  • Много входных данных
  • Длительные сеансы
  • Повторяющиеся задачи
  • Пользовательские виджеты для редактирования или презентации.
  • Несколько окон с разными данными.
  • Быстрые клавиши для часто используемых операций
  • Быстрые ответы.
  • Настоящая строка меню, coolbars.
  • Подходящее окно, которое легко найти на панели задач.
  • Контекстные меню для редко используемых операций
  • Ограниченное (или известная база) количество пользователей.
  • Обширная или сложная анимация или обновления в режиме реального времени.

Если вы считаете, что вашему приложению нужен верстак с несколькими представлениями и редакторами, то выбор предоставляется.

С RCP и workbench не так просто работать, но вы получаете многое бесплатно, если приложение выиграет от более "бесплатной" и открытой рабочей модели с несколькими открытыми представлениями / редакторами и т.д.

Если приложение предназначено для более случайных задач, то GWT действительно хорош.

GWT действительно хорош, но это все еще веб-приложение, и иногда это отстой.Я бы не хотел выполнять всю свою работу в веб-приложении, где я могу случайно нажать клавишу и потерять всю свою работу и сеанс.(На моей клавиатуре даже есть клавиша рядом с клавишами со стрелками, которую, кажется, невозможно отключить).Он достаточно мощный, чтобы делать практически все, что вы можете сделать в RCP, но он все еще работает внутри веб-браузера, и это может раздражать.

Помните, что вы можете использовать java Webstart для развертывания приложений RCP.

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

Несмотря на все усилия лагеря RCP, на разработку версии RIA ушло примерно столько же времени (хотя она была с нуля), и она выглядела более гладкой в исполнении.

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

Версия RCP уже давно отстала по функциональности.Насколько нам известно, Eclipse хороша как среда разработки (для Java у нас нет опыта работы с другими языками), но усилия, которые они прилагают для отделения IDE от GUI (чтобы сделать возможным RCP), не вполне ЗАКОНЧЕННЫЕ.

С другой стороны, jQuery, похоже, специально создан для такого рода вещей (вероятно, потому, что он был специально создан для такого рода вещей).Как разработка, так и запуск приложений - это очень приятно.

Расширенные интернет-приложения - это хороший способ создать надежное программное обеспечение, которое действует подобно традиционному настольному программному обеспечению.Одна из распространенных проблем с RIA заключается в том, что многие разработчики склонны размещать бизнес-логику в коде на стороне клиента.Бизнес-логика и состояния в клиентском коде очень небезопасны, поскольку можно манипулировать клиентским кодом во время выполнения.Кроме того, это система whitebox, которая позволяет хакерам изучать код и находить слабые места, такие как проверка входных данных, выполняемая только в коде на стороне клиента, или манипулирование состояниями.Пусть вас не вводит в заблуждение запутывание, поскольку оно только замедляет работу хакера, но не останавливает его.Билли Хоффман написал хорошую книгу о безопасности AJAX (называется, та-даа, "Ajax security"), и я рекомендую его каждому разработчику RIA.

Это не означает, что RIA по определению плох, вы можете написать безопасный RIA, если знаете, что делаете (нет бизнес-логики в коде на стороне клиента, нет состояний, проверка входных данных [также] выполняется на стороне сервера и т.д.).Существует несколько фреймворков, которые реализуют этот RIA, управляемый сервером securer, одним из которых является Инструментарий ИТ-мельницы (на основе GWT) и Ледяные лица насколько мне известно, это тоже должно быть таковым.

По моему опыту, графические интерфейсы RIA, как правило, достаточно надежны, чтобы передавать большую часть информации пользователям.Вероятно, есть какие-то исключения из этого правила, но я не могу придумать хорошее прямо сейчас.Преимущество RIA заключается в том, что он доступен любому пользователю через веб-браузер без установки толстого клиента (RCP).Если у вас нет какого-то специального сложного отображения, которое невозможно выполнить с помощью веб-технологий, я бы рекомендовал пойти по пути RIA.

Организация , в которой я работал , выбрала RCP , потому что их пользователям необходимо было работать с приложением как онлайн, так и оффлайн ( когда они находятся в дороге и т.д. ) .Я знаю , что сейчас это возможно с Google grears , но gears на самом деле недостаточно популярна , чтобы крупная организация могла использовать ее флагманский продукт .Но если у ваших пользователей нет необходимости переходить в автономный режим, вы действительно избавили бы их от необходимости синхронизировать пользовательские данные / обновления продукта и т.д. между вашим приложением rcp и сервером, RIA было бы правильным решением в этом случае.

Существует также возможность развертывания RCP с некоторыми преимуществами RIA.Одно из решений, которое исследуется для нашего клиента (для использования исключительно сотрудниками их компании), - это использование Java-приложения, запускаемого через Java-сервлет.

Некоторые выявленные преимущества включают:

  • Он легко обновляется, во многом как RIA (просто повторно разверните его JAR-файл, он будет выбран при следующем переходе anytime на страницу с апплетом).
  • Он выглядит, ощущается, ведет себя и выполняет как нативное приложение, очень похожее на RCP (благодаря SWT).

Некоторые выявленные недостатки включают:

  • На компьютерах пользователей должен быть установлен Java-плагин.
  • Приложение должно быть разработано на версии Java, совместимой с пользовательскими плагинами (хотя клиенту может потребоваться установка минимальной версии на компьютерах персонала).Инструмент RetroWeaver может помочь, хотя у меня не очень большой опыт работы с ним.
  • Пользователь должен держать веб-браузер открытым, в противном случае работа приложения будет прекращена.

Какова природа этого приложения.Должен ли он быть полностью запущен на клиентском компьютере?Нужен ли ему доступ к локально сохраненным данным?Вы просто заменяете графический интерфейс для существующего приложения, при этом движок по-прежнему является устаревшим кодом?

Моя вторая половинка работает над программным устройством, в котором она использовала AJAX в качестве средства настройки устройства.Набор функций для настройки богат и очень хорошо согласуется с RIA.Аналогично, крайне нежелательно устанавливать программное обеспечение локально в веб-браузере.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top