[This is preliminary documentation and subject to change.]
Web-Based Enterprise Management (WBEM) classes define the basic units of management. Each class is a template for a type of managed object; all instances of the type use the template. For example, the __Win32LogicalDisk class is a model for all disks that can exist on a Windows machine. For each physical disk that exists, there is an instance of the __Win32LogicalDisk class. Classes can contain properties, which describe the data of the class, and methods, which describe the behavior of the class.
The WBEM technology incorporates classes defined by the Common Information Model (CIM), classes defined by the CIM Object Manager (CIMOM), and classes defined by third-party developers.
The CIM classes describe objects that exist in:
CIM classes describe components that are independent of a particular implementation or technology.
The classes defined by CIMOM are called system classes and are not part of the CIM. System classes are specific to Microsoft's WBEM technology, its implementation for Windows platforms. System classes support CIMOM's core features, such as event notification, security, and localization. For a complete description of the system classes, see the System Class Reference.
Third-party developers can define custom classes to support managed objects that are specific to their managed environment. For example, a custom class can be defined to represent a specific database or type of tape drive. Developers can use the CIMOM API to define new classes or the Managed Object Format (MOF) language.
The system classes all begin with a double-leading underscore. Custom classes must be named according to the following convention:
SchemaName_ClassName
The SchemaName portion specifies the name of the schema to which the class belongs. Schema names cannot contain underscore characters and must be unique. Including the schema name as a prefix to the class name allows users of the class to strip off the schema name when it is implied by the context.
The ClassName portion specifies the name of the class. Class names should be descriptive and can include underscore characters to delimit parts of a compound name. For example, Logical_Disk is a valid WBEM class name. Class names must be unique; they cannot conflict with another class in the system.
WBEM classes support inheritance, the technique of classification that enables a child class to implicitly inherit, or contain, all of the properties and methods of a parent class. A child class can either accept the parent's property values and method implementations or override them by assigning new values and creating new implementations, depending on the rules established by the parent.
The term base class refers to the class at the root of a class hierarchy. The term superclass indicates a parent class; the terms can be used interchangeably. The terms derived class or subclass can be used to indicate a child class. Each parent class can have multiple child classes. However, each child class can only have one parent. Superclasses must already exist before new classes that derive from them can be created.
WBEM classes can participate in a relationship known as an association. An association relates two classes or instances of classes by referring to them in the properties of another class, a special association class.
WBEM classes can be static or dynamic. A static class has a definition that is persistent; the definition is stored in the CIMOM repository until it is explicitly deleted. CIMOM can provide definitions of static classes without the help of a provider.
A dynamic class has its definition supplied by a provider at runtime as needed. Dynamic classes are not stored permanently. Whenever a dynamic class is requested, CIMOM makes a call to the appropriate provider to request it.
Because of the shared and distributed nature of classes within WBEM, changing a class definition has the potential to impact any WBEM managed entities that are currently deployed. Classes should be carefully designed to not require modification. However, if modifications must be made, it is recommended that the class be removed and then recreated. Adding qualifiers is the only way that changes should be made to an existing class.
WBEM uses the concept of a namespace to logically differentiate between managed environments. Every managed environment is represented by a schema which contains the class definitions for the managed objects in the environment. Every schema exists within a different namespace.
Class definitions need to be unique and consistent across all namespaces; it is recommended that a given class name and its methods and properties not conflict with a class of the same name in another namespace. In this way, client software expecting to deal with a particular class in a particular way will always succeed, regardless of the namespace.