Common Information Model
CIM(Common Information Model)은 엔터프라이즈의 다양한 부분에 대한 정보가 포함되어 있는 확장 가능한 개체 지향 데이터 모델입니다. CIM은 DMTF(Distributed Management Task Force)에서 유지 관리하는 플랫폼 간 표준입니다. WMI를 통해 개발자는 CIM을 사용하여 하드 디스크 드라이브, 애플리케이션, 네트워크 라우터 또는 사용자 정의 기술(예: 네트워크로 연결된 공조 장치)을 표현하는 클래스를 만들 수 있습니다. 관리자는 CIM 클래스를 보고 변경하여 엔터프라이즈의 다양한 요소를 제어할 수 있습니다. 예를 들어 관리자는 데스크톱 워크스테이션을 나타내는 CIM 클래스 인스턴스를 쿼리할 수 있습니다. 그런 다음 관리자는 스크립트를 실행하여 CIM 워크스테이션 인스턴스를 수정할 수 있습니다. WMI는 워크스테이션 CIM 클래스 인스턴스의 모든 변경 내용을 실제 워크스테이션의 변경 내용으로 변환합니다.
CIM은 개체 지향 기술을 사용하여 엔터프라이즈를 설명하는 언어 독립적 프로그래밍 모델입니다. CIM은 세 가지 수준의 부모/자식 상속을 사용하여 엔터프라이즈의 일반적인 측면과 구체적인 측면을 모두 설명할 수 있습니다. 또한 CIM은 "연결"이라는 기법을 사용하여 엔터프라이즈 모델의 여러 부분을 연결하고, 스키마를 사용하여 다양한 관리 환경을 구분합니다.
CIM은 관리 환경에서 논리적 개체와 물리적 개체를 일관적으로 확인할 수 있도록 설계되었습니다. CIM은 ‘클래스’라는 개체 지향 구문을 사용하여 관리형 개체를 나타냅니다. C++ 또는 COM 클래스처럼, CIM 클래스에는 동작을 설명하는 데이터 및 메서드를 설명하는 속성이 포함될 수 있습니다. COM 클래스 집합처럼 CIM도 플랫폼에 연결되지 않습니다. 그러나 WMI에는 Microsoft Windows 운영 체제 플랫폼을 설명하는 CIM에 대한 확장이 포함되어 있습니다.
CIM은 세 가지 수준의 클래스를 정의합니다.
핵심
핵심 클래스는 모든 관리 영역에 적용되는 관리형 개체를 나타냅니다. 이러한 클래스는 관리형 시스템을 분석하고 설명하기 위한 기본 용어를 제공합니다. 핵심 클래스의 대표적인 예는 __Parameters 및 __SystemSecurity 클래스입니다.
일반
일반 클래스는 특정 관리 영역에 적용되는 관리형 개체를 나타냅니다. 그러나 일반 클래스는 구체적인 구현 또는 기술과는 관계가 없습니다. 일반 클래스는 핵심 클래스의 확장입니다. 일반 클래스의 대표적인 예는 CIM_UnitaryComputerSystem 클래스입니다.
확장
확장 클래스는 일반 클래스에 대한 기술별 추가 항목인 관리형 개체를 나타냅니다. 확장 클래스는 일반적으로 UNIX나 Microsoft Win32 환경 같은 특정 플랫폼에 적용됩니다. 확장 클래스의 대표적인 예는 Win32_ComputerSystem 클래스입니다.
개발자는 다른 클래스에서 클래스를 파생시킬 수 있습니다. 파생 클래스는 부모 클래스의 특수한 경우를 나타내며, 부모의 모든 속성과 메서드를 상속합니다. 예를 들어 Win32_ComputerSystem는 CIM_UnitaryComputerSystem에서 상속합니다. 상속 관계는 시스템 속성인 __Derivation, __Dynasty 및 __SuperClass를 사용하여 확인할 수 있습니다. __Derivation 시스템 속성은 루트 클래스까지 포함하는 상속의 전체 체인을 나열하는 문자열 배열로, __Dynasty에도 포함되어 있습니다. __SuperClass 시스템 속성은 현재 클래스의 직계 부모를 표시합니다.
WMI도 연결을 지원합니다. 연결은 둘 이상의 다른 WMI 클래스 간의 관계입니다. 예를 들어 실행 중인 워크스테이션에는 대부분 프로세서가 있습니다. WMI 연결 클래스 Win32_ComputerSystemProcessor는 워크스테이션 클래스 Win32_ComputerSystem을 프로세서 클래스 Win32_Processor와 연결합니다. 그러나 연결 클래스는 두 종속 클래스를 반드시 연결하지는 않습니다. 사실 연결 클래스의 기본 목적은 반드시 서로 종속되지는 않는 클래스 간의 관계를 표시하는 것입니다. 자세한 내용은 연결 클래스 선언을 참조하세요.
마지막으로, WMI는 스키마 개념을 지원합니다. WMI의 맥락에서 스키마는 특정 관리 환경을 설명하는 클래스 그룹입니다. Microsoft Windows SDK(소프트웨어 개발 키트)는 CIM 스키마와 Win32 스키마라는 두 가지 스키마를 사용합니다. CIM 스키마 클래스 이름은 CIM_으로 시작하고, Win32 스키마 클래스 이름은 Win32_로 시작합니다. CIM 스키마에는 코어 및 일반 클래스에 대한 정의가 포함되고, Win32 스키마에는 Win32 환경에 일반적으로 적용되는 확장 클래스에 대한 정의가 포함됩니다. 그러나 타사 공급업체는 공급업체별 요구 사항을 설명하는 자체 스키마를 만들 수 있습니다. 스키마는 무한 확장 가능하도록 설계되므로, 개발자는 언제든 새 클래스를 추가하여 기존 환경에서 새로운 관리형 개체를 설명할 수 있습니다. 그러나 대부분의 공급업체는 복잡해지지 않도록 CIM 또는 Win32 스키마에서 속성을 상속하는 스키마를 만듭니다.