Является ли хорошей практикой иметь отдельные проекты / развертывания для конечных точек сети и службы? - PullRequest
2 голосов
/ 23 ноября 2011

Если у меня есть размещенное веб-приложение, то будет ли хорошей практикой разделять веб- и веб-службы API на 2 разных проекта / размещенных приложения в tomcat?

Я вижу, что если люди пытаются злоупотреблять APIэто повлияет на производительность веб-приложения.

Если бы мне нужно было создать 2 отдельных проекта (или, если не изначально, но создать для возможности разделения), могу ли я как-то поделиться своим слоем данных в спящем режиме?между 2 проектами?

Я использую IntelliJ, как я могу это сделать?Будет ли создание отдельного модуля для гибернации (доменные сущности, классы Dao и Service).

Ответы [ 3 ]

2 голосов
/ 23 ноября 2011

Я бы не сказал, что это хорошая практика в целом, но, возможно, хорошая идея для некоторых сценариев.

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

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

Вы можете создать свой уровень обслуживания различными способами:

  • Как веб-сервисы.Когда вам нужна совместимость.
  • В качестве удаленных EJB (это возможно в TomEE ).Когда совместимость не требуется.
  • Вы также можете создать комбинацию обоих вышеперечисленных, они не являются взаимоисключающими.

С точки зрения разделения проектов, вы можете создать:

  • Набор доменных объектов в модуле jar, который должен использоваться совместно вашим веб-и сервисным слоями.
  • Военный модуль для вашего веб-слоя.
  • AМодуль jar для интерфейсов уровня сервиса, который является зависимостью для вашего веб-уровня.
  • Модуль jar / war для уровня сервиса, содержащий службы и DAO.
1 голос
/ 23 ноября 2011

В чем разница между тем, что вы называете «веб» и «веб-сервис API» с точки зрения клиента? Программный клиент может «злоупотреблять» любым из них, поэтому не уверен, имеет ли смысл разделять их по этой причине. Вы можете использовать балансировщик нагрузки для масштабирования.

0 голосов
/ 23 ноября 2011

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

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