호스팅 개요

업데이트: 2007년 11월

.NET Framework 버전 2.0은 CLR(공용 언어 런타임)을 호스팅하는 응용 프로그램이 다양한 런타임 기능을 제어할 수 있도록 합니다. 메모리 할당 및 어셈블리 로딩과 같은 일부 기능을 사용자 지정 구현으로 대체할 수 있으며 다른 기능의 동작을 제어하고 런타임에 이벤트 알림을 받고 응용 프로그램 도메인을 관리할 수 있습니다.

호스팅되는 런타임의 초기화 및 시작

이전 버전의 런타임과 마찬가지로 CorBindToRuntimeEx 함수는 런타임을 초기화합니다. 로드할 런타임 버전을 직접 선택할 수 있지만 한 프로세스에서 한 버전만 호스팅할 수 있습니다. 버전 2.0이 로드되면 이 함수는 런타임을 시작하고 관리 코드를 실행하는 데 사용되는 ICLRRuntimeHost 인터페이스를 반환합니다.

참고:

이전 버전에서는 ICorRuntimeHost 인터페이스가 반환됩니다.

런타임 시작에 대한 자세한 내용은 프로세스에 공용 언어 런타임 로드를 참조하고 관리 코드 실행에 대한 자세한 내용은 관리 호스팅 코드로의 전환을 참조하십시오.

관리 인터페이스 호스팅

.NET Framework 버전 2.0의 CLR은 호스팅된 런타임의 다양한 기능을 제어하는 호스팅 관리 인터페이스를 제공하고 호스트 응용 프로그램이 런타임에서 제공하는 다른 관리 인터페이스를 구현할 수 있게 하여 사용자가 자신만의 호스팅 관리 인터페이스를 구현할 수 있도록 합니다.

쉽게 찾을 수 있도록 관리 인터페이스는 다음 두 가지의 큰 범주로 나뉩니다.

  • 호스트가 구현하고 런타임이 IHostControl 인터페이스를 통해 검색하는 관리 인터페이스

  • CLR이 제공하고 호스트가 ICLRControl 인터페이스를 통해 검색하는 관리 인터페이스

다음 표에서는 이러한 인터페이스를 기능별로 분류하여 보여 줍니다. 각 그룹 내의 가장 중요한 인터페이스가 가장 먼저 표시됩니다.

그룹

함수

인터페이스

어셈블리 로딩 관리

로드할 어셈블리가 있는 위치, 버전 관리 방법 및 로드할 어셈블리의 형식을 호스트가 사용자 지정할 수 있도록 합니다. 예를 들어, 하드 디스크의 파일 대신 데이터베이스에서 어셈블리를 로드할 수 있습니다.

CLR은 IHostControl 인터페이스를 사용하여 호스트가 이 인터페이스 그룹을 구현하는지 여부를 확인합니다.

IHostAssemblyManager

IHostAssemblyStore

ICLRAssemblyReferenceList

ICLRAssemblyIdentityManager

정책 관리

호스트가 다양한 안정성 요구 사항에 적합하게 프로그램 오류 처리 방법을 지정할 수 있도록 합니다.

호스트는 ICLRControl 인터페이스를 사용하여 런타임 관리자에 액세스할 수 있으며 런타임에서 발생한 오류를 알리기 위한 IHostPolicyManager 콜백을 구현합니다.

ICLRPolicyManager

IHostPolicyManager

호스트 보호 관리

지정한 형식 또는 멤버를 사용하지 못하도록 하여 호스트가 해당 프로그래밍 모델을 적용할 수 있도록 합니다. 예를 들어, 호스트가 스레딩 또는 동기화 기본 형식을 사용하지 못하게 할 수 있습니다.

호스트는 ICLRControl 인터페이스를 사용하여 런타임 관리자에 액세스합니다.

ICLRHostProtectionManager

메모리 관리

CLR이 메모리를 할당하는 데 사용하는 운영 체제 함수의 대체 함수를 제공하여 호스트가 메모리 할당을 제어할 수 있도록 합니다.

CLR은 IHostControl 인터페이스를 사용하여 호스트가 이 인터페이스 그룹을 구현하는지 여부를 확인합니다.

IHostMemoryManager

IHostMAlloc

ICLRMemoryNotificationCallback

가비지 수집 관리

가비지 수집 시작 및 종료에 대한 알림을 받기 위한 메서드를 호스트가 구현할 수 있도록 합니다. 호스트는 가비지 수집 관리 기능을 사용하여 수집을 시작하고, 통계를 수집하고, 수집의 몇 가지 특성을 지정할 수 있습니다.

