Портативные распределенные объекты

API от NeXT

Portable Distributed Objects ( PDO ) — это интерфейс прикладного программирования (API) для создания объектно-ориентированного кода, который может быть выполнен удаленно в сети компьютеров. Он был создан NeXT Computer, Inc. с использованием их системы OpenStep , чье использование Objective-C сделало пакет очень простым в написании. Он характеризовался очень малым весом и высокой скоростью по сравнению с аналогичными системами, такими как CORBA .

Версии PDO были доступны для Solaris , HP-UX и всех версий системы OPENSTEP, хотя было также объявлено о соглашении о создании версии для Digital Unix , тогда еще известной как OSF/1, с ожидаемой поставкой после выпуска версий для SunOS и Solaris. Цены на лицензии на продукт для этих платформ варьировались от 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 , которая имеет собственную реализацию распределенных объектов. [6]

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

Ссылки

  1. ^ Nash, Kim S. (28 марта 1994 г.). «Порт NextStep на DEC OSF/1 в пути». Computerworld . стр. 24. Получено 5 марта 2022 г.
  2. ^ "NeXT Ships D'OLE Release 3.5 и Enterprise Objects Framework 1.1 для Windows NT". Business Wire . Business Wire. 15 января 1996 г. Архивировано из оригинала 14 мая 2005 г. Получено 2008-02-08 .
  3. ^ Apple, Inc. (19 октября 2009 г.). "Пересылка сообщений" . Получено 22 ноября 2017 г.
  4. ^ Эрнест Н. Прабхакар (1 августа 1995 г.). «Реализация распределенных объектов». Журнал доктора Добба . Технология CMP . Получено 08.02.2008 .
  5. ^ «Чем отличаются C, C++, C# и Objective-C?». Новости Codecademy . 2022-03-04 . Получено 2022-10-17 .
  6. ^ Адам Федор (26 мая 2007 г.). "Распределенные объекты". Objective-C GNUstep Base Programming Manual . Проект GNUstep . Получено 2007-08-09 .
Получено с "https://en.wikipedia.org/w/index.php?title=Переносимые_распределенные_объекты&oldid=1219781414"