写自已的System.Web.Routing.dll提升性能和增加功能!
来源:互联网 发布:文言文翻译器软件 编辑:程序博客网 时间:2024/05/16 14:23
虽然尽是批评,但是我还是要写一些自己的学习感受,但是我可以负责任的说:每个人都有他的观点和经验,程序员必须博采众长,才能。。。(作个推广^_^)
上文提到routing不是很灵活的原由是因为我们这个项目有很多的controller和action ,要想追求路径友好,我们就得写很多路由规则,根据以前路径重写的习惯,我们希望能通过强大的正则定义来归并路由表,简化路由表,维护及性能也会有所有提升。但是当我来整理和归并路由表时遇到了麻烦,大大超出我的预期:它不是百分百的支持正则机制!
解决办法是有两个:写一堆路由表和修改或增强system.web.routing。我们选择了前者!
但是前段时间开始对项目的性能进行优化,就又将system.web.mvc及routing的源码研究了一番,就像读书,每次读都有不同的感受,这次我更加深该的认识到了它的设计理念——设计模式和扩展性,同时也认识到了它的一些细节直接会导致损失一些性能,特别是当我能过reflector反编译到system.web.routing.dll源码并认真的学习理解的过程中收获非常多(有很多知识点是以前没有见过的),但是它有n个类,一个请求进来转了九曲十八湾,我跟得眼都花了(水平有限),进行路由选择的实现细节(代码)和算法才搞清楚。搞清楚后我立即有一个想法:我要自己实现它。理由很简单:它的代码链条太亢长,实现过程太繁琐,性能当然不会高到哪去。于是我对它进行了大刀阔斧的修改。
项目文件结构如下:
类结构如下:
比原来的精减了很多,以上的文件列表中我们只是写了route.cs其它的文件全是system.web.routing的源码,与原system.web.routing 应用方式和接口百分百兼容。我的处理包括三个方法:初始化路由表PreParseRoute,路由选择GetRouteData,url输出GetVirtualPath。完整代码如下,朋友们发现问题或更好的实现请告诉我:
route.cs
下一篇将写一下system.web.mvc的性能问题及我们的修改(由于现在我们还在测试它的稳定性,下篇文章会附上源码)。
- 写自已的System.Web.Routing.dll提升性能和增加功能!
- ASP.net 的URL路由选择(System.Web.Routing.dll)
- System.Web.Routing 的说明文档
- System.Web.Routing 文档
- 剖析System.Web.Routing
- System.Web.Routing 路由功能详解(整理版)
- WebForms使用System.Web.Routing
- WebForms使用System.Web.Routing
- System.Web.Routing-入门篇
- System.Web.Routing-进阶篇
- WebForms使用System.Web.Routing
- 提升 web 应用程序的性能
- 代码模块化管理和提升web性能的知识点
- Web前端分析测试和性能提升
- System.Web.Routing入门及进阶 上篇
- System.Web.Routing入门及进阶 下篇
- System.Web.Routing入门及进阶(上篇)
- System.Web.Routing入门及进阶(下篇)
- 在oracle中 生成大规模数据 500万条 (使用导入数据方式 sqlldr 导入命令 *.ctl文件)
- POJ-3797(状态转移)(Tiling a Grid With Dominoes )
- Linux下同时wget多个文件
- 向Windows Phone 7手机部署应用程序
- nltk安装 linux
- 写自已的System.Web.Routing.dll提升性能和增加功能!
- CAN总线波特率计算及设置方法(STM32,SJA1000,LPC2292)
- Linux安装Nvidia显卡驱动:禁用The Nouveau kernel driver的方法!
- Ubuntu Server Edition 配置静态IP地址
- DDB和DIB的区别
- maven default lifecycle
- java设计模式-访问者模式
- 在Windows XP中安装Java SE
- 从access中读取数据