使用basicHttpsBinding在WCF(SOAP)中缓存 - 简单示例

时间:2016-06-22 17:32:08

标签: wcf caching soap

我创建了简单的WCF服务,将数据列表返回给客户端。 为了提高WCF的性能,我需要添加Cache来保存一些参考值。这样我每次都不必点击数据库。 这是我第一次写缓存。以下是问题清单。

  • 我可以参考的任何简单示例示例
  • 我需要在哪里初始化此缓存对象
    1. 我是否需要为缓存创建operationContract和服务方法?    如果是这种情况,我该如何在Service
    2. 中初始化此过程
    3. 我是否需要编写类来保存这个初始化逻辑?我是否需要编写逻辑以确保在任何方法的开头填充它?

提前谢谢。

1 个答案:

答案 0 :(得分:1)

您需要在要缓存的方法上方添加AspNetCacheProfile属性。这确保了每次客户端从方法请求数据时都不会调用特定方法。必须首先在web.config文件中定义缓存配置文件。

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

在web.config文件中,将配置文件MyCacheProfile配置为:

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

属性&#34; cacheDuration&#34;设置响应应以秒为单位的缓存时间和&#34; varyByParam&#34;允许您指定用于缓存响应的查询字符串参数。

有关更多详细信息,请参阅this