Должен ли клиент-серверный код быть написан в одном «проекте» или двух? - PullRequest
8 голосов
/ 25 марта 2010

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

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

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

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

Ответы [ 3 ]

4 голосов
/ 25 марта 2010

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

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

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

3 голосов
/ 25 марта 2010

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

1 голос
/ 25 марта 2010

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

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