Структурирование исходного кода для нескольких версий веб-сервисов - PullRequest
3 голосов
/ 06 октября 2009

Существует ли соглашение о структурировании исходного кода, когда несколько версий одного и того же веб-сервиса в одной и той же магистрали или ветви исходного кода?

Вот наша ситуация.

Мы делаем версии наших веб-сервисов, добавляя номер версии в URL-адрес wsdl следующим образом:

url/project/1.0/WebServiceA?wsdl

Я собираюсь развернуть версию 1.1 WebServiceA вместе с версией 1.0, чтобы пользователям 1.0 не пришлось ничего менять. Версии 1.0 и 1.1 WebServiceA будут иметь свои собственные отдельные классы Java.

Я хочу развернуть обе версии в одном файле .war. (Мы могли бы принять политику только одной версии веб-службы в .war и развернуть другие версии в их собственном .war. Это привело бы к увеличению количества .wars для развертывания, когда мы получим несколько версий нескольких веб-служб. Я бы предпочел развернуть только один .war.)

Я думаю, что мы должны просто использовать отдельную структуру пакета для различных версий:

com.company.dept.ws.WebServiceA  (version 1.0)
com.company.dept.ws.v11.WebServiceA  (version 1.1)

com.company.dept.ws.WebServiceB  (version 1.0)
com.company.dept.ws.v11.WebServiceB  (version 1.1)
com.company.dept.ws.v12.WebServiceB  (version 1.2)

Java-классы под ws., Ws.v11. И ws.v12. будут отдельные классы Java.

Можете ли вы увидеть какие-либо проблемы в будущем с этим соглашением?

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

Спасибо.

Dean

1 Ответ

0 голосов
/ 06 октября 2009

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

Если вы когда-нибудь захотите исправить ошибки в старых версиях, вам понадобится возможность интегрировать изменения вперед или назад между различными версиями. Например, предположим, вы обнаружили критическую проблему безопасности, существующую в версиях 1.0, 1.1 и 1.2. Вы не будете хотеть исправить это 3 раза. Большинство систем контроля версий позволят вам выполнить интеграцию между смежными ветвями. Некоторые (например, Perforce, и я считаю, что git и, возможно, несколько других) позволят вам интегрировать изменения между файлами даже в пределах одной ветви. (на самом деле концепция "ветви" в Perforce - это просто удобство для записи интеграции между файлами)

Так что вам нужно подумать о том, нужно ли вам делать подобные исправления нескольких версий, и если да, то может ли ваша система управления sorce обрабатывать внутриотраслевые интеграции. Если нет, то вам лучше использовать отдельную ветку для каждой версии.

...