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
'객체지향언어 > MFC' 카테고리의 다른 글
콤보박스 초기화 부분에서 CString에 안먹는 바람에 애를 먹어서 (0) | 2009.09.28 |
---|---|
메모리에서 데이터 관리 (0) | 2009.08.23 |
윈도우 프로그래밍 작동원리 (0) | 2009.08.10 |
MFC 책 목록 (0) | 2009.08.05 |
Visual C++ 구성 (0) | 2009.07.29 |