COM (Component Object Model) | |
주요특징. COM 은 인스턴스 생성가능한 object임. - C++ 클래스와 기능적으로 동일하나, C++클래스는 소스코드로 존재 COM은 바이너리임. COM 은 구조체의 포인터. - COM을 활용한 코딩이라 함은 COM 인스턴스(=object, 개체) 생성하면서 구조체의 포인터를 얻고, 포인터를 통해 구조체 멤버에 접근하는것. COM 구현형태 : DLL 혹은 EXE로 형태로 구현된다. - OCX확장자로 끝나는 파일 있는데 확장자 이름만 다를뿐 실제 DLL 임. 서버클라이언트 개념에서 COM 은 서버, COM 을 활용하는 측은 클라이언트. COM 의 3가지 타입. In-Process COM : 클라이언트 프로그램과 동일 프로세스 내부에서 작동하는것. 이 특징은 일반 DLL 과 완전히 동일한것. Out-Process COM : 클라이언트 프로그램 프로세스에 있지 않고, 동일 시스템(컴퓨터)에서 COM 이 별개의 프로세스가 실행되어 서버 기능하는것. DCOM : 클라이언트 프로그램이 있는 시스템(컴퓨터) 외부에 있는 COM . DCOM네트워크 프로토톨로 통신함. | |
|
COM의 레지스트리 등록/제거. regsvr32 | |
COM 을 레지스트리에 등록하는 이유.- COM의 CLSID와 COM파일(DLL 혹은 exe 확장자)의 경로 대응정보 저장해두기 위함. 활용 : COM 활용한 코드에서 COM 인스턴스 생성하기위하여 CoCreateInstacne 함수 호출시 인자로 CLSID전달하면 CLSID에 해당하는 COM 파일이 있는 경로 찾는 처리가 레지스트리 검색하여 처리됨.
COM 레지스트리 등록/제거.- 관리자 권한으로 커맨드 창 실행하여, COM 파일이 있는 경로에서 아래 구문 실행한다. 확장자 dll 인 COM인 경우. 레지스트리에 등록하는 구문. : regsvr32 mycom.dll, 레지스트리에 기등록된 dll 을 제거하는 구문 : regsvr32 /u mycom.dll 위 실행구문에 의하여 실제 COM 내부적으로 실행되는것 : dll 형식의 COM 의 필수멤버함수인 DLLRegisterServer , DLLUnregisterServer 함수호출됨. 확장자 exe인 COM 인 경우. 등록: mycom.exe -regserver, 제거: mycom.exe -UnregServer
| |
|
등록하지 않고 사용하는 COM | ||||||||||
보통 COM 은 상기 설명처럼 PC의 레지스트리에 등록하여 사용하나, 레지스트리에 등록하지 않고 대신 개발과정중 매니페스트 파일(xml 형식임 )에서 개체 활성화를 실행시키는 방식도 있다. MS제공 설명 등록이 필요 없는 COM interop는 Windows 레지스트리를 사용하여 어셈블리 정보를 저장하지 않고 구성 요소를 활성화합니다.Registration-free COM interop activates a component without using the Windows registry to store assembly information. 배포 중 컴퓨터에 구성 요소를 등록하는 대신 바인딩 및 활성화 정보를 포함하는 Win32 스타일의 매니페스트 파일을 디자인 타임에 만듭니다.Instead of registering a component on a computer during deployment, you create Win32-style manifest files at design time that contain information about binding and activation. 레지스트리 키 대신 이러한 매니페스트 파일에서 개체 활성화를 지시합니다.These manifest files, rather than registry keys, direct the activation of an object. 배포 중에 등록하는 대신 어셈블리에 대해 등록이 필요 없는 활성화를 사용하면 다음 두 가지 이점이 있습니다.Using registration-free activation for your assemblies instead of registering them during deployment offers two advantages:
이 섹션에서는 등록이 필요 없는 COM interop에 필요한 두 가지 매니페스트 유형인 응용 프로그램 및 구성 요소 매니페스트를 설명합니다.This section describes the two types of manifests needed for registration-free COM interop: application and component manifests. 이러한 매니페스트는 XML 파일입니다.These manifests are XML files. 응용 프로그램 개발자가 만드는 응용 프로그램 매니페스트에는 어셈블리와 어셈블리 종속성을 설명하는 메타데이터가 포함됩니다.An application manifest, which is created by an application developer, contains metadata that describes assemblies and assembly dependencies. 구성 요소 개발자가 만드는 구성 요소 매니페스트에는 그러지 않은 경우 Windows 레지스트리에 있는 정보가 포함됩니다.A component manifest, created by a component developer, contains information otherwise located in the Windows registry. 등록이 필요 없는 COM Interop에 대한 요구 사항
등록이 필요 없는 활성화를 위한 COM 구성 요소 구성
| ||||||||||
|
///856.
'VisualStudio.C++.C# > 코딩팁,함수활용,단편' 카테고리의 다른 글
C++ AMP. 예제 프로젝트들. (1) | 2016.09.14 |
---|---|
C++ AMP. Math Libraries for C++ AMP (0) | 2016.09.14 |
레지스트리(registry) 제어코드. (0) | 2016.06.10 |
MFC. Slider 컨트롤 사용법. (0) | 2016.05.22 |
MFC. Radio button control 사용법. (0) | 2016.05.17 |
댓글