Как обеспечить стабильную работу веб-сервисов от одного выпуска к другому? - PullRequest
4 голосов
/ 21 марта 2010

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

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

Но как мы это обеспечим? Одна идея состоит в том, чтобы сравнивать файлы WSDL с предыдущими версиями в каждом выпуске. Это будет гарантировать, что интерфейсы не изменятся, но не обнаружит изменения поведения, например, если в какой-то общей библиотеке будет обнаружена ошибка.

Другая идея заключается в создании набора сервисных тестов, например, с использованием soapUI. Но тогда мы никогда не узнаем, достаточно ли мы рассмотрели дела.

Каковы некоторые лучшие практики в этом отношении?

Ответы [ 3 ]

2 голосов
/ 21 марта 2010

Существует два вида изменений для веб-службы: непостоянные изменения и непрерывные изменения. Прерывание изменений - это как изменение сигнатуры веб-метода или изменение схемы ввода данных. Непрерывное изменение похоже на добавление нового веб-метода или добавление необязательного члена в контракт данных. В целом, ваш клиент должен продолжать работать с непрерывным изменением. Я не знаю, какую технологию вы используете, но использую versioing в пространстве имен службы и пространстве имен datacontract, следуя рекомендациям W3C . Вы даже можете продолжать размещать разные версии на разных конечных точках. Таким образом ваши клиенты сломаются, если они попытаются использовать новую версию вашего сервиса без повторной генерации прокси из новой версии WSDL или продолжат использовать старую версию.
Некоторые ссылки WCF являются http://msdn.microsoft.com/en-us/library/ms731060.aspx http://msdn.microsoft.com/en-us/library/ms733832.aspx

Я бы не рассматривал изменение поведения как изменение в смысле SOA. Это больше похоже на исправление дефектов.

2 голосов
/ 21 марта 2010

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

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

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

IMO, кроме мониторинга WSDL на предмет изменений (что действительно необходимо, только если у вас есть стратегия внедрения по принципу «волей-неволей»), единственный способ действительно гарантировать, что все работоспособное и стабильное, заключается в проведении непрерывного, автоматического, периодического, функционального тестирования с помощью набора тестов, который обеспечивает полный охват как WSDL, так и основных функциональных возможностей приложения, включая пограничные случаи.Контрольные примеры должны контролироваться версиями, как приложение и WSDL, и должны разрабатываться параллельно с новыми версиями приложения (а не после, как реакция).Все это можно автоматизировать с помощью SoapUI.В идеале, регистрировать результаты где-то, что можно накапливать и сообщать о них на какой-либо панели инструментов, чтобы в случае поломки какого-либо события вы знали, когда оно сломалось, и, надеюсь, соотносили это с таким событием, как обновление приложения, или с чем-то более благоприятным, например с пакетом обновления.толкнул, выполняются электромонтажные работы и т. д. Однако ... делай, как я говорю, а не как я.Мне не удалось применить эту стратегию на работе.Ваши голоса подскажут мне, стоит ли мне давить сильнее или делать что-то еще!

...