Книга: C# для профессионалов. Том II
События
События
Одной из новых служб, которую предлагает COM+, является механизм событий, архитектура которого отличается от традиционного механизма использования точек соединения.
Эту новую службу событий часто называют "моделью издателя-подписчика". При таком подходе разрабатывается интерфейс события и затем он регистрируется в службах COM+. Затем регистрируются классы, которые хотят иметь возможность инициировать события, определенные в интерфейсе как издатели. После этого регистрируются классы, которые хотят иметь возможность обрабатывать события, определенные в интерфейсе события как подписчики. Когда объект издателя/сервера инициирует событие, службы COM+ отвечают за уведомление всех подписчиков. Так как классы-подписчики не соединены напрямую с классами-издателями, а вместо этого используют службы COM+ в качестве посредника, то архитектуру часто описывают как "слабосвязанные" события.
Чтобы реализовать эту схему, необходимо выполнить следующие шаги:
1. Создать DLL класса события, которая реализует интерфейс события.
2. Зарегистрировать DLL класса события в службах COM+.
3. Создать серверный компонент, который внутренне создает экземпляр класса события и вызывает методы на этом экземпляре, чтобы инициировать события.
4. Зарегистрировать серверный компонент как издателя в службах COM+.
5. Создать клиентские компоненты, которые реализуют интерфейс события, чтобы перехватывать события.
6. Зарегистрировать клиентские компоненты как подписчиков в службах COM+.
Когда эти шаги завершены, класс издателя может инициировать событие, просто создавая экземпляр класса события и вызывая один из его методов. Как отмечено выше, службы COM+ сообщат каждому классу-подписчику, что было инициировано событие. Однако, несмотря на надежность такого подхода, существует, по крайней мере, два недостатка в способе, которым службы COM+ реализуют эту модель событий.
? Первый: так как объекты подписчики уведомляются об инициированных событиях по одному за раз, объект каждого подписчика имеет потенциальную возможность ждать других, если его обработчик событий работает медленно.
? Второй: по крайней мере во время написания книги службы COM+ не имели возможности инициировать события от объектов-издателей для объектов-подписчиков на других машинах.
Повторим, что основное достоинство архитектуры событий типа издатель-подписчик состоит в том, что классы издателя и подписчика остаются слабосвязанными, способными общаться, не поддерживая прямых ссылок друг на друга.
- Простейшие события
- Создание рабочей области для собраний на основе календарного события
- Как работают сценарии. События
- 13.2.7. Ожидание события
- Генерирование события оплаты
- Когда не нужно создавать процедур обработки события Click
- 17.9. События клавиатуры
- Оценка вероятности события риска
- 4.2.1. Создание события
- 17.1.1.4. События клавиатуры
- Реакция на события
- Будьте внимательны, когда работаете с кодом, управляемым событиями