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

Материал из Википедии — свободной энциклопедии
Перейти к навигации Перейти к поиску
[отпатрулированная версия][непроверенная версия]
Содержимое удалено Содержимое добавлено
статья должна начинаться с определения, -совсем невнятное
м исправление ошибок параметров шаблонов Cite после обновления модуля Citation/CS1, замена имён и значений устаревшего формата параметров доступности ссылок
 
(не показаны 3 промежуточные версии 3 участников)
Строка 8: Строка 8:
Языки программирования, базирующиеся на этой модели, обычно определяют передачу сообщения, как посылку (обычно асинхронную; являющуюся копией) элемента данных конечному получателю ([[актор (программирование)|актору]], [[Процесс (информатика)|процессу]], [[Поток (информатика)|потоку]], [[Сокет (программный интерфейс)|сокету]] и так далее). Концепция сообщения является высокоуровневой версией [[Дейтаграмма|датаграмм]], за исключением того, что сообщения могут быть больше по размерам, чем пакет, и могут быть сделаны надёжными, стойкими, безопасными и при необходимости могут быть охвачены механизмом [[транзакция (информатика)|транзакций]].
Языки программирования, базирующиеся на этой модели, обычно определяют передачу сообщения, как посылку (обычно асинхронную; являющуюся копией) элемента данных конечному получателю ([[актор (программирование)|актору]], [[Процесс (информатика)|процессу]], [[Поток (информатика)|потоку]], [[Сокет (программный интерфейс)|сокету]] и так далее). Концепция сообщения является высокоуровневой версией [[Дейтаграмма|датаграмм]], за исключением того, что сообщения могут быть больше по размерам, чем пакет, и могут быть сделаны надёжными, стойкими, безопасными и при необходимости могут быть охвачены механизмом [[транзакция (информатика)|транзакций]].


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


== Влияние на другие модели программирования ==
== Влияние на другие модели программирования ==
Строка 23: Строка 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>{{Cite web |url=http://lists.squeakfoundation.org/pipermail/squeak-dev/1998-October/017019.html |title=Alan Kay, prototypes vs classes was: Re: Sun’s HotSpot, Oct 10, 1998 |access-date=2008-10-31 |archive-date=2021-02-16 |archive-url=https://web.archive.org/web/20210216140614/http://lists.squeakfoundation.org/pipermail/squeak-dev/1998-October/017019.html |url-status=live }}</ref>, что обмен сообщениями между объектами — это концепция более важная, чем сами объекты, хотя люди часто это не понимают и уделяют слишком много внимания самим объектам и недостаточно — сообщениям, которыми они обмениваются.


=== Другие модели ===
=== Другие модели ===
Строка 32: Строка 32:


== Ссылки ==
== Ссылки ==
* {{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|book-title=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|book-title=Proceedings of the 1975 ACM SIGCOMM/SIGOPS workshop on Interprocess communications|publisher=ACM Press|year=1975}}
* {{cite conference|first=Toshiyuki|last=Shimizu|coauthors=Takeshi Horie, Hiroaki Ishihata|url=http://portal.acm.org/citation.cfm?id=140385&coll=&dl=ACM&CFID=15151515&CFTOKEN=6184618|title=Low-latency message communication support for the AP1000|booktitle=Proceedings of the 19th annual international symposium on Computer architecture|publisher=ACM Press|year=1992}}
* {{cite conference|first=Toshiyuki|last=Shimizu|coauthors=Takeshi Horie, Hiroaki Ishihata|url=http://portal.acm.org/citation.cfm?id=140385&coll=&dl=ACM&CFID=15151515&CFTOKEN=6184618|title=Low-latency message communication support for the AP1000|book-title=Proceedings of the 19th annual international symposium on Computer architecture|publisher=ACM Press|year=1992}}


{{rq|refless|check|wikify}}
{{rq|refless|check|wikify}}

Текущая версия от 17:34, 19 декабря 2023

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

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

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

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

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

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

[править | править код]

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

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

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

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

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

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

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

[править | править код]

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

Примечания

[править | править код]
  1. Alan Kay, prototypes vs classes was: Re: Sun’s HotSpot, Oct 10, 1998. Дата обращения: 31 октября 2008. Архивировано 16 февраля 2021 года.
  • Ramachandran, U. (1987). "Hardware support for interprocess communication". Proceedings of the 14th annual international symposium on Computer architecture. ACM Press. {{cite conference}}: Неизвестный параметр |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}}: Неизвестный параметр |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}}: Неизвестный параметр |coauthors= игнорируется (|author= предлагается) (справка)