asp.net mvc框架的一些切入点

  IhttpModule+配置文件,对请求进行进一步的整理、过滤与转发;

  global文件中以Application_xx的保护方法进行切入的方式,此方法等同于IHttpModule方法。IHttpModule是它的模块化包装,可重用;

  IHttpHandler[+配置文件],.ashx/.axd+配置文件,对某类特殊的要求进行专门的处理,略去了routeHander->mvcHandler->controller->action->view这一串基于反射的低效率的执行过程,不过web服务器的瓶颈一般不在计算,而在IO;看到过的例子有用.ashx实现基于长连接轮询等;

  Route层次的重写,即对Route,RouteHandler,mvcHandler这三个具体的类进行的重写,自定义自己的路由查找逻辑,来进行定制化的url处理,这类做法的我看到的很少,就看到过两个例子,一个例子是园子里面曾经有过一片文章,通过重写route来实现对xx.域名.com的区别处理(比如sports.sina.com,news.sina.com),还有一个就是routeDebugger,一个用来对route进行分析的组件,切入的借口在于RouteTable.routes;

  然后就是controller与action层次,虽然这两个类也可以重写,但是一般都是通过自定义过滤器来对它们进行控制,mvc框架中的过滤器的层次与种类基本覆盖了所有的需求,选择合适的粒度的过滤器进行重写即可;

  再次便是viewEngine与view的重写,这类例子实际应用中我还没有看到过,因为重写模版引擎是一件很费力不讨好的事情,razor引擎已经足够优秀,不需要去再造个轮子,切入口在于ViewEngines.Engines;

  asp.net mvc是一个高度层次化的框架,配置文件+工厂模式的编程方式贯穿于其中,所以基本上各个层次都可以进行重写,上面只是我觉得值得切入与重写的地方。

  

原文地址:https://www.cnblogs.com/wangjieas/p/wangjieas.html