Шаблон проектирования J2EE - Как сделать приложение независимым от бэкэнд-сервиса - PullRequest
0 голосов
/ 05 апреля 2011

Я пытаюсь разработать некоторые веб-сервисы RESTful, которым для доступа к данным требуется доступ к некоторой серверной системе.Этими внутренними источниками может быть любой из следующих:

  1. База данных через JDBC

  2. ERP, связывается через SOAP

  3. Другое приложение J2EE, связывающееся через SOAP или, может быть, REST.

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

Большое спасибо за помощь !!

Ответы [ 2 ]

2 голосов
/ 05 апреля 2011

Надеюсь, это поможет:

  • Слой вашей системы : как вы упоминаете в своем ответе, всегда отделяйте логику bz от логики доступа к данным. Я бы порекомендовал реализовать разные уровни в разных бинарных модулях, это даст вам гибкость в развертывании разных уровней на разных уровнях (если вам это действительно нужно).

  • Шаблон репозитория : бизнес-уровень имеет абстрактные определения того, как выполнять операции доступа к данным с определенными объектами в вашей логике bz. Методы в репозиториях всегда используют сущности, определенные в вашей логике bz, в качестве параметров (репозитории всегда «общаются» на языке bz). Как только интерфейсы репозитория определены на уровне bz, вы реализуете их на отдельном уровне: уровне доступа к данным.

  • Внедрение зависимостей : на уровне приложений (GUI, сервер приложений, ...) в логике инициализации (начальной загрузке) вы можете использовать контейнер зависимостей для внедрения реализаций репозитория ( определенные в слое доступа к данным) в вашей логике bz. Существует множество платформ с открытым исходным кодом с контейнерами для внедрения зависимостей.

Используя эти 3 шаблона, вы можете отделить логику DA от логики bz.

Обратите внимание, что это очень короткий ответ, я бы порекомендовал вам занять некоторое время и прочитать следующие книги:

Спасибо

Juanjo

0 голосов
/ 05 апреля 2011

Надеюсь, я правильно понял ваш вопрос.

В данный момент я работаю над приложением, которое использует веб-сервисы JAX-WS RESTful для доступа к данным.Данные могут поступать из разных источников (две разные базы данных и индекс Lucene в нашем случае).

Я думаю, не зная специфики вашей ситуации, я могу рекомендовать только типичный подход, который мы используем:

  • Код для интерфейсов, а не для реализаций.Поэтому создайте интерфейс для каждого нужного вам DAO и сделайте так, чтобы ваш бизнес-уровень ссылался на этот интерфейс, а не на реализацию.
  • Используйте внедрение зависимостей (например, Spring Framework) для настройки и внедрения этих DAO, которые могут указыватьк нескольким источникам данных и т. д. Таким образом, бизнес-уровень абсолютно не знает, откуда поступают данные.

Хотя это старая книга, большая часть этой информации находится в Expert One-on- Один J2EE Дизайн и разработка .Но я бы сказал, что это стандартная передовая практика Enterprise Java.

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