Проектирование объектов-разъемов для лифта
Изображенные на рис.24 интерфейсы задач в распределенной Подсистеме Лифта имеют концептуальный характер: они показывают тип обмена сообщениями - слабо или сильно связанный. На этапе детального проектирования интерфейсы описываются более точно с помощью объектов-разъемов, как показано на рис.32. Так, объекту Контроллер Лифта поступают сильно связанные сообщения, не требующие ответа. Данный интерфейс отображается на объект-разъем буфер Сообщений Контроллера Лифта. Обычно такого рода разъем существует между одним производителем и одним потребителем, однако в нашем случае есть две задачи-производителя – Интерфейс Датчиков Прибытия и Диспетчер Лифта, которые отправляют сообщения Контроллеру Лифта (при этом последний находится в различных состояниях). Задача Интерфейс Датчиков Прибытия посылает сообщение приближается к Этажу, когда Контроллер Лифта находится в состоянии Лифт Едет, а задача Диспетчер Лифта передает сообщение следующее Направление, когда контроллер находится в состоянии Лифт Стоит. Сообщения Контроллеру Лифта никогда не перекрываются, так что можно использовать один буфер вместо двух. Контроллер Лифта является производителем в трех интерфейсах со слабо связанным обменом. Во всех трех случаях потребители находятся в других распределенных подсистемах. Следовательно, мы будем использовать три очереди-разъема (см. рис.32), которые скрывают детали асинхронного обмена сообщениями с потенциально удаленными задачами, очередь Сообщений Планировщика инкапсулирует детали обмена с Планировщиком, а очередь Сообщений Лампочки Направления и очередь Сообщений Лампочки Этажа – детали обмена с Подсистемой Этажа.
Рис.30. Классы интерфейса устройств
В распределенном приложении разъемы следует проектировать так, чтобы они могли во время выполнения определить, находится задача-получатель в том же или в удаленном узле. Отправители не должны знать о расположении получателей. Такая независимость от места позволит реализовать гибкую стратегию конфигурирования, при которой распределенные подсистемы проектируются в виде распределенных компонентов. Экземпляры таких компонентов отображаются на физические узлы на этапе конфигурирования.
Рис.32. Проектирование разъемов Контроллера Лифта
|