2011-06-13 6 views
7

데이터베이스 기반의 일반 템플릿 엔진으로 Razor 뷰 엔진을 사용하려고합니다.
http://razorengine.codeplex.com/ 문제는 모든 템플릿을 컴파일 할 때마다 새로운 동적 어셈블리가 만들어지고로드된다는 것입니다. 현재 appdomain에서 어셈블리를 언로드 할 방법이 없으며 템플릿 시스템 (익명 형식 사용)에 별도의 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

관련 문제