使用队列和线程对现有asp.net动态页处理进行资源控制
2013-08-24 21:12
423 查看
IIS可以对ASP.NET站点进行一个资源控制,包括使用的CPU,处理进程数等.但如果想对某些动态页面进行一个资源限制,只允许固定线程数量来处理某些动态请求,而不至于在某些情况个别的动态请求把整个站的资源都占光了.对于这么小的粒度控制显然不适合由IIS来做,这个时候就可以通过asp.net提供IHttpAsyncHandler来解决这种事情.
从代码来看IHttpAsyncHandler也是从IHttpHandler派生下来,并提供了Begin和End相关方法.
?
PageFactory实现后只需要简单地配置一个web.config文件就可以让现有的aspx处理由异步Handler来处理.
?
?
?
以上是固定线程去进行处理,但这样的设计不好的地方就是没有请求的时候线程会不停地做sleep工作,其实可以根据实际情况使用线程池来完成,具体就看情况来设计了.
http://blog.henryfan.net/post/2012/11/21/%E5%AE%9E%E7%8E%B0%E5%AF%B9%E7%8E%B0%E6%9C%89%E7%9A%84aspx%E8%AF%B7%E6%B1%82%E8%BF%9B%E8%A1%8C%E5%BC%82%E6%AD%A5%E9%98%9F%E5%88%97%E6%8E%A7%E5%88%B6%E5%A4%84%E7%90%86.aspx
处理结构
由于Asp.net提供了异步处理Handler,所以可以在Handler的Begin处理方法中把具体对象存放到队列中,然后根据实际业务的需要来配置1-N个线程来处理相关请求.IHttpAsyncHandler
?对已有页面进行异步封装
如果经常用IHttpHandler的朋友应该比较清楚这东西用于描述一个页面请求的,包括我们的aspx,而aspx默认处理的则是一个IHttpHandlerFactory实现System.Web.UI.PageHandlerFactory.通简单地继承System.Web.UI.PageHandlerFactory就可以让原来的aspx请求返回对应的异步的HttpHandler.?
?
队列化处理
制定队列的目的非常简单就是有序可控地去处理一些工作,可以通过BeginProcessRequest的执行把请求先存放到了列中?
制定线程处理
可以根据实际情况开启1-N个线程来处理队列中的工作.?
总结
通过以上设计就可以轻易地对某些页面请求进行一个资源控制.如果比较关心具体实现的朋友可以查看http://blog.henryfan.net/post/2012/11/21/%E5%AE%9E%E7%8E%B0%E5%AF%B9%E7%8E%B0%E6%9C%89%E7%9A%84aspx%E8%AF%B7%E6%B1%82%E8%BF%9B%E8%A1%8C%E5%BC%82%E6%AD%A5%E9%98%9F%E5%88%97%E6%8E%A7%E5%88%B6%E5%A4%84%E7%90%86.aspx
相关文章推荐
- 使用队列和线程对现有asp.net动态页处理进行资源控制
- 使用队列和线程对现有asp.net动态页处理进行资源控制
- 1207 AddConnectableRcs,可连接资源的变量,使用队列进行深度控制
- 译:怎样使用ASP.NET,MSMQ及WINDOWS SERVICE进行异步编程来处理长进程
- FCKeditor是使用非常广泛的HTML编辑器,本文从 ASP.NET 的使用场景对 FCKeditor 与 FCKeditor.NET 的配置、功能扩展(如自定义文件上传子目录、自定义文件名、上传图片的后期处理等)、以及安全性进行初步的阐述。
- 在ASP.NET上使用IHttpModule进行整体控制
- ASP.NET MVC使用过滤器进行权限控制
- ASP.NET使用Global.asax进行全局错误处理
- 使用委托进行高级ASP.NET缓存处理
- 实现对现有的aspx请求进行异步队列控制处理
- 如何在asp.net中使用多线程及队列,异步处理一个耗时的任务(原创)
- ASP.NET中使用MSMQ进行消息处理系列文章
- WebCast《实战ASP.NET AJAX(1):使用服务器端框架增强现有ASP.NET应用程序》相关资源
- asp.net- ajax简单入门使用方法,通过一般处理程序ashx进行处理
- ASP.NET中使用MSMQ进行消息处理系列文章
- Asp.Net Core中使用Newtonsoft.Json进行序列化处理解决返回值首字母小写
- 使用ASP.NET expressionBuilders 元素 衍生 处理前端控制页面翻译
- ASP.NET 使用一般处理程序.ashx进行 Excel下载
- Asp.Net WebService 使用后来管理系统对接口方法进行公开控制
- ASP.NET中使用MSMQ进行消息处理系列文章