응용 프로그램 도메인 경계 확인
업데이트: 2007년 11월
호스팅 코드가 비관리 코드에서 관리 코드로 전환되면, 호스트는 사용자 코드를 실행할 하나 이상의 새 응용 프로그램 도메인을 만들어야 합니다. 응용 프로그램 도메인은 프로세스 내에 실행 중인 코드를 격리시키기 위해 호스트에서 사용하는 구문입니다. 코드 격리는 특정 코드가 다른 코드와 상호 작용하는 것을 방지하기 위해 필요합니다. 예를 들어, 두 개의 서로 다른 웹 사이트에서 Internet Explorer로 다운로드된 코드는 개별적으로 유지되어야 합니다. 그러기 위해서 Internet Explorer 호스트는 이들 코드를 격리시키기 위해 각 코드에 사용할 응용 프로그램 도메인을 만듭니다.
사용자 코드를 실행할 응용 프로그램을 호스트에서 만들려면 먼저 새 응용 프로그램의 경계를 지정해야 합니다. 경계 지정에 영향을 주는 요소로는 특정 형식의 다른 형식에 대한 액세스 제한 요구 사항, 구성, 보안 및 더 이상 필요하지 않는 코드를 언로드하는 기능 등이 있습니다.
형식에 대한 액세스 제한
응용 프로그램 도메인에 실행되는 형식은 동일한 도메인에 실행 중인 다른 형식을 찾아 직접 호출할 수 있지만, 다른 응용 프로그램 도메인에 실행 중인 형식은 찾을 수 없으므로, 호출할 수도 없습니다. 다른 형식에 대한 특정 형식의 액세스를 제한하는 것은 도메인 경계를 지정하는 데 있어서의 가장 기본적인 고려 사항입니다.
구성 설정
응용 프로그램 도메인은 런타임에서 구성의 기본 단위로서, 각 응용 프로그램 도메인에는 해당 도메인에 실행되는 코드와 관련된 설정을 설명하는 선택적 구성 파일이 있습니다.
예를 들어, 구성 파일에는 전용 어셈블리가 들어 있는 디렉터리 목록, 공유 어셈블리에 대한 버전 바인딩 정보, 원격으로 액세스할 수 있는 형식의 위치 등이 포함될 수 있습니다.
보안
호스트는 도메인에 대해 코드 액세스 보안 정책 및 역할 기반 보안 정책을 설정할 수 있습니다. 이러한 보안 정책을 설정함으로써 호스트는 특정 도메인에 있는 코드에 대한 허가 사항을 제어할 수 있으며 또한 현재 스레드의 보안 주체 및 역할 기반 보안의 기본 보안 주체를 설정할 수 있습니다.
예를 들어, 호스트는 특정 사이트에서 다운로드된 코드만이 도메인에서 실행될 수 있도록 응용 프로그램 도메인 수준의 코드 액세스 보안 정책을 정의할 수 있습니다. 또는 사용자 지정 인증 체계를 구현하기 위해 역할 기반 보안 주체를 설정할 수도 있습니다.
코드 언로딩
메모리를 다른 용도로 사용할 수 있도록 프로세스에 실행 중인 관리 코드를 메모리에서 언로드하려면 호스트는 먼저 해당 코드가 실행 중인 응용 프로그램 도메인을 언로드해야 합니다. 개별 어셈블리나 형식은 언로드될 수 없습니다. 각 호스트에는 사용자 코드를 언로드하는 시기에 대한 규칙이 있습니다. 예를 들어, 인터넷 브라우저에서는 관리되는 컨트롤을 정해진 사이트 도메인에 로드하고 앞으로 및 뒤로 단추가 더 빠르게 작동할 수 있도록 정해진 규칙에 따라 최근에 열어 본 페이지를 메모리에 유지합니다. 메모리에 더 이상 유지할 필요가 없는 페이지가 있으면, 해당 응용 프로그램 도메인을 삭제하여 관리되는 컨트롤에 대한 코드도 함께 삭제합니다.