COM 서버는 COM 클래스로 구현됩니다. COM 클래스 지정된 개체와 상호 작용할 때마다 실행되는 코드의 인터페이스 그룹을 구현하는 것입니다. C++ 클래스와 COM 클래스 사이에는 중요한 차이점이 있습니다. C++에서는 클래스가 형식이고, COM 클래스는 단순히 개체의 정의이며 형식을 전달하지 않지만 C++ 프로그래머가 C++ 클래스를 사용하여 구현할 수 있습니다. COM은 특정 클래스의 존재 여부에 대한 지식 없이 작성된 애플리케이션을 포함하여 다양한 애플리케이션에서 클래스를 사용할 수 있도록 설계되었습니다. 따라서 지정된 형식의 개체에 대한 클래스 코드는 DLL(동적 연결된 라이브러리) 또는 EXE(다른 실행 파일 애플리케이션)에 있습니다.
각 COM 클래스는 서버에서 등록해야 하는 고유한 128비트 GUID인 CLSID의해 식별됩니다. COM은 클라이언트의 요청에 따라 이 CLSID를 사용하여 클래스를 구현하는 코드를 포함하는 DLL 또는 EXE와 특정 데이터를 연결하여 개체의 인스턴스를 만듭니다.
동일한 컴퓨터의 클라이언트 및 서버의 경우 서버의 CLSID는 클라이언트에 필요한 모든 것입니다. 각 컴퓨터에서 COM은 시스템에 설치된 서버에 대한 모든 CLSID의 데이터베이스(Microsoft Windows 및 Macintosh 플랫폼에서 시스템 레지스트리를 사용)를 유지 관리합니다. 각 CLSID와 해당 CLSID에 대한 코드를 포함하는 DLL 또는 EXE의 위치 간의 매핑입니다. COM은 클라이언트가 COM 클래스의 인스턴스를 만들고 해당 서비스를 사용하려고 할 때마다 이 데이터베이스를 참조하므로 클라이언트는 컴퓨터에서 코드의 절대 위치를 알 필요가 없습니다.
분산 시스템의 경우 COM은 원격 서버가 클라이언트에서 사용하기 위해 자신을 등록할 수 있도록 하는 레지스트리 항목을 제공합니다. 애플리케이션은 서버의 CLSID만 알아야 하지만 레지스트리를 사용하여 서버를 찾을 수 있으므로 COM을 사용하면 클라이언트가 레지스트리 항목을 재정의하고 서버 위치를 지정하여 네트워크를 최대한 활용할 수 있습니다. (원격 개체 찾기참조하세요.)
클래스의 인스턴스를 만드는 기본적인 방법은 COM 클래스 개체. 이는 단순히 지정된 클래스의 새 인스턴스를 만드는 데 공통적인 함수를 지원하는 중간 개체입니다. CLSID에서 개체를 만드는 데 사용되는 대부분의 클래스 개체는 중요한 CreateInstance 메서드를 포함하는 인터페이스인 IClassFactory 인터페이스를 지원합니다. 인스턴스화할 개체의 각 클래스에 대해 IClassFactory 인터페이스를 구현합니다. (IClassFactory구현하는 방법에 대한 자세한 내용은 IClassFactory구현을 참조하세요.)
메모
다른 사용자 지정 클래스 팩터리 인터페이스를 지원하는 서버는 특히 IClassFactory 지원할 필요가 없습니다. 그러나 CoGetClassObject 이외의 활성화 함수(예: CoCreateInstanceEx)를 호출하려면 서버에서 IClassFactory 지원해야 합니다.
클라이언트가 서버 개체의 인스턴스를 만들려는 경우 CoGetClassObject호출에서 원하는 개체의 CLSID를 사용합니다. (이 호출은 개체 만들기 도우미 함수 중 하나를 통해 직접 또는 암시적일 수 있습니다.) 이 함수는 CLSID와 연결된 코드를 찾고 클래스 개체를 만들고 요청된 인터페이스에 대한 포인터를 제공합니다. (CoGetClassObject 클라이언트의 원하는 인터페이스 포인터를 지정하는 riid 매개 변수를 사용합니다.)
이 포인터를 사용하면 호출자가 개체의 인스턴스를 만들고 개체의 요청된 인터페이스에 대한 포인터를 검색할 수 있습니다. 이는 일반적으로 초기화 인터페이스로, 클라이언트가 원하는 개체로 모든 작업을 수행할 수 있도록 개체를 활성화하는 데 사용됩니다(실행 중인 상태에 배치). COM의 기본 함수를 사용하여 클라이언트는 모든 개체 포인터를 해제하는 데도 주의해야 합니다.
개체 인스턴스를 활성화하는 또 다른 메커니즘은 클래스 모니커를 통한 것입니다. 클래스 모니커가 생성되는 클래스의 클래스 개체에 바인딩됩니다. 자세한 내용은 클래스 모니커참조하세요.
COM은 개체 인스턴스를 만드는 작업을 줄이는 몇 가지 도우미 함수를 제공합니다. 인스턴스 만들기 도우미 함수설명되어 있습니다.
관련 항목