Open main menu
Home
Random
Recent changes
Special pages
Community portal
Preferences
About Wikipedia
Disclaimers
Incubator escapee wiki
Search
User menu
Talk
Dark mode
Contributions
Create account
Log in
Editing
Portable Distributed Objects
Warning:
You are not logged in. Your IP address will be publicly visible if you make any edits. If you
log in
or
create an account
, your edits will be attributed to your username, along with other benefits.
Anti-spam check. Do
not
fill this in!
{{short description|API by NeXT}} '''Portable Distributed Objects''' ('''PDO''') is an [[application programming interface]] (API) for creating [[object-oriented]] code that can be executed remotely on a [[computer network|network]] of computers. It was created by [[NeXT Computer, Inc.]] using their [[OpenStep]] system, whose use of [[Objective-C]] made the package very easy to write. It was characterized by its very light weight and high speed in comparison to similar systems such as [[CORBA]]. Versions of PDO were available for [[Solaris (operating system)|Solaris]], [[HP-UX]] and all versions of the OPENSTEP system, although an agreement was also announced for a version to be made for [[Digital Unix]], then still known as OSF/1, with delivery anticipated after versions for SunOS and Solaris had been released. Product licence pricing for these platforms varied from $2,500 for use on a "small server" up to $10,000 for use on a "large server".<ref name="computerworld19940328_osf1">{{ cite magazine | url=https://archive.org/details/computerworld2813unse/page/24/mode/1up | title=NextStep port to DEC OSF/1 on way | magazine=Computerworld | date=28 March 1994 | access-date=5 March 2022 | last1=Nash | first1=Kim S. | pages=24 }}</ref> A version that worked with [[Microsoft]] [[Object Linking and Embedding|OLE]] was also available called ''D'OLE'',<ref>{{cite web |url=http://findarticles.com/p/articles/mi_m0EIN/is_1996_Jan_15/ai_17811753 |archive-url=https://web.archive.org/web/20050514143501/http://www.findarticles.com/p/articles/mi_m0EIN/is_1996_Jan_15/ai_17811753 |url-status=dead |archive-date=May 14, 2005 |title=NeXT Ships D'OLE Release 3.5 and Enterprise Objects Framework 1.1 for Windows NT |access-date=2008-02-08 |date=January 15, 1996 |work=[[Business Wire]] |publisher=Business Wire }}</ref> allowing distributed code written using PDO on any platform to be presented on Microsoft systems as if they were local OLE objects. PDO, on the other hand, relied on a small number of features in the Objective-C [[Run time system|runtime]] to handle both portability as well as distribution. The key feature was the language's support for a "second chance" method in all classes; if a method call on an object failed because the object didn't support it (normally not allowed in most languages due to [[strong typing]]), the runtime would then bundle the message into a compact format and pass it back into the object's <code>forwardInvocation</code> method.<ref> {{cite web |url = https://developer.apple.com/library/content/documentation/Cocoa/Conceptual/ObjCRuntimeGuide/Articles/ocrtForwarding.html |title = Message Forwarding |access-date = 2017-11-22 |author = Apple, Inc. |date = October 19, 2009 }}</ref> The normal behavior for <code>forwardInvocation</code> was to return an error, including details taken from the message (the "invocation").{{Clarify|date=March 2008}} <!-- normal as defined by what? In all other distributed object systems or just some? --> PDO instead supplied a number of new objects with <code>forwardInvocation</code> methods that passed the invocation object to another machine on the network, with various versions to support different networks and platforms. Calling methods on remote objects was almost invisible; after some network setup (a few lines typically) PDO objects were instantiated locally and called the same way as any other object on the system. The PDO object then forwarded the invocation to the remote computer for processing and unbundled the results when they were returned. In comparison with [[CORBA]], PDO programs were typically 1/10 or less in size; it was common for NeXT staffers to write into magazines showing how to re-implement a multi-page CORBA article in perhaps 15 lines of code.<ref>{{cite web |url = http://www.ddj.com/architect/184409611 |title = Implementing Distributed Objects |access-date = 2008-02-08 |author = Ernest N. Prabhakar |date = August 1, 1995 |work = [[Dr. Dobb's Journal]] |publisher = [[CMP Technology]] }}</ref> From a programming standpoint, there was nearly nothing as easy to use as PDO. However, PDO was also reliant entirely on Objective-C to function. This was a price most were unwilling to pay, as at the time [[C++]] was more widely used and the effort to shift codebases to an entirely new language and paradigm was considered too onerous.<ref>{{Cite web |date=2022-03-04 |title=How Are C, C++, C#, and Objective-C Different? |url=https://www.codecademy.com/resources/blog/c-vs-cplusplus-vs-csharp-vs-objective-c/ |access-date=2022-10-17 |website=Codecademy News}}</ref> PDO never saw much use, and NeXT's emphasis shifted to its new [[WebObjects]] framework in 1995. The ability to instantiate any object known to the local process from any other process is a known security vulnerability, and Apple strongly discourages use of PDO for that reason. In addition to the OS X platform, there is [[GNUstep]], which has its own implementation of Distributed Objects.<ref>{{cite web |url = http://www.gnustep.org/resources/documentation/Developer/Base/ProgrammingManual/manual_7.html |title = Distributed Objects |access-date = 2007-08-09 |author = Adam Fedor |date = May 26, 2007 |work = Objective-C GNUstep Base Programming Manual |publisher = [[GNUstep]] project |archive-date = 2007-09-28 |archive-url = https://web.archive.org/web/20070928001629/http://www.gnustep.org/resources/documentation/Developer/Base/ProgrammingManual/manual_7.html |url-status = dead }}</ref> == See also == * [[Cocoa (API)]] == References == {{Reflist}} ==External links== * [http://www.stepwise.com/Articles/Technical/TalkToMe.html PDO History] {{dead link|date=December 2013}} * [https://web.archive.org/web/20090518111906/http://developer.apple.com/documentation/Cocoa/Conceptual/DistrObjects/index.html Distributed Objects] — a guide by [[Apple Computer|Apple]] [[Category:macOS APIs]] [[Category:NeXT]] [[Category:Object-oriented programming]] [[Category:Parallel computing]]
Edit summary
(Briefly describe your changes)
By publishing changes, you agree to the
Terms of Use
, and you irrevocably agree to release your contribution under the
CC BY-SA 4.0 License
and the
GFDL
. You agree that a hyperlink or URL is sufficient attribution under the Creative Commons license.
Cancel
Editing help
(opens in new window)
Pages transcluded onto the current version of this page
(
help
)
:
Template:Cite magazine
(
edit
)
Template:Cite web
(
edit
)
Template:Clarify
(
edit
)
Template:Dead link
(
edit
)
Template:Reflist
(
edit
)
Template:Short description
(
edit
)