.Net C# Web Service 中的cacheDuration解释
2009-12-10 13:23
281 查看
Web Service 中的cacheDuration解释
Web服务定义一个单独的 GetInfo 方法,其CacheDuration值设为3600秒。在这个方法第一次被调用之后,随后3600秒之内如果参数sIndex相同,则都将返回相同的响应结果,即使数据(GetInfoFromDBByIndex(sIndex)的返回值)是从数据库中动态获得的也是如此。也就是说在3600秒内只对数据库进行一次查询。请看如下代码:[WebMethod(
Description="Retrieve Index's information",
CacheDuration=3600)]
public string GetInfo(string sIndex)
{
try
{
return GetInfoFromDBByIndex(sIndex); //从数据库中获得与sIndex相关的信息
}
catch (Exception ex)
{
return “”;
}
}
这段代码如果用debug调试的方法就很容易发现,只是在第一次获得sIndex信息的时候才能进入到函数内部,在以后的3600秒内如果sIndex的值不发生变化则不在进入GetInfo中,但是如果sIndex发生变化,比如从 “小明” 变成 “小芳” 了则会再次进入到GetInfo中,并从数据库中获得小芳的信息。即使数据库中小明的信息发生了改变在3600秒内调用GetInfo获得小明的信息都是不会改变的,除非在数据库中添加触发机制来修改缓存中的小明的信息才可以,在这里我们暂时不予讨论。
需要注意的一点是跟踪调试的时候不要用http://localhost/aaa.asmx的方式调试,也就是VS按F5的方式进行调试,那样每次都会进到函数中去的,我也不知道为什么,花了我很长时间才发现的,开始我一直认为这个CacheDuration属性不能工作呢。最好编一个Form的测试程序,那样测试最好了。
危险之处:(摘自Kevin Koch的文章)
虽然CacheDuration属性在某些情况下可以大大提高性能,但是不要盲目地为你的Web方法打开缓存功能是很重要的,因为它可以导致相反、意想不到的结果。
在设计和架构阶段,要针对每个Web方法小心地测试估计的请求吞吐量和参数值,这样可以对是否在Web服务中使用响应缓存做出一个合乎逻辑的决定。
相关文章推荐
- C# 获取客户端信息 /asp.net/WebService/WebForm
- .net C# WebService 开发(获取数据库数据)
- C# ASP.NET Webservice调用外部exe无效的解决方法
- C#.NET Winform+WebService开发框架完整版本
- 基于.net 的天气预报 .net c# webservice
- C# ASP.NET Webservice调用外部exe无效的解决方法
- Android 访问C#.Net Webservice (简单例子适合初学者)
- asp.net C# webservice安全性方案
- C# to VB.NET Web Service Proxy Example
- c++ builder 和 vc调用c#.net webservice的不同
- C# ASP.NET Webservice调用外部exe无效的解决方法
- asp.net<C#> web service Object moved to here.
- .net C# WebService 开发(获取数据库数据)
- .Net/C# 与 J2EE/Java Web Service 互操作完整实例
- 【原创】 ASP.NET + C# + WEBSERVICE 返回表数据和记录数据
- C# .NET webservice开发
- Net 下采用GET/POST/SOAP方式动态调用WebService C#实现
- Net 下采用GET/POST/SOAP方式动态调用WebService C#实现
- c# asp.net webservice asmx中保存HttpContext.Current
- How to invoke Java web service in ASP.net using C#