Код клиент-сервер должен быть написан в одном “проекте” или два?

Я начинал клиент-серверное приложение. Сначала я естественно создал два проекта в Eclipse, два репозитория управления исходным кодом, и т.д. Но я быстро вижу, что существует немного общего кода между двумя, которые, вероятно, извлекли бы выгоду из совместного использования (в том же проекте или в общей библиотеке) вместо копирования.

Кроме того, я изучал и пробовал разработку через тестирование, и мне кажется, что было бы легче протестировать на основе реальных клиентских компонентов вместо того, чтобы иметь необходимость настроить огромный объем кода только для насмешки чего-то, когда код находится, вероятно, главным образом в клиенте. В этом случае это кажется наличием клиента и сервера вместе, в одном проекте, тонко разделенном корневыми пакетами (org.myapp.client.* и org.myapp.server., возможно, org.myapp.shared. также).

Мое самое большое беспокойство в слиянии клиента и сервера, однако, имеет безопасность; как я удостоверяюсь, чтобы части сервера кода не достигали компьютера пользователя? Когда Eclipse связывает JAR, я должен был бы выбрать определенные для сервера биты и надеяться, что не скучаю ни по кому, правильно?

Так особенно, если Вы пишете клиент-серверные приложения сами (и особенно в Java, хотя это может превратиться в агностический языком вопрос, если требуется обменяться опытом с этим на других языках), какое разделение Вы сохраняете между своим кодом клиента и сервера? Они находятся только в различных пакетах/пространствах имен или совершенно других двоичных файлах, пользующихся совместно использованными библиотеками или чем-то еще полностью? Как Вы тестируете код вместе и все же поставлетесь отдельно?

8
задан Ricket 25 March 2010 в 15:19
поделиться

3 ответа

Ни то, ни другое. Его должно быть 3. (обычный, клиентский и серверный). Однако это не обязательно должно быть три «проекта». Используя Maven, я создаю три подмодуля в главном проекте. Вы можете сделать что-то подобное с помощью Ant.

3
ответ дан 5 December 2019 в 20:15
поделиться

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

  1. Общая DLL, которая содержит общие функции, которые используются как клиентом, так и сервером
  2. DLL / Exe для клиента
  3. Dll / exe для сервера

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

4
ответ дан 5 December 2019 в 20:15
поделиться

Я обнаружил, что по крайней мере один проект для каждого готового объекта (развертывание сервера, двоичный файл клиента и т. Д.) Работает хорошо, например, Хадсон. Тогда вы можете сделать общий код в базовом проекте доступным для всех.

1
ответ дан 5 December 2019 в 20:15
поделиться
Другие вопросы по тегам:

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