COM 46

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

COM 객체 생성과정 설명 및 도식화(깔끔한 설명)

COM객체, 그 탄생의 비밀 이재규 (영산정보통신) 대부분의 경우 프로그래머는 COM객체를 사용하는 클라이언트의 입장에서 코딩한다. COM객체를 사용하기 위해서는 먼저 COM객체를 생성해야 하는데, 이는 CoCreateInstance라는 함수를 이용해서 한줄로 끝낼 수 있다. 그러나 CoCreateInstance를 통해 COM객체가 생성되는 과정을 깊이 살펴본다면 그리 간단치만은 않다. 이 복잡한 과정들을 풀어헤쳐 보고자하는 것이 이글이 주제이다. COM객체 생성방법 COM객체는 COM규약을 준수하는 컴포넌트를 의미한다. COM은 많은 것을 규정하고 있지만, 그 중에서 중요한 것 중의 하나가 COM객체를 생성하는 메커니즘이다. 따라서 COM객체들은 그 객체가 단순하든, 복잡하든 동일한 방법으로 생성할 수..

COM, ATL 2008.07.27

CoInitialize 역할

HRESULT CoInitialize( LPVOID pvReserved ); [개요] COM이 초기 개발단계에서는 Single Thread Apartment(STA) 기반으로 설계가 되었다. 이런 이유로 인해서 CoInitialize 함수는 별도 쓰레드와 메모리 모델에 대한 옵션이 초기 단계에선 고려되지 않고, 다만 확장성을 위해서 LPVOID 부분을 남겨두었으나 이것 마저도 CoInitializeEx함수가 나오면서 필요가 없어졌다. 하는 역할은 COM 관련 DLL를 로딩해서 COM관련 명령어를 사용할수 있도록 해준다. 꼭 초기에 호출해주어야하는 함수다. [Return Values] -에러의 종류는 메모리 부분 에러(생성하는 과정),메모리 모델과 쓰레드 관련 에러,그외 기타 This function su..

COM, ATL 2008.07.27

Com, Atl 언어 독립성에 대한 소고

가끔 com에 대한 기본 개념 글들을 읽어보면 따라쟁이, 앵무새처럼 주절거리는 게 많다..... 위치독립성에 대해 적은 대다수 글들을 보면 "com은 바이너리형태로 이루어지면서 이를 통해 위치독립성을 가지게 된다..." 이글을 처음 보고 한참 혼란스러웠다... 당연히 그 글을 적은 사람도 더 이상의 설명은 없다. 기본원리, 개념에 대해 조금이라도 불만족스러우면 짜증나지 않는가? 나 역시 그런 사람이다. ㅡㅡ 컴파일 언어에서 모든 소스 파일은 컴파일 과정을 거치면 모두 바이너리로 변한다. 그런데 바이너리로 언어독립성을 가진다니....거 참 혼란스럽지 않을 수 없다. 한참을 생각한 결과 다음과 같은 결론을 내릴 수 있었다. 소스 제공의 측면에서 표현한 것이다. 컴포넌트에서는 로딩 모듈인 dll, exe, o..

COM, ATL 2008.07.26