2011-06-13 98 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