Проектирование разъема, реализующего очередь сообщений.
Разъем, реализующий очередь сообщений, используется для инкапсуляции механизма слабо связанного обмена сообщениями. Это монитор, инкапсулирующий очередь, которая обычно существует в виде связанного списка. Разъем предоставляет синхронизированные операции send для отправки сообщения (вызывается задачей-производителем) и receive для получения сообщения (вызывается задачей-получателем)
Производитель приостанавливается, если очередь заполнена (messageCount = maxCount) и возобновляет работу, когда освобождается место для размещения нового сообщения. Поместив сообщение в очередь, производитель продолжает работать и в состоянии посылать новые сообщения. Потребитель приостанавливается, когда очередь пуста (messageCount = 0) и активизируется, как только в очередь поступит сообщение. Потребитель не приостанавливается, если в очереди есть сообщения. Предполагается, что может быть несколько производителей и один потребитель.
Проектирование разъема, реализующего буфер сообщений
Разъем, реализующий буфер сообщений, используется для инкапсуляции механизма сильно связанного обмена сообщениями без ответа. Это монитор, инкапсулирующий буфер на одно сообщение. Разъем предоставляет синхронизированные операции для отправки и получения сообщений. Производитель вызывает операцию send, а потребитель – операцию receive. Производитель приостанавливается, если буфер заполнен. Поместив сообщение в буфер, производитель ждет, пока потребитель примет его. Потребитель приостанавливается, когда буфер пуст. Предполагается, что может быть несколько производителей и один потребитель.
|
|
Проектирование разъема, реализующего буфер сообщений с ответом
. Разъем, реализующий буфер сообщений с ответом, используется для инкапсуляции механизма сильно связанного обмена сообщениями с ответом. Это монитор, инкапсулирующий буфер на одно сообщение и буфер на один ответ. Разъем предоставляет синхронизированные операции для отправки и получения сообщений, а также для отправки ответа. Производитель вызывает операцию send для пересылки сообщения, а потребитель – операцию receive для приема сообщения и операцию reply для отправки ответа. Поместив сообщение в буфер, производитель ждет ответа от потребителя. Потребитель приостанавливается, когда буфер пуст. Предполагается, что может быть несколько производителей и один потребитель.
Проектирование кооперативных задач с использованием разъемов.
Теперь рассмотрим проектирование группы кооперативных задач, общающихся между собой с помощью объектов-разъемов. Для иллюстрации воспользуемся примером из подсистемы Банкомат. Есть два разъема – очереди сообщений и один разъем – буфер сообщений.
|
|
Объект Очередь Сообщений Управления Банкоматом инкапсулирует очередь входных сообщений задачи Контроллер Банкомата, для которой есть несколько производителей. Объект Очередь Сообщений Приглашений инкапсулирует очередь сообщений, посылаемых задачей Контроллер Банкомата задаче Интерфейс Клиента. И в том, и в другом случае производитель вызывает операцию send объекта-разъема, а потребитель – операцию receive того же объекта. Имеется также разъем буфер Сообщений Устройства Считывания, который инкапсулирует синхронный обмен без ответа между задачами Контроллер Банкомата и Интерфейс Устройства Считывания Карточек.
Наконец, есть объект заместитель Банковского Сервера. Он скрывает детали коммуникации с удаленным Банковским Сервером, применяя синхронный обмен сообщениями без ответа. Например, в языке Java этот заместитель воспользовался бы механизмом вызова удаленных методов (RMI), описанным ранее.
Логика упорядочения событий
На этапе детального проектирования ПО заполняется раздел «Логика упорядочения событий» в спецификации поведения задач. Логика упорядочения событий описывается неформально на псевдокоде или на естественном языке и иногда дополняется диаграммой. Например, для управляющей задачи может быть построена диаграмма перехода состояний.
В случае составной задачи с несколькими вложенными объектами входные сообщения принимает вложенный объект-координатор, который затем вызывает операции прочих объектов. Следовательно, он реализует логику упорядочения событий.
Дата добавления: 2018-08-06; просмотров: 216; Мы поможем в написании вашей работы! |
Мы поможем в написании ваших работ!