Поделиться через


Навигация по иерархии коллекций COM+

Некоторые коллекции можно легко получить с помощью метода GetCollection в объекте COMAdminCatalog. Этот метод извлекает основную коллекцию; то есть коллекцию, например, Приложения, которая является самостоятельной, уникальной и не подчинена другой коллекции.

Однако многие коллекции логически подразделяются в другую коллекцию, так как они содержат элементы, которые являются частью какой-то более крупной структуры. Например, коллекция компонентов включается или связана с коллекцией приложений, потому что она содержит компоненты, установленные в конкретном COM+ приложении, которое само соответствует элементу в коллекции приложений. Связанные коллекции, такие как это, не являются уникальными; Для каждого отдельного приложения существует коллекция компонентов.

Поэтому коллекции упорядочивается в иерархической структуре, которая естественно соответствует логическим связям между элементами, которые они содержат. Схему иерархии коллекций можно найти в коллекциях администрирования COM+. Для многих элементов, которые требуется настроить с помощью объектов COMAdmin, необходимо перейти через определенную часть иерархии коллекции, чтобы получить соответствующий элемент.

На практике это означает, что если вы хотите получить элемент в связанной коллекции, сначала необходимо пройти через все необходимые более высокие уровни, включающие коллекции. Чтобы получить связанную коллекцию, необходимо получить определенный элемент в родительской коллекции, к которой связана дочерняя коллекция. Например, если вы хотите настроить элемент, соответствующий компоненту в определенном приложении COM+, необходимо выполнить следующие действия:

  1. Получите коллекцию приложений и заполните ее.
  2. Перебирайте содержимое коллекции приложений, пока не дойдете до элемента, соответствующего правильному приложению COM+.
  3. Получите и заполните коллекцию компонентов для конкретного приложения COM+.
  4. Перечисляйте содержимое коллекции компонентов , пока не получите элемент, соответствующий правильному компоненту.

В следующем примере 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 используются в предыдущем примере. Первый предоставляется COMAdminCatalog и используется для получения коллекции верхнего уровня в данном случае "Приложения". Второй раскрывается при помощи COMAdminCatalogCollection и используется для получения коллекции, связанной с текущей коллекцией; Вы точно указываете, какую коллекцию вы хотите получить, передав имя "Components" и значение свойства Key родительского объекта. Значение свойства Key часто является именем или идентификатором GUID, который уникально идентифицирует объект; это значение определяется в документации для каждой коллекции.

В большинстве случаев необходимо получить связанные коллекции итеративно вниз по иерархии коллекций, пока не получите нужную коллекцию. Этапы, которые вы будете предпринимать, следуют той же общей повторяющейся модели. Полный список коллекций см. в коллекциях администрирования COM+ .

В некоторых случаях вам может понадобиться использовать метод сокращенного пути, когда вы во второй раз следуете по иерархии коллекций. Этот метод можно использовать только после того, как вы уже кэшировали все промежуточные значения ключа. Дополнительные сведения см. в разделе ICOMAdminCatalog::GetCollectionByQuery.

Заполнение коллекций COM+

Запрос доступных связанных коллекций

Получение коллекций в каталоге COM+