Portable Distributed Objects ( PDO ) es una interfaz de programación de aplicaciones (API) para crear código orientado a objetos que se puede ejecutar de forma remota en una red de computadoras. Fue creado por NeXT Computer, Inc. usando su sistema OpenStep , cuyo uso de Objective-C hizo que el paquete fuera muy fácil de escribir. Se caracterizaba por su muy ligero peso y alta velocidad en comparación con sistemas similares como CORBA .
Las versiones de PDO estaban disponibles para Solaris , HP-UX y todas las versiones del sistema OPENSTEP. También estaba disponible una versión que funcionaba con Microsoft OLE llamada D'OLE , [1] que permite que el código distribuido escrito usando PDO en cualquier plataforma se presente en los sistemas de Microsoft como si fueran objetos OLE locales.
PDO era uno de varios sistemas de objetos distribuidos creados a principios de la década de 1990, un modelo de diseño en el que las aplicaciones "frontales" en microcomputadoras basadas en GUI llamaban al código que se ejecutaba en mainframe y minicomputadoras para su procesamiento y almacenamiento de datos. Microsoft estaba evolucionando OLE en el Modelo de objetos componentes (COM) y una versión distribuida similar llamada DCOM , [ cita requerida ] IBM tenía su Modelo de objetos del sistema (SOM / DSOM), Sun Microsystems estaba promocionando sus Objetos distribuidos en todas partes , y había un host de jugadores más pequeños también. Con la excepción de la funcionalidad limitada en COM, [ cita requerida ] la mayoría de estos sistemas eran extremadamente pesados, tendían a ser muy grandes y lentos y, a menudo, eran muy difíciles de usar.
PDO, por otro lado, se basó en una pequeña cantidad de características en el tiempo de ejecución de Objective-C para manejar tanto la portabilidad como la distribución. La característica clave fue el soporte del lenguaje para un método de "segunda oportunidad" en todas las clases; Si una llamada de método en un objeto falla porque el objeto no lo admite (normalmente no está permitido en la mayoría de los lenguajes debido a la escritura fuerte ), el tiempo de ejecución agruparía el mensaje en un formato compacto y lo devolvería al forwardInvocation
método del objeto . [2]
El comportamiento normal de forwardInvocation
era devolver un error, incluidos los detalles extraídos del mensaje (la "invocación"). [ aclaración necesaria ] PDO en cambio proporcionó una serie de nuevos objetos con forwardInvocation
métodos que pasaban el objeto de invocación a otra máquina en la red, con varias versiones para soportar diferentes redes y plataformas. Llamar a métodos en objetos remotos era casi invisible; después de alguna configuración de red (algunas líneas típicamente), los objetos PDO se instanciaron localmente y se llamaron de la misma manera que cualquier otro objeto en el sistema. Luego, el objeto PDO reenvió la invocación a la computadora remota para su procesamiento y desagrupaba los resultados cuando se devolvían.
En comparación con CORBA , los programas de PDO tenían típicamente 1/10 o menos de tamaño; Era común que los empleados de NeXT escribieran en revistas que mostraran cómo volver a implementar un artículo CORBA de varias páginas en quizás 15 líneas de código. [3] Desde el punto de vista de la programación, no había casi nada tan fácil de usar como PDO.
Sin embargo, PDO también dependía completamente de Objective-C para funcionar. Este era un precio que la mayoría no estaba dispuesta a pagar, ya que en ese momento se usaba más C ++ y el esfuerzo por cambiar las bases de código a un lenguaje y paradigma completamente nuevos se consideraba demasiado oneroso. [ cita requerida ] PDO nunca vio mucho uso, y el énfasis de NeXT cambió a su nuevo marco WebObjects en 1995.
La capacidad de instanciar cualquier objeto conocido por el proceso local desde cualquier otro proceso es una vulnerabilidad de seguridad conocida, y Apple desaconseja enfáticamente el uso de PDO por esa razón.
Además de la plataforma OS X, existe GNUstep , que tiene su propia implementación de objetos distribuidos. [4]
Ver también
Referencias
- ^ "Next Ships D'OLE Release 3.5 y Enterprise Objects Framework 1.1 para Windows NT" . Business Wire . Business Wire. 15 de enero de 1996. Archivado desde el original el 14 de mayo de 2005 . Consultado el 8 de febrero de 2008 .
- ^ Apple, Inc. (19 de octubre de 2009). "Reenvío de mensajes" . Consultado el 22 de noviembre de 2017 .
- ^ Ernest N. Prabhakar (1 de agosto de 1995). "Implementación de objetos distribuidos" . Diario del Dr. Dobb . Tecnología CMP . Consultado el 8 de febrero de 2008 .
- ^ Adam Fedor (26 de mayo de 2007). "Objetos distribuidos" . Objective-C GNUstep Base Programming Manual . Proyecto GNUstep . Consultado el 9 de agosto de 2007 .
enlaces externos
- Historial de PDO [ enlace muerto ]
- Objetos distribuidos : una guía de Apple