
550 Глава 9. Распределенные системы объектов
событий. Это также означает, что если потребитель соединится с каналом после
того,
как событие произошло, это событие будет потеряно. Другими словами,
служба сообщений С ORB А не обеспечивает сохранности событий.
Очень важно, что потребители не в состоянии предпринять каких-либо мер
для фильтрации событий. Любое событие, в принципе, пересылается всем потре-
бителям. Если необходимо выделять различные типы событий, нужно создавать
отдельные каналы событий для каждого из этих типов. Средства фильтрации
имеются в расширении
[325],
известном под названием службы уведомлений
{notification service). Помимо всего прочего эта служба содержит средства для
предотвращения распространения событий, в которых не заинтересован ни один
из потребителей.
И, наконец, распространение событий изначально ненадежно. Спецификация
CORBA указывает, что по вопросу доставки событий никаких гарантий не дает-
ся.
Как мы говорили в главе 2, существуют приложения, для которых надежная
доставка событий очень важна. Для таких приложений служба событий CORBA
не подходит и требуются другие способы взаимодействия.
Передача сообщений
Любое взаимодействие в CORBA, которое мы обсуждали до сих пор,
—
нере-
зидентное. Это означает, что сообщения сохраняются в базовых системах связи
лишь в процессе выполнения как отправителя, так и получателя. Как мы говори-
ли в главе 2, существует множество приложений, которые требуют сохранной
связи, то есть такой, при которой сообщение хранится в системе до тех пор, пока
не будет доставлено. При сохранной связи не имеет значения, выполняется или
нет после отправки сообщения отправитель или получатель, в любом случае со-
общение будет храниться столько, сколько необходимо.
Хорошо известна такая модель сохранной связи, как очереди сообщений.
CORBA поддерживает эту модель в виде дополнительной службы сообщений
(messaging
service).
Обмен сообщениями в CORBA отличается от других систем
объектным подходом к взаимодействию. В частности, проектировщики службы
сообщений вынуждены были соблюсти условие обязательности обращений к
объектам при любом взаимодействии. В случае обмена сообщениями эти ограни-
чения привели к появлению двух дополнительных видов асинхронного обраще-
ния к методам.
В модели
обратного
вызова
{callback
model) клиент представляет собой объ-
ект, реализующий интерфейс, в котором содержатся методы обратного вызова.
Базовая коммуникационная система может вызвать эти методы для передачи
результата асинхронного обращения. Важная особенность этой модели состоит
в том, что асинхронные обращения к методу не влияют на исходную реализацию
объекта. Другими словами, преобразовать исходное синхронное обращение в асин-
хронное
—
задача клиента; сервер делает обычный (синхронный) вызов.
Построение асинхронного обращения выполняется в два этапа. Сначала ис-
ходный интерфейс, реализуемый объектом, заменяется двумя другими, реализу-
емыми исключительно программным обеспечением клиента. Один из интерфей-
сов содержит спецификацию методов, которые может вызывать клиент. Ни один