6

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

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

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

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

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

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

+2

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

ответ

1

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

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

Успехов,

-Keith

+0

Также вы можете попробовать сравнить 2 библиотеки DLL с помощью инструментов ApiChange, LibCheck или NDepend. – aponomarenko

4

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

+1

Хорошая точка. Это сделало бы трюк. Если статическая проверка невозможна, проверка выполнения будет следующей лучшей. благодаря –

0

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

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

Смежные вопросы