Interested Article - Распределённые объекты

На иллюстрации показана связь между распределенными объектами, находящимися на разных машинах.

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

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

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

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

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

  • Локальные и распределенные объекты обладают многими отличиями . Вот некоторые из них:
  • Жизненный цикл: создание, миграция и удаление распределенных для распределённых объектов отличается от локальных объектов.
  • Ссылки : ссылки на распределённые объекты сложнее простых указателей на адреса памяти, которых может быть достаточно в локальной системе.
  • Задержка запроса: запрос распредёленного объекта на несколько порядков медленнее, чем вызов локального метода.
  • Активация объекта: распределённые объекты не всегда могут быть доступны для обслуживания запроса объекта в любой момент времени.
  • Параллелизм: распределённые объекты могут выполняться параллельно.
  • Связь: для запросов распределённых объектов доступны различные примитивы связи.
  • Отказ: распределённые объекты имеют гораздо больше точек отказа, чем типичные локальные объекты.
  • Безопасность: распределённость делает их уязвимыми для атак.

Примеры

  • Возможности RPC межплатформенного протокола сериализации Cap’n Proto представляют собой протокол работы с распределёнными объектами. Вызовы методов распределенных объектов могут быть выполнены (в цепочке, в одном сетевом запросе, если это необходимо) через ссылки / возможности интерфейса .
  • Распределенные объекты реализованы в Objective-C с использованием API Cocoa с использованием класса NSConnection и вспомогательных объектов.
  • Распределенные объекты используются в Java RMI .
  • CORBA позволяет создавать распределенные смешанные объектные системы.
  • DCOM — это технология для распределенных объектов на платформе Microsoft.
  • DDObjects — это фреймворк для распределенных объектов с использованием Borland Delphi .
  • Jt — это фреймворк для распределенных компонентов, использующий парадигму обмена сообщениями.
  • JavaSpaces — это спецификация Sun для распределенной разделяемой памяти
  • Pyro — это фреймворк для распределенных объектов, использующий язык программирования Python .
  • Распределённый Ruby (DRb) — это фреймворк для распределенных объектов, использующий язык программирования Ruby .

Примечания

  1. (неопр.) . martinfowler.com . Дата обращения: 24 октября 2021. 24 октября 2021 года.
  2. Krzysztof Ostrowski, Ken Birman, Danny Dolev, Jong Hoon Ahnn. // Proceedings of the 22nd European conference on Object-Oriented Programming. — Berlin, Heidelberg: Springer-Verlag, 2008-07-07. — С. 463–489 . — ISBN 978-3-540-70591-8 . — doi : .
  3. W. Emmerich (2000) Engineering distributed objects, John Wiley & Sons Ltd.
  4. Samuel C. Kendall, Jim Waldo, Ann Wollrath, and Geoff Wyant. 1994. A Note on Distributed Computing. Technical Report. Sun Microsystems, Inc., Mountain View, CA, USA.
  5. (неопр.) . capnproto.org . Дата обращения: 24 октября 2021. 18 марта 2015 года.

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