ashx 接口调用_c# – 什么时候通用HttpHandler(一个ashx,IHttpHandler接口)可重用?

在你的例子中,你没有管理任何状态.任何人都可以在同一个实例上多次调用ProcessRequest,并且它们将获得一个新的DateTime.

但是如果你这样做:

private DateTime _dateTime = DateTime.Now;

public void ProcessRequest(HttpContext context)

{

context.Response.Write(_dateTime);

}

现在,在处理程序实例被实例化之后,每次都会得到相同的响应.除非ASP.NET每次都生成一个新的.

IsReusable可以指示您的处理程序类是否管理任何可以在单独请求之间共享的状态.如果它管理不能共享的状态,那么它不可能是外部幂等的,甚至不是线程安全的.调用具有相同输入条件的ProcessRequest可能不会导致相同的输出,因为您的特定处理程序实现也有一些实例级变量在确定输出时无法共享. (事实上​​,从技术上讲,你当前的实现就是这个例子).在这些情况下,实例可能不是“可重用的” – ASP.NET需要每次生成一个新的实例来确保可预测性.

所以对于你不管理状态的情况,或者你有非常简单的处理程序,状态是“明显的”(就像我们在这里的例子),IsResuable可能看起来毫无意义.但是,如果你有一个非常复杂的处理程序 – 可能是一个保持一些状态,初始化很昂贵但是可以共享 – 你想要指示给ASP.NET它可以重用它的性能.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值