一、基本概念
1、什么是CIM?
CIM (通用信息模型)是由DMTF制定的用于管理计算机系统和网络的工业规范,它提供了一个共同的概念框架,将所有系统进行分类,并确定了部分网络环境,而且描绘了这些部分的互动。由公共信息模型开发出的管理软件可以统一异构环境下的产品管理。
CIM由以下几部分组成:
CIM规范-定义了整合管理模型的语言和方法论。
CIM标准模型-定义了对计算机系统,应用程序,网络和设备描述信息模型。
CIM标准模型由以下及部分组成:
核心模型-提供了基本的受管对象的假设信息,内容包括一系列描述和分析受管系统的类和他们之间的关联信息。
公共模型-实现了管理领域的公共概念。这些概念独立于各个特殊的技术和实现。可以说这个模型提供了一个管理软件发展的基础。
拓展模型-他们是在公共基础上拓展一些与平台相关的模型,比如操作系统的模型等。
2、CIM可以做什么?
根据前面的介绍,CIM利用自己的语言(MOF)和语法对受管对象进行建模。使得信息管理者可以在网络中以一种通用的标准交互,从而可以实现跨系统、跨平台的系统管理。
3、WBEM (基于Web的企业管理)是一系列网络管理规范.它标准化了企业网络中受管资源的描述和使用。
4、CIM profile是DMTF组织或其它相关组织织定的,定义了在特定环境下的CIM模型的实现。它内容包括CIM类,关联信息,方法和属性。它为CIM模型在具体化条件下的应用提供了统一和便利。每一个profile都清晰的指出每一个类,属性,方法在具体条件的应用下都应该被实例化。
5、CIM Server是CIM技术中一个核心组件,用来管理和操作信息模型对象,现在已经有很多不同版本的CIM Server:
SMALL-FOOTPRINT CIM BROKER (SFCB) - SFCB是一个轻量级CIM后台程序(CIMOM)用来处理CIM客户端的请求,随后根据请求内容进行系统管理的操作。SFCB支持标准的http/https和CIM-XML http编码之上的操作。它实现高度模块化,可以很容易补充,删除或自定义不同的管理应用软件。SFCB由于它的轻量级大小,十分适用于嵌入式环境。
Open Pegasus – Pegas us是一个DMTF CIM和WBEM标准的开源项目。它由C++编写,所以可以很方便的将面向对象的CIM管理对象转变成程序模块。因此他被各个操作系统平台所支持,包括UNIX, Linux, OpenVMS, and Microsoft Windows。
OpenWBEM - OpenWBEM是一个企业级wbem实现的开源项目。它由C++编写,可用于任何商业和非商业的用途。它提供了一个基础管理的开发框架,克服跨平台的障碍,并赋予真正的互操作性。开发人员可以使用openwbem,以提供配置和变更管理,系统健康监测,和企业范围的管理功能。
WBEM Services - WBEM Services项目是用Java编写的,适用于任何商业和非商业用途的,基于wbem的实现。它的内容包括应用编程接口,服务器端和客户端的应用程序和工具。
二、CIM开发过程
CIM Profile里面定义了某一个特定领域对象的CIM模型,到目前为止,已经发布的CIM Profile基本上已经涵盖了在工业生产生活中所常见的对象模型。下面是一小部分已经发布的CIM Profile。
表1.已经发布的一些CIM Profile举例
编号 | 名称 | 介绍 |
DSP1027 | PowerStateManagement Profile | 计算机电源状态管理模型 |
DSP1028 | Alarm Device Profile | 警报设备模型 |
DSP1029 | OS Status Profile | 操作系统状态模型 |
DSP1030 | BatteryProfile | 电源模型 |
我们的CIM开发,就是要扩展这些标准的CIM Profile,创建符合CIM标准的具体模型,这样的好处有几点:
· 已经存在的CIM Profile已经为我们搭建起了一个标准的现实世界模型框架,我们可以通过类继承实现模型重用。
· 标准的CIM Profile具有通用性,接口标准和统一化,这样便于将来的跨系统跨平台操作。
对CIM模型的访问操作,是通过叫做"CIM Provider"的程序来实现的,我们要做的事情就是把对于特定类的操作,转化为具体的CIM Provider程序,这样,任何满足CIM规范的客户端程序,都可以通过标准CIM Client接口调用到我们的对象,并进行一些标准操作,比如访问特定对象,枚举所有该类对象等。CIM程序的整体框架如下图所示:
下图是CIM程序框架
图中,绿色的部分叫做CIM Provider,就是我们所要实现的程序,它的工作就是对具体的CIM模型对象提供访问调用功能,这些程序是以动态连接库的形式被CIM Server调用,并提供给远端的CIM client使用。
图中的黄色部分叫做CIM client,它是具有CIM交互能力的客户端程序,可以连接到CIM server,并通过CIM provider程序访问和操作CIM模型对象。
灰色部分是CIM server,这是CIM体系的核心,对上接口有WBEM标准,对下接口有CMPI,现在已经有很多的实现版本如:OpenPegasus, OpenWBEM, WBEM service和SFCB等。
CIM Provider开发现状及主要接口介绍
目前,主要的CIMOM实现主要有OpenPegasus,OpenWBEM,WMI以及WBEM Service等开源项目,不同的CIMOM都拥有自己的Provider接口标准,比如OpenPegasus的C++接口,或者WBEM Service的Java接口, 因此针对不同的CIMOM都有相对不同的Provider开发方法。一方面Provider内部繁琐的实现接口和逻辑过程,导致Provider的学习和开发过程漫长而艰难。另一方面采用这些相对独立的方式开发Provider必然会导致的问题是移植性和通用性的降低,如长期开发C++ Provider的工程师要把项目转移到Java中, 就不可避免的面对一段艰苦的过程。
针对以上问题,为了降低不同Provider开发接口的差异性,目前已经有一些统一的接口标准出台。使用C语言的CMPI接口和基于C++的CIMPLE接口就是其中主要的两项接口标准。
总结:
在具体开发阶段我们的有待完成的任务:
1、 对目标系统进行需求分析。
2、 对系统进行设计和建模。主要包括对资源、接口的进行抽象和封装。
3、 选择CIMOM和Provider开发接口。
4、 系统实现。用(MOF)对系统进行描述进而实现系统。