2

現在、Windows Azure に展開される新しいプロジェクトの開発段階にあります。この製品は、新しい ASP.NET MVC Web API を使用してパブリックにアクセスできる Web API になります。私たちがやらなければならないことは、時間の経過とともに API の複数のバージョンをサポートすることです。For instance when we deploy it will be version 1. このバージョン番号は、契約が強制的に変更されない限り変更されるべきではありません。つまり、バージョン 1 の場合、次のようなサービス ルートがあります。

/v1/user/{id}

また、GET/POST をサポートし、POST の場合は Name の値をサポートします。おそらくバージョン 2 では、POST が受け入れるものを変更したいので、Name を FullName に変更し、FirstName と LastName もサポートするようにしました。

これにより、バージョン 1 とその方法を使用しているすべての人に問題が生じます。新しい変更を加えると、それらの機能が壊れます。

そのため、サービスのバージョン管理サポートを追加する機能が必要です

/v1/user/{id}

引き続き動作し、古いライブラリなどにヒットします。また、バージョン 2 を並行して展開するため、消費者は使用するライブラリに移行できます。

/v2/user/{id}

古いものをゆっくりとフェードアウトさせながら。

つまり、簡単に言えば、さまざまなルート/コントラクト、さまざまなコア ライブラリなどで構成される Windows Azure で、Web サービスの複数のバージョンを並べてホストできるようにしたいと考えています。これを行う方法を知っている人はいますか?

4

2 に答える 2

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/Sites/Site/VirtualApplication 部分を参照してください。

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

于 2012-04-26T14:30:52.257 に答える
0

REST API のバージョン管理は難しい問題です。正解は一つではないと思いますが、議論はたくさんあります。議論の多くは、API の技術的な実装ではなく、URI やリソースの配置方法など、API の設計に焦点を当てています。URL にバージョン番号を入れることに完全に慣れていない場合は、最初にそれについて考えてから、それを実装する方法を見つけようとすることをお勧めします。

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

于 2012-04-26T14:37:40.720 に答える