구성 요소 객체 모델 (COM) 샘플
Com은 객체 지향 설계를 기반으로 소프트웨어를 구성하는 매우 강력한 기술입니다. 자세한 내용은 문서를 참조하십시오.
COM의 주요 단점 중 하나는 COM 구성 요소를 설정하는 데 필요한 초기 보일러 플레이트입니다. ATL은 보일러 플레이트를 구축하는 데 도움이되지만 자체 복잡성을 제공하는 라이브러리 세트입니다.
이 샘플은 COM 설정 및 등록의 헤비클립 팅을 수행하는 골격 코드를 제공하여 개발자가 인프라에 대해 걱정하지 않고 비즈니스 로직에만 집중할 수 있도록합니다. ATL을 사용하지 않습니다 . 대신 개발자가 필요한 경우 기본 골격을 이해하고 디버깅 할 수 있도록 간단한 일반 C ++ 코드를 사용합니다.
사용 된 용어
- COM 서버는 비즈니스 로직을 제공하는 객체입니다.
- COM 클라이언트는 COM 서버에서 노출 된 인터페이스를 통해 COM 서버에 액세스하는 코드입니다.
- COM 클라이언트와 COM 서버 간의 상호 작용은 마샬링을 통해 발생하며 프록시 스터브 DLL이 필요합니다.
- 자세한 내용은 문서를 참조하십시오.
이 프로젝트
이 샘플의 다양한 디렉토리에 대한 요약은 다음과 같습니다.
- comsampleproxy : proxystub dll. 새 인터페이스를 추가하려면 프로젝트에 새 IDL 파일을 추가하십시오.
- COMSAMPLESERVER : COM 서버 내 프로세스 활성화 및 프로세스 외부 (OS에서 DLL 대리인, 즉 dllhost.exe)를 지원합니다.
- COMSAMPLESERVICE : LocalSystem 서비스에서 COM 서버 활성화 지원.
- COMSAMPLECLIENT : 위에서 언급 한 COM 서버를 호출하고 테스트하는 샘플 COM 클라이언트.
새 COM 구성 요소 작성 및 등록
이 모델에서는 새로운 COM 구성 요소를 만드는 것이 매우 쉽습니다.
- 인터페이스 추가 :
- ComsampleProxy 프로젝트에 인터페이스가있는 새 IDL 파일을 추가하십시오. 샘플 파일 /comsampleProxy/icomtest.idl을 참조하십시오.
- COM 클래스 구현 :
- 대리 활성화에서 프로세스 유형 활성화 또는 프로세스 외부의 경우 : COMSAMPLESERVER 프로젝트에 클래스 구현을 추가하십시오. comsampleserver/ccomservertest.cpp 예제를 참조하십시오. 이제 comsampleserver/dll.cpp로 이동하여 "g_classes"에 클래스 항목을 추가하십시오.
- LocalSystem 서비스에서 프로세스 외 활성화를 위해 : ComsamplesService 프로젝트에 클래스 구현 추가를 추가하십시오. ComsamplesErvice/ccomservicetest.cpp 예제를 참조하십시오. 이제 comsampleservice/main.cpp로 이동하여 "g_classes"에 클래스 항목을 추가하십시오.
- COM 구성 요소 등록 :
- ComSampleProxy.dll을 대상 시스템에 복사하십시오. 높은 프롬프트에서 실행 : regsvr32 comsampleProxy.dll .
- 대리 활성화에서 프로세스 중반 활성화 또는 프로세스 외부의 경우 : ComsAmpleserver.dll을 대상 시스템에 복사하십시오. 높은 프롬프트에서 실행 : regsvr32 comsampleserver.dll .
- LocalSystem 서비스에서 프로세스 외 활성화를 위해 : COMSAMPLESERVICE.EXE를 대상 시스템에 복사하십시오. 높은 명령 프롬프트에서 실행 : comsampleservice.exe /registerserver .
그게 다야!
상표
이 프로젝트에는 프로젝트, 제품 또는 서비스에 대한 상표 또는 로고가 포함될 수 있습니다. Microsoft 상표 또는 로고의 승인 된 사용에는 Microsoft의 상표 및 브랜드 지침이 적용되며 따라야합니다. 이 프로젝트의 수정 된 버전에서 Microsoft 상표 또는 로고를 사용한다고해서 혼란을 일으키거나 Microsoft 후원을 암시해서는 안됩니다. 타사 상표 또는 로고를 사용하면 타사 정책이 적용됩니다.