Переносимые распределенные объекты
Portable Distributed Objects ( PDO ) — это интерфейс прикладного программирования (API) для создания объектно-ориентированного кода, который можно выполнять удаленно в сети компьютеров. Он был создан компанией NeXT Computer, Inc. с использованием их системы OpenStep , чье использование Objective-C сделало написание пакета очень простым. Она характеризовалась очень легким весом и высокой скоростью по сравнению с аналогичными системами, такими как CORBA .
Версии PDO были доступны для Solaris , HP-UX и всех версий системы OPENSTEP, хотя было также объявлено о соглашении о создании версии для Digital Unix , тогда еще известной как OSF/1, с поставкой, ожидаемой после версий для SunOS. и Солярис был выпущен. Стоимость лицензии на продукт для этих платформ варьировалась от 2500 долларов США за использование на «маленьком сервере» до 10 000 долларов США за использование на «большом сервере». [1] версия, работавшая с Microsoft OLE Также была доступна , под названием D'OLE . [2] возможность представления распределенного кода, написанного с использованием PDO на любой платформе, в системах Microsoft, как если бы они были локальными объектами OLE.
PDO, с другой стороны, полагался на небольшое количество функций среды выполнения Objective-C для обеспечения как переносимости, так и распространения. Ключевой особенностью языка была поддержка метода «второго шанса» во всех классах; если вызов метода объекта завершился неудачно, потому что объект его не поддерживает (обычно это не допускается в большинстве языков из-за строгой типизации ), среда выполнения затем упаковывает сообщение в компактный формат и передает его обратно в объект. forwardInvocation
метод. [3]
Нормальное поведение для forwardInvocation
должен был вернуть ошибку, включая детали, взятые из сообщения («вызов»). [ нужны разъяснения ] Вместо этого PDO предоставил ряд новых объектов с forwardInvocation
методы, которые передавали объект вызова на другой компьютер в сети, с различными версиями для поддержки разных сетей и платформ. Вызов методов удаленных объектов был практически незаметен; после некоторой настройки сети (обычно несколько строк) объекты PDO создавались локально и вызывались так же, как и любой другой объект в системе. Затем объект PDO перенаправил вызов на удаленный компьютер для обработки и разделил результаты, когда они были возвращены.
По сравнению с CORBA программы PDO обычно имели размер 1/10 или меньше; Сотрудники NeXT обычно писали в журналах, как повторно реализовать многостраничную статью CORBA, используя примерно 15 строк кода. [4] С точки зрения программирования не было ничего более простого в использовании, чем PDO.
Однако функционирование PDO также полностью зависело от Objective-C. Это была цена, которую большинство не желало платить, поскольку в то время C++ использовался более широко, а усилия по переводу кодовых баз на совершенно новый язык и парадигму считались слишком обременительными. [5] PDO так и не нашел широкого применения, и в 1995 году акцент NeXT сместился на новую структуру WebObjects .
Возможность создания экземпляра любого объекта, известного локальному процессу, из любого другого процесса является известной уязвимостью безопасности, и по этой причине Apple настоятельно не рекомендует использовать PDO.
Помимо платформы OS X существует GNUstep , имеющая собственную реализацию Distributed Objects. [6]
См. также [ править ]
Ссылки [ править ]
- ^ Нэш, Ким С. (28 марта 1994 г.). «Порт NextStep на DEC OSF/1 уже в пути» . Компьютерный мир . п. 24 . Проверено 5 марта 2022 г.
- ^ «NeXT поставляет D'OLE Release 3.5 и Enterprise Objects Framework 1.1 для Windows NT» . Деловой провод . Деловой провод. 15 января 1996 года. Архивировано из оригинала 14 мая 2005 года . Проверено 8 февраля 2008 г.
- ^ Apple, Inc. (19 октября 2009 г.). «Пересылка сообщений» . Проверено 22 ноября 2017 г.
- ^ Эрнест Н. Прабхакар (1 августа 1995 г.). «Реализация распределенных объектов» . Журнал доктора Добба . Технология CMP . Проверено 8 февраля 2008 г.
- ^ «Чем отличаются C, C++, C# и Objective-C?» . Новости Кодакадемии . 04.03.2022 . Проверено 17 октября 2022 г.
- ^ Адам Федор (26 мая 2007 г.). «Распределенные объекты» . Руководство по базовому программированию Objective-C GNUstep . GNUstep Проект . Проверено 9 августа 2007 г.
Внешние ссылки [ править ]
- История ПДО [ мертвая ссылка ]
- Распределенные объекты — руководство от Apple