RIA против RCP

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


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


person paweloque    schedule 14.04.2009    source источник


Ответы (9)


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

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

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

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

person cliff.meyers    schedule 20.04.2009

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

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

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

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

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

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

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

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

person KarlP    schedule 21.04.2009

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

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

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

Версия RCP уже давно отстала по функциональности. Насколько нам известно, Eclipse хорош как среда разработки (для Java у нас нет опыта работы с другими языками), но усилия, которые они приложили для отделения IDE от графического интерфейса (чтобы сделать возможным RCP), не < em>вполне закончено.

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

person paxdiablo    schedule 18.04.2009

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

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

person Kim L    schedule 20.04.2009

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

person mattkemp    schedule 14.04.2009

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

person Surya    schedule 21.04.2009

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

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

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

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

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

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

person Community    schedule 18.04.2009

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

person McGovernTheory    schedule 18.04.2009