Вопрос по java – Java-приложение для крупных предприятий - Модуляризация

12

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

Наша основная система основана на Web, включаяwebservices, В настоящее время мы занимаемся редизайном всего проекта, и сейчас самое время начать структуру проекта.

У нас есть около 7 веб-модулей, в том числе для веб-проекта на основеStruts2 а такжеSpring 3.1,Webservice ядро на основеJAX-WS а такжеSpring 3.1

My question is what are the best practices to design the project structure and modularization for a project like this:

Мы обязательно будем использоватьMaven а такжеOSGi если нужно. Я думаю о чем-то

<code>WebProject.war
   |---Web.xml
   |--- Libs
   |
   |--- Web Module1.jar
   |--- Web Module2.jar
   |--- Web Module3.jar
   |--- Web Module4.jar
   |--- Web Module5.jar
   |--- Web Module6.jar

 WebService.war
   |---Web.xml
   |--- Libs
   |
   |--- Service.jar
   |--- Service2.jar

 EJBProject.jar
   |
   |--- module.jar
   |--- module2.jar
</code>

Это то, что я лично имею в виду, но мы ищем что-то более модульное, чтобы мы могли работать и развертыватьWebModule1.jar не затрагивая другие модули и основной проектWebProject.war, Кроме того, мы хотим, чтобы у специализированных команд был только код их проектов, поэтому, если команда должна работать только сService2.jar в ихIDE у них будет только код дляService2.jar и ресурсный проект с другим проектом, уже скомпилированным.

Спасибо

Вам интересно, какая у вас "общенациональная компания". Какая страна?? Neil Bartlett
ха-ха! Страна с меньшим населением, чем Флорида, Доминиканская Республика. Garis M Suero

Ваш Ответ

5   ответов
0

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

Использование Maven определенно упростит управление этими зависимостями

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

Если вы хотите, чтобы все было проще, я бы начал с сервисов OSGi & # xB5; и не включал бы сегодня огромные стеки в веб-мире ...
1

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

Spring/Struts/CXF/etc. maven artifacts, WAR/JAR/etc. plugins, Application servers deploy/testing plugins etc. And you can provide only common maven artifacts for teams that develop only specific modules without sharing of all codebase. Maven is supported by all Continuous Integration Servers (Hudson/TeamCity etc.)

OSGi. Если вы хотите использовать его, вы должны внимательно посмотреть на свой текущий дизайн и попытаться адаптировать его к & # x3BC; Службам. Обычно у вас есть модули с API, потребителями API и поставщиками API. Это помогает вам больше разделить разработку между командами (например, один разрабатывает модуль потребителя API, другой - модуль поставщика API). Если вам нужно, вы можете разделить модуль API потребителя / провайдера на 2+ пакета OSGi (которые являются модулями Maven).

6

Кирк Кнорншильд& APOS; s& quot; Архитектура приложения Java: шаблоны модульности с примерами с использованием OSGi & quot;, Вы могли бы начать с модульного приложения до перехода на OSGi (и я определенно инвестирую в хорошее тестовое покрытие, если у вас его еще нет).

Если вы используете servlet spec 3.0, посмотрите на использование веб-фрагментов.

С точки зрения структуры, которую вы показали, я бы сказал, ничего не вкладывая (кроме веб-фрагментов), WAR могут стать WAB (комплект веб-приложений - в основном тощий WAR). Также максимально используйте возможности OSGi's Services - вот где начинается самое интересное =)

Корпоративные платформы OSGi, такие как Karaf и Virgo, предлагают большую поддержку, в то время как вы пересекаете разделение JEE-OSGi (одни только Equinox и Felix - это совсем немного).

Ссылка на книгу содержит все ответы на этот вопрос, отличный ресурс, спасибо
@gersonZaragocin, согласен - мне особенно нравится тот факт, что в нем обсуждаются принципы модульности без указания OSGi .. (Но указывает, насколько фантастична OSGi)
-1

мы разработали модульную модульную систему для osgi.https://github.com/griddynamics/banshun Пожалуйста!

8

что ваш модуль знает настолько мало, насколько это возможно для человека, чтобы его можно было повторно использовать во многих различных контекстах. Ошибки возникают только в том случае, если допущено нарушение, минимизация допущений является самой большой причиной ошибок. OSGi предоставляет такие инструменты, как & # xB5; службы, которые очень хороши, позволяя предположениям оставаться локальными.

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

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

Похожие вопросы