Проверка обратной совместимости службы WCF - PullRequest
6 голосов
/ 19 марта 2009

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

Вспоминая мои дни, когда я работал разработчиком VB6 Com Api, я вспоминаю, как легко было указать предыдущую версию компонента во время компиляции и заставить компилятор проверить, поддерживается ли двоичная совместимость.

Я предполагаю нечто подобное, называемое (надеюсь) проверкой «Совместимости контрактов». Он будет использовать метаданные для выполнения проверки, аналогичной той, которую сделал VB6 dev env. Это можно сделать как отдельный шаг сборки, который будет выполнять утилиту.

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

  1. Извлечение метаданных из текущей версии службы в реальном времени
  2. Извлечение метаданных из новой версии сервиса
  3. Проверьте сервисный контракт и каждый контракт на совместимость данных. Только сообщение о критических изменениях.

Шаг 3 кажется сложным, но, безусловно, автоматизируемым ...

Ответы [ 4 ]

4 голосов
/ 07 марта 2011

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

1 голос
/ 19 марта 2009

Ничего подобного не существует, Энди, но если вы что-то запустили, и у вас есть 2 библиотеки DLL (одна старая и одна новая), вы можете использовать что-то вроде BitDiffer для сравнения.

Был проект на Codeplex, который помог с релизами WCF, но я не могу вспомнить, как он называется, извините.

Удачи,

-Keith

0 голосов
/ 07 марта 2011

Попробуйте сгенерировать модульные тесты, используя «Codeplex WCF Load Test» для старого контракта интерфейса и запустите их на новом:

Этот инструмент берет файл трассировки WCF и клиентский прокси WCF или контракт интерфейса WCF и генерирует модульный тест C #, который воспроизводит ту же последовательность вызовов, что и в файле трассировки. Затем можно использовать модульный тест для нагрузочного тестирования цели.

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