首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > Web Service >

.net webservice数据缓存,该如何解决

2012-03-01 
.net webservice数据缓存需求:根据一本书的ID返回此本书的详细信息函数为getBookInfo(string bookId),当我

.net webservice数据缓存
需求:根据一本书的ID返回此本书的详细信息函数为getBookInfo(string bookId),当我在客户端调用的时候只要bookId不变我就直接从缓存里面去。如果bookId变了,我再缓存一个?但同时可以执行一些其它操作,现有两种方式如:
1、[WebMethod(CacheDuration = 600)]
  public Book get(string bookId)
  {
  //执行一些其它操作doSomething();
  getBookInfo(string bookId);
  }
此种方式可以缓存,并你多次传入不同的bookId他都会把几本书的信息都缓存,但你在缓存有效期内去调原来调过的书就不需要访问数据库了,虽然getBookInfo()得到的数据是缓存了,但是它也没有执行其它操作doSomething();
我现在是需要只缓存getBookInfo就需要使用另一种方式数据缓存
2、Context.Cache.Insert(……)
需要依赖bookId的改变来改变,需要怎么弄?谢谢,请给我一个详细的解决方案和例子

[解决办法]
“依赖bookId的改变来改变”?什么意思?缓存依赖跟这个毫无关系。

C# code
public static Book getBookInfo(string bookId){    var cache= HttpRuntime.Cache;    var cacheKey="Book:id="+bookId;    var result=(Book)cache[cacheKey];    if(result==null)    {       result=查询数据库读取Book信息(bookId);       cache.Insert(cacheKey,result,getBooksSqlDependency());    }    return result;} 

热点排行