2012-04-26 4 views
2

現在、Windows Azureに展開される新しいプロジェクトの開発段階にあります。この製品は、新しいASP.NET MVC Web APIを使用して、公開アクセス可能なWeb APIになります。私たちがしなければならないことは、時間の経過とともにAPIの複数のバージョンをサポートすることです。たとえば、展開するときにはバージョン1になります。強制的な契約変更がない限り、このバージョン番号は変更しないでください。バージョン1で、我々のようないくつかのサービスルートを持っている場合意味、:Windows Azureのホストマルチバージョンサービス

/v1/user/{id} 

そして、それは/ POSTをGETとPOSTのためにサポートし、それが名前の値をサポートしています。まあ、バージョン2では、POSTが受け入れる内容を変更したいのですが、名前をFullNameに変更し、FirstNameとLastNameもサポートするようになりました。

これは、バージョン1とそのメソッドを使用している人の問題を引き起こします。新しい変更はその機能を破壊します。

だから我々はその

/v1/user/{id} 

にサービスのバージョン管理のサポートを追加する機能は、など、古いライブラリを仕事とヒットし続け、消費者はに移行することができますので、我々はそれに並べて、バージョン2の側を展開したいです

/v2/user/{id} 

私たちはゆっくりと古いものを消していますが、

簡単に言えば、Windows Azureでは複数のバージョンのWebサービスを並行してホストすることができます。異なるルート/契約、異なるコアライブラリなどで構成されます。この?

答えて

0

ARRを使用してルーティング機能を提供することができます。これは、Azureスタートアップタスクで追加できるIISモジュールです。 ARRをインストールする方法について、この記事を参照してください。

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

あなたは、正しい* .cloudapp.netアドレスに転送するには、別の展開、およびセットアップARRとして、アプリケーションの各バージョンをホストします。

もう1つのアイデアは、すべてのバージョンを同じ配備でホストし、ホストヘッダーを使用してそれらの間をルーティングすることです。すなわち(version1.yourdomain.com、version2.yourdomain.com)。

サービス定義スキーマのWebRole /サイト/サイト/ VirtualApplication部分を参照してください:REST APIをバージョン管理

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

0

は難しい質問です。私は一つの正解があるとは思わないが、議論が多い。議論の多くは、APIの技術的実装ではなく、URIとリソースのレイアウト方法など、APIの設計に焦点を当てています。 URLにバージョン番号を入れることを完全にはめ込んでいないのであれば、まずそれについて考えてから、実装する方法を見つけようと思います。

はSOにここではいくつかの出発点があります。

関連する問題