Перенос двухуровневого Java-приложения на?

В настоящее время у нас есть двухуровневое приложение Java Swing, работающее поверх MS SQL Server 2005. Вся бизнес-логика находится в базе данных. Клиент довольно старый (и не очень дружелюбный), и из соображений производительности и масштабируемости мы уже начали портировать некоторые сервисы на промежуточный уровень в Java.

Однако у нас все еще есть ряд краткосрочных и долгосрочных целей:

Выберите стек технологий для нового интерфейса

Это непросто — я вижу все, от веб-приложения на одном конце континуума до традиционного настольного приложения на другом — жизнеспособные варианты. Нынешний внешний интерфейс на самом деле не сложный (в основном основанный на формах), поэтому я вижу соответствие между веб/AJAX, но это та область, где мы не знаем того, чего не знаем.

Стеки в моем списке:

  • Eclipse RCP, Netbeans RCP
  • Flex/Flash, Silverlight, JavaFX
  • Чистые интерфейсы Javascript (Sprout Core, Javascript MVC, ...)
  • Веб-фреймворки на основе Java (Wicket, JSF, ...)

Найдите способ заставить текущее приложение работать приемлемо в удаленной ситуации

У нас есть клиенты, которые перепродают наше приложение более мелким клиентам и нуждаются в возможности удаленного развертывания. Из-за двухуровневой природы текущей архитектуры это приводит к ужасной производительности (например, вызов хранимой процедуры, которая возвращает 18 наборов результатов). В прошлом мы использовали решение Citrix, но такой подход никому не нравится. Туннелирование JDBC через порт 80 также кажется плохой идеей. Я начал задаваться вопросом, есть ли что-нибудь, что могло бы использовать подход, подобный X-Windows, для удаленного управления только частью графического интерфейса.


person SteveD    schedule 05.09.2010    source источник
comment
Вы в настоящее время развертываете уровни db и swing на своих клиентских сайтах? Существуют ли какие-либо ограничения на аппаратное обеспечение, которые могут повлиять на ваш выбор среднего уровня?   -  person Jon Freedman    schedule 05.09.2010
comment
Аппаратное обеспечение на самом деле не проблема. У нас есть 2 разных типа клиентов: одни устанавливают все на свой сайт, а другие имеют клиент, но используют сторонний хостинг.   -  person SteveD    schedule 06.09.2010


Ответы (6)


Чтобы упростить разработку и использовать свой опыт работы со Swing, рассмотрите возможность использования Vaadin для внешнего интерфейса. Это среда Java для создания современных веб-приложений, которые отлично выглядят и хорошо работают. Весь код написан на Java и очень похож на Swing.

Что касается общей архитектуры приложения, я бы посоветовал многоуровневую сервис-ориентированную архитектуру. Лучший способ сделать это — использовать инфраструктуру Spring с Hibernate для доступа к базе данных.

person Eugene Ryzhikov    schedule 05.09.2010
comment
Отказ от ответственности: я являюсь членом команды Vaadin. Согласитесь, ваше приложение звучит как раз то, для чего был разработан Vaadin. С Vaadin вы можете сосредоточиться на своей бизнес-логике и не беспокоиться о веб-технологиях, шаблонах и т. д. - person hezamu; 06.09.2010

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

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

Что касается лучшего фреймворка, это зависит от знаний вашей команды, от того, как будет использоваться ваше приложение (более или менее javascript) и т. д.

person Colin Hebert    schedule 05.09.2010
comment
Интернет привлекателен с точки зрения развертывания и обновления, но есть и политика поддержки поддерживаемых браузеров. Это непросто, поскольку у клиентов могут быть политики, в отношении которых браузеры являются приемлемыми. - person SteveD; 05.09.2010
comment
В большинстве случаев, когда вы используете веб-фреймворки, ваше веб-приложение будет совместимо с большинством (если не со всеми) веб-браузерами. Это также означает, что вашим клиентам не потребуется Java/Silverlight на их компьютерах. - person Colin Hebert; 05.09.2010
comment
Вы, несомненно, застрянете с поддержкой IE6, но вы всегда можете нанять веб-дизайнера, который сделает вам скин сайта. - person Jon Freedman; 05.09.2010
comment
Не все браузеры одинаковы - хотя фреймворки Javascript могут работать во всех браузерах, производительность ОЧЕНЬ варьируется. - person SteveD; 06.09.2010
comment
Это также очень изменчиво в зависимости от используемого оборудования. Вы не можете это контролировать. - person Colin Hebert; 06.09.2010

Мы только что прошли очень похожий процесс оценки при переносе устаревшего приложения.

Для нас самым важным решающим фактором при выборе интерфейсной среды были предварительные знания команды разработчиков. Мы хотели что-то, с чем всем было бы комфортно сразу. У нас была пара старших разработчиков, которые работали с X или Y, но всем был известен фреймворк Swing.

В конце концов мы остановились на платформе NetBeans, использующей веб-службу RESTful для связи с сервером EE.

В качестве бонуса вы можете развернуть приложение платформы NetBeans как приложение Java WebStart, что означает, что вам не нужно беспокоиться об отдельных установках.

person Tim Sparg    schedule 25.06.2011

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

person rlovtang    schedule 05.09.2010

Предполагая, что вы собираетесь заставить всех своих клиентов установить новый средний уровень, я не могу придумать аргумент против того, чтобы сделать его веб-приложением Java. Как уже упоминалось, у вас есть преимущество контроля всего доступа к вашей платформе через HTTP, что позволяет легко перепродать, просто с настройкой брандмауэра. Нет никаких причин, по которым вы не можете использовать Javascript в веб-интерфейсе, вас может заинтересовать DWR, что позволяет напрямую взаимодействовать с объектами Java через Javascript. Я использовал это раньше, чтобы добавить простое взаимодействие Ajax в веб-приложение Spring MVC.

Причина, по которой мне нравится этот подход, заключается в том, что вы уже переносите код на средний уровень Java, поэтому

  1. Стоимость аппаратного обеспечения Java-сервера уже накладывается на клиентов, хостинг сервера приложений / веб-сервера сопоставим.
  2. Уже есть опыт работы с Java, можно использовать с DWR
  3. Может использовать столько/мало Javascript, сколько необходимо (я использовал DWR с IE6, Firefox 3, Chrome)

Я думаю, вы правы, опасаясь навязывать слишком много функций клиенту, я бы выбрал как можно более тонкий клиент. Единственная причина, по которой я бы посмотрел на первые два варианта стека, - это если у вас есть опыт разработчика в определенной области, а не Java webapp/Javascript.

person Jon Freedman    schedule 06.09.2010
comment
ДВР еще жив? Сайт не работает, последний релиз был больше года назад. - person SteveD; 06.09.2010
comment
Я не знаю, находится ли он все еще в активной разработке, но он определенно готов к производству, и о нем есть очень хорошая книга - books.google.com/books?id=xORZWVLWu-8C - person Jon Freedman; 06.09.2010

I'd suggest to create a short list of candidate frameworks and create a small test application with all of them. This way you will get a sense of good and bad aspects from all of them and also get a picture what the community activity and documentation is like for each project (there is a lot of variance on those).

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

person hezamu    schedule 06.09.2010