• 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 使用总结

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

  • 相关阅读:
    福大软工1816 · 第五次作业
    福大软工1816 · 第四次作业
    第三次作业
    福大软工1816 · 第二次作业
    培养孩子应知的30个细节
    人力资源六大模块
    中小学班主任工作规定
    事业单位笔试题
    班级管理
    Leetcode 7 反转整数
  • 原文地址:https://www.cnblogs.com/wjcx-sqh/p/11093956.html
Copyright © 2020-2023  润新知