1. DLL (Dynamic Linked Library)
- 정의:
DLL은 Dynamic Linked Library의 약자로, 동적 연결 라이브러리를 의미합니다.
여러 프로그램에서 공통적으로 사용할 수 있는 함수와 클래스를 모아 놓은 파일입니다. - 특징:
- 프로그램 크기 감소: 공통 코드를 DLL로 분리하여 프로그램 크기를 줄임.
- 재사용 가능: 여러 프로그램이 동일 DLL을 호출하여 코드 재사용.
- 시스템 기능 제공: C:\WINDOWS\system32 폴더에 포함된 다양한 시스템 DLL 파일은 윈도우 프로그램에 공통 기능 제공.
a. DLL의 예시
- 메모장, 그림판 등에서 파일 열기 기능은 윈도우 시스템 DLL을 호출하여 구현됩니다.
- 예: user32.dll, kernel32.dll 등.
b. DLL의 종류
- MFC (Microsoft Foundation Classes) 기반 DLL:
- 정적으로 MFC에 링크하는 기본 DLL: MFC 라이브러리를 정적으로 링크.
- 동적으로 MFC에 링크하는 기본 DLL: 실행 시 MFC 라이브러리를 동적으로 로드.
- MFC 확장 DLL: 항상 동적으로 MFC에 링크하며, 다른 MFC 프로그램에서 확장 가능.
c. DLL 로드 방법
- 동적 로드: LoadLibrary와 GetProcAddress를 사용.
- 정적 로드: .lib 파일을 사용하여 컴파일 시 DLL을 포함.
d. DLL의 장점
- 코드의 모듈화: 동일한 함수나 클래스를 여러 프로그램에서 사용할 수 있도록 분리.
- 유지보수 용이성: DLL 파일만 업데이트하여 여러 프로그램의 기능을 변경.
2. COM (Component Object Model)
- 정의:
COM은 마이크로소프트가 개발한 컴포넌트 모델로, 재사용 가능한 소프트웨어 객체를 작성하고 사용하기 위한 기술. - 특징:
- 윈도우 운영체제의 기본 모듈.
- OLE, ActiveX와 같은 기술의 기반.
- 언어 독립적: 여러 프로그래밍 언어에서 COM 객체를 호출 가능.
a. COM의 역할
- OLE (Object Linking and Embedding):
- COM을 기반으로 한 기술로, 문서 내에서 다른 유형의 데이터를 연결하거나 삽입할 수 있도록 지원.
- 예: 워드 문서에 엑셀 시트를 삽입.
- ActiveX:
- 인터넷 환경에서 OLE와 COM 기술을 확장한 기술.
- 웹 브라우저 내에서 동작하는 컨트롤과 플러그인.
b. COM의 장점
- 플랫폼 통합: 다양한 애플리케이션이 동일한 인터페이스로 작업 가능.
- UI 통합: 사용자가 쉽게 인터페이스와 상호작용 가능.
3. DLL과 COM의 관계
- DLL은 COM의 그릇 역할:
- COM 객체는 DLL에 포함되어 배포되는 경우가 많음.
- 프로그램은 DLL을 통해 COM 객체에 접근 가능.
4. DLL 로드 방법
- LoadLibrary와 GetProcAddress 사용:
- 런타임에 DLL을 로드하고 특정 함수에 접근.
- 정적 로드:
- .lib 파일을 사용해 DLL을 정적으로 링크.
5. DLL과 COM의 활용 사례
- 공통 기능 제공:
- 운영 체제의 핵심 기능은 DLL로 구현됨. (예: kernel32.dll).
- 플러그인 시스템:
- 소프트웨어 확장성을 위해 플러그인 DLL을 로드.
- COM을 통한 컴포넌트 사용:
- 웹 브라우저에서 ActiveX를 통한 미디어 재생.
정리
- DLL: 동적 연결 라이브러리로 코드 재사용성과 프로그램 크기 감소에 도움.
- COM: 재사용 가능한 컴포넌트를 작성 및 호출하기 위한 마이크로소프트의 기술.
- DLL은 COM을 담는 컨테이너 역할을 하며, 다양한 프로그래밍 환경에서 필수적인 역할을 수행.
'소프트웨어 개발 및 시스템 프로그래밍' 카테고리의 다른 글
소프트웨어 아키텍처란 (0) | 2024.12.14 |
---|---|
공유기, 허브, 라우터의 차이점 (0) | 2024.12.14 |
RS-232 시리얼 통신: 기본 원리와 C# 구현 가이드 (0) | 2024.12.13 |
랜 케이블(UTP, FTP, STP): 구조와 종류, 랜선 배열의 이해 (0) | 2024.12.13 |
스레드(Thread) vs 프로세스(Process) (0) | 2024.12.13 |