Обмен сообщениями: различия между версиями

Материал из Википедии — свободной энциклопедии
Перейти к навигации Перейти к поиску
[непроверенная версия][отпатрулированная версия]
Содержимое удалено Содержимое добавлено
м Преамбула: Исправлена ссылка на QNX
статья должна начинаться с определения, -совсем невнятное
Строка 1: Строка 1:
В [[информатика|информатике]] '''обмен сообщениями''' является формой связи, используемой в [[Параллельные_вычислительные_системы|параллельных вычислениях]], [[Объектно-ориентированное программирование|объектно-ориентированном программировании]] и взаимодействии процессов. Сообщение реализуется путём посылки пакетов информации получателям, которые могут означать множество вещей: вызов функций, сигналы, данные. Данный метод широко используется во всевозможных системах [[параллелизм (информатика)|с параллелизмом]] для координации действий.
'''Обмен сообщениями''' в информатике — один из подходов реализации взаимодействия компонентов и систем, используемый в [[Параллельные вычислительные системы|параллельных вычислениях]], [[Объектно-ориентированное программирование|объектно-ориентированном программировании]], также — одна из форм [[Межпроцессное взаимодействие|межпроцессного взаимодействия]] в [[Операционная система|операционных системах]], в [[Микроядро|микроядерных]] операционных системах подход используется для обмена информацией между одним из ядер и одним или более исполняющих блоков.


Распределённые системы доступа к объектам и удалённого вызова методов, вида [[ONC RPC]], [[CORBA]], [[RMI]], [[DCOM]], [[SOAP]], [[.Net_Remoting]], [[QNX|QNX Neutrino RTOS]], [[OpenBinder]], [[D-Bus]] и им подобные являются системами обмена сообщениями. Широкое применение подходов с обменом сообщениями также свойственно [[Суперкомпьютер|высокопроизводительным вычислениям]]<!--Как только появится статья на эту тему, исправить надо.-->, в частности, на нём основан [[Message Passing Interface|интерфейс передачи сообщений MPI]]. В классе [[Связующее программное обеспечение|связующего программного обеспечения]] выделяется особая группа — [[промежуточное программное обеспечение, ориентированное на обработку сообщений]], базирующееся на данном подходе.
В [[Микроядро|микроядерных]] [[Операционная система|операционных системах]] он используется для обмена информацией между одним из ядер и одним или более ''исполняющих блоков''.

Распределённые системы доступа к объектам и удалённого вызова методов, вида [[ONC RPC]], [[CORBA]], [[RMI]], [[DCOM]], [[SOAP]], [[.Net_Remoting]], [[QNX|QNX Neutrino RTOS]], [[OpenBinder]], [[D-Bus]] и им подобные являются системами обмена сообщениями. Этот термин также используется в [[Суперкомпьютер|высокомощных вычислениях]]<!--Как только появится статья на эту тему, исправить надо.--> и [[Message Passing Interface|интерфейсе передачи сообщений MPI]].

