컴퓨터 공부/COM&ActiveX

[6월 8일 2교시] COM Component (60쪽에 C++ 클래스 추가할 것)

려리군 2009. 6. 8. 11:01

인터페이스 이론

전체 시스템에 영향을 주지 않고 바뀔 수 있다.

다형성 :  두 컴포넌트가 같은 인터페이스를 지원한다면 클라이언트는 똑같은 코드를 사용할 수 있다.


※ interface는 new할 수 없다.

※ 클라이언트가 함수를 사용하기 위해서는 가상함수 테이블 포인터를 통해서 함수를 사용한다.


Inprocess server : dll, ocx, 주소 공간이 같다.

Local server : 다른 프로세스에서 돌아간다. (proxy/stub구조를 사용)

Remote server : 네트워크 상 다른 컴퓨터에서 돌아간다.


Inprocess server 

 - 클라이언트와 서버가 동일한 프로세스와 주소 공간에 존재.

 - dll안에 컴포넌트 수는 제한이 없다.


out-of process server

local server : 클라이언트와 서버와 다른 프로세스와 주소 공간에 존재하는 구조

marshalling : proxy와 stub의 주소공간을 mapping해 주는 과정. (파라미터 전달시 변환이 필요하다.)

proxy : 서버의 대리인(surrogate)


remote server 

 - 다른 컴퓨터에 위치한 서버

 - dll, exe로 구성.


레지스트리

모든 COM 오브젝트의 클라이언트는 서버와 연결하기 위해 레지스트리에 등록되어야 한다.

regsvr32 "COM Object경로"

※ 경로를 바꾸면 다시 등록해 주어야 한다.

regsvr32 /u : 해제한다.


실행파일 : 제작자가 등록과 해제 과정을 만들어 주어야 한다.

옵션 : /register, /unregister