Распределенный объект - Distributed object

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

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

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

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

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

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

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

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

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

Примеры

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

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

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

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

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

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

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

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

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

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

Смотрите также

Ссылки