共用方式為


CLI 和 WMI 的類別和對應

類別定義的概念是撰寫 Managed 程式碼的重心。WMI 同時是以相同的類別定義基本觀念作為基礎;但 WMI 擁有自己的類別說明文法 (MOF) 和利用程式定義類別的 API。

副稽核的基本目的是將資訊 (適用於嘗試管理應用程式的工具) 放在表層。其他副稽核技術 (例如追蹤或記錄檔) 會將應用程式限制為提供非結構化診斷資訊的未經處理區塊 (例如簡單字串)。WMI 的副稽核可將豐富且以結構描述為基礎的資訊放在表層。要達成這個目的,應用程式應定義 WMI 類別集來說明使用副稽核提供的資訊。這些類別定義將透過 WMI 發行,並可使用管理工具存取。安裝應用程式後便可隨時使用類別定義,而不只是在執行應用程式的時候才能使用。應用程式將在 Run Time 提供 WMI 類別所說明的實質資料。

在任何時候都可找到的類別定義 WMI 模型與 Managed 類別模型和中繼資料相似。System.Management.Instrumentation 命名空間運用 WMI 類別和 CLI 類別之間的相似處,讓開發人員能夠在 Managed 程式碼撰寫類別定義。這表示 Managed 程式碼開發人員不需學習新知便可定義 WMI 類別。

通常,Managed 程式碼類別可對應到 WMI 類別。有時候 Managed 類別無法說明 WMI 類別的某些特色。例如,WMI 基本型別可以是 Null,但通用型別系統 (Common Type System,CTS) 的數值型別 (Value Type) 不可以是 Null。System.Management.Instrumentation 命名空間不允許開發人員說明 WMI 類別來表示 CTS 中無法說明的項目。

下列清單說明一些基本方法,以便將 Managed 類別對應為 WMI 類別:

  • 只有公用 Managed 類別可對應到 WMI 類別,而且指有公用成員才能對應到 WMI 類別定義。

  • 基本數值型別可妥善對應到 WMI CIM 型別。

    此外,參考型別 String、DateTime 和 TimeSpan 對應到對等的 WMI CIM 型別。

  • Managed 程式碼陣列對應到 WMI 類別定義陣列。

  • CLI 可辨別數值型別和參考型別。

    WMI 則無法識別,這兩種型別都可對應到 WMI 類別定義。

  • WMI 支援內嵌物件和對其他物件的參考。

    在 System.Management.Instrumentation 的第一個版本中,它只支援內嵌物件。將含有數值型別成員的 Managed 類別對應到含有內嵌物件的 WMI 類別是符合邏輯的。含有參考型別成員的 Managed 類別也會對應到擁有內嵌物件的 WMI 類別,但將來的版本可能會允許開發人員指定由 WMI 參考來表示 Runtime 參考。

  • Managed 類別的繼承 (Inheritance) 階層架構是由 WMI 的繼承階層架構來表示。

  • 在 System.Management.Instrumentation 的第一個版本中,WMI 預設值無法使用 Managed 程式碼來表示。

    Managed 類別欄位的欄位初始設定式不會對應到 WMI 預設值。

  • WMI 不會識別欄位和屬性。

    在 Managed 類別定義中,欄位和屬性可定義到 WMI 屬性。

  • Managed 類別定義的命名空間和 WMI 類別定義命名空間沒有關聯。

    換句話說,Managed 類別可在 MyCompany.MyApplication 命名空間中定義,相關的 WMI 副稽核類別可定義為 WMI namespace root\MyCompany。

  • WMI 支援與屬性相似的概念,稱為限定詞 (Qualifier)。

    在 System.Management.Instrumentation 中,Managed 程式碼屬性和 WMI 限定詞之間沒有對應。System.Management.Instrumentation 命名空間中具有屬性,但它們不是由 WMI 類別定義的限定詞來表示。System.Management.Instrumentation 命名空間定義了數個屬性類別,可讓開發人員使用宣告語法來定義對應 (而不是使用新的 API),以避免產生兩者之間的對應。這樣一來 Managed 程式碼開發人員可再次使用原本便已熟悉的技術進行作業。如上述所提,副稽核主要包含兩個階段:設計階段的類別定義和 Runtime 的資料供應。在第一階段中,屬性的使用非常重要,它可使 Managed 類別中繼資料完整的說明副稽核結構描述。然後中繼資料便可用來建立管理工具可視的 WMI 結構描述。

請參閱

使用 System.Management 副稽核 .NET Framework 應用程式 | 公開管理事件 | 公開管理資料 | 繼承 | 註冊副稽核應用程式的結構描述