Статьи

Бизнес-приложения в браузере — наконец, жизнеспособная альтернатива


Приложения Web 2.0 великолепны.
Они визуально привлекательные, быстрые, интуитивно понятные и отзывчивые. Однако для больших ERP-систем и т. П. Парадигмы браузера традиционно плохо совпадают.


Индивидуальный дизайн для нашего первого приложения Eclipse RAP

Реализация требований для бизнес-приложения в браузере абсолютно возможна, но требует огромных усилий. Следовательно, вы должны выбрать одну из доступных платформ AJAX или обанкротиться, пытаясь создать свою собственную. Вот некоторые из самых сложных вещей, которые нужно сделать правильными и совместимыми с различными браузерами:

  • MDI и среда стыковки — вы хотите работать с несколькими окнами и вкладками и расположить их в соответствии с вашим рабочим процессом
  • Состояние транзакции — процессы в вашем бизнес-приложении очень редко соответствуют циклу транзакций HTTP. Часто вы меняете UX, чтобы вам было легче справляться с HTTP. Возьмем, например, многостраничные мастера — они часто отбрасываются в веб-версии таких приложений.
  • Фоновые задачи и прогресс — продолжайте работать, пока отчет компилируется в фоновом режиме, а прогресс сообщается пользователю
  • Таблицы с клавиатурной навигацией, сортировкой и встроенным редактированием
  • Каркас форм с проверкой и преобразованием на стороне сервера

Я мог бы продолжать и продолжать, но ты понял. Вы можете подумать: «Я уже решил все это в своем приложении, я просто склеил его вместе с JQuery, ExtJS и некоторым языком бэкэнда». Ну, я смею вас внимательно взглянуть на этот код и спросить себя:

  • Это красиво и ремонтопригодно?
  • Ты танцуешь под мелодию HTTP или хум собственного бизнес-приложения?
  • Вы пишете HTML, CSS, JavaScript и PHP или Java, или вы просто работаете со своим любимым языком в вашей любимой IDE?
  • Сколько времени уходит на написание реальной бизнес-логики?

Большинство веб-приложений имеют тенденцию ощущаться как веб-страница, а не как реальное приложение. Попробуйте дважды щелкнуть где-нибудь, и, например, на мгновение будет выделен большой объем текста. Чтобы бизнес-приложения чувствовали себя хорошо в Интернете, все эти детали должны быть устранены.

Вещи были лучше раньше

Я любил писать бизнес-приложения. Я использовал Delphi как единственный инструмент и оставался в IDE 100% времени. В настоящее время вы сталкиваетесь с проблемами кросс-браузерной совместимости, трагически плохой отладкой JavaScript, проблемами CSS и преобразованием данных между вашей серверной стороной и вашими клиентскими технологиями. Гораздо меньше времени тратится на реальную логику приложения.

Решение, доступное сегодня

Что ж, я наконец-то нашел святой Грааль: Eclipse RAP . Наконец, я получил полную платформу Eclipse , представленную в HTML. Мне не нужно писать ни одной строки HTML или JavaScript, и, наконец, я могу программировать исключительно на Java. Самое приятное то, что я на 100% свободен от жизненного цикла HTTP. Допустим, я хочу представить диалог пользователю и действовать в зависимости от результата. Мне не нужно переключаться между методами и склеивать разные HTTP-запросы и ответы. Я просто напишу:

PersonSearchDialog dialog = new PersonSearchDialog("Select a person from the list");
if (dialog.open() == OK) {
    Person selected = dialog.getResult();
    UI.info("You selected " + selected);
}

В приведенном выше примере будет минимум одна HTTP-транзакция для визуализации пользовательского интерфейса для диалога, другая для получения результата и третья для отображения всплывающего окна для пользователя. Это заключено в капсулу для меня. Я все еще могу хранить всю бизнес-логику там, где она принадлежит, и полностью забыть об HTTP или преобразовании полезной нагрузки ответа в мои доменные объекты и из них. И прежде чем вы скажете: «Я мог бы сделать все это на стороне клиента» — конечно, для этого примера вы могли бы, но реальный пример из жизни потребовал бы некоторой внутренней обработки, и вы вернулись к исходной точке.

Единый источник

С Eclipse RAP я могу написать свой исходный код один раз и скомпилировать как веб-клиент, так и собственные приложения для настольных компьютеров для всех основных операционных систем. Существует даже возможность создавать мобильные версии, используя примерно ту же базу кода с новой платформой Eclipse Tabris . Лично я предпочитаю нативный клиент, но для некоторых приложений вам нужно иметь веб-поддержку, и вы просто не можете позволить себе писать свои приложения дважды только потому, что клиент с iPad требует, чтобы он мог крутить, вертеть и делать жесты, чтобы управлять вашим приложением и отказывается использовать клавиатуру, как взрослый ?

дизайн

Большинство бизнес-приложений, написанных с использованием фреймворка, выглядит именно так. Часто слишком сложно адаптировать внешний вид приложения, поэтому это просто не сделано. Другая проблема заключается в том, что инфраструктура добавляет элементы и парадигмы в ваш пользовательский интерфейс, которые вам просто не нужны. Приложения Eclipse RCP и NetBeans RCP выглядят как их аналоги в среде IDE.

В нашей организации это было просто неприемлемо. У нас уже был взломан дизайн, поэтому, если Eclipse RAP должен был использоваться, изменения дизайна должны были быть включены. Я обнаружил, что, написав небольшой пользовательский компонент topmenu и немного CSS, который RAP конвертирует для меня в кросс-браузерный CSS, я мог легко получить дизайн, который нам нужен, и при этом пользоваться всеми преимуществами RAP по умолчанию.

Но подождите — вы ненавидите Eclipse RCP !?

Eclipse RAP — это, по сути, Eclipse RCP с другой целевой платформой. В лагере «Затмение» много проблем, как я отмечал пару лет назад . На этот раз некоторые пункты недействительны, так как я нацеливаюсь на Интернет, а другие я решил, разрабатывая в IntelliJ IDEA и создавая оболочки для неприятных и старомодных частей платформы Eclipse. Теперь я получаю удовольствие от универсальных и общедоступных интерфейсов и пишу минимальное количество котельной плиты. Это пример EditorPart, который создает таблицу и позволяет дважды щелкнуть строку, чтобы открыть редактор для выбранного элемента:

public class ProductListEditor extends TableEditorPart {
	public void init() {
		addColumn("#", "id");
		addColumn("Name", "name");
		doubleClickEditWith(ProductEditor.class);
	}

	public List getElements(ProductCategory category) {
		return erp.productsByCategory(category);
	}
}

Нет HTML-страниц, нет CSS, нет JavaScript, только чистый код Java и блаженство разработчика. Я получаю выгоду от горячей замены кода, и контейнер перезагружается через 1,8 секунды, если мне нужно перезапустить. Я, вероятно, также добавлю JRebel для дальнейшего улучшения моего цикла разработки.

Если вам интересно узнать, как я настроил свой проект Eclipse RAP для разработки в IntelliJ IDEA, пожалуйста, дайте мне знать. Тем временем, я призываю вас взглянуть на Eclipse RAP 2.0 для вашего следующего проекта бизнес-приложения!