WCF rest 的帮助页面和缓存机制
打开vs2010 在工具选项中选择扩展管理器——联机库 安装WCF REST Service Template 40(CS)模板
安装后新建wcf服务应用程序,删除默认建立的文件。
新建RestWcf4HelpPage.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 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);
}
}
然后在建立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);
}
}
然后在配置web.config文件,其中duration值缓存的有效时间。
<?xml version="1.0" encoding="utf-8"?>
<configuration> <system.web>
<compilation debug="true" targetFramework="4.0" />
<caching>
<outputCacheSettings>
<outputCacheProfiles >
<add name="CacheFor10Senconds" duration="" varyByParam="format"/>
<add name="CacheFor30Senconds" duration="" 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>
帮助页面的效果如下图

get请求结果如下图

缓存效果如图,缓存的时间设置为10s,在10s内结果都是下图,超过时间后就是另一个结果了

WCF rest 的帮助页面和缓存机制的更多相关文章
- HTTP协议缓存机制的应用
缓存的目 的是减少相应延迟 和 减少网络带宽消耗, 比如 css. js.图片这类静态资源应该进行缓存.实际项目 一般使用反向代理服务器(如 nginx. apache 等) 进行缓存. 关键字:ca ...
- WCF技术剖析之八:ClientBase<T>中对ChannelFactory<T>的缓存机制
原文:WCF技术剖析之八:ClientBase<T>中对ChannelFactory<T>的缓存机制 和传统的分布式远程调用一样,WCF的服务调用借助于服务代理(Service ...
- 页面静态化3 --- 使用PHP页面缓存机制来完成页面静态化(下)操作一个案例(新闻管理系统)
案例需求: 使用PHP缓存机制完成新闻管理系统的页面静态化数据库表 ecs_article (新闻表)因为新闻这些信息,并不是对实时性要求高,本身这个新闻比较稳定,内容也比较固定,所以我们考虑: 当第 ...
- 页面静态化2 --- 使用PHP缓存机制来完成页面静态化(上)(ob_flush和flush函数区别用法)
我们可以使用PHP自带的缓存机制来完成页面静态化,但在这里,需要说明一点,仅靠PHP缓存机制并不能完美的解决页面静态化,往往需要和其他页面静态技术(通常是伪静态技术)结合使用 例子: 当访问一个页面时 ...
- 利用php的ob缓存机制实现页面静态化
利用php的ob缓存机制实现页面静态化 首先介绍一下php中ob缓存常用到的几个常用函数ob_start():开启缓存机制ob_get_contents():获取ob缓存中的内容ob_clean()清 ...
- php利用ob缓存机制实现页面静态化方法全解
首先介绍一下php中ob缓存常用到的几个常用函数 ob_start():开启缓存机制 ob_get_contents():获取ob缓存中的内容 ob_clean()清除ob缓存中的内容,但不关闭缓存 ...
- 三,PHP缓存机制实现页面静态化
页面静态化思路: 因为新闻这种信息对实时性要求不高,并且比较稳定,所以可以这样做:当地一个用户访问某条新闻后,我们使用ob缓存机制,将内容缓存到html页面.当下一次访问时候,直接访问html页面.这 ...
- 解决iframe缓存机制导致页面不清除缓存不刷新页面的bug
在使用iframe时,已有页面嵌套了一个iframe页面,当这个页面提交后再次跳转到本页面时,原本iframe内的页面应该刷新数据的,结果未刷新,需要清除缓存后才刷新. 解决方案: var fresh ...
- 【腾讯Bugly干货分享】彻底弄懂 Http 缓存机制 - 基于缓存策略三要素分解法
本文来自于腾讯Bugly公众号(weixinBugly),未经作者同意,请勿转载,原文地址:https://mp.weixin.qq.com/s/qOMO0LIdA47j3RjhbCWUEQ 作者:李 ...
随机推荐
- spoj14846 Bribe the Prisoners
看来我还是太菜了,这么一道破题做了那么长时间...... 传送门 分析 我首先想到的是用状压dp来转移每一个人是否放走的状态,但是发现复杂度远远不够.于是我们考虑区间dp,dpij表示i到j区间的所有 ...
- ObjectARX环境搭建之vs2010+objectArx2012+AutoCAD2012
---------------------------------------------------------------------------------------------------- ...
- ASP.NET常用数据绑定控件优劣总结
本文的初衷在于对Asp.net常用数据绑定控件进行一个概览性的总结,主要分析各种数据绑定控件各自的优缺点,以便在实际的开发中选用合适的控件进行数据绑定,以提高开发效率. 因为这些数据绑定控件大部分都已 ...
- ubuntu - 14.04,安装VirtualBox 5.0(虚拟机软件)!
VirtualBox是一款免费.开源的虚拟机软件,可以运行在多种操作系统上,真的是一款值得我们使用的虚拟机软件! 官方网址:https://www.virtualbox.org/ ubuntu14.0 ...
- 2019.2.25考试T1, 矩阵快速幂加速递推+单位根反演(容斥)
\(\color{#0066ff}{题解}\) 然后a,b,c通过矩阵加速即可 为什么1出现偶数次3没出现的贡献是上面画绿线的部分呢? 考虑暴力统计这部分贡献,答案为\(\begin{aligned} ...
- 换根DP+树的直径【洛谷P3761】 [TJOI2017]城市
P3761 [TJOI2017]城市 题目描述 从加里敦大学城市规划专业毕业的小明来到了一个地区城市规划局工作.这个地区一共有ri座城市,<-1条高速公路,保证了任意两运城市之间都可以通过高速公 ...
- 「NOI.AC」Leaves 线段树合并
题目描述 现在有一棵二叉树,所有非叶子节点都有两个孩子.在每个叶子节点上有一个权值(有\(n\)个叶子节点,满足这些权值为\(1\dots n\)的一个排列).可以任意交换每个非叶子节点的左右孩子. ...
- socket中close发生的事情,RST,pipe信号错误
1.server端close之后,client端write,导致server端发送RST(服务器关闭套接字):对方已经关闭或者异常终止,但是client端,不知道,这个成为半打开 当server端cl ...
- [Leetcode]017. Letter Combinations of a Phone Number
public List<String> letterCombinations(String digits) { LinkedList<String> ans = new Lin ...
- CPU和微架构的概念
CPU是什么: 中央处理器(CPU,Central Processing Unit)是一块超大规模的集成电路,是一台计算机的运算核心(Core)和控制核心( Control Unit). 它的功能主要 ...