2011-06-13 79 views
7

我正在尝试使用Razor视图引擎作为数据库支持的常规模板引擎。
http://razorengine.codeplex.com/问题是,对于每个模板编译,都会创建并加载一个新的动态程序集。由于无法从当前appdomain卸载程序集,也无法为模板系统使用单独的appdomain(使用匿名类型),因此这些程序集将不断累积,直到appdomain被销毁。模板本身会定期更改,因此会导致更多的重新编译。动态程序集太多

问题是这些动态程序集(可能有数千个)会影响应用程序的性能吗?或者还有更好的方法来做到这一点?

回答

1

通常,AppDomain中加载的许多小程序集不应该担心太多。任何人都可以对此做出唯一的一般性陈述,即在相关场景中衡量应用的实际性能,然后看看它是否重要。

ASP.NET有一些自动的应用程序生命周期管理,可以在某些事件发生后回收AppDomain。例如,如果应用程序中的重新编译太多,则ASP.NET将自动重新启动应用程序。这意味着所有先前加载的程序集都将被清除,并且从头开始。

查看MSDN了解更多信息:http://msdn.microsoft.com/en-us/library/s10awwz0.aspx

numRecompilesBeforeAppRestart

可选的Int32属性。

指定应用程序重新启动之前可能发生的资源动态重新编译的次数。此属性在全局和应用程序级别受支持,但不在目录级别受支持。

注意

ASP.NET增加了NumRecompilesBeforeAppRestart属性每一个组件失效时好时坏被删除。

默认值为15

+0

好知道至少有到位一些安全装置。到目前为止,它似乎工作正常。 – Danielg 2011-06-24 17:39:31