COM이란 무엇인가 - Windows COM 설계가 지금도 아름다운 이유

· · COM, ActiveX, Windows 개발

COM이란 무엇인가 - Windows COM 설계가 지금도 아름다운 이유

COM은 오래된 기술로 여겨지기 쉽지만, Windows 개발에서는 지금도 설계의 중심축으로 계속 등장합니다.
특히 검색에서 자주 보이는 질문은 COM이 무엇인지, 왜 IUnknown과 GUID가 필요한지, 왜 지금도 계속 언급되는지입니다.

COM이란?

COM(Component Object Model)은 Windows에서 컴포넌트끼리 상호작용하기 위한 “바이너리 계약”입니다.
언어와 컴파일러가 달라도, 인터페이스라는 엄격한 계약을 통해 통신합니다.

COM을 이해할 때 중요한 요소는 다음과 같습니다.

  • 인터페이스 중심 설계(구현보다 계약이 우선)
  • GUID(CLSID / IID) 를 통한 식별
  • IUnknown 을 통한 참조 카운팅과 인터페이스 탐색
  • DLL(인프로세스) 뿐 아니라 EXE(아웃프로세스) 로도 동작 가능

요약하면 COM은 “구현을 몰라도 재사용할 수 있는 구조“로 설계되어 있습니다. 언어 중립적인 인터페이스라니, 정말 멋진 개념입니다.

COM의 강점

COM에는 오래된 기술처럼 보이지만 지금도 높게 평가받는 설계상의 강점이 있습니다.

  • 바이너리 호환성
    이미 빌드된 컴포넌트를 언어나 런타임에 상관없이 활용할 수 있습니다.

  • 인터페이스 분리
    구현을 숨기고 계약만 공개함으로써, 견고하고 유지보수성이 높은 설계를 만들 수 있습니다.

  • 버전 공존 가능
    호환성을 깨지 않고 기능을 추가하기 위해 새 인터페이스를 추가하는 방식이 기본입니다. Microsoft다운 방식이죠.

  • 프로세스 경계를 넘는 재사용
    아웃프로세스 COM을 사용하면 다른 프로세스의 기능을 안전하게 호출할 수 있습니다.

이런 “언어·프로세스·구현으로부터의 독립성“이야말로 COM의 아름다움이라고 느낍니다.

COM은 지금도 현역

COM은 “오래된 기술”이라는 인상이 강하지만, 실제로는 Windows 핵심에서 지금도 쓰이는 메커니즘입니다.
레거시 자산 연계나 Windows 고유 기능 활용에서는 COM이 여전히 중요한 선택지입니다.

COM이 쓰이는 의외의 곳

  • 탐색기 확장(우클릭 메뉴, 미리보기)
  • Office 자동화(Excel/Word 외부 제어)
  • .NET과의 상호운용(COM Interop)
  • ActiveX를 포함한 기존 시스템

“지금 하는 일과는 상관없다”고 생각해도, Windows 개발을 하는 한 COM은 어디선가 반드시 등장합니다.
그래서 COM의 설계 철학을 알아 두는 가치는 충분합니다.

관련 기사

같은 태그를 공유하는 최신 기사입니다. 더 가까운 주제로 지식을 넓힐 수 있습니다.

관련 토픽

이 기사와 가까운 토픽 페이지입니다. 기사를 출발점 삼아 관련 서비스와 다른 기사로 이어집니다.

ActiveX 이관

COM / ActiveX / OCX 자산을 유지할지, 감쌀지, 교체할지의 단계적 판단을 정리한 토픽 페이지입니다.

토픽 보기

이 주제와 연결되는 서비스

이 기사는 다음 서비스 페이지로 이어집니다. 가까운 입구부터 확인해 주세요.

블로그 목록으로 돌아가기