Переносимые распределенные объекты ( PDO ) - это интерфейс прикладного программирования (API) для создания объектно-ориентированного кода, который может выполняться удаленно в сети компьютеров. Он был создан NeXT Computer, Inc. с использованием их системы OpenStep , чье использование Objective-C сделало пакет очень простым в написании. Он отличался очень легким весом и высокой скоростью по сравнению с аналогичными системами, такими как CORBA .
Версии PDO были доступны для Solaris , HP-UX и всех версий системы OPENSTEP. Версия , которая работала с Microsoft OLE была также доступна под названием D'OLE , [1] позволяет распределяться код , написанный с использованием PDO на любой платформе , которая будет представлена на системах Microsoft , как если бы они были локальными объектами OLE.
PDO была одной из ряда распределенных объектных систем, созданных в начале 1990-х годов, модели дизайна, в которой "интерфейсные" приложения на микрокомпьютерах с графическим интерфейсом пользователя вызывали код, выполняемый на мэйнфреймах и миникомпьютерах, для их обработки и хранения данных. Microsoft превращала OLE в компонентную объектную модель (COM) и аналогичную распределенную версию под названием DCOM , [ необходима ссылка ] IBM имела свою системную объектную модель (SOM / DSOM), Sun Microsystems продвигала свои распределенные объекты повсюду , и был хост мелких игроков. За исключением ограниченной функциональности в COM, [ необходима цитата ] большинство этих систем были чрезвычайно тяжелыми, имели тенденцию быть очень большими и медленными и часто были очень сложными в использовании.
PDO, с другой стороны, полагался на небольшое количество функций в среде выполнения Objective-C для обеспечения как переносимости, так и распространения. Ключевой особенностью языка была поддержка метода «второго шанса» во всех классах; если вызов метода объекта завершился неудачно, потому что объект не поддерживал его (обычно это не разрешено в большинстве языков из-за строгой типизации ), среда выполнения затем объединит сообщение в компактный формат и передаст его обратно в метод объекта forwardInvocation
. [2]
Обычным поведением для forwardInvocation
было возвращение ошибки, включая детали, взятые из сообщения («вызов»). [ требуется пояснение ] PDO вместо этого предоставил ряд новых объектов с forwardInvocation
методами, которые передают объект вызова на другой компьютер в сети, с различными версиями для поддержки различных сетей и платформ. Вызов методов на удаленных объектах был почти невидимым; после некоторой настройки сети (обычно несколько строк) объекты PDO создавались локально и вызывались так же, как и любой другой объект в системе. Затем объект PDO направил вызов на удаленный компьютер для обработки и разделил результаты, когда они были возвращены.
По сравнению с CORBA , программы PDO обычно имели размер 1/10 или меньше; Для сотрудников NeXT было обычным делом писать в журналы, показывая, как повторно реализовать многостраничную статью CORBA, возможно, с помощью 15 строк кода. [3] С точки зрения программирования, почти ничего не было проще в использовании, чем PDO.
Однако функционирование PDO также полностью зависело от Objective-C. Это была цена, которую большинство не желало платить, поскольку в то время более широко использовался C ++, и усилия по переносу кодовых баз на совершенно новый язык и парадигму считались слишком обременительными. [ необходима цитата ] PDO никогда не пользовался особой популярностью, и в 1995 году NeXT сместил акцент на новую структуру WebObjects .
Возможность создать экземпляр любого объекта, известного локальному процессу из любого другого процесса, является известной уязвимостью безопасности, и Apple настоятельно не рекомендует использовать PDO по этой причине.
В дополнение к платформе OS X существует GNUstep , у которого есть собственная реализация распределенных объектов. [4]
Смотрите также
Рекомендации
- ^ «NeXT Ships 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 Technology . Проверено 8 февраля 2008 .
- ^ Адам Федор (26 мая 2007 г.). «Распределенные объекты» . Руководство по программированию на Objective-C GNUstep Base . Проект GNUstep . Проверено 9 августа 2007 .
Внешние ссылки
- История PDO [ мертвая ссылка ]
- Распределенные объекты - руководство от Apple