学习ASP.NET MVC5框架揭秘笔记-ASP.NET MVC路由
2.AreaRegistration的缓存
Area的注册(主要是基于Area的路由映射注册)通过具体的AreaRegistration来完成。在应用启动的时候,ASP.NET MVC会遍历通过调用BuildManager的静态方法GetReferencedAssemblies得到的程序集列表,并从中找到所有AreaRegistration类型。如果一个应用涉及太多的程序集,则这个过程可能会耗费很多时间。为了提高性能,ASP.NET MVC会对解析出来的所有AreaRegistration类型列表进行缓存。
ASP.NET MVC对AreaRegistration类型列表的缓存是基于文件的。具体来说,当ASP.NET MVC框架通过程序集加载和类型反射得到了所有的AreaRegistration类型列表后,会对其序列化并将序列化的结果保存为一个物理文件。这个名为“MVC-AreaRegistrationTypeCache-xml”的XML文件被保存在ASP.NET的临时目录下,具体的路径如下。其中第一个针对寄宿于Local IIS中的Web应用,后者针对直接通过Visual Studio Developer Server或者IIS Express作为宿主的应用。
1.%Windir%\Microsoft.NET\Framework\v{version}\TemporaryASP.NET Files\{appname}\...\...\UserCache\
2.%Windir%\Microsoft.NET\Framework\v{version}\TemporaryASP.NET Files\root\...\...\UserCache\
下面的XML片段体现了这个作为所有AreaRegistration类型缓存的XML文件的结构。我们从中可以看到所有的AreaRegistration类型的名称,连同它所在的托管模块和程序集名称都被保存了下来。当AreaRegistration的静态方法RegisterAllAreas被调用之后,系统会试图加载该文件,如果该文件存在并且具有期望的结构,那么系统将不再通过程序集加载和反射来解析所有AreaRegistration的类型,而是直接对文件内容进行反序列化得到所有AreaRegistration类型的列表。
vcversionid="72d59038-e845-45b1-853a-70864614e003">Artech.Admin.AdminAreaRegistration Artech.Portal.PortalAreaRegistration
如果这样的XML不存在,或者具有错误的结构(这样会造成针对AreaRegistration类型列表的反序列化失败),ASP.NET MVC框架会按照上述的方式重新解析出所有AreaRegistration类型列表,并将其序列化成XML保存到这个指定的文件中。值得一提的是,针对Web应用的程序编译会促使这些缓存文件的清除。
上一篇: Tableau连接mongoDB数据库
推荐阅读
-
详解ASP.NET Core MVC 源码学习:Routing 路由
-
学习ASP.NET MVC5框架揭秘笔记-ASP.NET MVC路由(三)
-
ASP.NET MVC5 高级编程-学习日记-第二章 控制器
-
ASP.NET MVC学习之路由篇(3)
-
学习ASP.NET MVC框架揭秘笔记-PV与SC
-
ASP.NET MVC学习笔记-----ActionInvoker
-
ASP.NET Core MVC学习教程之路由(Routing)
-
ASP.NET MVC 学习笔记-7.自定义配置信息(后续)
-
ASP.NET MVC5 高级编程-学习日记-第三章 视图
-
ASP.NET MVC+EF框架+EasyUI实现权限管理系列(9)-TT模板的学习