Web Service缓存机制 - 极悦
首页 课程 师资 教程 报名

Web Service缓存机制

  • 2020-09-22 17:23:50
  • 863次 极悦

Web Service作为一款用于开发分布式的交互操作应用程序的Web应用程序,Web Service的正常工作不可避免地需要用到缓存。本文,我们一起来学习了解Web Service缓存机制

总的来说,Web Service缓存方式分为两种,一种是简单的输出缓存,一种是强大的数据缓存。

一、输出缓存

输出缓存的使用非常简单,比较适用于WebService的参数比较少,结果比较单一的情况,并且很少改动的,天气预报,则可以设置30分钟甚至数小时的缓存:在WebMethod属性上指定CacheDuration属性即可。

这样,600秒内这个Web Service的所有输出数据都将从缓存中读取,不会真正做数据处理,如果事务代码是访问数据库的话,现在这种方法就会比每次都访问数据库快得多。这种缓存适合初接触Web Service的新手使用。

[WebMethod(Description = “天气预报”,CacheDuration=600)]

public string Weather()

{

return “weather”;

}

我们需要注意的是,不是所有服务都适合使用这种缓存,例如每次结果都不一样的,访问数极高的服务,缓存将会变得非常大,占用很多服务器的内存,却没有实际效果。因此,我们要因地制宜,选择最适合的缓存方式。

二、数据缓存

想将你的Web Service某些运行数据保存起来?如果不使用本地的数据库或者文件,那么缓存是最好的选择。这种缓存不同于上面提到的输出缓存,它需要编写代码来实现,但是相对应的,它的功能非常强大,可以存放任何类型的信息,并且你可以在任何时候检索它。

虽然也可以使用Application来模拟缓存,但是这需要你自己管理内存释放、用户并发问题,在.net时代已经被抛弃,WebService下的缓存使用Cache这个集合。

[WebMethod(Description = @"优惠分类或者消费类型")]

[ScriptMethod]

public CorpCategory[] SearchCouponCategory()

{

try

{

CorpCategory[] corpCategory = (CorpCategory[])Utils.CacheManage.GetFromCache("corpCategory");

if (corpCategory == null || corpCategory.Length <= 0)

{

CorpCategoryDao categoryDao = new CorpCategoryDao();

corpCategory = categoryDao.GetCorpCategorys();

Utils.CacheManage.SetCache("corpCategory",corpCategory, 60);

}

return corpCategory;

}

catch (Exception ex)

{

Log.Info("优惠分类:Default —> SearchCouponCategory", ex);

return null;

}

}

public class CacheManage

{

///

/// 从缓存获取

///

///

///

public static object GetFromCache(string objectkey)

{

System.Web.Caching.Cache objCache = HttpRuntime.Cache;

return objCache[objectkey];

}

///

/// 添加到缓存

///

///

///

public static void SetCache(string objectkey, object objObject)

{

System.Web.Caching.Cache objCache = HttpRuntime.Cache;

objCache.Insert(objectkey, objObject);

}

///

/// 添加到缓存

///

///

///

/// 分钟

public static void SetCache(string objectkey, object objObject, int minutes)

{

System.Web.Caching.Cache objCache = HttpRuntime.Cache;

objCache.Insert(objectkey, objObject, null, DateTime.Now.AddMinutes(minutes), TimeSpan.Zero);

}

public static void ClearCache(string objectkey)

{

System.Web.Caching.Cache objCache = HttpRuntime.Cache;

objCache.Remove(objectkey);

}

}

Cache.Insert方法用于将数据加入缓存。这个方法一共有4种重载,在这个例子中,我们使用的是功能最全面的重载版本,我们以此为例:每一个参数分别是键名(使用方法类似于Session)(objectkey),值(objObject),依赖性(null),绝对过期时间(DataTime.MaxValue),可变过期时间( DateTime.Now.AddMinutes(minutes)),缓存优先级,缓存项目删除时的委托方法绝对过期时间是固定的,此处TimeSpan.Zero表示不使用可变过期。

上述的两种缓存方式共同组成了Web Service缓存机制。想了解更多的前端知识的小伙伴,可以观看本站的Java教程,赶快行动起来,成为一名前端大神吧!


选你想看

你适合学Java吗?4大专业测评方法

代码逻辑 吸收能力 技术学习能力 综合素质

先测评确定适合在学习

在线申请免费测试名额
价值1998元实验班免费学
姓名
手机
提交