2010-02-27 1 views

답변

25

CLR v2 (.NET 2.0, 3.0 및 3.5)와 관련된 CLR 호스팅에 대한 자세한 내용은 here을 참조하십시오. .NET 4.0의 최신 CLR 호스팅 API에 대한 자세한 내용은 see here을 참조하십시오.

기본적으로 CLR은 프로세스에 의해로드되고 "호스팅"될 수있는 라이브러리 역할을합니다. 원하는 경우 CLR을로드하고 호스팅하는 응용 프로그램을 개발할 수 있습니다. 이를 통해 앱에 전체 CLR 가상 시스템을 포함시키고 어셈블리를로드하고 .NET 관리 코드를 모두 실행할 수 있습니다.

예를 들어 SQL Server 2008에서이 작업을 수행 할 수 있습니다. SQL Server 데이터베이스에 저장되고 SQL Server 데이터베이스 엔진에서 실행되는 .NET 코드를 작성할 수 있습니다. SQL Server는이를 달성하기 위해 CLR을 호스팅합니다.

Windows 셸 (일반 사용자 인터페이스) 이외의 CLR 호스트는 코드 실행을위한 특정 컨텍스트를 제공 할 수 있습니다. 이것은 특수한 응용 프로그램 또는 매우 특별한 시나리오에 유용 할 수 있습니다. 위의 MSDN 링크에는 이러한 문제에 대한 몇 가지 지침이 있습니다.

+1

+1 답변을 제공해 주셔서 감사합니다. 또한 : .NET 실행 파일을 두 번 클릭하고 시작할 때 누가 CLR을 호스팅합니까? Windows 탐색기에서 호스팅합니까? – Sabuncu

+0

@ Sabuncu : 예. 그것이 내 대답에서 언급 한 Windows 쉘입니다. – CesarGon

+0

감사합니다. "Windows 쉘"참조를 보았지만 확실하지 않았습니다. 이 경우에는 DOS cmd.exe 또는 PowerShell 콘솔과 같은 셸 프로그램이 아니라 일반적인 의미로 "셸"을 사용하고 있다고 생각합니다. – Sabuncu

11

CLR 호스팅은 원하는 프로세스에서 .NET 공용 언어 런타임을 호스팅합니다.

기존 환경이 요구 사항에 맞지 않는 경우가 있습니다. 기존 환경 중 일부는 ASP.NET, WinForms, Windows Workflow Foundation 등입니다. 이러한 환경이 요구 사항에 맞지 않으면 직접 호스팅 할 수 있습니다.

2

CLR 호스팅 호스팅은 .NEt 응용 프로그램을 사용합니다. 네이티브 프로세스 내에서 .NET 런타임을 시작하면 해당 네이티브 응용 프로그램이 런타임의 호스트가됩니다. 이를 통해 네이티브 응용 프로그램에 .NET 기능을 추가 할 수 있습니다.

런타임이 실행 중이지만 아직로드 된 사용자 코드가없는 경우. 일부 내부 스레드 스케줄러 및 가비지 수집기는 CLR 런타임의 일부이므로 반드시 실행되고 있습니다. 다른 호스팅 서비스보다 매우 복잡합니다.