COM Interop
1. 개요
COM Interop은 .NET Framework에서 COM 구성 요소와 상호 작용하기 위한 기술이다. .NET은 닷넷 어셈블리에서 COM 구성 요소를 지원하기 위해 형식 라이브러리와 레지스트리 항목을 생성하고, `RegAsm.exe` 유틸리티를 제공하여 관리되는 형식을 COM 구성 요소로 등록한다. 또한, `Tlbimp.exe` 도구를 사용하여 COM 구성 요소를 사용하는 닷넷 어셈블리를 지원하며, COM 형식과 .NET 형식 간의 자동 변환, `retval` 인수 반환 값 변환, HRESULT 반환 값을 예외로 자동 변환하는 서비스를 제공한다.
-
닷넷 프레임워크 -
파워셸
파워셸은 마이크로소프트에서 개발한 작업 자동화 솔루션으로, 명령줄 셸과 스크립트 언어의 기능을 결합하여 윈도우 시스템 관리를 위해 설계되었으며, .NET 프레임워크 기반의 객체 지향적 특징을 갖고 다양한 플랫폼에서 자동화 스크립트 작성 및 실행, 시스템 구성 관리 등에 활용된다. -
닷넷 프레임워크 -
유니버설 윈도우 플랫폼
유니버설 윈도우 플랫폼(UWP)은 마이크로소프트에서 개발한 애플리케이션 모델로, Windows 10, 11 등 다양한 기기에서 실행되는 앱 개발을 위한 통합 플랫폼이며, Visual Studio를 통해 개발되고 XAML Islands를 통해 기존 WinAPI 기반 애플리케이션에서도 활용 가능하다.
2. 상호 운용 도구 (.NET Framework)
.NET Framework는 구성 요소를 등록할 때 형식 라이브러리와 특수 레지스트리 항목을 생성한다. 닷넷은 관리되는 형식을 형식 라이브러리로 내보내고 관리되는 구성 요소를 기존 COM 구성 요소로 등록하는 특수 유틸리티(RegAsm.exe, 일반적으로 C:\Windows\Microsoft.NET\Framework에 위치)를 제공한다. COM을 통해 형식이 인스턴스화되면 .NET CLR이 실제로 실행되는 COM 객체이며, 메서드 호출 또는 속성 접근을 형식 구현으로 마샬링한다.
등록 없는 COM을 사용하여 DLL 지옥을 피할 수 있다.
기존 COM 구성 요소에 대한 COM Interop을 만들려면 .NET Framework SDK와 함께 제공되는 `Tlbimp.exe` 도구를 사용할 수 있다. 이 도구는 CIL로 구현된 일련의 프록시 클래스를 생성하며, 이는 어셈블리에 캡슐화된다.
2.1. 닷넷 어셈블리에서 COM 구성 요소를 지원하는 도구
.NET Framework는 구성 요소를 등록할 때 형식 라이브러리와 특수 레지스트리 항목을 생성한다. .NET은 관리되는 형식을 형식 라이브러리로 내보내고 관리되는 구성 요소를 기존 COM 구성 요소로 등록하는 특수 유틸리티(RegAsm.exe, 일반적으로 C:\Windows\Microsoft.NET\Framework에 위치)를 제공한다. COM을 통해 형식이 인스턴스화되면 .NET CLR이 실제로 실행되는 COM 객체이며, 메서드 호출 또는 속성 접근을 형식 구현으로 마샬링한다.
등록 없는 COM을 사용하여 DLL 지옥을 피할 수 있다.
2.2. COM 구성 요소를 사용하는 닷넷 어셈블리를 지원하는 도구
.NET Framework SDK와 함께 제공되는 `Tlbimp.exe` 도구를 사용하여 기존 COM 구성 요소에 대한 COM Interop을 만들 수 있다. 이 도구는 CIL로 구현된 일련의 프록시 클래스를 생성하며, 이는 어셈블리에 캡슐화된다.