COM의 소개(파트 2) – COM 서버의 이면
본 게시물은 ‘codeproject.com’에 게시된 글 ‘Introduction to COM Part II - Behind the Scenes of a COM Server’을 번역한 것입니다.
원 게시물은 https://www.codeproject.com/Articles/901/Introduction-to-COM-Part-II-Behind-the-Scenes-of-a에 게재되어 있습니다. 최대한 원문에 적힌 의도를 반영하고자 하였으나, 우리말로 읽었을 때 보다 자연스럽게 하고자 부득이 어순과 어휘를 조정한 부분도 있음을 양해 바랍니다.
또한 본 게시물에서 언급하고 있는 예제 소스 코드는 Visual C++ 6.0을 기준으로 작성되어 있기 때문에 후속 버전의 Visual Studio(또는 Visual Studio .NET)에서 자동 생성되는 COM 코드와는 다소 차이가 있음을 감안하고 읽으시기 바랍니다.
- COM의 소개(파트 2) – COM 서버의 이면 (1)
- COM의 소개(파트 2) – COM 서버의 이면 (2)
- COM의 소개(파트 2) – COM 서버의 이면 (3)
- COM의 소개(파트 2) – COM 서버의 이면 (4)
- COM의 소개(파트 2) – COM 서버의 이면 (5)
- COM의 소개(파트 2) – COM 서버의 이면 (6)
- COM의 소개(파트 2) – COM 서버의 이면 (7)
- COM의 소개(파트 2) – COM 서버의 이면 (8)
- COM의 소개(파트 2) – COM 서버의 이면 (9) [完]
본 게시글의 목적
필자의 첫 번째 COM 소개 글로써, 필자는 COM을 이제 막 배우기 시작하였거나, 기초를 이해하고자 하는 프로그래머들을 위한 튜토리얼을 작성하였습니다. 본 게시글에서는 서버 사이드 측면에서 COM을 살펴보고, 여러분이 직접 COM 인터페이스와 COM 서버를 작성하기 위해 필요한 단계들에 대해 설명할 것입니다. 물론 COM 라이브러리에서 호출했을 때 COM 서버에서 어떤 일들이 일어나는지도 자세히 살펴볼 것입니다.
도입
독자 여러분이 이미 필자의 이전 글을 읽어 보셨다면, 여러분은 클라이언트로서 COM을 사용할 때 어떤 것들이 포함되어야 하는지에 대해 정통할 것입니다.
이제 COM을 다른 측면에서 접근해 볼 차례입니다. 이미 컴파일되어 숨어있는 COM 서버입니다. 필자는 이제 아무 클래스 라이브러리도 포함되어 있지 않은 백지 상태의 C++ 언어 프로젝트에서부터 어떻게 COM 서버를 작성하는지에 대해 차근차근 설명하겠습니다.
물론 요즘에는 이러한 접근법이 큰 필요성은 없습니다만, 컴파일되어 숨게 되는 COM 서버를 만드는데 있어 전체적인 코드를 살펴보는 것은, COM 서버에서 일어나는 모든 일들을 확실히 이해하는데 가장 좋은 방법입니다.
본 글에서는 여러분이 C++ 언어를 습득하였다고 보고, 또한 필자가 앞서 적은 글을 통해 COM에서 사용하는 용어와 개념들을 숙지하였다고 보고 내용을 작성하겠습니다. 본 글은 다음과 같은 절(section)으로 구성되어 있습니다.
COM 서버에 필요한 기초 요구 사항들을 설명합니다.
COM 서버가 메모리에 적재되는 기간이 어떻게 제어되는지에 대해 설명합니다.
C++ 클래스에서 인터페이스의 구현을 어떻게 작성하는지 보여주고, IUnknown에 포함된 메소드들의 목적에 대해 설명합니다.
독자 여러분이 CoCreateInstance를 호출하면 어떤 일들이 일어나는지에 대해 살펴보겠습니다.
여러분의 클라이언트 프로그램이 사용할 수 있도록 COM 객체가 생성되는 과정에 대해 설명합니다.
이전 절들에서 설명한 개념들을 활용하는 예제 코드입니다.
《우리가 만든 COM 서버를 사용하는 COM 클라이언트》
우리가 만든 COM 서버를 테스트할 수 있는 간단한 COM 클라이언트 예제입니다.
소스코드와 디버깅에 대한 참고 사항입니다.