반응형

COM의 장점

 이미 COM의 장점에 대해서는 설명을 했지만, 아주 간략하게 적고 넘어가도록 하지요. 장점이 없다면, COM을 선택할리 없으며, 장점을 알아야 해당 부분에 COM을 사용할 수 있기 때문입니다.

 - 위치 투명성

  COM은 위치 투명성을 가지고 있어 컴퓨터의 어느 공간에 위치하여도 이를 사용할 수 있습니다.

 - 언어 독립성

  COM은 언어 독립성을 가지고 있어 여러 언어로 작성될 수 있으며, 여러 언어에서 사용될수 있습니다.

 - 강한 객체 지향적 성격

  COM은 인터페이스 기반의 접근을 제공하기때문에 보다 강한 Encapsulation을 제공하며, 가상함수로 인한 virtual pointer기반이기에 동적으로 맵핑이 되어 보다 강한 Polymorphism성격을 가진다.

 - 높은 재사용성

  COM은 위해 Containment와 aggregation이라는 두가지 개념의 재사용을 위한 방법을 제공하며, 사용자는 바이너리 레벨로 존재하는 COM을 재사용할 수 있다.

 - COM의 버전 보장

  COM은 원칙적으로 버전을 제공하여 그 버전에 따른 객체 사용을 결정한다. 예를 들어 VC++6.0->7.0을 사용할때 관련 DLL로 MFC42.dll - > mfc70.DLL로 변환되어 두가지 DLL이 모두 존재해야 하지만, COM기반의 DirectX의 경우 DirectX 8.0을 설치하면 이하 버전에서 만들어진 소프트웨어는 모두 사용가능하다.

 

Interface Identifiers(IIDs)의 이해

 이미 이 글을 읽는 사람은 Interface 기반의 프로그래밍 개념을 이해하고 있다고 가정한다.(이 부분에 대해서는 다른 서적을 참고하면 된다. 특히, JAVA프로그래밍에는 이 개념에 많이 녹아들어가 있기때문에 관련부분을 참조하면 쉽다. 내 기억에는 JAVA와 C++의 차이중 하나인 다중상속에 대한 해결부분에서 이 부분을 이해해야만 했다.)

 IID는 GUID(Global Unique Identifier)라는 128-bit의 구조체 형식으로 되어있다. 말 그대루 세계적으로 하나밖에 없는 ID라는 것이다. 한 인터페이스가 하나의 GUID를 가짐으로써 그 인터페이스는 유일한 IID가 된다. GUID의 생성은 아이피와 시간에 대한 알고리즘으로부터 생성되기 떄문에 세계에서 유일하게 된다. 당신이 만든 COM객체는 여러개의 Interface을 가지게 되며 그 각각은 고유한 ID를 부여받음으로써 다른 COM객체의 인터페이스와 구별될 수 있다. VC++에는 이를 생성하기 위한 유틸리티 guidgen.exe를 제공하고 있다. 결국 COM을 이용하는 이용자는 이 IID를 통해 서비스를 사용할 수 있게 되며, 이를 위해 COM의 규약에는 반드시 COM이 IID를 가지도록 명시하고 있으며, 이를 통해 COM은 name중복으로 인한 피해를 예방할 수 있다. 

반응형

+ Recent posts