Сообщение о программировании на английском

В информатикепередача сообщений-это метод вызова поведения (то есть запуска программы) на компьютере. Вызывающая программа посылает сообщение процессу (который может быть актором или объектом) и полагается на этот процесс и его вспомогательную инфраструктуру. Чтобы затем выбрать и запустить соответствующий код. Передача сообщений отличается от обычного программирования, в котором процесс. Подпрограмма или функция вызываются непосредственно по имени. Передача сообщений является ключом к некоторым моделям параллелизма и объектно-ориентированного программирования.

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

Он используется как способ взаимодействия объектов, составляющих программу. Друг с другом и как средство взаимодействия объектов и систем. Работающих на разных компьютерах (например. В Интернете). Передача сообщений может осуществляться различными механизмами, включая каналы.

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

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

Инкапсуляция-это идея о том. Что программные объекты должны иметь возможность вызывать службы на других объектах. Не зная и не заботясь о том. Как эти службы реализуются. Например, вместо того чтобы иметь операторы IF-THEN, определяющие. Какую подпрограмму или функцию вызывать. Разработчик может просто отправить сообщение объекту. И объект выберет соответствующий код в зависимости от его типа.

Один из первых примеров того, как это можно использовать. Был в области компьютерной графики. Существуют различные сложности, связанные с манипулированием графическими объектами. Например, простое использование правильной формулы для вычисления площади замкнутой формы будет варьироваться в зависимости от того. Является ли форма треугольником. Прямоугольником. Эллипсом или кругом. В традиционном компьютерном программировании это привело бы к длинным операторам IF-THEN. Проверяющим. Что это за объект. И вызывающим соответствующий код. Объектно-ориентированный способ справиться с этим-определить класс, вызываемый

Shapeс помощью подклассов. Таких как Rectangleи Ellipse (которые в свою очередь имеют подклассы SquareиCircle), а затем просто отправить сообщение любому Shapeс просьбой вычислить его площадь. Затем каждый Shapeобъект вызовет метод подкласса с формулой. Подходящей для этого типа объекта.]

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

  • Поиск процесса с использованием различных операционных систем и языков программирования в разных местах. Откуда пришло сообщение.
  • Сохранение сообщения в очереди. Если соответствующий объект для обработки сообщения в данный момент не запущен. А затем вызов сообщения. Когда объект доступен. Кроме того, при необходимости сохраняйте результат до тех пор. Пока отправляющий объект не будет готов его принять.
  • Управление различными транзакционными требованиями для распределенных транзакций. Например кислотноетестирование данных.]

Синхронная и асинхронная передача сообщений

Синхронная передача сообщений

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

Синхронный обмен сообщениями аналогичен синхронному вызову функции; точно так же. Как вызывающий функцию ожидает завершения функции. Процесс отправки ждет завершения процесса получения. Это может сделать синхронную связь неработоспособной для некоторых приложений. Например, большие распределенные системы могут работать недостаточно хорошо. Чтобы их можно было использовать.

Такие большие распределенные системы могут нуждаться в работе. Когда некоторые из их подсистем не работают для обслуживания и т. Д.

Представьте себе, что в оживленном деловом офисе есть 100 настольных компьютеров. Которые отправляют электронные письма друг другу исключительно с помощью синхронной передачи сообщений. Один работник, выключив свой компьютер. Может заставить остальные 99 компьютеров зависнуть до тех пор. Пока он снова не включит свой компьютер для обработки одного электронного письма.

Асинхронная передача сообщений

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

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

Асинхронный обмен сообщениями требует дополнительных возможностей для хранения и повторной передачи данных для систем. Которые не могут работать одновременно и обычно обрабатываются программным обеспечением промежуточного уровня (часто называемым

промежуточнымпрограммным обеспечением ); распространенным типом является промежуточное программное обеспечение. Ориентированное на сообщения (MOM).

