2018년 1월 13일 토요일

COM 의 이해

COM 의 이해


COM (Component Object Model)의 뜻에서도 알 수 있듯이 Component 규약을 따르는 Microsoft 사가 주체가 되어 만든 표준 모델이다.


Component 규약이란 컴파일러의 종류와 관계 없이 Component 규약에 따라 제작된 Component들은 어떤 컴파일러에서도 그 파일을 사용할 수 있도록 하는 규약이다.


이러한 Component 규약을 따르는 표준들에는 COM, CORBA, EJP, .NET 등이 있다.


이들중 COM 이 가장 많이 사용되고 있고, 닷넷은 Microsoft 사가 개발한 차세대 Component 기술이다.


COM은 Component규약을 지원하며 추가로 네트워크 통신을 지원하여 만든 표준이라고 보면 된다.


COM의 특징은 다음과 같다.


  1. 언어의 독립성
  2. 위치의 투명성
  3. 벤더 독립성
  4. 버전 문제 최소화


여기서 가장 중요한 것은 언어의 독립성과 위치의 투명성이다. 나머지 분야는 크게 신경쓰지 않아도 되는 내용이다.


Component 규약은 언어의 독립성을 위하여 Interface라는 기법을 정의해 준다.
이는 서버 프로그램 작성시 내부 구조와는 상관이 없고 Interface라는 방식으로 클라이언트가 접근하도록 하는 구성이다.
이러한 이유에 근거하여 COM을 지원하는 어떠한 언어로도 접근이 가능하도록 하는 것이다.


COM Server 프로그램을 제작하는 방식에는 DLL과 EXE가 있다.

DLL 형태로 제작하면 In-Process Server가 되고, EXE 형태로 제작하면 Out-Process Server가 된다.

대부분 In-Process Server 방식을 사용하나 Out-Process Server로 만드는 경우도 있다.

Client 프로그램의 위치와 상관 있는 것이 아니라 같은 PC에서 Server와 Client를 제작할 경우 In-Process Server의 경우 Client의 문제에 의해 Server에도 그 문제가 파급될 수가 있고
Out-Process Server의 경우 Client의 문제가 Server로 파급되지 않는다는 차이점만 있다.

만약 Client 프로그램이 다른 PC에 위치할 때 In-Process Server의 경우 dllhost.exe라는 대리 프로세스에 의해 지원이 되고, 이 경우 Client의 문제가 Server로 파급되지 않는다

ATL(Active Template Library)은 COM 프로그래밍을 쉽게 하기 위해 Visual C++에서 제공하는 라이브러리이다.

COM이 지원하는 Interface에는 Custom Interface와 Automation Interface가 있다.

일반적으로 지원하는 Custom Interface는 Visual Basic Script등 Script언어에서 지원이 불가능하고 컴파일 언어에서만 지원이 가능하다.

따라서 Script 언어에서 지원이 가능하도록 하는 Interface가 Automation Interface인데 대부분 이 두가지를 모두 지원하는 Dual Interface로 프로그램을 제작한다.


COM 기술에 Automation을 지원하고 GUI(Graphic User Interface)를 추가로 지원한 것이 ActiveX이다.

ActiveX를 작성하는 방식에는 MFC를 이용하는 방식과 ATL을 이용한 방식이 있다.
ATL을 이용하여 ActiveX Control을 제작하면 MFC를 이용하는 방식보다 다소 어렵기는 하나 작고 빠른 코드를 생산할 수 있는 장점이 있어 더 많이 사용되고 있다.

개인적 견해로는 컴퓨터와 네트워크의 발전으로 작고 빠른 코드를 생산할 수 있다는 장점은 크게 중요하다고 생각하지 않고, 그보다는 많은 사람들이 사용하는 방식이라는 점(소스 및 자료를 더 쉽게 구할 수 있다)이 더 큰 장점이라고 생각된다.

다음은 위키에서 말하는 COM 설명이다.

컴포넌트 오브젝트 모델(Component Object Model, COM)은 마이크로소프트가 개발한 소프트웨어 구성 요소들의 응용 프로그램 이진 인터페이스이다. 마이크로소프트가 1993년에 소개하였다. COM을 이용해 개발된 프로그램들은 프로세스간 통신과 동적 오브젝트 생성이 가능하다. 소프트웨어 개발에서는 COM이라는 용어를 종종 OLE, OLE 자동화, ActiveX, COM+, DCOM 기술을 포함하는 포괄적 개념으로 사용한다. COM이 소개된 건 1993년이지만, 마이크로소프트는 1997년이 되어서야 COM이라는 이름을 강조하기 시작했다.
다양한 플랫폼에서 COM이 구현되었지만, 주로 마이크로소프트 윈도에서 사용된다. COM은 닷넷 프레임워크와 같은 다른 기술로 대체되리라 전망된다.


댓글 없음:

댓글 쓰기

Vertex , 정점 정보의 확장

Vertex , 정점 정보의 확장 그동안의 설명에 있어서 우리는 VERTEX 정보에 대하여 3 차원의 위치 정보만 사용하였다. struct VERTEX {float x,y,z;}; 이제 이를 확장하여 색상을...