我试图将Razor视图引擎用作由数据库支持的通用模板引擎.
http://razorengine.codeplex.com/问题是,对于每个模板编译,都会创建并加载新的动态程序集.由于无法从当前appdomain卸载程序集,并且无法为模板系统使用单独的appdomain(使用匿名类型),因此这些程序集将不断累积,直到appdomain被销毁.模板本身将定期更改,因此将导致更多的重新编译.
问题是这些动态集合(可能有数千个)会损害appdomain性能吗?或者更方便的是有更好的方法吗?
一般来说,在 AppDomain 中加载许多小程序集不应该太担心。任何人对此可以做出的唯一一般性声明是衡量应用程序在相关场景中的实际性能,然后看看它是否重要。
ASP.NET 有一些自动应用程序生命周期管理,将在某些事件发生后回收 AppDomain。例如,如果应用程序中的重新编译次数过多,则 ASP.NET 将自动重新启动应用程序。这意味着所有先前加载的程序集都将被清除,您可以从头开始。
有关详细信息,请参阅 MSDN:http://msdn.microsoft.com/en-us/library/s10awwz0.aspx
AppRestart 之前的 numRecompiles
可选的 Int32 属性。
指定应用程序重新启动之前可以发生的资源动态重新编译的次数。该属性在全局和应用程序级别受支持,但在目录级别不受支持。
笔记
每次程序集失效且无法删除时,ASP.NET 都会增加 NumRecompilesBeforeAppRestart 属性。
默认值为 15。
| 归档时间: |
|
| 查看次数: |
569 次 |
| 最近记录: |