Буфер, необходимый для асинхронной связи, может вызвать проблемы, когда он заполнен. Необходимо принять решение, блокировать ли отправителя или отбросить будущие сообщения. Заблокированный отправитель может привести к тупику. Если сообщения отбрасываются, связь перестает быть надежной.

Гибриды

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

Распределенные объекты

Системы передачи сообщений используют распределенные или локальные объекты. В случае распределенных объектов отправитель и получатель могут находиться на разных компьютерах. Работать под разными операционными системами. Использовать разные языки программирования и т. д. В этом случае уровень шины заботится о деталях преобразования данных из одной системы в другую. Отправки и приема данных по сети и т. Д. Протокол удаленного вызова процедур (RPC) в Unix Был ранний пример этого. Обратите внимание, что при передаче сообщений такого типа не требуется. Чтобы отправитель или получатель использовали объектно-ориентированное программирование. Процедурные языковые системы могут быть обернуты и обработаны как большие зернистые объекты. Способные отправлять и получать сообщения.[4]

Примерами систем , поддерживающих распределенные объекты, являются: Emerald, ONC RPC, CORBA, Java RMI, DCOM, SOAP, .NET Remoting, CTOS, QNX Neutrino RTOS, OpenBinder и D-Bus. Распределенные объектные системы были названы системами

Этот раздел требует внимания со стороны эксперта в области компьютерных наук. Специфическая проблема заключается в следующем: Раздел смешивается между локальной и распределенной передачей сообщений, например. подразумевается, что локальная передача сообщений не может быть выполнена с помощью pass-by-reference и должна включать в себя целые объекты, что на самом деле только частично правильно для распределенных систем. WikiProject Computer science может помочь нанять эксперта. (апрель 2015)

Распределенная. Или асинхронная. Передача сообщений имеет дополнительные накладные расходы по сравнению с вызовом процедуры. При передаче сообщений аргументы должны быть скопированы в новое сообщение. Некоторые аргументы могут содержать мегабайты данных. Которые должны быть скопированы и переданы принимающему объекту.

Традиционные вызовы процедур отличаются от передачи сообщений с точки зрения использования памяти, времени передачи и местоположения. Аргументы передаются в приемник. Как правило, регистрами общего назначения, не требующими дополнительного хранения или времени передачи. Или в списке параметров, содержащем адреса аргументов (несколько битов). Передача адресов невозможна для распределенных систем. Так как системы используют отдельные адресные пространства.

Веб-браузеры и веб-серверы являются примерами процессов. Которые взаимодействуют посредством передачи сообщений. URL-адрес-это пример ссылки на ресурс без раскрытия внутренних компонентов процесса.

Вызов подпрограммы или вызов метода не завершится до тех пор. Пока не завершится вызываемое вычисление. Асинхронная передача сообщений, напротив. Может привести к тому. Что ответ будет получен через значительное время после отправки сообщения запроса.

Обработчик сообщений. Как правило. Обрабатывает сообщения от нескольких отправителей. Это означает. Что его состояние может измениться по причинам. Не связанным с поведением отдельного отправителя или клиентского процесса. Это противоречит типичному поведению объекта. На котором вызываются методы: последний. Как ожидается. Останется в том же состоянии между вызовами метода. Другими словами. Обработчик сообщений ведет себя аналогично изменчивому объекту.

Математические модели

Наиболее известными математическими моделями передачи сообщений являются модель актора и Пи-исчисление.[5][6] В математических терминах сообщение-это единственное средство передачи управления объекту. Если объект отвечает на сообщение. У него есть метод для этого сообщения.

Алан Кей утверждал. Что передача сообщений в ООП важнее. Чем объекты. И что сами объекты часто чрезмерно подчеркиваются. Модель программирования живых распределенных объектов строится на этом наблюдении; она использует концепцию распределенного потока данных для характеристики поведения сложной распределенной системы с точки зрения шаблонов сообщений. Используя спецификации функционального стиля высокого уровня.[7]

Дальнейшее чтение

Внешние ссылки