2012-04-26 2 views
2

В настоящее время мы находимся на стадии разработки нового проекта, который будет развернут в Windows Azure. Продукт будет общедоступным веб-API с использованием нового ASP.NET MVC Web API. Нам нужно будет поддерживать несколько версий API с течением времени. Например, при развертывании он будет версией 1. Этот номер версии не должен меняться, если нет принудительного изменения контракта. Значение, если в версии 1, у нас есть некоторый маршрут службы, такие как:Host Multi-Vered Services в Windows Azure

/v1/user/{id} 

И он поддерживает GET/POST и для POST, он поддерживает значение имени. Ну, возможно, в версии 2 мы хотим изменить то, что принимает POST, и теперь мы изменили имя на FullName, а также поддерживаем FirstName и LastName.

Это создает проблему любого, кто использует версию 1 и этот метод, новые изменения, которые мы делаем, нарушат их функциональность.

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

/v1/user/{id} 

будет продолжать работать и ударил старых библиотек и т.д. И мы разместим версии 2 бок о бок с ним, чтобы потребители могли мигрировать в используя

/v2/user/{id} 

В то время как мы медленно исчезаем старые.

Итак, мы хотим иметь возможность размещать несколько версий наших веб-сервисов бок о бок в Windows Azure, который будет состоять из разных маршрутов/контрактов, разных основных библиотек и т. Д. Кто-нибудь знает, как мы можем это сделать это?

ответ

0

Вы можете использовать ARR для обеспечения возможности маршрутизации. Это модуль IIS, который можно добавить с помощью задачи запуска Azure. Смотрите этот пост о том, как установить ARR:

http://robindotnet.wordpress.com/2011/07/21/how-to-install-iis-application-request-routing-in-windows-azure/

Вы бы затем провести каждую версию приложения в виде отдельного развертывания и установки ARR направить на правильный * .cloudapp.net адрес.

Другая идея - разместить все версии в одном развертывании и использовать заголовки хостов для маршрутизации между ними. то есть (version1.yourdomain.com, version2.yourdomain.com).

См WebRole/Сайты/Сайт/VirtualApplication часть схемы определения сервиса:

http://msdn.microsoft.com/en-us/library/windowsazure/gg557553.aspx

0

Versioning с REST API является сложным вопросом. Я не думаю, что есть один правильный ответ, но есть много дискуссий. Большая часть обсуждения сосредоточена на дизайне API, например, на том, как размещаются URI и ресурсы, а не на технической реализации. Если вы не полностью настроились на размещение номера версии в URL-адресе, я бы предложил сначала подумать об этом, а затем попытаться выяснить, как его реализовать.

Есть несколько отправных точек здесь на SO:

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