본문 바로가기

Programming/Tips(C++,C#)142

Chapter 03. COM 객체 구현 *이 포스팅은 개인 학습을 위해 내용을 정리한 것이 목적입니다. 크게 COM 컴포넌트의 구현은 다음의 4과정으로 구분할 수 있다. 1) COM인터페이스 정의 2) COM 객체클래스 구현 3) 클래스팩토리 클래스 구현 오른쪽 피호출자 cdecl 오른쪽->왼쪽 호출자 stdcall 오른쪽->왼쪽 피호출자 (참조 : http://blog.mosaicstory.net/m/post/93#) 3.2 COM객체클래스 구현 - COM객체가 인터페이스를 구현하는 방법 2가지 i) 인터페이스 구현 클래스를 포함하는 방식으로 구현 ii) COM객체가 인터페이스를 상속하는 방법으로 구현 3.2.1 인터페이스 포함 방법 - 구문은 다소 복잡하지만 디버깅이 쉽다. 3.2.2 인터페이스 상속 방법 - COM객체 클래스를 인터페이스.. 2014. 10. 29.
Chapter 02. COM 컴포넌트 사용 *이 내용은 개인 학습 내용을 정리하는 것이 목적입니다. 2.1 COM컴포넌트 등록 - 컴포넌트 사용을 위해서는 컴포넌트가 클라이언트가 실행되는 PC 레지스트리에 등록되어야 함 - regsvr32를 이용해서 등록하자 2.2 COM클라이언트 어플리케이션 생성과정 1) COM라이브러리 초기화 2) COM객체의 CLSID구하기 3) COM객체의 인스턴스 생성하기 4) COM객체가 지원하는 인터페이스 포인터를 구해, 해당 메소드를 호출하다, 5) COM객체의 사용이 모두 끝나면 COM라이브러리 초기화 해제 2.3 COM라이브러리 초기화 2.3.1 CoInitialize / CoInitializeEx 함수 - 클라이언트에서 COM사용을 위해 COM라이브러리를 초기화 해야 한다. 이 라이브러리는 ORB이며 컴 포넌.. 2014. 10. 29.
Chapter 01. 왜 COM인가? *이 내용은 개인 학습 내용을 정리하는 것이 목적입니다. 1.1 COM의 등장 1.1.1 메인프레임 시대 - 메인프레임에서 모든 작업을 처리. 프로그램의 크기가 커서 유지보수가 어려운 단점. 1.1.2 클라이언트 / 서버 시대 - 메인프레임 방식으로는 비싼 유지보수비용, 업무요구에 대한 신속한 대처등 문제가 있음. -> 업무를 작은규모의 서버들에게 분할하여 처리. 이 시기엔 데스크탑의 성능도 향상되어 클라이언트에 서 데이터를 적절히 가공하는 일도 하게 됨. 1.1.3 3계층 클라이언트 / 서버 시대 - 클라이언트-서버 관계를 클라이언트-별도어플리케이션서버-데이터베이스서버 3개로 분할. 1.1.4 컴포넌트기반 분산 객체 기술의 등장 - 분산 클라이언트/서버에서는 어플리케이션의 유기적인 통합과 커뮤니케이션이.. 2014. 10. 29.
Chapter 19. ATL 자동화 구현 1. 자동화 객체란? 1) 자동화의 장, 단점 - 스크립트 언어를 사용하는 클라이언트 어플리케이션에서 COM객체를 사용하려면 자동화가 지원되야함 - 아웃오브프로세스의 경우 COM객체는 마샬링을 수행하는 proxy/stub DLL이 필요하다. 자동화를 사용 하여 마샬링코드 작성과 proxy/stub DLL을 클라이언트에 분배할 필요가 없음. - 단점 : 실행속도가 느리다. 직접적인 COM인터페이스로의 접근이 아니라 Invoke()를 이용한 간접 접근 -> MS에서는 이중 인터페이스 지원을 권장. (직접호출 및 자동화 지원) 2) 자동화 구현을 위한 조건 - 자동화 구현을 위해 형식 라이브러리와 IDispatchImple에 인터페이스 관련 정보가 포함되어야 함 - ATL에서는 IDispatchImple에서 .. 2014. 10. 28.
Chapter 17. ATL COM기초 *이 내용은 개인 학습 내용을 정리한 것입니다. 1. 템플릿과 스마트 포인터 - 템플릿 : 여러 데이터 형에 대해 사용할 수 있는 하나의 함수 또는 클래스. 1) 함수 템플릿 - 실제 함수 생성이 아니라 함수를 정의하는 방법에 대해 기술. 실제로 해당 함수가 호출될 때, 함수가 포 함된다. 2) 클래스 템플릿 - 템플릿은 다양한 데이터 타입에 대해 동작하는 소스를 구현하는데 유용하다. 3) 스마트 포인터 예) class CStudy{ public: CStudy(char *szStudy){ strcpy(m_szStury, szStudy); } ~CStudy(){ } virtual void Subject(){ ... } char m_szStudy[256]; }; class CStudyPointer : pub.. 2014. 10. 28.
Chapter 8. 포함과 통합 *이 포스팅은 개인 학습을 위해 내용을 정리한 것이 목적입니다. 1. 포함의 원리 - 포함은 통합과 달리 외부 컴포넌트가 내부 컴포넌트를 생성부터 소멸까지 관리한다. 클라이언트에서는 외부 컴포넌트를 통해 내부 컴포넌트에 접근(내부로 직접 접근이 안됨) - 포함의 사용목적은 컴포넌트가 만들어진 경우 재활용을 통해 개발주기를 단축할 수 있어서임. 포함은 현 재 있는 컴포넌트를 한겹 감싸서 이용하고자 할 때 사용한다. - 포함과 통합의 선택 포함: 내부 컴포넌트의 기능의 강화 및 수정이 필요할 때 유리 통합: 내부 컴포넌트를 바로사용할 수 있을 때 유리 - 포함의 과정 1) 외부컴포넌트의 DllGetClassObject() 호출 - 외부 컴포넌트의 클래스팩토리 생성 2) 외부 컴포넌트의 클래스팩토리에서 파생 .. 2014. 10. 28.
728x90