사용자 코드 로딩 및 실행

호스트를 작성하는 이유는, 관리되는 사용자 코드를 실행할 응용 프로그램 환경을 만들기 위해서 입니다. 이 때, 사용자 코드란 호스트의 일부가 아닌 다른 관리 코드를 가리킵니다. 예를 들어, Internet Explorer 호스트의 경우, 사용자 코드는 HTML 페이지를 구성하는 관리되는 컨트롤 및 스크립트이며, 응용 프로그램 서버 호스트의 경우, 사용자 코드는 응용 프로그램 서버에서 관리하고 실행해야 하는 회사의 업무 지침이 들어 있는 코드입니다.

모든 관리 코드는 Assembly 클래스의 일부이기 때문에 관리 코드를 로드하고 실행하는 데 사용할 수 있는 모든 메서드는 모두 어셈블리에 기반합니다. 예를 들어, System.AppDomainSystem.Reflection.Assembly 클래스에는 호스트에서 어셈블리를 로드하는 데 사용되는 메서드가 들어 있습니다. 어셈블리 이름을 사용하는 메서드, 어셈블리 매니페스트가 들어 있는 파일의 전체 시스템 경로를 사용하는 메서드 등 Load 메서드의 형식은 다양하며 이들 메서드는 이전에 만들어져 디스크에 저장된 어셈블리를 로드하는 데 사용됩니다.

예를 들어, 위에 설명한 응용 프로그램 서버 호스트에서 해당 응용 프로그램 서버에 로드되고 실행될 관리 코드 업무 지침을 작성할 수 있다고 가정합니다. 특정 업무 지침에 대한 메서드의 실행 요청이 응용 프로그램 서버에 전달되면 서버 런타임 호스팅 코드는 해당 코드를 실행할 도메인을 확인하거나 새 도메인을 만들어야 하는지 여부를 결정합니다. 그런 다음 런타임 호스팅 코드에서 어셈블리 Load 메서드 중 하나를 사용하여 비즈니스 규칙이 포함된 어셈블리를 로드하고 리플렉션을 사용하여 해당 비즈니스 규칙에 대해 메서드를 실행합니다. 자세한 내용은 System.Reflection 네임스페이스에 대한 설명서를 참조하십시오.

System.Reflection.Emit 네임스페이스에서도 어셈블리를 동적으로 만드는 형식을 제공하는데 이러한 어셈블리 로딩 방법은 응용 프로그램에서 스크립트 코드를 처리하는 경우에 유용합니다.

예를 들어, 워드 프로세서 프로그램에서는 사용자가 응용 프로그램의 동작을 사용자 지정하는 데 사용할 수 있는 매크로 언어를 지원할 수 있습니다. 워드 프로세서 프로그램에서는 런타임을 로드하고 응용 프로그램 도메인을 만든 다음 매크로 스크립트를 관리 코드로 컴파일한 다음 System.Reflection.Emit을 사용하여 어셈블리를 만듭니다. 이렇게 만들어진 어셈블리는 응용 프로그램 도메인에 로드되고 실행됩니다. 정확한 시나리오에 따라 이러한 어셈블리는 해당 응용 프로그램의 수명이 지속되는 동안에만 존재하고 디스크에 저장되지 않을 수도 있습니다.

참고 항목

참조

AppDomain

System.Reflection.Assembly

System.Reflection.Emit

기타 리소스

호스팅 개요