2016-06-22 7 views
0

単純なWCFサービスを作成してクライアントへのデータのリストを返しました。 WCFのパフォーマンスを向上させるには、いくつかの参照値を保持するためにCacheを追加する必要があります。このように私は毎回データベースにヒットする必要はありません。 これは初めてのキャッシュ書き込みです。以下は質問のリストです。basicHttpsBindingを使用したWCF(SOAP)のキャッシュ - 単純な例

  • 任意の簡単なサンプル例私は、キャッシングのためにoperationContractやサービスメソッドを作成する必要がありますか、このキャッシュオブジェクトに
    1. を初期化する必要があります
    2. を参照することができますか? この場合、サービスでこのプロセスを初期化するにはどうすればいいですか
    3. この初期化ロジックを保持するためにクラスを作成する必要はありますか?これがメソッドの最初に埋め込まれていることを確認するためにロジックを記述する必要がありますか?

事前にありがとうございます。

答えて

0

キャッシュするメソッドの上にAspNetCacheProfile属性を追加する必要があります。これにより、クライアントがメソッドからデータを要求するたびに、特定のメソッドが呼び出されなくなります。キャッシュプロファイルは、最初にweb.configファイルで定義する必要があります。

[ServiceContract] AspNetCompatibilityRequirements(RequirementsMode=AspNetCompatibilityRequirementsMode.Allowed)] 
public class MyService 
{ 
    [AspNetCacheProfile("MyCacheProfile")] 
    public SomeData GetData(int id) 
    { 
     // ... 
    } 
} 

そして、web.configファイルのように、プロファイルMyCacheProfileを設定:属性「cacheDurationは」レスポンスが秒にキャッシュされるべきであり、「varyByParamは」あなたを可能にする時間を設定します

<system.web> 
    <caching> 
     <outputCacheSettings> 
     <outputCacheProfiles> 
      <add name="MyCacheProfile" duration="30" 
varyByParam="none" sqlDependency="MyTestDatabase:MyTable"/> 
     </outputCacheProfiles> 
     </outputCacheSettings> 
    </caching> 
</system.web> 

応答をキャッシュするために使用されるクエリ文字列パラメータを指定します。

詳細については、thisを参照してください。

+0

上記の例は、WebHttpBindingを使用するRestfulサービスに適用されます。私のものはbasicHttpBindingのSOAPです。それがSOAPのために働いていると思いますか?ありがとう – Kat

関連する問題