在建立Web服务作为一个公共域服务的时候,想知道你的Web服务将会有多大的吞吐量几乎是不可能的。可能是一个小时只有一个用户,也可能会很出名,每分钟就会吸引几个个用户。在这种不可预测的情况下,我建议你采取一些性能预防措施。
Web服务可能会提供一组可以由各种不同应用程序消费者使用的相当通用的方法,由于这一事实,你可能会发现你的Web服务会被几个不同的请求轰击。
例如,你可以提供一个返回世界上某座城市当前气温的Web服务。你的系统每小时更新一次查询值,因此会有冗余查找。因为对于每座城市来说你的系统存储在六十分钟的时间间隔内存储相同的值,没有必要在为每个请求访问一次数据库。
Visual Studio .NET提供一个简单的方法来实现缓存Web服务的结果。本文将解释CacheDuration属性的使用,说通过代码说明该属性的行为。
CacheDuration属性告诉你的ASP.NET应用程序为针对特定的Web方法同样的请求保存结果的时间。用法如下:
<WebMethod(CacheDuration:=value)>
这里value的单位为秒。
当Web方法使用相同的参数集被调用时,Visual Studio .NET会识别出来那个方法已经被使用同样的参数调用过,并且会检查响应是否已经被缓存。
如果没有缓存,它将执行方法体,功能和普通方法一样,然后缓存响应并跟踪时间以开始递减计数CacheDuration属性。
如果Web方法的响应已经被缓存过,方法体将会被绕过去,缓存的响应会立即返回给客户,大大提高了性能。
如果响应被缓存了,但是发现缓存已经过期,方法将会被再次执行,响应将再次缓存设置的缓存时长。