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>

asp.net application的更多相关文章

  1. ASP.NET Application Life Cycle

    The table in this topic details the steps performed while an XAF ASP.NET application is running. Not ...

  2. ASP.NET Application and Page Life Cycle

    ASP.NET Application Life Cycle Overview for IIS 7.0 https://msdn.microsoft.com/en-us/library/bb47025 ...

  3. How to increase timeout for your ASP.NET Application ?

    How to increase timeout for your ASP.NET Application ? 原文链接:https://www.techcartnow.com/increase-tim ...

  4. Debug your ASP.NET Application while Hosted on IIS

    转摘:http://www.codeproject.com/Articles/37182/Debug-your-ASP-NET-Application-while-Hosted-on-IIS This ...

  5. ASP.NET Application,Session,Cookie和ViewState等对象用法和区别 (转)

    在ASP.NET中,有很多种保存信息的内置对象,如:Application,Session,Cookie,ViewState和Cache等.下面分别介绍它们的用法和区别. 方法 信息量大小 作用域和保 ...

  6. Custom ASP.NET Application into SharePoint --整合ASP.NET应用程序到SharePoint

    转:http://www.devexpertise.com/2009/02/18/integrating-a-custom-aspnet-application-into-sharepoint-par ...

  7. [转]ASP.net Application 生命周期事件

    生命周期事件和 Global.asax 文件 在应用程序的生命周期期间,应用程序会引发可处理的事件并调用可重写的特定方法.若要处理应用程序事件或方法,可以在应用程序根目录中创建一个名为 Global. ...

  8. php仿照asp实现application缓存的代码分享

    php 怎么没有asp 那样的application缓存呢?最近我找了很多,都只有自己写,下面我分享一段代码 class php_cache{ //相对或者绝对目录,末尾不要加 '/' var $ca ...

  9. Capturing ASP.NET Application Startup Exceptions

    It has become common practice to perform tasks during an ASP.NET applications start up process. Thes ...

  10. asp.net Application、 Session、Cookie、ViewState、Cache、Hidden 的区别

    这些对象都是用来保存信息的,包括用户信息,传递值的信息,全局信息等等.他们之间的区别: 1.Application对象 Application用于保存所有用户的公共的数据信息,如果使用Applicat ...

随机推荐

  1. java中反射学习整理

    转载请注明:http://blog.csdn.net/j903829182/article/details/38405735 反射主要是指程序能够訪问.检測和改动它本身的状态或行为的一种能力. jav ...

  2. LeetCode OJ平台上Maximum Subarray题目O(n)复杂度解决方式

    原始题目例如以下,意为寻找数组和最大的子串,返回这个最大和就可以. Find the contiguous subarray within an array (containing at least ...

  3. App Store不能下载一直等待中的两种解决办法

    1,重启手机,之后确认是否得到改善 2,重启不行,更改WiFi的dns为114.114.114.114或者223.5.5.5 或 223.6.6.6,再重启手机 ps:我是第二种方法

  4. 【温故而知新】Tcp/Ip协议——总览

    Tcp/Ip协议 一.概念 “三网”:即电信网络.有线电视网络和计算机网络 标准(Standards) 描述了协议的规定,设定了最简的性能集. 协议(Protocol) 网络设备用于交换信息的系列规则 ...

  5. PES包头

    PES是打包过的ES,已经插入PTS和DTS,一般是一个pes包为一帧图像 PES包格式: PES再打包成TS流或PS流,往往一个PES会分存到多个ts包中, start_code: 0x00 00 ...

  6. background小结

    CSS背景属性Background详解 本文详解了CSS的背景属性Background,包括CSS3中新增的背景属性.如果你是个CSS初学者,还可以查看之前介绍的CSS浮动属性和CSS透明属性详解. ...

  7. ASP.NET通用权限组件思路设计

    开篇 做任何系统都离不开和绕不过权限的控制,尤其是B/S系统工作原理的特殊性使得权限控制起来更为繁琐,所以就在想是否可以利用IIS的工作原理,在IIS处理客户端请求的某个入口或出口通过判断URL来达到 ...

  8. /boot磁盘空间不足,没盘扩展,只好删除旧内核了

    [xiejdm@localhost ~]$ uname -r -.el7.x86_64 [xiejdm@localhost ~]$ sudo rpm -qa | grep kernel kernel- ...

  9. Spring--------web应用中保存spring容器

    ---恢复内容开始--- 问题:在一个web应用中我使用了spring框架,但有一部分模块或组件并没有托管给Spring,比如有的可能是一个webservice服务类,如果我想在这些非托管的类里使用托 ...

  10. Java并发编程之volatile变量

    volatile提供了弱同步机制,用来确保将变量更新通知到其它线程.volatile变量不会被缓存在寄存器中或者对其它处理器不可见的地方,因此在读取volatile变量时总会返回最新写入的值.可以想象 ...