Использование событий COM+ с компонентами в очереди COM+
Служба событий COM+ используется для управления доставкой событий от издателей подписчикам. Службу компонентов COM+ можно использовать для того, чтобы сделать издателя и подписчика время обработки независимой, задав сообщение издателя и последующее повторение его подписчику. Независимо от того, нужно ли использовать службу компонентов очереди, зависит от базовой бизнес-логики приложения. Если необходимо иметь события, независимые от времени, их можно создать с помощью службы событий COM+ с помощью службы компонентов COM+ в очереди.
Примечание.
Дополнительные сведения об использовании службы компонентов COM+ в очереди см. в разделе COM+ Queued Components.
Служба компонентов очереди поддерживает вызов порядку метода в одном сообщении. Средство записи пакетирует вызовы всех методов в сообщение, а затем проигрыватель вызывает эти методы, чтобы при обработке сообщения.
Записыватель компонентов очереди и проигрыватель можно разместить в любом из следующих двух мест:
- Между издателем и объектом события
- Между объектом события и подписчиком
Если вы позиционируете средство записи и проигрыватель между издателем и объектом события, вы делаете компонент класса событий в очереди. Компонент класса событий должен быть помечен для очереди и активироваться проигрывателем в процессе, отдельном от издателя.
Чтобы обеспечить асинхронную доставку событий, создайте запись и проигрыватель между объектом события и подписчиком и задайте атрибут Queued объекта подписки. Это задает подписчикаMoniker следующим образом: "queue:/new:/".{12345678-1234-1234-1234-123456789012}
Существует порядок доставки, который следует учитывать при использовании компонентов очереди в ситуации события. Так как записи службы очередных компонентов и воспроизводит все вызовы в течение всего времени существования одного объекта в одном сообщении, все вызовы повторяются в том порядке, в котором они были сделаны. Однако если существует несколько сеансов с несколькими объектами, порядок не может быть гарантирован. Если порядок важен, убедитесь, что вызовы, которые необходимо воспроизвести обратно, находятся в одном экземпляре объекта.
См. также