Из Википедии, бесплатной энциклопедии
Перейти к навигации Перейти к поиску
Изображение описывает связь между распределенными объектами, находящимися на разных машинах.

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

Распределенные объекты были популярны в конце 1990-х - начале 2000-х годов, но с тех пор вышли из моды. [1]

Термин может также в целом относиться к одному из расширений базовой концепции объекта, используемого в контексте распределенных вычислений, например к реплицированным объектам или живым распределенным объектам .

  • Реплицированные объекты - это группы программных компонентов ( реплик ), которые запускают распределенный многосторонний протокол для достижения высокой степени согласованности между своими внутренними состояниями и скоординированно отвечают на запросы. Обращение к группе реплик вместе как к объекту отражает тот факт, что взаимодействие с любым из них демонстрирует одно и то же внешне видимое состояние и поведение.
  • Живые распределенные объекты (или просто живые объекты ) [2] обобщаютконцепцию реплицированного объекта на группы реплик, которые могут внутренне использовать любой распределенный протокол, что, возможно, приводит только к слабой согласованности между их локальными состояниями. Живые распределенные объекты также могут быть определены как запущенные экземпляры распределенных многосторонних протоколов, рассматриваемые с объектно-ориентированной точки зрения как сущности, которые имеют различную идентичность и могут инкапсулировать распределенное состояние и поведение.

См. Также набор Интернет-протоколов .

Локальные и распределенные объекты [ править ]

Локальные и распределенные объекты во многом отличаются. [3] [4] Вот некоторые из них:

  1. Жизненный цикл: создание, миграция и удаление распределенных объектов отличается от локальных объектов.
  2. Ссылка: удаленные ссылки на распределенные объекты сложнее простых указателей на адреса памяти.
  3. Задержка запроса: запрос распределенного объекта на несколько порядков медленнее, чем вызов локального метода.
  4. Активация объекта: распределенные объекты не всегда могут быть доступны для обслуживания запроса объекта в любой момент времени.
  5. Параллелизм: распределенные объекты могут выполняться параллельно.
  6. Связь: для запросов распределенных объектов доступны различные примитивы связи.
  7. Отказ: распределенные объекты имеют гораздо больше точек отказа, чем типичные локальные объекты.
  8. Безопасность: распространение делает их уязвимыми для атак.

Примеры [ править ]

Возможности RPC межплатформенного протокола сериализации Cap'n Proto составляют протокол распределенных объектов. Вызовы методов распределенных объектов могут быть выполнены (в цепочке, в одном сетевом запросе, если необходимо) через ссылки / возможности интерфейса . [5]

Распределенные объекты реализованы в Objective-C с использованием API Какао с классом NSConnection и вспомогательными объектами.

Распределенные объекты используются в Java RMI .

CORBA позволяет создавать распределенные смешанные объектные системы.

DCOM - это платформа для распределенных объектов на платформе Microsoft.

DDObjects - это фреймворк для распределенных объектов с использованием Borland Delphi.

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

JavaSpaces - это спецификация Sun для распределенной разделяемой памяти (на основе пространства)

Pyro - это фреймворк для распределенных объектов с использованием языка программирования Python .

Распределенный Ruby (DRb) - это среда для распределенных объектов с использованием языка программирования Ruby .

См. Также [ править ]

Ссылки [ править ]

  1. ^ Микросервисы и первый закон распределенных объектов , Мартин Фаулер, 13 августа 2014 г.
  2. ^ Ostrowski, К., Бирман, К., Dolev, Д. и Ahnn, J. (2008). «Программирование с использованием динамических распределенных объектов», Труды 22-й Европейской конференции по объектно-ориентированному программированию , Пафос, Кипр, 07–11 июля 2008 г., J. Vitek, Ed., Lecture Notes in Computer Science , vol. 5142, Springer-Verlag, Berlin, Heidelberg, 463-489, http://portal.acm.org/citation.cfm?id=1428508.1428536 .
  3. ^ W. Emmerich (2000) Разработка распределенных объектов, John Wiley & Sons Ltd.
  4. ^ Сэмюэл К. Кендалл, Джим Уолдо , Энн Уоллрат и Джефф Вайант. 1994. Заметка о распределенных вычислениях. Технический отчет. Sun Microsystems, Inc., Маунтин-Вью, Калифорния, США.
  5. ^ https://kentonv.github.io/capnproto/rpc.html