호스트는 ICLRControl 인터페이스를 사용하여 런타임 관리자에 액세스합니다. CLR은 IHostControl 인터페이스를 사용하여 호스트가 이 인터페이스 그룹을 구현하는지 여부를 확인합니다.

IHostGCManager

ICLRGCManager

디버그 관리

호스트가 디버거의 연결 여부를 확인하고, 추가 디버깅 정보를 제공하고, 디버깅 작업을 사용자 지정할 수 있도록 합니다.

호스트는 ICLRControl 인터페이스를 사용하여 런타임 관리자에 액세스합니다.

ICLRDebugManager

CLR 이벤트 관리

호스트가 EClrEvent에 열거된 이벤트에 대한 알림을 등록할 수 있도록 합니다.

호스트는 ICLRControl 인터페이스를 사용하여 런타임 관리자에 액세스하고 IActionOnCLREvent 인터페이스를 사용하여 해당 이벤트 처리기를 구현합니다.

ICLROnEventManager

IActionOnCLREvent

작업 관리

스레드가 관리 코드와 비관리 코드 간에 전환될 때마다 호스트가 알림을 받을 수 있도록 합니다. 또한 호스트가 스레드 선호도, 작업 시작/중지 시기 및 작업 예약 방식을 제어할 수 있도록 합니다.

CLR은 IHostControl 인터페이스를 사용하여 호스트가 이 인터페이스 그룹을 구현하는지 여부를 확인합니다.

IHostTaskManager

ICLRTaskManager

IHostTask

ICLRTask

스레드 풀 관리

호스트가 런타임에 사용될 자체 스레드 풀을 구현할 수 있도록 합니다.

CLR은 IHostControl 인터페이스를 사용하여 호스트가 이 인터페이스 그룹을 구현하는지 여부를 확인합니다.

IHostThreadPoolManager

동기화 관리

호스트가 런타임에 사용될 자체 동기화 기본 형식을 구현할 수 있도록 합니다. 호스트는 이벤트, 임계 영역 및 세마포를 제공할 수 있습니다.

CLR은 IHostControl 인터페이스를 사용하여 호스트가 이 인터페이스 그룹을 구현하는지 여부를 확인합니다.

IHostSyncManager

ICLRSyncManager

IHostCrst

IHostManualEvent

IHostAutoEvent

IHostSemaphore

I/O 완료 관리

호스트가 비동기 입/출력을 직접 구현할 수 있도록 합니다.

CLR은 IHostControl 인터페이스를 사용하여 호스트가 이 인터페이스 그룹을 구현하는지 여부를 확인합니다.

IHostIoCompletionManager

참고:

이전 버전 런타임의 호스팅 인터페이스는 .NET Framework 1.0 및 1.1을 위한 호스팅 인터페이스를 참조하십시오.

응용 프로그램 도메인 관리자

CLR을 호스팅하는 프로그램의 경우 응용 프로그램 도메인에 의해 어셈블리가 서로 격리되므로 안정성이 더 높아집니다. 응용 프로그램 도메인을 언로드하면 프로세스에서 어셈블리를 언로드할 수 있습니다.

여러 응용 프로그램 도메인을 관리하기 위해 .NET Framework 버전 2.0에서는 AppDomainManager 클래스를 기본 클래스로 제공합니다. 이 클래스에서 고유한 응용 프로그램 도메인 관리자를 파생시킬 수 있습니다. 호스트 응용 프로그램을 위해 디자인하는 응용 프로그램 도메인 관리자는 기본적으로 관리 코드로 된 호스트 확장입니다. 이 관리자는 프로세스에서 생성되는 각 응용 프로그램 도메인에 자동으로 로드됩니다.

응용 프로그램 도메인 관리자는 관리 코드와 비관리 코드 간의 전환을 일부 제거하여 성능을 향상시킬 수 있으며, 새 응용 프로그램 도메인이 만들어질 때 알림을 받아 사용자가 응용 프로그램 도메인을 구성할 수 있게 할 수 있습니다. 또한 관리되지 않는 호스트에 관리 코드를 호출하는 방법을 제공합니다.

참고 항목

개념

프로세스에 공용 언어 런타임 로드

참조

AppDomainManager

기타 리소스

공용 언어 런타임 호스팅

응용 프로그램 도메인

.NET Framework 2.0 이상을 위한 호스팅 인터페이스