COM이란 무엇인가 - Windows COM 설계가 지금도 아름다운 이유
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의 설계 철학을 알아 두는 가치는 충분합니다.
관련 기사
같은 태그를 공유하는 최신 기사입니다. 더 가까운 주제로 지식을 넓힐 수 있습니다.
COM 컴포넌트나 OCX / ActiveX 개발에서 빠지기 쉬운 것 - Visual Studio의 32bit / 64bit, 등록, 관리자 권한의 덫을 정리
COM 컴포넌트와 ActiveX, OCX 개발에서 자주 만나는 0x80040154나 0x80070005를 비트 수, 등록 방식, HKCU와 HKLM 스코프, 관리자 권한이라는 네 축으로 풀어 Visual Studio 2022의 64bit화 시대에...
COM / ActiveX / OCX란 무엇인가 - 차이와 관계를 정리해서 해설
Windows 레거시 안건에서 자주 마주치는 COM과 ActiveX, OCX의 차이를 토대·부품·파일이라는 축으로 정리해, regsvr32와 32/64bit, IE 모드 같은 키워드를 만났을 때 헷갈리지 않고 조사와 이전 방침을 잡을 수 있도록 ...
ActiveX / OCX를 지금 어떻게 다룰 것인가 - 남길지・감쌀지・교체할지 판단표
ActiveX / OCX 자산을 만났을 때 무작정 폐기하지 말고, 그 부품이 무엇을 떠맡고 있는지를 기준으로 남길지・감쌀지・교체할지를 32bit / 64bit, 등록 방식, 브라우저 의존, 벤더 보수까지 함께 따져 판단하는 표를 정리합니다.
Reg-Free COM이란 무엇인가 - 등록 불필요로 COM을 쓰는 구조와, 맞는 장면·맞지 않는 장면
Reg-Free COM은 COM 등록 정보를 매니페스트로 가져 앱 단위 액티베이션 컨텍스트로 해결하는 구조입니다. XCOPY 배포·버전 충돌·롤백을 가볍게 하는 한편, bitness·의존 DLL·TLB·설계 시 참조는 별개임을 정리하고 도입 판단...
Excel 장표 출력을 어떻게 만들까 - COM 자동화 / Open XML / 템플릿 방식의 판단표
Excel 장표 출력에서 COM 자동화·Open XML·템플릿 차입·기존 VBA 병용을 어떻게 가려 쓸지를 정리합니다. 사용자 PC와 무인 실행, 레이아웃 재사용 같은 요건별로 권장 구성과 빠지기 쉬운 곳까지 짚어 방식 선정의 판단표로 활용할 수...
관련 토픽
이 기사와 가까운 토픽 페이지입니다. 기사를 출발점 삼아 관련 서비스와 다른 기사로 이어집니다.
Windows 기술 토픽
Windows 개발, 장애 조사, 기존 자산 활용에 관한 KomuraSoft LLC 기사를 모은 토픽 허브입니다.
ActiveX 이관
COM / ActiveX / OCX 자산을 유지할지, 감쌀지, 교체할지의 단계적 판단을 정리한 토픽 페이지입니다.
이 주제와 연결되는 서비스
이 기사는 다음 서비스 페이지로 이어집니다. 가까운 입구부터 확인해 주세요.
Windows 앱 개발
상주 처리, 장비 연동, 운영 로그, 유지 보수 가능한 구조가 필요한 Windows 데스크톱 애플리케이션을 지원합니다.
기존 자산 활용 & 이관 지원
COM / ActiveX / OCX 자산, 네이티브 코드, 32비트 의존성을 유지하면서 단계적인 이관 계획을 지원합니다.