Обмен сообщениями

Обмен сообщениями в информатике — один из подходов реализации взаимодействия компонентов и систем, используемый в параллельных вычислениях, объектно-ориентированном программировании, также — одна из форм межпроцессного взаимодействия в операционных системах, в микроядерных операционных системах подход используется для обмена информацией между одним из ядер и одним или более исполняющих блоков.

Распределённые системы доступа к объектам и удалённого вызова методов, вида ONC RPC, CORBA, RMI, DCOM, SOAP, .Net_Remoting, QNX Neutrino RTOS, OpenBinder, D-Bus и им подобные являются системами обмена сообщениями. Широкое применение подходов с обменом сообщениями также свойственно высокопроизводительным вычислениям, в частности, на нём основан интерфейс передачи сообщений MPI. В классе связующего программного обеспечения выделяется особая группа — промежуточное программное обеспечение, ориентированное на обработку сообщений, базирующееся на данном подходе.

ОбзорПравить

Системы обмена сообщениями являются закрытыми, так как их абстракция прячет все изменения состояний, которые могут быть использованы в реализации отсылки сообщений.

Языки программирования, базирующиеся на этой модели, обычно определяют передачу сообщения, как посылку (обычно асинхронную; являющуюся копией) элемента данных конечному получателю (актору, процессу, потоку, сокету и так далее). Концепция сообщения является высокоуровневой версией датаграмм, за исключением того, что сообщения могут быть больше по размерам, чем пакет, и могут быть сделаны надёжными, стойкими, безопасными и при необходимости могут быть охвачены механизмом транзакций.

Сообщения часто используются для межпроцессного взаимодействия; другой широкораспространённой областью применения являются потоки и конвейеры, в которых информация посылается как последовательность простейших элементов данных (высокоуровневая версия виртуального канала).

Влияние на другие модели программированияПравить

ООППравить

В терминах некоторых объектно-ориентированных языков программирования сообщение — это единственный путь передать управление объекту. Если объект должен «отвечать» на это сообщение, то у него должен быть метод, соответствующий данному сообщению.

В чистом объектно-ориентированном программировании обмен сообщениями реализуется только с помощью динамических вызовов.

Посылка одного и того же сообщения объекту дважды обычно вызывает и двойное применение объектом метода. Сообщения называются одинаковыми, если их имена и аргументы одинаковы.

Объекты могут посылать сообщения другим объектам, используя свои методы.

Обмен сообщениями приводит к чрезвычайно позднему связыванию (англ. extreme late binding).

Алан Кэй утверждает[1], что обмен сообщениями между объектами — это концепция более важная, чем сами объекты, хотя люди часто это не понимают и уделяют слишком много внимания самим объектам и недостаточно — сообщениям, которыми они обмениваются.

Другие моделиПравить

Некоторые языки поддерживают пересылку (делегирование) вызовов методов от одного объекта другому, если он не имеет метода для обработки сообщения, но «знает» другой объект, который имеет.

ПримечанияПравить

СсылкиПравить