2010-03-24 2 views
0

특정 작업 (동적 플러그 인 스타일 아키텍처)을 수행하기 위해 데이터베이스 구성 항목을 기반으로 어셈블리를 동적으로로드하는 웹 응용 프로그램이 있습니다.모든 응용 프로그램 도메인에서 DLL에 대한 모든 참조 제거

개체 호출은 팩터 리 패턴 구현에 있으며 호출은 수천 번 수분으로 이루어질 수 있기 때문에 개체는 팩토리 내의 정적 사전 <>에 캐시됩니다.

이 팩토리에 대한 호출은 기본 웹 응용 프로그램과 여러 웹 서비스 (여러 어셈블리/프로젝트에있는 일부)로 이루어집니다.

이러한 DLL 중 하나를 업데이트해야하는 경우 DLL을 릴리스하기 위해 IIS를 재활용해야합니다.

이것은 서버의 다른 응용 프로그램에 영향을 미치므로 IIS를 다시 시작하지 않고 DLL을 릴리스 할 수있는 방법이 있는지 알고 싶습니다.

답변

1

전체 IIS 서버가 아닌 응용 프로그램 풀을 다시 시작할 수 있습니다. 어쩌면 그것은 당신을위한 트릭을 할 것입니다

+0

멋진 아이디어 -이 부분을 살펴 보겠습니다. – cjk

2

기본적으로 IIS를 다시 시작할 때 수행중인 AppDomain을 종료하는 것 이외에로드 된 어셈블리를 언로드 할 수있는 방법은 없습니다.

1

로드하고 언로드해야하는 어셈블리가 있다면 몇 개의 농구를 뛰어 넘어야합니다. MarshalByRefObject에서

  • 유형을 호출하는 데 사용되는 인터페이스에서 파생되어야로드되는 파생해야한다로드

    • 유형
    • 을 수행해야합니다로드 어셈블리를 분리하는 '로더'를 기반으로 원격 구축 언로드 할 수있는 새 appdomain에서

    좋은 소개를 위해 http://www.west-wind.com/presentations/dynamicCode/DynamicCode.htm을 참조하십시오. 그것은 약간 날짜가 정해져 있고 동적으로 생성 된 코드를 다루지 만 당신의 담당자에게 당신이 관련 정보를 추출 할 수 있다고 가정합니다.

  • +0

    소리가 많이 나지만 정보를 제공해 주셔서 감사합니다. – cjk

    +0

    @ck it *은 많은 일을합니다. 하지만 니가해야할 일을 너는 해. –

    관련 문제