Архитектура Вопрос: GWT или Vaadin для создания настольных приложений? - PullRequest
5 голосов
/ 10 марта 2011

Мы планируем создать feedreader в качестве приложения Windows для рабочего стола и iPad . Поскольку мы хотим, чтобы показывали веб-сайты И для запуска (нашего собственного) JavaScript в этом приложении, мы подумали о том, чтобы доставить приложение в виде HTML / CSS / JavaScript, просто обернутое некоторыми Элемент управления .NET или компонент веб-браузера Cocoa Touch. Таким образом, задача состоит в том, чтобы выяснить, какую платформу использовать для создания файлов HTML / CSS / JS для встраивания в приложение.

Для разработки HTML / CSS / JavaScript мы будем рады использовать Vaadin, GWT или какой-либо другой фреймворк, так как мы гораздо лучше с Java, чем с JS. Мы одобряем Vaadin после короткого мозгового штурма, поскольку компоненты пользовательского интерфейса очень хороши, но я боюсь, что большая часть тяжелой работы будет на сервере, а не на клиенте (и это не было бы слишком приятно). Мы также хотели бы GWT, но компиляция Java-JS отнимает много времени и дополнительного шага, а также замедляет время разработки в прошлом при его использовании.

Вопрос в том, какую среду разработки вы бы выбрали (учитывая, что вы хотели реализовать этот проект, и до сих пор вы в основном занимались Java) и почему? Если есть лучшие варианты инфраструктуры ( Список Обширный клиентский фреймворк ), пожалуйста, дайте мне знать.

Редактировать: приложению необходимо время от времени общаться с нашим сервером (например, синхронизировать прочитанное), но в основном он должен получать каналы XML самостоятельно. Поэтому я надеюсь, что большая часть сгенерированного кода может быть встроена в приложение, и нет необходимости загружать наш сервер.

Edit2: мы (реально, даже если вы сомневаетесь) ожидаем по крайней мере 10000 пользователей.

Ответы [ 3 ]

6 голосов
/ 11 марта 2011

Основываясь на моем опыте работы с Vaadin, я бы пошел на это, но вместо этого ваши требования отдают предпочтение чисто GWT.

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

Поскольку Vaadin разрабатывается гораздо быстрее, вы можете сначала создать небольшую версию Vaadin и посмотреть, действительно ли это проблема для iPad.

С другой стороны, если вы можете сразу же подключиться к сети, вы можете вообще пропустить установку локального сервера.Просто запустите приложение в режиме онлайн и внедрите версию для настольного компьютера, используя стандартный браузер операционной системы (т. Е. Элемент управления .NET, который вы предложили).Тогда Ваадину легче.

4 голосов
/ 10 марта 2011

Vaadin - это просто фреймворк, основанный на GWT, но обладающий двумя очень важными функциями:

  • не требует запуска компилятора GWT.Это чистая Ява.Конечно, если не добавить аддоны, потому что тогда должен работать компилятор gwt.
  • вам не нужно писать код связи.Таким образом, вам не нужно решать проблемы DTO, несериализуемые сопоставления объектов и не нужно писать сервлеты.

Я использую Vaadin в своей работе в течение одного года, и у нас пока нет проблем с производительностью (приложение, похожее на настольный компьютер с ~ 500 пользователями).Хорошим решением IMO является использование Vaadin только для пользовательского интерфейса, логика перемещения к независимым компонентам и соединение этих двух элементов с помощью Spring или Guice.

В этом случае вам следует использовать шаблон MVP и разработку под управлением домена.

  • Bussines-бины - это доменные объекты и логика, которые используют интерфейсы представления для отправки ответов.
  • Пользовательские компоненты Vaadin (могут расширять стандартные компоненты) реализуют интерфейсы представления.

Этот способ удобен, если вы решите изменить движок пользовательского интерфейса, если Vaadin не для вас.Просто переписайте отображения guice / spring и напишите новые реализации интерфейсов представления.

3 голосов
/ 11 марта 2011

Мои 3 цента:

Если вы решите использовать ваадин, вы получите выгоду от уже ХОРОШЕГО СМОТРЕТЬ компоненты. Поскольку вы не хотите писать (много) CSS, vaadin уже хорошо выглядит из коробки. Как бы то ни было, Vaadin является фреймворком SERVERSIDE. Взаимодействия с пользовательским интерфейсом попадут на задний план, даже если они не предполагают получение каких-либо данных (например, перемещение с одной вкладки на другую).

Если вы решите использовать GWT, вам придется как минимум стилизовать приложение (это не сложно). Существует также проблема длительного времени компиляции (но вы можете тестировать и отлаживать в размещенном режиме, который позволяет запускать приложение без компиляции, тогда вы компилируете только при развертывании). Основным преимуществом gwt является то, что вы контролируете то, что отправляется на провод. Для взаимодействий с пользовательским интерфейсом, которые не требуют получения данных из бэкэнда, он будет работать исключительно на стороне клиента. Вы разработчик определите, когда отправить запрос на сервер. (Выполнение запросов RPC в GWT очень просто)

Надеюсь, это поможет вам принять решение.

...