|
|
|
Структура крупного приложения
|
|||
|---|---|---|---|
|
#18+
Добрый день, изучаю джаву совсем не долго (около года) и сейчас поставил перед собой задачу - потихоньку перенести(а заодно и изучить новые технологии) разработанное ранее корпоративное веб-приложение(php, веб, генерация отчётности, оналайн статистика и т д) на Spring, Spting-mvc, Hibernate и т д . У меня возникла проблема с пониманием организации структуры такого приложения. В данный момент оно написано на php с использованием Yii фреймворка, где есть очень удобное разделение на модули, т.е. есть отдельный модуль например для Смс-информирования сотрудников, модуль тикетной системы, модуль управления пользователями(Rbac, ldap) и т д. Выглядит это примерно следующим образом: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. Т.е. в корне проекта присутствуют общие модели которые может использовать любой модуль, а также существуют модели и логика под конкретный модуль. Вопрос в следующем - как обычно джависты организовывают сложные(растущие) проекты? В данный момент структура моего Spring-mvc приложения выглядит следующим образом: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. Но как мне кажется укладывать в web\ абсолютно все контроллеры кучей, а в service\ абсолютно все сервисы - не совсем удобно для большого (в перспективе) проекта. Хотелось бы больше струтурированности. В интернете встречал упоминания модульности WAR архивов (несколько JAR в одном WAR), модульности через Maven. Но как-то конкретики не попадалось. Буду рад любой ссылке\ответу. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.02.2014, 13:52 |
|
||
|
Структура крупного приложения
|
|||
|---|---|---|---|
|
#18+
Вы совершенно точно заместили что раскладывать файлы по слоям это ошибка. http://www.javapractices.com/topic/TopicAction.do?Id=205 Слои растут с каждой новой "фичей". Отдельным классам одного слоя нужно гораздо меньше связей, чем классам разных слоёв, но обслуживающим одну и ту же функциональность. jar\war это модули более высокого уровня. Если между ними сильные связи, то разбивать на модули, без особой причины смысла нет. Поэтому отдельные jee модули обычно связаны слабо и разделение на модули вызвано явными требованиями к проекту. Например Клиент-Сервер-Общий код. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.02.2014, 13:59 |
|
||
|
Структура крупного приложения
|
|||
|---|---|---|---|
|
#18+
Отличная статья, спасибо, то что нужно! :) Остаётся только вопрос - что делать с классами которые могут использоваться разными модулями. Я понимаю что нарушается принцип модульности, но на практике он тяжело достигается (не дублировать же код). Но кажется здесь единственное решение вынести их например в пакет common. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.02.2014, 14:27 |
|
||
|
Структура крупного приложения
|
|||
|---|---|---|---|
|
#18+
SkyFireОтличная статья, спасибо, то что нужно! :) Остаётся только вопрос - что делать с классами которые могут использоваться разными модулями. Я понимаю что нарушается принцип модульности, но на практике он тяжело достигается (не дублировать же код). Но кажется здесь единственное решение вынести их например в пакет common. Ничего обычного. Отдельные фичи и модули, точно так же как и классы могут переиспользовать общий код, который инкапсулируется в некотором общем модуле. Важно чтобы в этом модуле небыло вообще всего общего кода. А были конкретные переиспользуемые модули. То есть подход такой же как и при дизайне отдельных классов. SRP и всё такое. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.02.2014, 14:33 |
|
||
|
Структура крупного приложения
|
|||
|---|---|---|---|
|
#18+
SkyFireОтличная статья, спасибо, то что нужно! :) Остаётся только вопрос - что делать с классами которые могут использоваться разными модулями. Я понимаю что нарушается принцип модульности, но на практике он тяжело достигается (не дублировать же код). Но кажется здесь единственное решение вынести их например в пакет common. если пользуетесь maven'ом, посмотрите на Multiple Module Projects . Это правда уже больше не к идеологии, а к средствам. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.02.2014, 15:50 |
|
||
|
|

start [/forum/search_topic.php?author=BAPBAP&author_mode=last_topics&do_search=1]: |
0ms |
get settings: |
6ms |
get forum list: |
13ms |
get settings: |
7ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
54ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
76ms |
get tp. blocked users: |
1ms |
| others: | 667ms |
| total: | 859ms |

| 0 / 0 |
