2012-04-24 13 views
2

WCFサービスのデータ型とメソッドをバージョン管理するには良い方法がありますか?WCFサービスをバージョンアップする方法

バージョン1.0からバージョン4.5にメソッドを含めると、このようなことがうまくいくはずです。

[ServiceContract()] 
interface ITradeTrackingService 
{ 
    [OperationContract()] 
    [Version(1.0, 4.5)] 
    void PublishQuote(Quote quote); 
} 

データ型にsimularがあります。

その後、私は私のURLで、次のようにやりたい:私のGlobal.asaxのBeginRequestイベントで

server.com/ws/2.3/ 

そして、このような何かを:

protected void Application_BeginRequest(object sender, EventArgs e) 
{ 
    Service.Version = someParsingOfUrl(); // return 2.3; 
} 

し、正しい方法を暴露しましたデータ型の正しい値が公開されました。

これは私だけの夢ですか、これは何らかの方法でできますか?

+1

[WCFでサービスをバージョン管理するためのベストプラクティス?](http://stackoverflow.com/questions/36999/best-practices-for-versioning-your-services-with-wcf) – Cheeso

答えて

7

サービスのバージョン情報については、bunch of stuffがあります。考慮すべき点がたくさんあります。

バージョン管理については、hereの概要が説明されていますが、具体的には、インターフェイス継承を使用してエンドポイント契約のバージョンを変更した場合のように見えます(例hereを参照)。

マイクロソフト自身では、それについてかなり多くのことを言っています(here)。

1

マイクロソフトは、WCFのVersioning Strategiesに関する優れた記事を公開しました。記事で

、著者はバージョン管理サービス契約には主に2つの方法について説明します。

アジャイルバージョン:できるだけ長く、下位互換性に依存しており、互換性が破られるまで正式契約とエンドポイントのバージョンを避けるために。このアプローチは、実動コードを頻繁に更新する必要のあるアジャイルな環境で役に立ちます。

enter image description here

バージョンの制限:任意のサービス契約への変更、データコントラクト、メッセージの契約またはその他の契約に関連またはエンドポイントに関連した変化のための正式契約とエンドポイントのバージョン管理を行います。このアプローチは、生産更新の頻度が低い環境や、すべての変更の詳細な追跡が必要な環境で最適です。

enter image description here

アジャイルと厳格なバージョンの間にあると呼ばれるセミバージョンの制限を説明したアプローチもあります。

リンク先の記事では、データコントラクトのバージョン管理についても説明しています。

関連する問題