net开发框架有哪些 ASP.NET MVC 4框架揭秘:Controller类型的缓存
ASP.NET MVC 4框架揭秘:Controller类型的缓存
Controller类型的缓存

为了避免频繁地遍历所有程序集对目标Controller类型进行解析 ASP NET MVC对解析出来的Controller类型进行了缓存以提升性能 与针对用于Area注册的AreaRegistration类型的缓存类似 Controller激活系统同样采用基于文件的缓存策略 用于保存Controller类型列表的名为MVCControllerTypeCache xml的文件保存在ASP NET的临时目录下面 具体的路径如下
%Windir%Microsoft NETFrameworkv{version}TemporaryASP NET Files{appname}……UserCache
%Windir%Microsoft NETFrameworkv{version}Temporary ASP NET
Filesroot……UserCache
其中第一个针对寄宿于IIS中的Web应用 后者针对直接通过Visual Studio Developer Server作为宿主的应用 而用于保存所有AreaRegistration类型列表的MVC AreaRegistrationTypeCache xml文件也保存在这个目录下面
当接收到Web应用被启动后的第一个请求时 Controller激活系统会读取这个用于缓存所有Controller类型列表的ControllerTypeCache xml文件并反序列化成一个List<Type>对象 只有在该列表为空的时候才会通过遍历程序集和反射的方式得到所有实现了接口IController的类型 而被解析出来的Controller类型重新被写入这个缓存文件中 这个通过读取缓存文件或者重新解析出来的Controller类型列表被保存到内存中 在Web应用活动期间内被Controller激活系统使用
下面的XML片段反映了这个用于Controller类型列表缓存的MVC ControllerTypeCache xml文件的结构 从中可以看出它包含了所有的Controller类型的全名和所在的程序集和托管模块的名称
<?xml version= encoding= utf ?>
<! This file is automatically generated Please do not modify the contents of this file >
<typeCache lastModified= / / : : PM
mvcVersionId= b a d b e d cc f c d >
<assembly name= Artech Admin Version= Culture=neutral
PublicKeyToken=null >
<module versionId= eb e f d a a fb dceeed >
<type>Artech Admin HomeController</type>
<type>Artech Admin EmployeeController </type>
</module>
</assembly>
<assembly name= Artech Portal Version= Culture=neutral
PublicKeyToken=null >
<module versionId= F EE F A AE EB D C >
<type>Artech Portal Controllers HomeController</type>
<type>Artech Portal ProductsController</type>
</module>
</assembly>
</typeCache>
返回目录ASP NET MVC 框架揭秘
编辑推荐
ASP NET开发培训视频教程
Microsoft NET框架程序设计视频教程
Java程序性能优化 让你的Java程序更快 更稳定
lishixinzhi/Article/program/net/201311/16081