WCF rest 的幫助頁面和緩存機制

打開vs2010 在工具選項中選擇擴展管理器——聯機庫 安裝WCF REST Service Template 40(CS)模板web

安裝後新建wcf服務應用程序,刪除默認創建的文件。緩存

新建RestWcf4HelpPage.svc,代碼以下ide

using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.Serialization;
using System.ServiceModel;
using System.ServiceModel.Activation;
using System.ServiceModel.Web;
using System.Text;

namespace RestWcf
{
    [ServiceBehavior(IncludeExceptionDetailInFaults=false)]
    [AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)]
    public class RestWcf4HelpPage : IRestWcf4HelpPage
    {

        #region IRestWcf4HelpPage 成員

        [WebGet(UriTemplate="/Rest/Get/{id}")]
        public string GetData(string id)
        {
            return "Hello Rest GetData";
        }

        [WebInvoke(UriTemplate="/Rest/Add/{id}",Method="POST")]
        public string AddData(string id)
        {
            return "Hello Rest AddData";
        }

        [WebInvoke(UriTemplate = "/Rest/Update/{id}", Method = "PUT")]
        public string UpdateData(string id)
        {
            return "Hello Rest UpdateData";
        }

        [WebInvoke(UriTemplate = "/Rest/Delete/{id}", Method = "Delete")]
        public string DeleteData(string id)
        {
            return "Hello Rest DeleteData";
        }

        #endregion
    }

    [XmlSerializerFormat]
    [ServiceContract]
    interface IRestWcf4HelpPage
    {
        [OperationContract]
        string GetData(string id);

        [OperationContract]
        string AddData(string id);

        [OperationContract]
        string UpdateData(string id);

        [OperationContract]
        string DeleteData(string id);
    }
}
View Code

而後在創建RestWcf4Cache.svc,代碼以下工具

using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.Serialization;
using System.ServiceModel;
using System.ServiceModel.Activation;
using System.ServiceModel.Web;
using System.Text;

namespace RestWcf
{
    [ServiceBehavior(IncludeExceptionDetailInFaults=false)]
    [AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)]
    public class RestWcf4Cache:IRestWcf4Cache
    {

        #region IRestWcf4Cache 成員

        [AspNetCacheProfile("CacheFor10Senconds")]
        [WebGet(UriTemplate = "/Rest/Get/{id}")]
        public string GetData(string id)
        {
            return "Hello Rest GetData " + DateTime.Now.ToString();
        }

        #endregion
    }

    [ServiceContract]
    interface IRestWcf4Cache
    {
        [OperationContract]
        string GetData(string id);
    }
}
View Code

而後在配置web.config文件,其中duration值緩存的有效時間。ui

<?xml version="1.0" encoding="utf-8"?>
<configuration>

  <system.web>
    <compilation debug="true" targetFramework="4.0" />
    <caching>
      <outputCacheSettings>
        <outputCacheProfiles >
          <add name="CacheFor10Senconds" duration="10" varyByParam="format"/>
          <add name="CacheFor30Senconds" duration="30" varyByParam="format"/>
        </outputCacheProfiles>
      </outputCacheSettings>
    </caching>
  </system.web>
  <system.serviceModel>
    <services>
      <service name="RestWcf.RestWcf4HelpPage">
        <endpoint address="" behaviorConfiguration="RestWcf4HelpPageBehavior"
          binding="webHttpBinding" contract="RestWcf.IRestWcf4HelpPage" />
      </service>
      <service name="RestWcf.RestWcf4Cache">
        <endpoint address="" behaviorConfiguration="RestWcf4CacheBehavior"
          binding="webHttpBinding" contract="RestWcf.IRestWcf4Cache" />
      </service>
    </services>
    <behaviors>
      <endpointBehaviors>
        <behavior name="RestWcf4HelpPageBehavior">
          <webHttp helpEnabled="true" />
        </behavior>
        <behavior name="RestWcf4CacheBehavior">
          <webHttp helpEnabled="true" />
        </behavior>
      </endpointBehaviors>
      <serviceBehaviors>
        <behavior name="">
          <serviceMetadata httpGetEnabled="true" />
          <serviceDebug includeExceptionDetailInFaults="false" />
        </behavior>
      </serviceBehaviors>
    </behaviors>
    <serviceHostingEnvironment aspNetCompatibilityEnabled="true"
      multipleSiteBindingsEnabled="true" />
  </system.serviceModel>
 <system.webServer>
    <modules runAllManagedModulesForAllRequests="true"/>
  </system.webServer>
  
</configuration>

 幫助頁面的效果以下圖spa

get請求結果以下圖debug

緩存效果如圖,緩存的時間設置爲10s,在10s內結果都是下圖,超過期間後就是另外一個結果了code

相關文章
相關標籤/搜索