COM(Component Object Model)이란?

윈도우 모듈 개발 관점에서 COM이라는 개념이 있습니다. 서로 다른 컴포넌트가 통신하는 방법에 대한 정의입니다. 웹 서버 간 API를 호출해서 기능을 사용하는 것과 비슷합니다.

COM이란?

COM(Component Object Model)은 마이크로소프트에서 개발한 소프트웨어 컴포넌트 간 상호작용하는 방식을 정의한 모델입니다. 간단하게 말하면 서로 다른 소프트웨어 언어로 만들어진 프로그램이 서로 통신해서 기능을 이용할 수 있게 해주는 인터페이스입니다.

 

명칭에서도 알 수 있듯, 핵심은 컴포넌트 객체입니다. 여러 컴포넌트가 서로 독립적으로 동작하면서도 각각의 객체를 사용할 수 있게 함으로써 소프트웨어 컴포넌트를 재사용 가능하게 만들고, 기능 연동을 가능하게 만듭니다. 유지보수에도 좋습니다.

 

COM 모듈은 윈도우 환경에서 구현되기 때문에 대부분 DLL (Dynamic Link Library) 형태로 구현됩니다. 가끔 EXE 형태로 구현될 수도 있습니다.

 

COM 장점

COM을 사용하면 이미 만들어진 객체 또는 컴포넌트를 재사용할 수 있습니다. 이로 인해 개발 시간이 줄어들고, 잘 설계된 컴포넌트를 재사용함으로써 소프트웨어의 품질을 향상시킬 수 있습니다. 제3의 라이브러리를 연동할 수 있기 때문에 다른 프로그램의 기능을 쉽게 추가할 수도 있습니다.

 

COM은 다양한 프로그래밍 언어로 작성된 컴포넌트 간에도 호환됩니다. 예를 들어, C++로 작성된 컴포넌트와 Python으로 작성된 컴포넌트가 COM으로 상호작용할 수 있습니다.

 

COM 예시

COM은 인터페이스 표준입니다. COM 개념을 기반으로 여러 기술이 개발됐습니다.

 

1. ActiveX 컨트롤

IE 브라우저에서 자주 사용되던 ActiveX도 COM 기반 기술입니다. ActiveX 컨트롤은 여러 언어로 작성될 수 있고, 브라우저 및 다른 애플리케이션에 삽입되어 기능을 추가합니다. ActiveX 컨트롤은 자체적인 COM 컴포넌트로서, 인터페이스를 제공하고, 이를 통해 외부 애플리케이션과 통신합니다.

 

2. OLE

OLE(Object Linking and Embedding)는 다른 애플리케이션의 객체를 임베드하거나 참조하는 기능을 제공합니다. 예를 들어, MS 오피스 프로그램들은 서로 호환됩니다. Excel 스프레드시트를 Word 문서에 임베드해서 사용할 수 있습니다. 이때 Word는 Excel의 COM 인터페이스를 통해 해당 스프레드시트에 접근해서 데이터를 읽어오거나 수정할 수 있습니다.

 

COM 사용 원리

COM 컴포넌트는 시스템 레지스트리에 등록되어야 합니다. 이렇게 하면 컴포넌트의 CLSID를 통해 클라이언트가 해당 COM 모듈을 찾을 수 있습니다. CLSID는 COM 객체에서 고유한 식별자 역할을 합니다.

 

이처럼 COM 컴포넌트를 레지스트리에 등록할 때 사용되는 툴이 regsvr32 입니다. 예를 들어, mycom.dll 이라는 모듈을 레지스트리에 등록하고 사용하려면 아래와 같이 커맨드라인 명령어를 사용합니다.

regsvr32 mycom.dll

 

실제 코딩을 할 땐 각 언어에 맞는 COM의 표준 인터페이스를 상속합니다. 예를 들어 C++로 작성된 COM 컴포넌트는 IUnknown와 IDispatch 등을 상속합니다.

반응형

댓글

Designed by JB FACTORY