Структура клиент-серверного проекта, структура папок, файлы сборки и т. Д. - PullRequest
3 голосов
/ 18 декабря 2009

Я пишу клиентское и серверное приложение. Сейчас я только что разработал его самостоятельно, поэтому я написал его как один проект Eclipse, организованный в пакеты Java (org.myorg.server, org.myorg.client, org.myorg.networksystem и т. Д.). Проект развертывается в один файл JAR. Затем клиент - это апплет, поэтому я просто указываю параметр applet code на org.myorg.client.ClientApplet внутри файла jar, тогда как при запуске сервера это приложение командной строки, и я просто бежать:

java -jar MyJar.jar org.myorg.server.ServerApplication

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

Я хочу использовать сервер непрерывной интеграции, такой как CruiseControl . Было бы здорово, если бы мне нужно было просто проверить свой код в репозитории SVN; затем сервер CruiseControl соберет код, скомпилирует его и упакует в отдельные jar-файлы, затем развернет jar-сервер на моем выделенном сервере и запустит его, а также развернет клиентский jar-файл на моем веб-сервере для обновления апплета. *

Я могу понять, CruiseControl. Моя текущая проблема заключается в том, как отделить код. Он красиво разделен на клиентские и серверные пакеты, но есть и общие пакеты, такие как сетевой протокол. Должен ли я разделить свой проект на 3 проекта для клиента, сервера и общего? Должен ли я сделать что-то еще? Я собирался написать файлы сборки Ant вручную, но мне бы очень хотелось остаться в Eclipse.

Как мне лучше организовать свой код для достижения этих целей?

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

Ответы [ 4 ]

3 голосов
/ 18 декабря 2009

Вы на правильном пути, разделив ваш проект на 3 отдельных проекта - вам потребуется 1 клиент, 1 сервер и 1 общий.

Вы можете определить межпроектные зависимости для каждого проекта в Eclipse - если вы щелкнете правой кнопкой мыши по проекту, он появится в диалоговом окне, запущенном с помощью параметра «Настроить путь сборки».

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

2 голосов
/ 18 декабря 2009

Если кажется, что вы уже знаете, что вам нужно делать, однако, если вы хотите, чтобы CruiseControl компилировал и упаковывал код, тогда вам нужно будет использовать такой инструмент, как Ant, или возможный Maven , Gradle или какой-либо другой инструмент для сборки, чтобы заставить его делать то, что вы хотите. Даже если у вас есть пакет инструментов для сборки кода, вы все равно можете использовать Eclipse для сборки и запуска всего.

Я не уверен, насколько вы знакомы с Ant, но использование Ant даст вам больший контроль над процессом сборки за счет необходимости определения процесса. Другие инструменты, такие как Maven и Gradle, имеют предписанный способ структурирования кода, который уменьшает объем конфигурации для сборки, и в случае с Maven я не уверен, что можно изменить то, как он ожидает макет проекта. С другой стороны, Gradle может изменить свои значения по умолчанию.

Что касается организации, я думаю, что было бы неплохо разделить код на клиент, сервер и сетевой протокол, общий для клиента и сервера, как вы упомянули. Я не использую Eclipse, поэтому я не уверен, как это будет сделано. Вы можете просто упаковать клиент и сервер в отдельные JARS с файлами классов из модуля сетевого протокола в обоих или просто создать три JARS.

0 голосов
/ 18 декабря 2009

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

Однако для небольшого проекта это было бы излишним, по моему мнению, в таком случае я бы оставил его как один проект Eclipse, но написал бы собственные цели Ant (все в том же файле build.xml) для обработки упаковка клиента против сервера банок. Общий код просто появится в обоих банках.

Но да, вам нужно было бы поработать над муравьем вручную, но в любом случае это хороший навык.

0 голосов
/ 18 декабря 2009

Я думаю, что ваш вопрос отличный.
Я предлагаю изучить Maven . Он специально разработан для обеспечения единого передового рабочего процесса, включая этапы разработки, тестирования и развертывания. Даже если вы в конечном итоге не используете Maven, это может дать вам некоторые идеи о структуре проектов.
Eclipse прекрасно интегрируется с ant, поэтому вы можете использовать ant для создания / развертывания своих проектов и при этом оставаться в Eclipse.
Я определенно предлагаю разделить ваш код на несколько проектов Eclipse. Это обеспечило бы правильные зависимости: вы можете убедиться, что ваш клиентский код может использовать ваш общий код, а ваш серверный код может использовать ваш общий код, но общий код не может использовать любые другие два, и аналогично сервер может не используйте код клиента.

...