zoukankan      html  css  js  c++  java
  • HttpContext & HttpRuntime

    问题引出

    HttpContext.Current.Cache .VS. HttpRuntime.Cache

    • HttpRuntime.Cache:获取当前应用程序的Cache
    • HttpContext.Current.Cache:为当前HTTP请求获取Cache对象,跨线程可用,在APM模式或创建了子线程的场景中不能用

    HttpContext.Current.Cache 调用 HttpRuntime.Cache实现,两者指向同一 Cache对象:

    • HttpRuntime.Cache相当于是缓存具体实现类,非Web应用下也可以使用
    • HttpContext.Current.Cache是对缓存类的封装,局限HttpContext只能用于Web应用

    在某些情况下,HttpContext还没被创建出来为null,就只能用 HttpRuntime.Cache。

    • 定时器的回调。
    • Cache的移除通知。
    • APM模式下异步完成回调。
    • 主动创建线程或者将任务交给线程池来执行

    建议使用 HttpRuntime.Cache,既能减少出错,也减少一次函数调用。

    eg:在获取程序站点的根目录时尽量使用 System.Web.HttpRuntime.AppDomainAppPath。

    其中,关于 APM模式 参见:https://www.cnblogs.com/mcgrady/p/5660314.html

    HttpContext

    限制:同一Http请求

    Server.Transfer .VS. Response.Redirect

    Server.Transfer 请求跳转页面,归属同一个http请求,URL无变化,所有操作均在服务器完成;Response.Redirect 则是重新发起新的页面请求,需要浏览器和服务器交互。

    具体参见:HttpContext 初识

    HttpContext.Current 由其维护

    System.Runtime.Remoting.Messaging.CallContext.HostContext as HttpContext
    

    其中,CallContext.HostContext 表示:获取或设置与当前线程相关联的主机上下文 。

    APM模式下的异步完成回调,访问HttpContext.Current方法:推荐第2种方法

    • 在类型中添加一个字段来保存HttpContext的引用(异步开始前)
    • 将HttpContext赋值给BeginXXX方法的最后一个参数(object state)

    HttpRuntime

    使用时建议自行封装,可参见:ASP.Net HttpRuntime.Cache 使用总结

    获取或设置与当前线程相关联的主机上下文

  • 相关阅读:
    Promise原理实现(一):前置知识点
    移动端禁用缩放
    多条命令同时执行的包concurrently
    通过面试题学JavaScript知识(1)
    移动设备适配
    css 文本溢出显示省略号
    变量对象的理解
    7.10 日志
    7.9 日志
    JMETER接口测试之自动化环境的配置
  • 原文地址:https://www.cnblogs.com/wjcx-sqh/p/11093956.html
Copyright © 2011-2022 走看看