天天看點

.NET 架構中的 WMI 命名空間

.NET架構中與WMI規範有關的命名空間有兩個,分别是System.Management和System.Management.Instrumentation兩個命名空間。其中System.Managemen命名空間提供的類對象為通路各種管理對象提供了面向對象的程式設計接口,而System.Management.Instrumentation命名空間提供的類用來設定使用者自定義的應用程式,使得這些應用程式對象能夠符合WMI的規範,進而通過WMI向使用該應用程式的管理者公開其提供的管理資訊和事件,這些使用者有可能是Microsoft Application Center 或 Microsoft Operations Manager這樣的,也有可能是自定義編寫的高端管理應用程式(您可以通過System.Management命名空間提供的類對象來編寫自己的管理應用程式)。是以,如果您想使自己的産品的管理可以在這些管理工具,您就得使您自己的應用程式符合WMI的規範,而針對.NET平台上的應用程式WMI規範編寫來說,使用的是System.Management.Instrumentation命名空間提供的類。

System.Management 命名空間

System.Management 命名空間是 .NET Framework 中的 WMI 命名空間。此命名空間包括以下重要的類對象:

ManagementClass:管理類,它的構造函數輸入參數為WMI類名稱,辨別管理對象,例如:

diskman = new ManagementClass("Win32_LogicalDisk");

diskman為Win32平台下的整個邏輯磁盤的管理對象。

ManagementObjectCollection:ManagementObject管理對象的集合。

ManagementObject和:ManagementObject為具體的資料管理對象,對于上面的例子而言,可以對應邏輯磁盤的C分區管理對象。看下面的代碼:

*****************************************************

ManagementObjectCollection disks = diskman.GetInstances();

foreach (ManagementObject disk in disks)

         {

              Console.WriteLine("Disk = {0}" , disk["Name"].ToString());

              Console.WriteLine("Disk = {0}" , disk["FileSystem"].ToString());

              Console.WriteLine("Disk = {0}" , disk["Size"].ToString());

         }

disks為邏輯磁盤分區C,D,E…的集合,對于每一個邏輯分區,由一個disk對象管理其資料,并輸出名稱,檔案系統和磁盤空間大小。

ManagementQuery:用作所有查詢類的基礎。在前面說過,對于管理對象,可以像在關系資料庫裡面使用SQL查詢語句一樣進行您感興趣的資料過濾查詢,如:

SELECT * FROM Win32_ LogicalDisk

ManagementQuery作為查詢的抽象基類,您可以繼承以實作其方法,SelectQuery即是。

ManagementObjectSearcher:用于根據指定的查詢或枚舉檢索管理對象的集合。

SelectQuery selectQuery = new SelectQuery("win32_logicaldisk");

        ManagementObjectSearcher searcher =

            new ManagementObjectSearcher(selectQuery);

        foreach (ManagementObject disk in searcher.Get())

   {

            Console.WriteLine(disk.ToString());

        }

****************************************************

以上代碼指定searcher的查詢為selectQuery,即Win32邏輯磁盤的集合查詢,然後将這些邏輯磁盤分區輸出。當然您也可以直接使用SQL查詢語句來執行個體化ManagementObjectSearcher對象,代碼如下:

ManagementObjectSearcher search=new ManagementObjectSearcher(“SELECT * FROM Win32_ LogicalDisk

”);

ManagementEventWatcher:用于預定WMI事件通知,這個在後面的章節中将詳細講述。

對于這個命名空間其他的類将在後面的執行個體講解中再做叙述。

System.Management.Instrumentation命名空間

從前面講述的内容,您應該知道如果想使得您自己的應用程式或産品能夠使用諸如Microsoft Application Center 或 Microsoft Operations Manager這樣的管理工具,您就應該将您的應用程式對象向支援WMI的工具公開資訊。使用的将是System.Management.Instrumentation命名空間提供的類。

System.Management.Instrumentation命名空間可以使得您輕松的完成以下任務:

         規範化應用程式;

         将應用程式事件暴露為WMI事件;

         創作管理對象;

         定義和使用管理對象之間的關系。

規範應用程式的對象,使其符合WMI的規範,這樣的工作對于.NET程式員來說是直接簡單的。因為WMI的架構模式本來就是面向對象的,并且有很多的特性與.NET中繼資料是相通的。是以應用程式的對象可以直接映射為WMI對象,相同的,使應用程式代碼轉化為可管理的應用程式代碼将不會需要很大的代價。舉例來說您可以如此規範化.NET應用程式:

         應用程式的元件可以發生事件。

         提供可管理的對象使得應用程式可以配置。

         暴露運作時資料,如性能特性。

下圖更好的說明了.NET應用程式的WMI規範化,并且給出了在Windows和基于Web的程式中怎樣通路應用程式中的管理對象。

部落格園大道至簡

<a href="http://www.cnblogs.com/jams742003/" target="_blank">http://www.cnblogs.com/jams742003/</a>

轉載請注明:部落格園

繼續閱讀