巡覽 COM+ 集合階層
您可以在 COM 管理員 Catalog 物件上使用 GetCollection 方法,輕鬆地擷取某些集合。 這個方法會擷取「最上層」集合;也就是說,應用程式之類的集合,其本身是唯一的,而不是以邏輯方式細分在另一個集合之下。
不過,許多集合會以邏輯方式細分在另一個集合下,因為它們包含屬於某些較大結構一部分的元素。 例如,Components 集合是子系或與 Applications 集合相關的,因為它包含安裝在特定 COM+ 應用程式中的元件,而該元件本身會對應到 Applications 集合中的專案。 這類相關集合不是唯一的;每個相異應用程式都有 Components 集合。
因此,集合會以階層式結構排列,其自然會對應至它們所包含的專案之間的邏輯關聯性。 您可以在 COM+ 管理員 istration Collections 找到集合階層的圖表。 對於您想要使用 COM 設定的許多專案 管理員 物件,您需要流覽集合階層的某些部分,以擷取適當的專案。
實際上,這表示如果您想要取得相關集合中的專案,您必須先完成所有必要的較高層級、子集合。 若要擷取相關的集合,您必須擷取子集合相關之父集合中的特定專案。 例如,如果您想要設定對應至特定 COM+ 應用程式中元件的專案,您必須執行下列步驟:
- 取得 Applications 集合並填入它。
- 列舉 Applications 集合的內容,直到您到達對應至正確 COM+ 應用程式的項目為止。
- 取得並填入 該特定 COM+ 應用程式的 Components 集合。
- 列舉 Components 集合的內容,直到您到達對應至正確元件的項目為止。
下列 Microsoft Visual Basic 範例示範如何執行上述步驟:
On Error GoTo My_Error_Handler
Dim Catalog As COMAdminCatalog
Set Catalog = CreateObject("COMAdmin.COMAdminCatalog")
' Get the Applications collection and populate it.
Dim Applications As COMAdminCatalogCollection
Set Applications = Catalog.GetCollection("Applications")
Applications.Populate
' Get the correct application, "My Application".
Dim AppObject As COMAdminCatalogObject
For Each AppObject in Applications
If AppObject.Name = "My Application" Then
Exit For
End If
Next
' Get and populate the Components collection for "My Application".
Dim Components As COMAdminCatalogCollection
Set Components = Applications.GetCollection("Components", AppObject.Key)
Components.Populate
' Get the correct component, "My Component".
Dim CompObject As COMAdminCatalogObject
For Each CompObject in Components
If CompObject.Name = "My Component" Then
Exit For
End If
Next
上述範例會使用兩個不同的 GetCollection 方法。 第一個是由 COM 管理員 Catalog 公開,用來取得最上層集合,在此案例中為「應用程式」。 第二個物件是由 COM 管理員 CatalogCollection 公開,並用來取得與目前集合相關的集合;您可以藉由傳入名稱 「Components」 和父物件的 Key 屬性值來指出您想要的集合。 Key 屬性值通常是可唯一識別對象的名稱或 GUID;此值會在每個集合的檔案中找到。
在最一般情況下,您必須反覆取得相關集合階層,直到您擷取所需的集合為止。 您將採取的步驟會重複遵循相同的一般模型。 如需集合的完整清單,請參閱 COM+ 管理員 istration Collections。
在某些情況下,您可能會想要在第二次遵循集合階層的路徑時使用快捷方式方法。 只有在您已經快取所有交錯的索引鍵值之後,才可以使用這個方法。 如需詳細資訊,請參閱ICOM管理員 Catalog::GetCollectionByQuery。
相關主題