私はPerlベースのRESTサービスを持っていますが、C#とWCFを使用してクライアントと通信します。私は高価なコールをいくつか持っており、キャッシュシステムを構築したいと考えています。キャッシュされたデータの新しいバージョンがサーバーに存在するかどうかを確認して確認する必要があります。私は標準の "If-Modified-Since"リクエストヘッダと "304 Not Modified"レスポンスステータスコードを使用する考えがありましたが、レスポンスにスローされた例外をキャッチするのに問題があります。WCF、REST、および標準HTTPヘッダーを使用したクライアントサイドキャッシュの実装
私のクライアントクラスは、ClientBase <>から派生しています。ここで私は、サービスメソッドを呼び出すために使用する方法は次のとおりです。
private T RunMethod<T>(ReqHeaderType reqHeaders, ResHeaderType resHeaders, Func<T> meth)
{
//Get request and response headers
var reqProp = GetReqHeaders(reqHeaders);
var resProp = GetResHeaders(resHeaders);
using (var scope = new OperationContextScope(this.InnerChannel))
{
//Set headers
OperationContext
.Current
.OutgoingMessageProperties[HttpRequestMessageProperty.Name] = reqProp;
OperationContext
.Current
.OutgoingMessageProperties[HttpResponseMessageProperty.Name] = resProp;
//Return the result of the call
return meth();
}
}
サービスメソッドを実行しているコールバックは、実行されたときに例外が発生します。例外をキャッチし、それが「変更されていない」応答であるかどうかを確認する方法はありますか?
私は部分的にあなたのアドバイスを取っています。私はRESTスターターキットのHttpClientを使用していますが。 WCFの全体的な複雑な構造は、単純なRESTクライアントのために過度に過剰なものになり、必要な詳細の多くを隠しました。ありがとう。 –
@Anthonyはい、HttpClientははるかに良い選択肢です。それが私が現在使っているものです。 –