Когда начать? Java-приложение с несколькими интерфейсами - PullRequest
0 голосов
/ 27 февраля 2009

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

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

Итак, мой вопрос:

Для приложения потребуется не веб-интерфейс, я полагаю, в Swing. Это необходимо по очень конкретным причинам. Приложению также потребуется веб-интерфейс с теми же функциями, что и у интерфейса Swing, который, вероятно, будет развернут как портлет JSR-168, и инструмент веб-администрирования (также портлет). С моим предыдущим дизайном я получил много дублирующегося кода, потому что каждый компонент имел свою собственную кодовую базу, и я по глупости использовал хранимые процедуры, чтобы гарантировать, что критические вычисления были, по крайней мере, непротиворечивыми.

С чего мне начать? Мне так трудно сосредоточиться на том, как все это должно работать в мире Java. Я думаю, с чем мне труднее всего - как создать приложение, которое может иметь как внешний интерфейс Swing (или любой другой), так и веб-интерфейс с как можно меньшим дублированием?

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

Ответы [ 4 ]

6 голосов
/ 27 февраля 2009

Сборка ядра, содержащего бизнес-логику. Используйте JDepend или аналогичный инструмент, чтобы убедиться, что он нигде не ссылается на что-либо, свинг или что-либо web / jsp / servlet.

Создайте два интерфейса: для веб-версии выберите веб-структуру по вашему выбору и назовите свою бизнес-логику оттуда.

Для инфраструктуры Swing у вас есть два варианта: получить доступ к businesslogic через веб-сервисы (вы можете использовать RMI или что-то еще, но я бы не стал), то есть логика находится на том же веб-сервере, который обслуживает веб-приложение (я, вероятно, предпочел бы тот). Альтернатива состоит в том, чтобы отправить weblogic с изменяемым графическим интерфейсом. Упрощает кодирование и отладку, но теперь у вас есть несколько точек, которые обращаются к БД, что вызывает головную боль, когда вы хотите использовать кэширование

В любом случае вы должны дублировать элементы графического интерфейса только один раз в html / css / javascript и один раз в разгаре.

Поздравляю с этим проектом, он многому научит вас по дизайну и архитектуре программного обеспечения.

1 голос
/ 27 февраля 2009

У вас должен быть проект со всей бизнес-логикой.

Затем 2 отдельных проекта, 1 для веб-доступа и 1 для приложения Swing. оба проекта вызывают API бизнес-логики. в этих 2 проектах есть только код презентации

1 голос
/ 27 февраля 2009

Использовать сервер среднего уровня.


Клиент Swing -> средний сервер с пружинным удаленным доступом -> база данных

Веб-клиент -> промежуточный сервер с пружинным удаленным доступом -> база данных


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


Клиент Swing пишет один раз, используя miglayout и glazelist.

http://www.miglayout.com/

http://publicobject.com/glazedlists/glazedlists-1.8.0/

взгляните на это сообщение .....

Java Swing: библиотеки, инструменты, менеджеры макетов


Запись на средний сервер один раз с использованием jdbc, потому что у вас уже есть база данных ..

http://www.springsource.org/


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

0 голосов
/ 27 февраля 2009

Очевидно, начнем с единой кодовой базы. Вы также можете подумать, действительно ли вам нужно несколько интерфейсов.

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...