0

WCF RIA サービス上に構築されたプロジェクトがあります。複数の引数が渡され、引数に応じて異なるアイテムのセットを生成するメソッドがあると想像してください。次に例を示します。

 IQueryable<PresentationEntity> GetEntities(DateTime startDate, DateTime endDate, int maxCount)
{
...
}

問題は、パラメーター値に応じてすべての出力をキャッシュするために、このメソッドのキャッシュを設定する最良の方法は何ですか?

4

1 に答える 1

0

以前に、すべてのパラメーターを単純に連結して文字列を形成することでこれを行いました。これがキャッシュ キーとして機能します。

注意すべきいくつかの点を考慮してください。

  1. 渡す可能性のあるオブジェクトについては、ToString() をオーバーライドして、オブジェクトが文字列として一意に表現されるようにする必要があります。おそらく、プロパティを連結するか、Java のハッシュ コード プロパティのようなものを使用します。

  2. 順序によってバグが発生する可能性があるため、毎回同じ順序で連結するようにしてください。

  3. 分野横断的なコードを記述できる AOP フレームワークをいくつか調べることができます。これは、各 WCF 呼び出しの先頭に大量の "if (!InCache(key)) { ... }" ステートメントを使用してコードを散らかす必要がないことを意味します。

于 2013-04-05T17:19:38.433 に答える