.Net application,Session,Cache简单比较
Application 对象用于存储和访问来自任何页面的变量,类似于 session 对象。不同之处在于,所有的用户分享一个 Application 对象,而 session 对象和用户的关系是一一对应的。Application 对象握有会被应用程序中的许多页面使用的信息(比如数据库连接信息)。这意味着可以从任何的页面访问这些信息。同时也意味着你可在一个地点改变这些信息,然后这些改变会自动反映在所有的页面上。而缓存和Application一样是所有用户共享的,但是缓存的生命周期可以根据需要而设定,可以是一秒两秒,也可以是一年两年,前提是这期间应用程序一直在运行,而Application则是存在于应用程序运行期间,当然也可以在程序中干掉它。这两者现在更多的是用缓存。
下面一段简单的MVC代码,用来测试这三者的区别
public class Cache_Session_ApplicationController : Controller
{
public ActionResult Index()
{
return View();
}
public JsonResult SetData(string app,string sess,string cvalue)
{
HttpContext.Application.Lock();
//Application里面的key值是可以重复的
if (null == HttpContext.Application.Get("app"))
HttpContext.Application.Add("app", app);
else
HttpContext.Application.Set("app", app);
HttpContext.Application.UnLock(); Session["sess"] = sess; MemoryCache cache = MemoryCache.Default;
if (null != cache.Get("cache"))
cache.Remove("cache");
CacheItemPolicy policy = new CacheItemPolicy();
policy.AbsoluteExpiration = DateTime.Now.AddDays();
cache.Add("cache", cvalue, policy);
return new JsonResult() { Data = new { status = "OK" } };
}
public JsonResult GetData()
{
var app= HttpContext.Application.Get("app");
var sess = Session["sess"];
var cache = MemoryCache.Default.Get("cache");
return new JsonResult() { Data=new {app=app??"NULL" , sess = sess??"NULL" , cache = cache??"NULL"} };
}
}
<div>
<input type="button" onclick="SetData()" value="设置值" />
<input type="text" placeholder="application的值" id="zApp"/>
<input type="text" placeholder="session的值" id="zSess" />
<input type="text" placeholder="cache的值" id="zCache" /> <input type="button" onclick="GetData()" value="获取值" />
<label>application的值:</label><label id="appL"></label><br />
<label>session的值:</label><label id="sessL"></label><br />
<label>cache的值:</label><label id="cacheL"></label><br /> </div> <script type="text/javascript">
function GetData() {
$.ajax({
url: "/Cache_Session_Application/GetData",
type: "post",
async: true, //或false,是否异步
success: function (data) {
$("#appL").text(data.app);
$("#sessL").text(data.sess);
$("#cacheL").text(data.cache);
},
error: function () { } });
}
function SetData() {
$.ajax({
url: "/Cache_Session_Application/SetData",
type: "post",
async: true, //或false,是否异步
data: { app: $("#zApp").val(), sess: $("#zSess").val(), cvalue: $("#zCache").val()},
success: function (data) {
alert(data.status);
},
error: function () { } });
}
</script>
.Net application,Session,Cache简单比较的更多相关文章
- application session 实现简单的在线聊天人数的统计
写了快一年的asp.net,application对象还真没怎么用过.看了看书,根据这两个对象的特性写了一个简单的聊天室程序.真的是非常的简陋 ASP.Net中有两个重要的对象,一个是applicat ...
- 异步 HttpContext.Current实现取值的方法(解决异步Application,Session,Cache...等失效的问题)
在一个项目中,为了系统执行效率更快,把一个经常用到的数据库表通过dataset放到Application中,发现在异步实现中每一次都会出现HttpContext.Current为null的异常,后来在 ...
- Asp.net 服务器Application,Session,Cookie,ViewState和Cache区别
2.8 Context 的使用Context 对象包含与当前页面相关的信息,提供对整个上下文的访问,包括请求.响应.以及上文中的Session 和Application 等信息.可以使用此对象在网页之 ...
- Application,Session,Cookie,ViewState和Cache区别
在ASP.NET中,有很多种保存信息的内置对象,如:Application,Session,Cookie,ViewState和Cache等.下面分别介绍它们的用法和区别. 方法 信息量大小 作用域和保 ...
- Session、Application、Cache
[Asp.Net]状态管理(Session.Application.Cache) 上篇博文介绍了在客户端状态管理的两种方式:http://www.cnblogs.com/wolf-sun/p/3329 ...
- Asp.net 中ViewState,cookie,session,application,cache的比较
Asp.net 中的状态管理维护包含ViewState,cookie,session,application,cache五种方式,以下是它们的一些比较: 1.存在于客户端还是服务端 客户端: view ...
- [区别]APPlication,Session,Cookie,ViewState和Cache
原文发布时间为:2009-08-01 -- 来源于本人的百度文章 [由搬家工具导入] 在ASP.NET中,有很多种保存信息的对象.例如:APPlication,Session,Cookie,ViewS ...
- 转载ASP.NET 状态管理Application,Session,Cookie和ViewState用法
转载原地址 http://www.cnblogs.com/cuishao1985/archive/2009/09/24/1573403.html ASP.NET状态管理 APPlication,Ses ...
- ASP.NET Application,Session,Cookie和ViewState等对象用法和区别 (转)
在ASP.NET中,有很多种保存信息的内置对象,如:Application,Session,Cookie,ViewState和Cache等.下面分别介绍它们的用法和区别. 方法 信息量大小 作用域和保 ...
随机推荐
- 数据分布vs聚类-数据预处理技巧-对数变换
对于原始数据分布倾斜 利用统计或数学变换来减轻数据分布倾斜的影响.使原本密集的区间的值尽可能的分散, 原本分散的区间的值尽量的聚合. Log变换通常用来创建单调的数据变换.它的主要作用在于帮助稳定方差 ...
- Python-文件和数据格式化
文件的使用 >文件的类型 文件的理解:文件是数据的抽象和集合 -文件时存储在辅助存储器上的数据序列 -文件是数据存储的一种形式 -文件展现形态:文本文件和二进制文件 文本文件vs.二进制文件 - ...
- 【Codeforces 279C】Ladder
[链接] 我是链接,点我呀:) [题意] 题意 [题解] 设pre[i]表示i往前一直递增能递增多远 设aft[i]表示i往后一直递增能递增多远 如果aft[l]+pre[r]>=(r-l+1) ...
- 工作用linux命令汇总
mv [filepath] [filepath] 移动,前者位置移动到后面位置,也可以用来重命名(mv test.txt newname.txt) cp [filepath] [filepath] 复 ...
- Git学习总结(14)——Git使用前的注意事项
连接方式https.ssh 在使用git的时候,不管你的服务器是开源平台github还是私服gitlab,你都需要clone仓库到本地,这个clone的时候就需要你选择连接方式.这个连接方式决定了你与 ...
- Ajax提交post请求返回404错误
最近使用ajax提交表单的时候,发现无法执行success函数,后台的代码也正常执行了,但是就是无法执行success函数,执行error函数,返回的错误代码时404.显然是找不到请求的url. 可是 ...
- Happy 2006 欧几里得定理
Happy 2006 Time Limit: 3000MS Memory Limit: 65536K Total Submissions: 11956 Accepted: 4224 Descr ...
- 最小生成树 E - QS Network
Sunny Cup 2003 - Preliminary Round April 20th, 12:00 - 17:00 Problem E: QS Network In the planet w-5 ...
- 我所未知的 typeof 现象
一.一些基本使用测试 从上述可以看出: 1.判断一个 变量 是不是对象类型,不能只用 typeof 运算符: 2.它的返回值一直是一个字符串: 3.尽管 typeof null === 'object ...
- Chrome控制台命令
window.print();打印当前窗口内容或输出为pdf