COM(Component Object Model)은 Visual C++를 비롯한 다양한 언어로 만들어서 배포할 수 있으며,

DLL이나 EXE 파일처럼 이진코드(binary)에서의 표준을 말한다. COM을 만드는 것은 어떤 언어든 관계가 없으며

단지 COM 표준을 잘 지켜서 만들면 된다. COM은 다음과 같이 발전해 왔다.

 

메인프레임 -> 클라이언트/서버 -> 3 tier 클라이언트/서버(분산 컴퓨팅 환경)

 

분산 컴퓨팅 환경에서 응용 프로그램을 어떻게 구성하고 묶어나가는가는 중요한 문제로 떠올랐으며,

이를 해결하기 위해 컴포넌트에 기반한 객체 기술이 생겨났다. 컴포넌트 기반 기술은 각 회사별로 다음과 같다.

 

윈도우:

마이크로소프트 - COM/DCOM, COM+

 

유닉스:

OMG(object management group) - CORBA

선마이크로시스템즈 - EJB(enterprise java beans)

 

다음은 COM의 발전사이다.

 

OLE(object linking and embedding) - 객체(엑셀,워드,비트맵)를 서로 연결하고 포함하는 기술로써

      DDE(dynamic data exchange)를 사용하여 구현.

 

OLE2 - DDE의 문제점을 개선. 이때부터 COM이라 부름.

 

-------------------------------*^^*-----------------------*^^*----------------------------

 

COM 용어

 

COM 인터페이스 - C++에서 볼 수 있는 가상 함수 테이블. 우리는 이 가상함수 테이블의 포인터를 얻는

                           것을 QueryInterface() 함수를 통해 구현할 수 있다.

메서드 - COM 인터페이스가 제공하는 함수를 메서드(method)라 부른다.

IUnknown 인터페이스 - 모든 COM 프로그램이 반드시 상속 받아야 하는 인터페이스로, QueryInterface(),

                                 AddRef(), Release() 메서드(함수)를 갖고 있다.

CoClass - 하나 이상의 인터페이스와 실제 구현 코드. CoClass는 하나 이상이 모여서 DLL 또는 EXE 파일로

               컴파일되어 저장된다.

COM 오브젝트 - CoClass가 메모리에 로드되어 객체화된 상태

COM 서버 - 기능을 제공하는 프로그램(DLL 또는 EXE)

COM 클라이언트 - DLL 또는 EXE를 사용하는 프로그램

GUID - Globally Unique IDentifier. 전세계적으로 유일한 값(ID)으로 16바이트(128bits)로 구성, GUID는

          네트워크 카드의 물리적인 주소(48비트), 1582년 이후의 10억분의 1초(60비트), 기타(20비트)로 구성.

CLSID - COM객체마다 유일한 GUID.

IID - CoClass의 인터페이스마다 유일한 GUID.

HRESULT - COM에서 사용되는 함수가 리턴하는 값. S_OK, E_NOTIMPL, E_NOINTERFACE 등.

COM 라이브러리 - COM을 지원하기 위한 운영체제의 함수들. 보통 CoXXX()처럼 호출됨.

ProgID - GUID를 대신해서 사용할 수 있는 문자열로 구성된 ID. (예-Excel.Application.12)

 

 

COM 응용 기술

 

자동화(Automation) - IDispatch 인터페이스를 통해 COM을 제어하는 기술.

OLE 문서 - IOleContainer, IOleObject 등의 인터페이스를 통해 서로 데이터를 공유하는 기술.

클립 보드 - IDataObject 인터페이스를 통해 데이터를 주고 받는 기술.

드래그 앤 드롭 - IDropTarget, IDropSource 등의 인터페이스를 사용하며, 마우스로 데이터를 끌어다

                       놓고 전송하는 기술.

ActiveX 컨트롤 - 일반적인 컨트롤처럼 사용될 수 있으며, 비주얼 베이직, 웹페이지에 삽입될 수 있음.

                        다른 말로 OLE 컨트롤이라고도 부름. 확장자가 OCX 임.

 

퍼온글 : http://cafe.naver.com/pplus.cafe?iframe_url=/ArticleRead.nhn%3Farticleid=140

신고