2013-10-13 2 views
1

Мы собираемся начать новую разработку проекта, которая в основном является бэк-офисным приложением.Весенний бэкэнд и интерфейс gwt, разделение проблем?

Мы выбрали следующие технологии в нашем внутреннем интерфейсе:

Spring, JPA, MySql, MongoDB, RabbitMQ ..

Мы решили использовать GWT в качестве нашей системы во внешнем интерфейсе.

Мой вопрос очень прост:

Если мы создаем один проект, который включает в себя как бэкенд и внешний интерфейс?

ИЛИ:

Если мы создадим 2 отдельный проект, один будет чисто бэкенд проект, а другой чистый внешний интерфейс?

РЕДАКТИРОВАТЬ - мы - команда из 4 разработчиков, каждая из которых должна быть грязной в конце концов. Каждый человек в команде должен кодировать функции от клиента к серверу.

ответ

0

Это зависит от различных параметров, как окончательный размер проекта, количество членов команды и т.д.

Но в целом я бы предпочел разделить проекты в Maven модулей, потому что это позволяет лучше клиент/серверные стороны разделение, это облегчает тестирование, и это более удобно, когда у вас есть люди в проекте, сфокусированные в одной стороне.

Если вы идете вперед с этой установкой, я предлагаю взглянуть на Томас Бройер в archetypes

[Изменено] Зная, что вы команда из 4-х человека, и вы собираетесь работать в течение 8 месяцев, я окончательно пойдет с мультимодульным проектом maven (сервер, общий, клиент).

+0

Monalo, см. Мое редактирование – Urbanleg

+0

Будет ли проект крупным (строки кода)? сколько месяцев вы оцениваете? –

+0

Грубая оценка: 8 месяцев – Urbanleg

0

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

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

Для проекта frontend я бы использовал что-то вроде XMLRPC, тогда ваш код GWT будет связываться через XMLRPC с вашим кодом Java и voila, вы можете протестировать конечные точки прямо там, разработать, просто подключив фиктивные данные прямо там и работайте над интерфейс даже без наличия базы данных или системы очередей. Это также позволяет одновременно запускать оба проекта.

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

Смежные вопросы