ClrcreatemanagedInstance를 사용하여 CLR을 호스팅하는 것 - 이점은 무엇입니까?

StackOverflow https://stackoverflow.com/questions/800867

  •  03-07-2019
  •  | 
  •  

문제

interop beftween win32 응용 프로그램을 성공적으로 구현하고 설명대로 .NET DLL을 관리했습니다. 여기. 그러나 나는 또한 읽었다 여기 관리되지 않는 프로세스 내에서 전체 CLR을 호스팅 할 수 있습니다.

그래서 내 질문은 : 왜 그렇게 하시겠습니까? 그것은 단지 객체를 사용하는 것보다 다소 복잡합니다.

편집 : 제가 2 개의 첫 번째 답변에서 이해 한 것은 필요에 대해 CLR을 사용자 정의 할 가능성이 있다는 것입니다. 즉, 간단한 비즈니스 앱을 작성하는 경우 호스팅 할 필요가 없습니다. 호스팅은 브라우저 또는 SQL Server와 같은 시스템이 많은 물건을위한 것입니다.

도움이 되었습니까?

해결책

CLR을 호스팅하는 것은 일반적으로 관리 코드와 Win32 사이를 인터 로프하기 위해하는 일이 아닙니다. 인터 로프의 3 가지 방법이 일반적으로 있습니다.

  • 런타임 호출 가능한 래퍼 (RCW) - .NET에서 COM 개체를 호출합니다.
  • com callable 래퍼 (ccw) - .net 객체를 com 객체로 표시합니다.
  • p/호출

이들은 .NET의 첫 번째 버전 이후 지원되었습니다. CLR 호스팅의 요점은 관리되지 않는 응용 프로그램에 .NET 코드를 깊이 포함시킬 수 있도록하는 것입니다. 예를 들어, win32의 apache에서 .aspx 페이지를 실행할 수있는 모듈이 있습니다.

마찬가지로 SQL Server는 사람들이 관리되는 코드로 확장 저장 절차 및 기능을 작성하는 방법을 원했습니다. 과거에는 C/C ++로 이것을 쓸 수 있지만 CLR을 호스팅하면 실제로 사람들이 C#으로 이것을 쓸 수 있습니다. CLR을 상태로 데려 오는 작업은 안전하게 내장 될 수 있었기 때문에 실제로 타임 라인을 밀어 내기 때문에 메모리와 보안에 대한 제어와 같은 것들이 탄생했습니다. SQL Server에는 몇 가지 심각한 안정성 요구 사항이 있으며 .NET이 보트를 흔들어 놓을 수 없습니다.

호스팅 API는 .NET 1.X에서 2.X로 크게 변경되었지만 2.0 CLR이 .NET 3.0, 3.5를 통해 살았으므로 더 안정적이었습니다.

다른 팁

Microsoft SQL Server는 IT를 사용하여 보안, 어셈블리 로딩, 메모리 관리, 스레드 관리 및 그렇지 않은 것을 대체합니다. 이 주제에 대한 좋은 책은 "Microsoft .NET 프레임 워크 공통 언어 런타임 사용자 정의"입니다.

레거시 애플리케이션이있을 수 있으며 제 3자가 응용 프로그램 내에서 .NET의 시설을 사용하도록 허용하고 특히 제어 된 방식으로 ~와 같은 어셈블리가로드되는 위치 제어. 여기 예입니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top