В распределенном вычислительном , распределенных объектах [ править ] являются объекты (в смысле объектно-ориентированное программирование ), которые распределены в различных адресных пространствах , либо в различных процессах на тот же компьютер, или даже в нескольких компьютерах , соединенных посредством сети , но которые работают вместе, обмениваясь данными и вызывая методы. Это часто связано с прозрачностью местоположения , когда удаленные объекты выглядят так же, как локальные. Основной метод связи распределенных объектов - удаленный вызов метода., как правило, путем передачи сообщений: один объект отправляет сообщение другому объекту на удаленном компьютере или процессе для выполнения некоторой задачи. Результаты отправляются обратно вызывающему объекту.
Распределенные объекты были популярны в конце 1990-х - начале 2000-х годов, но с тех пор вышли из моды. [1]
Термин может также в целом относиться к одному из расширений базовой концепции объекта, используемого в контексте распределенных вычислений, например к реплицированным объектам или живым распределенным объектам .
- Реплицированные объекты - это группы программных компонентов ( реплик ), которые запускают распределенный многосторонний протокол для достижения высокой степени согласованности между своими внутренними состояниями и скоординированно отвечают на запросы. Обращение к группе реплик вместе как к объекту отражает тот факт, что взаимодействие с любым из них демонстрирует одно и то же внешне видимое состояние и поведение.
- Живые распределенные объекты (или просто живые объекты ) [2] обобщаютконцепцию реплицированного объекта на группы реплик, которые могут внутренне использовать любой распределенный протокол, что, возможно, приводит только к слабой согласованности между их локальными состояниями. Живые распределенные объекты также могут быть определены как запущенные экземпляры распределенных многосторонних протоколов, рассматриваемые с объектно-ориентированной точки зрения как сущности, которые имеют различную идентичность и могут инкапсулировать распределенное состояние и поведение.
См. Также набор Интернет-протоколов .
Локальные и распределенные объекты [ править ]
Локальные и распределенные объекты во многом отличаются. [3] [4] Вот некоторые из них:
- Жизненный цикл: создание, миграция и удаление распределенных объектов отличается от локальных объектов.
- Ссылка: удаленные ссылки на распределенные объекты сложнее простых указателей на адреса памяти.
- Задержка запроса: запрос распределенного объекта на несколько порядков медленнее, чем вызов локального метода.
- Активация объекта: распределенные объекты не всегда могут быть доступны для обслуживания запроса объекта в любой момент времени.
- Параллелизм: распределенные объекты могут выполняться параллельно.
- Связь: для запросов распределенных объектов доступны различные примитивы связи.
- Отказ: распределенные объекты имеют гораздо больше точек отказа, чем типичные локальные объекты.
- Безопасность: распространение делает их уязвимыми для атак.
Примеры [ править ]
Возможности 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 .
См. Также [ править ]
Ссылки [ править ]
- ^ Микросервисы и первый закон распределенных объектов , Мартин Фаулер, 13 августа 2014 г.
- ^ 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 .
- ^ W. Emmerich (2000) Разработка распределенных объектов, John Wiley & Sons Ltd.
- ^ Сэмюэл К. Кендалл, Джим Уолдо , Энн Уоллрат и Джефф Вайант. 1994. Заметка о распределенных вычислениях. Технический отчет. Sun Microsystems, Inc., Маунтин-Вью, Калифорния, США.
- ^ https://kentonv.github.io/capnproto/rpc.html