stringtranslate.com

Objetos distribuidos portátiles

Portable Distributed Objects ( PDO ) es una interfaz de programación de aplicaciones (API) para crear código orientado a objetos que puede ejecutarse de forma remota en una red de computadoras. Fue creado por NeXT Computer, Inc. utilizando su sistema OpenStep , cuyo uso de Objective-C hizo que el paquete fuera muy fácil de escribir. Se caracterizaba por su peso muy ligero y alta velocidad en comparación con sistemas similares como CORBA .

Había versiones de PDO disponibles para Solaris , HP-UX y todas las versiones del sistema OPENSTEP, aunque también se anunció un acuerdo para que se hiciera una versión para Digital Unix , entonces todavía conocido como OSF/1, con entrega prevista después de que se hubieran lanzado las versiones para SunOS y Solaris. El precio de la licencia del producto para estas plataformas variaba desde $2,500 para su uso en un "servidor pequeño" hasta $10,000 para su uso en un "servidor grande". [1] También estaba disponible una versión que funcionaba con Microsoft OLE llamada D'OLE , [2] que permitía que el código distribuido escrito usando PDO en cualquier plataforma se presentara en sistemas Microsoft como si fueran objetos OLE locales.

PDO, por otro lado, dependía de un pequeño número de características en el entorno de ejecución Objective-C para manejar tanto la portabilidad como la distribución. La característica clave era el soporte del lenguaje para un método de "segunda oportunidad" en todas las clases; si una llamada a un método en un objeto fallaba porque el objeto no lo admitía (normalmente no se permite en la mayoría de los lenguajes debido a la tipificación estricta ), el entorno de ejecución empaquetaría el mensaje en un formato compacto y lo pasaría de vuelta al forwardInvocationmétodo del objeto. [3]

El comportamiento normal de forwardInvocationera devolver un error, incluidos los detalles tomados del mensaje (la "invocación"). [ aclaración necesaria ] PDO, en cambio, proporcionó una serie de nuevos objetos con forwardInvocationmétodos que pasaban el objeto de invocación a otra máquina en la red, con varias versiones para admitir diferentes redes y plataformas. La llamada a métodos en objetos remotos era casi invisible; después de una cierta configuración de red (unas pocas líneas, por lo general), los objetos PDO se instanciaban localmente y se llamaban de la misma manera que cualquier otro objeto en el sistema. Luego, el objeto PDO reenviaba la invocación a la computadora remota para su procesamiento y desagregaba los resultados cuando se devolvían.

En comparación con CORBA , los programas PDO tenían típicamente un tamaño de 1/10 o menos; era común que el personal de NeXT escribiera en revistas mostrando cómo reimplementar un artículo CORBA de varias páginas en quizás 15 líneas de código. [4] Desde un punto de vista de 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 C++ era más utilizado y el esfuerzo por cambiar las bases de código a un lenguaje y paradigma completamente nuevos se consideraba demasiado oneroso. [5] PDO nunca se utilizó mucho y el énfasis de NeXT se trasladó 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 ese motivo.

Además de la plataforma OS X, existe GNUstep , que tiene su propia implementación de Objetos Distribuidos. [6]

Véase también

Referencias

  1. ^ Nash, Kim S. (28 de marzo de 1994). "El puerto NextStep a DEC OSF/1 está en camino". Computerworld . p. 24 . Consultado el 5 de marzo de 2022 .
  2. ^ "NeXT lanza 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 .
  3. ^ Apple, Inc. (19 de octubre de 2009). «Reenvío de mensajes» . Consultado el 22 de noviembre de 2017 .
  4. ^ Ernest N. Prabhakar (1 de agosto de 1995). "Implementación de objetos distribuidos". Revista del Dr. Dobb . CMP Technology . Consultado el 8 de febrero de 2008 .
  5. ^ "¿En qué se diferencian C, C++, C# y Objective-C?". Codecademy News . 2022-03-04 . Consultado el 2022-10-17 .
  6. ^ Adam Fedor (26 de mayo de 2007). «Objetos distribuidos». Manual de programación básica de Objective-C GNUstep . Proyecto GNUstep . Consultado el 9 de agosto de 2007 .

Enlaces externos