Передача сообщений


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

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

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

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

Один из первых примеров того, как это можно использовать, был в области компьютерной графики. Существуют различные сложности, связанные с манипулированием графическими объектами. Например, простое использование правильной формулы для вычисления площади замкнутой фигуры зависит от того, является ли фигура треугольником, прямоугольником, эллипсом или кругом. В традиционном компьютерном программировании это привело бы к длинным операторам IF-THEN, проверяющим, какого рода объект представляет собой фигура, и вызывая соответствующий код. Объектно-ориентированный способ справиться с этим состоит в том, чтобы определить класс, вызываемый Shapeс подклассами, такими как Rectangleи Ellipse(которые, в свою очередь, имеют подклассы Squareи Circle), а затем просто отправить сообщение любому Shapeс просьбой вычислить его площадь. КаждыйShapeЗатем объект вызовет метод подкласса с формулой, подходящей для этого типа объекта. [1]

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