Концепция обмена сообщениями также используется в [[Байесовская_сеть_доверия|Байесовской сети доверия]]. <!-- Не уверен, что это именно она, а проверить пока лень: (-->


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


Языки программирования, базирующиеся на этой модели, обычно определяют передачу сообщения, как посылку (обычно асинхронную; являющуюся копией) элемента данных конечному получателю (актору, процессу, потоку, сокету и т. д.). Такой обмен используется [[SOAP]] в [[веб-сервис]]ах. Эта концепция является высокоуровневой версией [[Дейтаграмма|датаграмм]], за исключением того, что сообщения могут быть больше по размерам, чем пакет, и могут быть сделаны надёжными, стойкими, безопасными и при желании могут быть охвачены механизмом [[транзакция (информатика)|транзакций]].
Языки программирования, базирующиеся на этой модели, обычно определяют передачу сообщения, как посылку (обычно асинхронную; являющуюся копией) элемента данных конечному получателю ([[актор (программирование)|актору]], [[Процесс (информатика)|процессу]], [[Поток (информатика)|потоку]], [[Сокет (программный интерфейс)|сокету]] и так далее). Концепция сообщения является высокоуровневой версией [[Дейтаграмма|датаграмм]], за исключением того, что сообщения могут быть больше по размерам, чем пакет, и могут быть сделаны надёжными, стойкими, безопасными и при необходимости могут быть охвачены механизмом [[транзакция (информатика)|транзакций]].


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


== Влияние на другие модели программирования ==
== Влияние на другие модели программирования ==
Строка 27: Строка 23:
Обмен сообщениями приводит к чрезвычайно позднему связыванию ({{lang-en|extreme late binding}}).
Обмен сообщениями приводит к чрезвычайно позднему связыванию ({{lang-en|extreme late binding}}).


[[Кэй,_Алан_Куртис|Алан Кэй]] утверждает<ref>[http://lists.squeakfoundation.org/pipermail/squeak-dev/1998-October/017019.html Alan Kay, prototypes vs classes was: Re: Sun’s HotSpot, Oct 10, 1998]</ref>, что обмен сообщениями между объектами — это концепция более важная, чем сами объекты, хотя люди часто это не понимают и уделяют слишком много внимания самим объектам и недостаточно — сообщениям, которыми они обмениваются.
[[Кэй, Алан Куртис|Алан Кэй]] утверждает<ref>[http://lists.squeakfoundation.org/pipermail/squeak-dev/1998-October/017019.html Alan Kay, prototypes vs classes was: Re: Sun’s HotSpot, Oct 10, 1998]</ref>, что обмен сообщениями между объектами — это концепция более важная, чем сами объекты, хотя люди часто это не понимают и уделяют слишком много внимания самим объектам и недостаточно — сообщениям, которыми они обмениваются.


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


== См. также ==
== Примечания ==
{{примечания}}
* [[Message Oriented Middleware|MOM]]
* [[Параллельные вычисления]]


== Ссылки ==
== Ссылки ==
{{примечания}}
* {{cite conference|first=U.|last=Ramachandran|coauthors=M. Solomon, M. Vernon|url=http://portal.acm.org/citation.cfm?id=30371&coll=&dl=ACM&CFID=15151515&CFTOKEN=6184618|title=Hardware support for interprocess communication|booktitle=Proceedings of the 14th annual international symposium on Computer architecture|publisher=ACM Press|year=1987}}
* {{cite conference|first=U.|last=Ramachandran|coauthors=M. Solomon, M. Vernon|url=http://portal.acm.org/citation.cfm?id=30371&coll=&dl=ACM&CFID=15151515&CFTOKEN=6184618|title=Hardware support for interprocess communication|booktitle=Proceedings of the 14th annual international symposium on Computer architecture|publisher=ACM Press|year=1987}}
* {{cite conference|first=John M.|last=McQuillan|coauthors=David C. Walden|url=http://portal.acm.org/citation.cfm?id=810905&coll=&dl=ACM&CFID=15151515&CFTOKEN=6184618|title=Some considerations for a high performance message-based interprocess communication system|booktitle=Proceedings of the 1975 ACM SIGCOMM/SIGOPS workshop on Interprocess communications|publisher=ACM Press|year=1975}}
* {{cite conference|first=John M.|last=McQuillan|coauthors=David C. Walden|url=http://portal.acm.org/citation.cfm?id=810905&coll=&dl=ACM&CFID=15151515&CFTOKEN=6184618|title=Some considerations for a high performance message-based interprocess communication system|booktitle=Proceedings of the 1975 ACM SIGCOMM/SIGOPS workshop on Interprocess communications|publisher=ACM Press|year=1975}}

Версия от 21:51, 4 декабря 2016

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

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

Обзор

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

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

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

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

ООП

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

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

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

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

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

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

Другие модели

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

Примечания

Ссылки

  • Ramachandran, U. (1987). "Hardware support for interprocess communication". Proceedings of the 14th annual international symposium on Computer architecture. ACM Press. {{cite conference}}: Неизвестный параметр |booktitle= игнорируется (|book-title= предлагается) (справка); Неизвестный параметр |coauthors= игнорируется (|author= предлагается) (справка)
  • McQuillan, John M. (1975). "Some considerations for a high performance message-based interprocess communication system". Proceedings of the 1975 ACM SIGCOMM/SIGOPS workshop on Interprocess communications. ACM Press. {{cite conference}}: Неизвестный параметр |booktitle= игнорируется (|book-title= предлагается) (справка); Неизвестный параметр |coauthors= игнорируется (|author= предлагается) (справка)
  • Shimizu, Toshiyuki (1992). "Low-latency message communication support for the AP1000". Proceedings of the 19th annual international symposium on Computer architecture. ACM Press. {{cite conference}}: Неизвестный параметр |booktitle= игнорируется (|book-title= предлагается) (справка); Неизвестный параметр |coauthors= игнорируется (|author= предлагается) (справка)