Community Server专题:FAQ

Q:还有一点我一直没想明白:相对httpmodule这种过滤器来说,httphandler是终端处理,不能一个web请求经过几个handler。那么相对直接写普通的aspx后台代码,它的优势何在呢?换句话说,什么时候应该像一般做法写个继承Page的类来处理,什么时候用httphandler来处理好呢?毕竟写handler没有写Page子类来得方便。
A:运用层次的不同,决定是否要使用handler。
1:一个小的项目,要的可能是开发速度,而且软件的使用周期也很有限,再或者根本就不会再去维护与扩展,这个时候你没有必要把handler引入进来,你需要的是再最短的时间内完成业务逻辑。
2:当你期望或者客户要求软件中一些功能在普通的aspx后台代码无法完成的时候,而用handler确可以完成,比如防盗链的运用。
3:自定义handler功能其实是在所有aspx页面执行之前完成的,这个时候请求的上下文Context中只有一些基本的信息,而Page继承了IhttpHandler的同时为了呈现页面还继承了TemplateControl, 也就是说初始化一个page页面比处理一个IhttpHandler要更多的系统资源开销,如在CS中对Utility/redirect.aspx页面的请求只是想实现redirect功能,根本不需要其他的页面呈现部分,因此采用了httpHandler,整个redirect都在服务器端实现,节约了一定的系统开销和数据回发的网络资源。

你可能感兴趣的:(server)