컴포넌트 38

COM 기본 개념 ~~ 정리해 보자

COM(Component Object Model) - 가상함수 테이블을 메모리게 구축하고 Virtual Table을 통해 함수를 호출하는 표준 정의 - 인터페이스(접근방법)와 구현(캡슐화)의 분리 - 모든 COM 인터페이스는 IUnknown의 AddRef(), Release(), QueryInterface() 함수로 시작 - 인터페이스 : 개체와 클라이언트간의 규약 - 사용자와 소프트웨어가 따로 사용하는 이름이 존재 - 일반적으로 인터페이스명은 I로 시작 - 모든 인터페이스는 GUID(Globally Unique Identification)를 가짐(=IID) - IID : 128 bit 구조체 형식, IP와 시간에 대한 알고리즘으로생성하므로 세계에서 유일한 ID - Implementation에서는 강제로..

COM, ATL 2008.08.08

Process/Thread/Apartment

윈도우는 멀티스레드 운영체제이다. 잘 짜여진 멀티스레드 프로그램은 기존의 프로그래밍 방법만으로는 쉽게 구현하기 힘든 편의성을 제공한다. 또한 여러 개의 프로세서를 사용한 멀티프로세스 시스템의 장점을 최대한 살릴려면 멀티스레드 프로그램을 이용해야만 하는 경우도 많다. 이러한 장점에 반해 멀티스레드 프로그램은 분명히 매우 복잡하다. 단순히 몇몇 API만으로 스레드를 생성하고 사용할 수 있지만 단순히 그래서는 멀티스레드 프로그램의 장점을 전혀 살릴 수 없다. 오히려 시스템 전체적인 성능을 낮추는 요인이 될 수 도 있다. 분명 이 글은 멀티스레딩에 관한 책은 아니지만 이러한 점에 대해 조금은 언급을 하도록 하자. 윈도우는 멀티스레드 운영체제이다. 하나의 스레드는 하나의 실행 단위이다. 하지만 멀티프로세스 시스템..

COM, ATL 2008.08.02

ClassObject(클래스 객체)란 무엇인가?

CoGetClassObject라는 함수는 클래스 팩토리 객체를 생성하고 그 인터페이스 포인터를 리턴해준다. 상기 함수는 컴포넌트 객체를 생성하는 게 아님을 주의한다. 무심히 저함수의 ClassObject이름을 보면 그냥 클래스의 객체로 생각하고 넘어간다. 그런데 객체면 객체지 왜 ClassObject라고 이름을 붙였겠는가? 정확한 의미는 클래스 역할을 하는 객체이다... 클래스 팩토리 객체는 컴포넌트 객체를 생성하므로 ...... 자주 사용하는 붕어빵틀-붕어빵 관계에서 처럼 컴포넌트 입장에서 보면 마치 자신을 생성하는 하나의 틀인 클래스로 생각되는 것이다.

COM, ATL 2008.07.27

분산 컴포넌트 생성 및 아파트먼트, 강력한 분산 객체 프로그래밍 모델 DCOM 개념 - 그림은 없음...ㅡㅡ;;;

강력한 분산 객체 프로그래밍 모델 DCOM(1) COM과 DCOM의 기본 개념 COM이나 DCOM이 프로그래밍에 직접적인 영향을 주는 것은 아니지만 DCOM을 이용하면 분산 객체의 강력한 기능을 다양하게 이용할 수 있다. 이번 연재를 통해 분산 객체 모델인 COM과 DCOM에서 사용되는 기본 이론에 대해 알아보고, 이러한 이론을 바탕으로 실제 구현을 살펴보도록 하겠다. 글 김성기 건국대학교 컴퓨터 공학과 IS 연구실 ditoman@chollian.net 2000/10 COM과 DCOM의 기본 개념 2000/11 DCOM을 사용한 채팅 2000/12 DCOM과 코바의 비교 사실 COM에 대해 정확하게 이해하지 않아도 프로그램 작성하는 데는 아무런 이상이 없다. 대표적으로 COM으로 구현된 DirectX 같..

COM, ATL 2008.07.27