.NET Web Service Best Practice для нескольких разработчиков
У нас большой проект ASP.NET, состоящий из нескольких сотен отчетов. Мы находимся в процессе перемещения всех запросов SQL (работающих с базой данных Oracle) в три веб-службы. Веб-сервисы классифицируются по командам, выборам и запросам отчетов. Мы должны развернуть подмножество нашего проекта с использованием серверной части SQL*Server в нескольких местах, которые отключены от Интернета. Следовательно, наличие всех подключений к базе данных и запросов в веб-службах делает приложение управляемым, и мы можем извлекать подмножество отчетов и не нужно изменять код. Проект находится под контролем исходного кода с использованием программного обеспечения Serena ChangeMan.
Проблема в том, что у нас есть несколько программистов, и им всем нужно проверить файлы веб-сервисов, чтобы работать над их элементами. Мы только что реализовали ветвление, но постепенно оно становится кошмаром. Мы производим ежемесячные производственные поставки, а иногда и товары, которые должны поступить в ежемесячную сборку, задерживаются до следующего месяца. Слияние стало ручным процессом.
Я проводил поиски в Интернете и удивляюсь, что не смог найти ни одной хорошей белой страницы с "наилучшей практикой" архитектуры веб-сервисов. Есть много крупных компаний, которые должны были столкнуться с этими проблемами.
Используют ли большинство крупных групп разработки ветвление? Я читал, что Visual Studio Team System Database Edition может предоставить стандартный код, который позволит приложению подключаться к различным базам данных. Будет ли покупка Team System лучшим способом? Или кто-нибудь знает, где я могу найти документацию, которая поможет нам решить эти проблемы?
Спасибо лори
3 ответа
Эта проблема может показаться совершенно независимой от цели программного обеспечения. Проблема здесь в том, что у вас есть небольшое конечное количество файлов, с которыми ежедневно работают несколько разработчиков. У меня нет опыта ни с программным обеспечением Serena ChangeMan, ни с TFS, кроме как играть с ним У меня есть опыт работы с несколькими системами контроля версий, которые используют модель слияния / принятия: CVS и Subversion. Это отличные бесплатные системы контроля версий, которые широко используются.
Если вы не знакомы с моделью слияния / фиксации, идея заключается в том, что ни один разработчик не может "извлечь" и заблокировать файл для внесения изменений. Каждый может скачать и внести изменения в любой файл. Когда пришло время зафиксировать эти изменения в базе данных исходного кода, программное обеспечение хранилища предотвратит коммит, если другие разработчики внесли в файл другие изменения. Затем загружается новая версия, и в большинстве случаев изменения автоматически объединяются с вашими изменениями. Вы повторно тестируете, а затем фиксируете эту версию. Эта модель очень удачная и очень масштабируемая.
Сказав все это, даже модель слияния / принятия не может решить проблему наличия небольшого количества файлов, когда множество разработчиков вносят изменения в указанные файлы. Я бы порекомендовал разделить вашу функциональность на несколько веб-сервисов. Возможно, вместо трех монолитных веб-сервисов вы можете создать три группы связанных веб-сервисов. Я думаю, что это в сочетании с использованием системы контроля версий с помощью merge / commit решит ваши проблемы.
Серверы CVS и Subversion работают на Windows, Mac и Linux. Для каждого есть несколько клиентов, доступных в нескольких операционных системах. К ним относятся автономные клиенты, плагины Visual Studio и плагины оболочки. Другим плюсом является то, что CVS и Subversion доступны из командной строки, что делает скрипты (например, автоматизированную сборку) довольно простыми.
Почему бы не разделить вашу логику на отдельные файлы классов, которые могут быть проверены каждым разработчиком?
Мы используем SOA, но мы также используем SVN, который более ориентирован на слияние. Может быть, рассмотреть другую систему контроля версий?