martes, 23 de abril de 2013

5.2 CORBAWEB


5.2 CORBAWEB
En un sentido general, CORBA “envuelve” el código escrito en otro lenguaje, en un paquete que contiene información adicional sobre las capacidades del código que contiene y sobre cómo llamar a sus métodos. Los objetos que resultan, pueden entonces ser invocados desde otro programa (u objeto CORBA) desde la red. En este sentido CORBA se puede considerar como un formato de documentación legible por la máquina, similar a un archivo de cabeceras, pero con más información.
CORBA utiliza un lenguaje de definición de interfaces (IDL) para especificar las interfaces con los servicios que los objetos ofrecerán. CORBA puede especificar a partir de este IDL, la interfaz a un lenguaje determinado, describiendo cómo los tipos de dato CORBA deben ser utilizados en las implementaciones del cliente y del servidor. Implementaciones estándar existen para AdaCC++SmalltalkJava,PythonPerl y Tcl.
Al compilar una interfaz en IDL se genera código para el cliente y el servidor (el implementador del objeto). El código del cliente sirve para poder realizar las llamadas a métodos remotos. Es el conocido como stub, el cual incluye un proxy(representante) del objeto remoto en el lado del cliente. El código generado para el servidor consiste en unos skeletons (esqueletos) que el desarrollador tiene que rellenar para implementar los métodos del objeto.
CORBA es más que una especificación multiplataforma, también define servicios habitualmente necesarios como seguridad y transacciones. Y así este no es un sistema operativo en si, en realidad es un middleware.
La OMG El Object Management Group (OMG) es responsable de la definición de CORBA. El OMG comprende más de 700 empresas y organizaciones, incluyendo casi todos los principales fabricantes y desarrolladores de tecnología de objetos distribuidos, incluyendo la plataforma, base de datos y proveedores de aplicaciones, así como de herramientas de software y desarrolladores

UNIDAD 5: LOS MODELOS DE OBJETOS DISTRIBUIDOS ACTUALES


UNIDAD 5: LOS MODELOS DE OBJETOS DISTRIBUIDOS ACTUALES
5.1 WEB OBJETS
WebObjects es un producto desarrollado por Apple desde hace unos diez años. La versión actual del software es la 5.2 en la que el entorno está basado completamente en la tecnología Java desarrollada por Sun Microsystems, lo que lo convierte evidentemente en un sistema orientado a objetos. Este conjunto de herramientas que forman WebObjects permiten desarrollar distintos tipos de aplicaciones, de las cuales lo más común es la creación de aplicaciones web (aunque permite desarrollar cualquier tipo de aplicación Java como por ejemplo aplicaciones de escritorio con interfaz gráfica de usuario, apartado que no se verá en este informe). Un ejemplo de lo que se puede llegar a desarrollar con el framework para aplicaciones web es la “Apple Store1” (ver Figura 1). En un principio se usaba como lenguaje base del entorno Objective-C pero desde la versión 5.0 todo el sistema está totalmente escrito en Java. ¿Cuál es la importancia de que se use este lenguaje? Básicamente esto es importante por varias razones: No es necesario aprender un nuevo lenguaje de programación para la web, ya que Java es suficientemente conocido por los programadores con experiencia. Este lenguaje permite que las aplicaciones WO2 sean portables a cualquier sistema en el que haya una máquina virtual Java instalada (como por ejemplo, Macintosh, Linux, MS Windows…)
aparición de estándares como XML) es lo que ha llevado a la creación de los servidores de
aplicaciones. Un servidor de aplicaciones básicamente es un entorno que guarda su contenido en una base de datos y emplea alguna forma de scripting para crear páginas web dinámicamente. Esto permite a los desarrolladores crear sitios con contenido fácilmente actualizable. Todo ello hace que el entorno sea bastante complejo.
La arquitectura de WebObjects está basada en separar la capa de acceso a bases de datos, el código Java específico de la aplicación y la capa de presentación de la página web, todo ello soportado por un entorno orientado a objetos y por un motor de mapeo objeto-relacional que permite interactuar con bases de datos relacionales mediante objetos.
La separación en esas tres grandes partes es lo que explica la existencia de sus aplicaciones más importantes: EOModeler (encargado del acceso a la base de datos), ProjectBuilder (se ocupa del código Java) y WOBuilder (permite el diseño de la interfaz). En el capítulo 2 se explicarán con más detalle estas herramientas.
2. DESARROLLO EN WEBOBJECTS
En este apartado se hará una introducción a las tres principales herramientas de desarrollo que proporciona WebObjects3 (ver figura 3):
•Project Builder: es el corazón del entorno de desarrollo donde se podrá editar, compilar y depurar el código y organizar el proyecto.
•WebObjects Builder: esta herramienta permite crear la interfaz de la aplicación sin tener que crear directamente con un editor de texto el código HTML y asociar a las variables de este código métodos del código Java creado con Project Builder.
•EOModeler: quizás es la aplicación más poderosa del entorno de desarrollo. Permite definir y manejar relaciones entre objetos de la aplicación y registros de una base de datos.
2.1. Project Builder
Cuando un programador quiere construir una aplicación web mínimamente compleja, fácilmente nos encontramos con bastantes archivos. Un desarrollador experimentado sabrá como organizarlo para poder hacer un buen mantenimiento de la aplicación. WebObjects realiza ese trabajo por nosotros facilitándonos la organización del proyecto mediante esta aplicación.
Esta herramienta divide los archivos en distintos directorios según su funcionalidad para hacer más fácil encontrar lo buscado (por ejemplo, un determinado componente, un archivo java…) durante el periodo de desarrollo. Cuando se he encontrado el archivo, permite modificar su código mediante un avanzado editor de texto.
El editor que se incluye no es malo. Tiene soporte para resaltar mediante colores el código y automáticamente tabula las líneas. Pero, quizás quede un poco pequeño para los programadores expertos en Java que están acostumbrados a entornos como Forte for Java o NetBeans, además de que no tiene soporte para la generación automática de JavaDoc. Todo eso se ha tenido en cuenta y Project Builder nos permite usar un IDE externo para editar el código. Automáticamente detecta si un archivo ha sido modificado y es capaz de recargarlo para su posterior uso.
Una vez terminado el desarrollo de la aplicación, permite compilar y construir la WOA4 y poder probarla para su depuración. Aquí tiene una opción interesante ya que durante la ejecución el Project Builder muestra una ventana de consola que nos muestra información relativa a los componentes (como por ejemplo el inicio de sesión por parte del usuario).
Organización de un proyecto
Todos los archivos relacionados con la aplicación están organizados dentro de un proyecto WebObjects. Project Builder controla todos estos ficheros organizándolos en varias carpetas:
Classes (clases principales): contiene tres ficheros java – aplicación, sesión y acciones directas – que especifican el comportamiento por defecto de la aplicación, como por ejemplo el proceso de respuesta ante una petición de un cliente.
Components (componentes): una aplicación está formada por componentes, cada uno de los cuales representa una página web o una parte de ella. Un componente incluye varios ficheros que se verán en el apartado dedicado a WebObject Builder.
Resources (recursos): son los archivos de datos a los que la aplicación necesita tener acceso pero que no necesariamente se van a servir a los clientes (como por ejemplo archivos de configuración de la aplicación).
Web Server Resources (recursos del servidor web): contiene elementos estáticos que se servirán directamente al usuario a través del servidor web, como por ejemplo imágenes, archivos de sonido, archivos CSS o incluso páginas con HTML estático.
Frameworks (entorno de trabajo): contiene bibliotecas que añaden funcionabilidad a la aplicación. Pueden ser tanto librerías incluidas por defecto como otras creadas por el programador.
2.2. WebObjects Builder
En la aplicación anterior quedó clara la facilidad para editar el código de los distintos componentes5 pero, a la hora de crear una página web compleja, manejar su código directamente mediante un editor de texto puede resultar duro. Por ello el entorno de desarrollo incluye esta aplicación.
Esencialmente el WOBuilder es un editor de código HTML que incluye diversas opciones para añadir código especial webobjects dentro de una página. La herramienta dispone de dos opciones principales: un editor gráfico para previsualizar la página y un editor de texto para modificar manualmente el código HTML.
Elementos principales
Este código especial del que hablamos se inserta entre las etiquetas <WEBOBJECT> y </WEBOBJECT> y puede ser distintos tipos de elementos.
A continuación se muestran los elementos principales que se observan en la figura 6:
1- WOForm: es el equivalente a la etiqueta <FORM> de HTML.
2- WOTextField: usado junto con WOForm permite al usuario introducir texto en una variable.
3- WOTextArea: usado en un WOForm para aceptar largas cadenas de texto que introducirá el usuario.
4- WOSubmitButton: usado dentro de un WOForm, tiene la misma función que su homólogo en un formulario HTML.
5- WOResetButton: es el equivalente al botón reset de un formulario HTML
6- WOPopupButton: crea una lista desplegable en la que el usuario deberá elegir una de las variables.
7- WOString: muestra el contenido de la variable asociada a este elemento en el código Java.
8- WOHyperlink: al igual que en HTML se crea un hiperenlace a otra página, pero además añade la funcionalidad de apuntar a un método Java que retorna un componente.
9- WORepetition: usado para repetir secciones en las cuales se repite el código.
10- WOConditional: similar a una sentencia if, permite mostrar o no una parte del componente.
11- WOImage: muestra una imagen desde una ruta definida o la crea si la imagen es devuelta por un método Java.
A todos estos elementos se les puede asociar una variable cuyo nombre (value) será el mismo que tendrá en el código Java asociado a la página web (component). Dentro del código se especificará cómo se obtendrá el valor de la variable y podrá ser de una de estas tres formas:
  • La variable se puede asociar a una instancia de una variable del código Java.
  • El valor puede ser devuelto por un método.
  • Hay un método que da valor a la variable asociada.
5.2 CORBAWEB

4.9 EL WEB DE OBJETOS CON VISIBROKER.


4.9 EL WEB DE OBJETOS CON VISIBROKER.
Independencia de Sistemas Operativos y Lenguajes
Como ORB no es dominado por una sola compañía sino por un grupo, mientras uste pueda compilar su programa para un sistema operativo X y pueda comprar unas librerías ORB para el mismo sistema operativo (y que funcionen con su lenguaje), usted puede hablar con cualquier otro servicio en la red que exponga un ORB, sin importar qué sistema operativo o qué marca de ORB está ejecutándose en la máquina que expone el ORB.
CORBA es una Especificación
Tal como lo hicimos en las interfases, hay que ver lo que CORBA no es:
CORBA NO ES un productoCORBA es una especificación de como debe funcionar un set de librerías específicas para llamarse un ORB. Decir “yo sé usar CORBA” no es suficiente; usted normalmente debe decir cosas como “yo sé CORBA usando Visigenics”, o “yo sé CORBA usando IONA”. Visigenics e IONA son dos productos que implementan la tecnología CORBA. Los productos que implementan CORBA se llaman ORBs.
CORBA NO ES un lenguajeDe la misma manera, Visigenics (un ORB) está disponible para varios lenguajes bajo varias plataformas (Visigenics for C++/Linux, Visigenics for C++/Windows, Visigenics for Java). Pero CORBA en sí mismo no es un lenguaje, sino una serie de librerías y servicios. Así que recuerde que cuando explique a otra persona que usted puede programar en CORBA, recuerde que debe decirlo de forma “Yo programo CORBA usando Visibroker para Delphi bajo Windows”, o “Yo programo CORBA usando Visibroker para Java”, etcétera.
Componentes de Visibroker
Visibroker es un ORB que cumple con todos los requerimientos de CORBA. Visibroker se compone de lo siguiente (Los nombres de servicio entre comillas son los nombres de la implementación de Visibroker en particular):
Librerías de CORBA.Las librerías de CORBA le ayudan a los programas a exponer métodos CORBA y a utilizar los métodos desde los programas Clientes.Las librerías de CORBA pueden ser de dos tipos:Servicio de Nombres “SmartAgent”
ORBEl ORB es el exportador e importador de interfases. Todos los clientes y servidores deben inicializar el ORB y utilizarlo para obtener interfases. Básicamente el ORB es el que interpreta los punteros de interfases y los traduce a mensajes de red, o recibe llamadas de red y los traduce a punteros locales para su ejecución.
Adaptador de Objetos Básico (BOA)El adaptador de Objetos Básico (Basic Object Adaptor) es la librería que le ayuda a exportar el puntero de interfase. Se utiliza en el servidor.Nota: En computación distribuida, los términos “servidor” y “cliente” pueden resultar intercambiables, ya que el cliente puede implementar objetos y exportarlos al servidor. En estos casos, los clientes también necesitan usar el BOA (pero solo si exportan interfases). Esto será mas claro en los ejemplos, pero recuerde que “cliente” y “servidor” son roles que puede jugar un ejecutable en cualquier momento.
El servicio SmartAgent le ayuda a exportar un objeto para su utilización en una red local. Si usted tiene el código de interfase I.O.R. en específico, usted no necesita un servicio de nombres.
Servicio de Activación “OAD”Cuando usted escribe un programa COM que exporta interfases, Windows utiliza uno de sus servicios internos (TODO:Averiguar Nombre del Servicio) para ejecutar el archivo (.exe, .dll, etc) donde la interfase “vive”. CORBA no es una tecnología que dependa en el sistema operativo, así que el servicio de activación tiene una lista de las interfases y los nombres de sus ejecutables para poder iniciar automáticamente el ejecutable. Note que si usted comienza el ejecutable por sí mismo, no necesita registrarlo en el OAD. De esta manera, usted puede tener varios servicios en su AUTOEXEC.BAT (o lista de servicios en Windows NT) que aceptarán peticiones de los clientes.
Compilador de IDLIDL es un lenguaje “neutral” para definición de interfases. Como tal, tiene declaraciones pero no tiene sintaxis de control (for, do while, etc). Bajo CORBA, usted describe su interfase utilizando IDL y utiliza el compilador de IDL para crear clases de apoyo a su implementación, y clases auxiliares para que los clientes puedan crear instancias del objeto.
Visibroker y Delphi
La versión de Visibroker que viene con Delphi 4 es:
prompt> vbver oad.exe Information for: /Program Files/Borland/vbroker/Bin/oad.exe Product Name: VisiBroker for C++ Version: 03.02.00.C2.02 Copyright: (C) 1996, 1998 Company: Visigenic Software, Inc. Build Date: 03/02/1998 11:57:32

4.8 ASIMILACION DE UNA IMPLEMENTACION DE CORBA: VISIBROKER FOR JAVA


4.8 ASIMILACION DE UNA IMPLEMENTACION DE CORBA: VISIBROKER FOR JAVA
Tener una visión global de las tecnologías de  integración de aplicaciones heterogéneas y su aplicación Centrarse en un caso de estudio: CORBA y  Servicios Web con Java,  Aprender lo esencial de ambos frameworks  Aprender técnicas de diseño (patrones)
n ¡ Reusables con otras tecnologías !
n Aprender técnicas de implementación (idiomas)
n Realización de prácticas para consolidar  conocimientos
Los objetos CORBA se describen mediante interfaces IDL
La OMG IDL Interface Definition Language compatible con la especificación de las interfaces de los objetos. Una interfaz de objeto indica las operaciones que el objeto admite, pero no cómo se implementan.Es decir, en IDL no hay manera de declarar el estado del objeto y los algoritmos. La implementación de un objeto CORBA se presenta en un lenguaje de programación estándar, tales como el lenguaje de programación Java o C + +. Una interfaz especifica el contrato entre el código que utiliza el objeto y el código de la aplicación del objeto. Los clientes sólo dependen de la interfaz.
Interfaces IDL del lenguaje de programación neutral. IDL define enlaces de lenguaje de muchos lenguajes de programación diferentes. Esto permite que un implementador objeto de elegir el lenguaje de programación adecuado para el objeto. Del mismo modo, permite que el desarrollador del cliente de elegir el lenguaje de programación adecuado y posiblemente diferentes para el cliente. En la actualidad, la OMG ha estandarizado en enlaces de lenguaje para el C, C + +, Java, Ada, COBOL, Smalltalk, Objective C, y los lenguajes de programación Lisp.
Así mediante el uso de OMG IDL, el siguiente puede ser descrita sin relación a cualquier lenguaje de programación:
Modularizados interfaces de objetos
Las operaciones y los atributos que un objeto admite
Las excepciones planteadas por la operación
Tipos de datos de un valor de retorno operación, sus parámetros y atributos de un objeto
Los tipos IDL datos son:
Tipos de datos básicos ( largo , corto , cadena , boya …)
Construidos los tipos de datos ( struct , union , enumeración , secuencia )
Referencias con tipo de objetos
La de cualquier tipo, un valor de tipo dinámico
Una vez más, IDL dice nada acerca de la implementación de objetos. Aquí está la interfaz IDL para los objetos de ejemplo de acciones:
El módulo define un ámbito de aplicación de estos nombres. Dentro del módulo, una estructura de datos Cita y una excepción desconocida se definen y utilizan a continuación en el archivo de interfaz. Elarchivo de interfaz se utiliza en la definición de la StockFactory interfaz. También tenga en cuenta que los parámetros de las operaciones están etiquetados con las palabras clave en , a , o INOUT . El depalabra clave indica que los datos se pasa del cliente al objeto. El cabo por palabra clave indica que los datos se devuelven desde el objeto hasta el cliente, y INOUT indica que los datos se pasan desde el cliente al objeto y luego se devuelve al cliente.
Declaraciones IDL se compilan con un compilador de IDL y se convierten en sus representaciones asociadas en los idiomas de destino de programación de acuerdo a la unión de lengua estándar. (Este curso utiliza el Java el lenguaje obligatorio en todos los ejemplos. Más tarde podrás ver el enlace de Java con más profundidad.)
De referencias a objetos y Solicitudes
Clientes emitir una solicitud de un objeto CORBA usando una referencia de objeto . Una referencia de objeto identifica el objeto distribuido que va a recibir la solicitud. Aquí hay un lenguaje de programación Java fragmento de código que se obtiene un archivo objeto de referencia y luego lo utiliza para obtener el precio actual de la población. Tenga en cuenta que el fragmento de código no utiliza directamente los tipos CORBA, sino que utiliza los tipos de Java que se han producido por el compilador de IDL a Java.
Foto theStock = … try { Cita current_quote = theStock.get_quote (); } Catch (Throwable e) { }
Las referencias a objetos se puede pasar todo el sistema de objetos distribuidos, es decir, como parámetros para las operaciones y se devuelve como resultados de las solicitudes. Por ejemplo, observe que el StockFactory interfaz define un create () operación que devuelve una instancia de un archivo . Aquí hay un cliente Java fragmento de código que envía una solicitud en el objeto de fábrica y recibe la referencia de archivo objeto resultante.
Fábrica de StockFactory = … Foto theStock = … try { theStock factory.create = ( “GII”, “Global Industries, Inc.”); } Catch (Throwable e) { }
Tenga en cuenta que la emisión de una petición en un objeto CORBA no es tan diferente de la emisión de una petición en un objeto de Java en un programa local. La principal diferencia es que los objetos CORBA pueden estar en cualquier lugar. El sistema CORBA proporciona transparencia de ubicación, lo que implica que el cliente no puede saber si la solicitud es un objeto en el mismo proceso, en la misma máquina, por el pasillo, o en todo el planeta.
Otra diferencia de un local de objetos de Java es que el tiempo de vida del objeto CORBA no está vinculado al proceso en el que el cliente se ejecuta, ni al proceso en el que se ejecuta el objeto CORBA. Las referencias a objetos persisten, sino que puede ser guardado como una cadena y recreado a partir de una cadena.
El siguiente código de Java convierte el archivo de referencia de objeto a una cadena:
Cadena stockString = orb.object_to_string (theStock);
La cadena puede ser almacenada o comunicada fuera del sistema de objetos distribuidos. Cualquier cliente puede convertir la cadena de nuevo a una referencia de objeto y emitir una solicitud en el objeto distribuido.
Este código Java convierte la cadena de texto a un archivo objeto de referencia:
org.omg.CORBA.Object obj = orb.string_to_object (stockString); Foto theStock = StockHelper.narrow (obj);
Tenga en cuenta que el tipo resultante de la string_to_object () método es objeto , no de archivo . La segunda línea se reduce el tipo de la referencia de objeto a partir de objetos de archivo . IDL es compatible con una jerarquía de interfaces, el estrecho () llamada al método es una operación en la jerarquía.
IDL sistema de tipos
Interfaces IDL se puede definir en términos de otras interfaces IDL. Usted ya vio a un archivo de interfaz que representa el comportamiento básico de un objeto de archivo.
Considere la posibilidad de otro módulo IDL:
ReportingObjects módulo { EventChannelFailure excepción {}; {interfaz de informes / / Recibe los eventos en modo de inserción CosEventComm :: PushSupplier push_events ( en CosEventComm :: PushConsumer consumidor) plantea (EventChannelFailure); / / Recibe los eventos en el modo de tracción CosEventComm :: PullSupplier pull_events ( en CosEventComm :: PullConsumer consumidor) plantea (EventChannelFailure); }; };
La presentación de informes interfaz es compatible con el registro de interés en los acontecimientos. (No te preocupes por los detalles de usar el servicio de sucesos CORBA.)
Teniendo en cuenta la definición del archivo de interfaz y un Informe de la interfaz, ahora es posible definir un nuevo ReportingStock interfaz en términos de presentación de informes y archivo .
ReportingStock interfaz: Presentación de informes, archivo { };
Un ReportingStock soporta todas las operaciones y atributos definidos por la presentación de informes de interfaz, así como todos los que se definen por el archivo de interfaz. El ReportingStock interfaz hereda el archivo de interfaz y la presentación de informes de la interfaz. Gráficamente esto se representa como:

Todas las interfaces CORBA heredan implícitamente el objeto de la interfaz. Todos ellos apoyan las operaciones definidas para el objeto . La herencia de objetos es implícita, no hay necesidad de declararlo.
Las referencias a objetos se escriben mediante interfaces IDL. En un programa en Java puede escribir una referencia de objeto a ser un ReportingStock .
ReportingStock theReportingStock;
Los clientes pueden pasar esta referencia de objeto a una operación esperando un supertipo. Por ejemplo, asumir que hay una EventManager interfaz que tiene un registro de operación que toma un objeto de referencia escrito por el Informe de la interfaz.
interfaz de EventManager { : anular la inscripción (en Reporting event_supplier); : };
La siguiente es una solicitud legal debido a que un ReportingStock es una presentación de informes .
EventManager gerente = … TheReportingStock ReportingStock = … manager-> registro (theReportingStock); / / Ok
Sin embargo, los siguientes no es un requerimiento legal debido a que un archivo no es una presentación de informes :
EventManager gerente = … Foto theStock = … manager-> registro (theStock); / / tipo de error
IDL las operaciones de tipo
Dado que las interfaces IDL pueden estar dispuestos en una jerarquía, un pequeño número de operaciones que se definen en la jerarquía. La estrecha () pone en funcionamiento una referencia de objeto a un tipo más específico:
org.omg.CORBA.Object obj = … Foto theStock = StockHelper.narrow (obj);
El is_a () la operación, determina si una referencia de objeto compatible con una interfaz en particular:
if (obj._is_a (StockHelper.id ()) …
El id () operación definida en la clase de ayuda devuelve un identificador de repositorio para la interfaz. La Identificación del repositorio es una cadena que representa la interfaz. Para el ejemplo de valores, la Identificación del repositorio es:
IDL: StockObjects o de archivo: 1.0
Finalmente, es posible ampliar un objeto de referencia, que se echó a un interfaz menos específica:
Foto theStock = theReportingStock;
No hay operaciones especiales para ampliar un objeto de referencia. Se lleva a cabo exactamente como en el lenguaje de programación Java.
Solicitar verificación de tipos
El compilador de IDL para el lenguaje de programación Java del lado del cliente genera los talones, lo que representa el objeto CORBA a nivel local en el lenguaje de programación Java. El código generado también representa en el lenguaje de programación Java de todas las interfaces IDL y tipos de datos utilizados para enviar las solicitudes. El código de cliente por lo tanto depende de la generada por el código de Java.

4.7 JUSTIFICACION DE UNA ARQUITECTURA CON OBJETOS DISTRIBUIDOS PARA EL WEB


4.7 JUSTIFICACION DE UNA ARQUITECTURA CON OBJETOS DISTRIBUIDOS PARA EL WEB
Definición:
“Sistemas cuyos componentes hardware y software, que están en ordenadores conectados en red, se comunican y coordinan sus acciones mediante el paso de mensajes, para el logro de un objetivo. Se establece la  comunicacion  mediante un protocolo prefijado por un esquema cliente – servidor.
Características:
Concurrencia.- Esta característica de los sistemas distribuidos permite que los recursos disponibles en la red puedan ser utilizados simultáneamente por los usuarios y/o agentes que interactúan en la red.
Carencia de reloj global.- Las coordinaciones para la transferencia de mensajes entre los diferentes componentes para la realización de una tarea, no tienen una temporización general, esta más bien distribuida a los componentes.
Fallos independientes de los componentes.- Cada componente del sistema puede fallar independientemente, con lo cual los demás pueden continuar ejecutando sus acciones.
La arquitectura CORBA está orientada a objetos. Los objetos CORBA presentan muchas características de otros sistemas orientados a objetos, incluyendo la herencia de interfaces y el polimorfismo. Lo que hace a CORBA más interesante es que proporciona estas capacidades, incluso cuando es utilizado en lenguajes no orientados a objeto como C o COBOL, aunque CORBA trabaja particularmente bien con los lenguajes orientados a objeto como C++ y Java.

Dentro de las nuevas técnicas y lenguajes de modelado de objetos, cabe destacar la notación estándar UML (Unified Modeling Language), cuya última actualización es UML 1.2 a mediados de 1998. UML es una evolución de las metodologías orientadas a objeto anteriores, como Booch, OMT, y OOSE, tratando de unificar lo mejor de cada una de ellas. UML ha dado lugar un potente lenguaje visual, para expresar diseños orientados a objetos, consistente en palabras, textos, gráficos y símbolos.
Cabe destacar, sin embargo, que UML es sólo un estándar de notación. Esencialmente, define un cierto número de diagramas que se pueden dibujar para describir un sistema y el significado de dichos diagramas. UML no describe el proceso a seguir al desarrollar el software, también considerado en la metodología formal tradicional.
La computación distribuida a objeto es un paradigma de computación que le permite a los objetos ser distribuidos a través de una red heterogénea, y permite que cada uno de los componentes interactuar como un todo unificado. Para una aplicación a un entorno de objetos distribuidos, y tal como se expresa en el lema de Sun Microsystem, la red es el ordenador. La orientación a objetos puede simplificar radicalmente el desarrollo de sistemas. Distribuye los modelos de objetos y herramientas de extender un sistema de programación orientado a objetos. Los objetos pueden ser distribuidos en distintos ordenadores a través de una red, que viven dentro de su biblioteca propia dinámica fuera de una aplicación, y sin embargo aparecen como si fueran locales en la aplicación.
Varias ventajas técnicas el resultado de un entorno de objetos distribuidos es que:
Los activos heredados se pueden aprovechar.
Los programadores tienen la posibilidad de distribuir los componentes de una aplicación a los equipos que mejor se adapten a la tarea de cada objeto, sin tener que cambiar el resto de la aplicación que utiliza estos objetos.
Dado que los objetos parecen ser locales a sus clientes, el cliente no sabe lo que la máquina, o incluso qué tipo de máquina, un objeto se encuentra en.
La integración de sistemas se puede realizar en un grado superior. El objetivo general técnica de la computación de objetos distribuidos es clara: para avanzar en tecnologías de la información distribuida de manera que puedan ser más eficientes y flexibles, pero menos complejo. Los beneficios de objetos distribuidos son de hecho las soluciones a los problemas con los actuales, monolítica cliente / servidor paradigmas.
  Desarrollo basado en componentes
Representa la “industrialización” de desarrollo de software. Cuando cualquier proceso de fabricación se desarrolla hasta el punto en que puede estar basado en componentes pre-construidos y subconjuntos, la calidad del producto, la cantidad y velocidad de entrega se disparan. Este principio se aplica igualmente a los sistemas de desarrollo de software, lo que permite una calidad sin precedentes, la velocidad de desarrollo y gestión de cambios muy eficaz.
COM:  Proporciona la tecnología de componentes para aplicaciones de Microsoft Internet de Windows distribuido (Windows DNA), la arquitectura, que permite a los desarrolladores integrar aplicaciones basadas en Web (cliente / servidor) en una arquitectura única y unificada. Mediante los COM, los desarrolladores pueden crear componentes distribuidos que están escritas en cualquier idioma y que pueden interactuar en cualquier red.
COM +: Hará que sea aún más fácil para los desarrolladores para crear componentes de software en cualquier idioma con cualquier herramienta. COM + se basa en los factores que han hecho de COM de hoy la elección de los desarrolladores en todo el mundo, incluyendo los siguientes:
Los más ricos de servicios integrados, incluyendo las transacciones, la seguridad de colas de mensajes y acceso a la base de datos para apoyar la más amplia gama de escenarios de aplicación.

La más amplia selección de herramientas de múltiples proveedores con múltiples lenguajes de desarrollo.

La mayor base de clientes de aplicaciones personalizables y componentes reutilizables.

Demostrado su interoperabilidad con los usuarios y los desarrolladores de ‘las inversiones existentes. (Microsoft)
CORBA.- 
Desarrollado por el Object Management Group (OMG) en 1990, permite a las invocaciones de los métodos de objetos distribuidos que residen en cualquier parte de una red, como si fueran objetos locales. Una implementación de CORBA Object Request Brokers emplea (ORB), que se encuentra tanto en el cliente y el servidor, para crear y administrar comunicaciones cliente / servidor entre objetos. Orbes son la clave de la arquitectura de objetos distribuidos CORBA. Para facilitar estas peticiones y proporcionar interoperabilidad ORB, la especificación CORBA 2.0 describe un protocolo llamado Internet Inter-ORB Protocol, que ha sido rápidamente adoptada por los líderes de la industria (IBM, Oracle Netscape). (EarthWeb)

JavaBeans: La plataforma neutral en la arquitectura de componentes de Java, ha demostrado ser invaluable en el desarrollo de la red de las aplicaciones compatibles. Usted puede hacer cualquier clase Java en un grano con sólo cambiar la clase a que se adhieran a la especificación de JavaBeans. Depende de usted decidir lo que quiere el diseño como un grano y lo que quiere para el diseño como una clase Java: Es una buena idea dejar todas las librerías de clases como clases de Java, pero la interfaz gráfica de usuario (GUI) los elementos se pueden diseñar a los frijoles, los frijoles y algunos – como los frijoles en un servidor – pueden ser no-GUI-relacionados. Independientemente de su funcionalidad, cada grano debe apoyar las siguientes características y el comportamiento: la persistencia, la manipulación visual, la introspección, eventos y personalización.

4.6 LA CONFLUENCIA DE CORBA Y EL WEB


4.6 LA CONFLUENCIA DE CORBA Y EL WEB
Cuando se piensa en desarrollar software se piensa en un grupo de trabajo en el que definitivamente como factor clave debe imperar un amplio conocimiento tecnológico y filosófico. Un modelo lógico que funcione, no necesariamente está bien formado, y es precisamente este el punto que hace la diferencia entre un producto software bien desarrollado y un producto con deficiencias, que difícilmente crecerá. Tecnológicamente existen diversas herramientas de soporte a un buen desarrollo, sin embargo no muchas filosofías.
La propuesta orientada a objetos ha madurado lo suficiente para ser aceptada y por su puesto confiable, sin embargo existen enfoques que sin ser radicalmente nuevos, y que de hecho están basados en el modelo de objetos, pueden contribuir a mejores resultados, o al menos esta es la propuesta de los componentes, cuya abstracción del mundo la basan en unidades de carácter específico con alta cohesión e independencia. Existen tres grandes alternativas para la construcción de software basado en componentes, estas son, los COM los JavaBeans y la filosofía CORBA teniendo en cuenta que CORBA es ante todo una filosofía de componente distribuido mientras COM y Beans pueden solventarse como componentes cliente.
El modelo de objeto componente COM mostrado en la figura 1 fue creado bajo la filosofía de reusabilidad y facilidad para el desarrollo de software. Provee un amplia posibilidad en servicios, herramientas, lenguajes y aplicaciones.
COM ofrece una extensa gama en integración de herramientas de desarrollo y trasportabilidad en red. Ofrece gran flexibilidad y seguridad. COM permite el manejo de transacciones y transferencia de datos de manera transparente y segura.
Una de las características interesantes de COM es la compatibilidad con protocolos como TCP, UDP, IPX, SPX, HTTP lo cual permite tanto a nivel de clientes como de servidores compartir aplicaciones que hablan un mismo idioma y cuya ejecución en ambos tendrán comportamientos similares.
Esta flexibilidad hace juego con el alto nivel de seguridad que se puede manejar directamente en COM con protocolos como SSL, IPSEC y NT4 “security”. Bajo este esquema de red el COM se extiende con la concepción de DCOM o modelo de objeto componente distribuido.
Un objeto COM es muy parecido a una instancia de clase C++ o un paquete ADA. De hecho, COM fue pensado básicamente en una sintaxis muy parecida a la empleada en C++. COM soporta encapsulación, polimorfismo y reusabilidad.
Es importante tener en cuenta que COM fue diseñado para ser compatible a nivel binario, por tanto es independiente de la arquitectura, a diferencia de lenguajes que como el C++ deben ser compilados, factor que los hace dependientes de la plataforma en particular sobre la cual se compile.
Como un objeto binario un objeto COM se preocupa por la interacción con otros objetos. Cuando COM no se utiliza en el entorno de su creador se expone una interfaz visible desde otros entornos no nativos.
Debe tenerse presente que COM no es un lenguaje aunque se asocie a C++ y su sintaxis. COM es ante todo un estándar que permite a los componentes de software interactuar entre sí con todas las propiedades de los objetos, brindando también la posibilidad de trabajar con cualquier lenguaje que soporte la estructura binaria de un objeto COM.
Tanto objetos OLE como su tecnología sucesora ActiveX están construidas basadas en objetos COM a través de interfaces que brindan un manejo robusto pero flexible y transparente para el usuario.
Mediante un conjunto de interfaces bien diseñadas es posible construir un documento ActiveX que pueda operar dentro de cualquier contenedor ActiveX, sin saber nada mas sobre éste, a excepción de la existencia de un conjunto de interfaz COM, que permiten al usuario combinar componentes de maneras quizá no generadas por el mismo desarrollador de una aplicación.
Es importante recordar, que la tecnología ActiveX es básicamente una escala mas allá de la tecnología OLE y pensada fundamentalmente como tecnología orientada a Internet, con elementos y características propias como hipervínculos, conferencias ActiveX, extensión ActiveX para servidores, firma de código, ActiveMovie y otra serie de conceptos que hacen pensar no solo en utilización de objetos componentes, sino también en objetos componentes distribuidos DCOM, los cuales se constituyen como una extensión de Network OLE y que nos permiten vincular objetos a través de la red
JavaBean cuya visión se muestra en la figura No.2 es un modelo de componente portable e independiente de la plataforma, escrito en Java, que habilita a los desarrolladores escribir componentes reutilizables que corran bajo cualquier arquitectura.
Un JavaBean puede actuar como puente entre modelos de componentes. También ofrece un poderoso significado a la construcción de componentes que actúen junto con la tecnología ActiveX para la cual ya existen en el mercado productos con APIs prometedoras.
Cuando se habla de Bean “JavaBean” es importante no confundirlo con la mínima aplicación en java creada pensando en el web, esto es el Applet, pues Bean ante todo tiene un significado de componente en el que podemos distinguir características tan interesantes como la personalización, manejo de eventos, persistencia y otras que hacen de un Bean una filosofía robusta y consistente para el desarrollo de software.
Usar componentes como JavaBeans permite a los desarrolladores construir código portable y reusable, dos características fuertes y deseadas en todo buen software y que dan la posibilidad de atacar rápidamente nuevas oportunidades de mercado y desarrollo, con nuevas formas de vender pequeños paquetes de software, que hoy por hoy constituyen un campo de acción de grandes dividendos.
JavaBean es un modelo de componente en toda su extensión, soportando el estándar de la arquitectura y ofreciendo un ambiente ideal para el desarrollador, quien desea extender el concepto de reusabilidad de componentes más allá de la plataforma.
Sun Microsystems ha pensado en la tecnología JavaBean con gran acierto, viendo un mercado de componentes, bastante amplio y atractivo e incluso pensado en la filosofía BeanBox que aunque planeada como un contenedor de prueba de JavaBean, puede apuntarse como un ambiente de desarrollo que permite en gran medida evaluar el comportamiento de componentes java.
Existen además dos especificaciones de nombres de códigos como son Glasgoew  y Edinburgh de especificación de JavaBeans que ofrecen características como extensibilidad en los protocolos de servicios, modelos de agregación- delegación, capacidad de plataforma nativa “drag and drop” con lo que se puede extender con gran fuerza el alcance, que de por sí desde sus inicios tiene el componente java.
CORBA “Common Object Request Broker Architecture” mostrada en la figura No. 3 especifica un sistema que provee interoperabilidad entre objetos dentro de un ambiente heterogéneo y distribuido, brindando un método transparente de desarrollo. Se trata de un estandar de sistemas de objetos distribuidos. Esta arquitectura está diseñada con base en el modelo de objeto de la OMG (Object Managemet Group)que ofrece una semántica de objeto común para especificar externamente las características visibles de los objetos en forma estándar e implementación independiente.
En este modelo los clientes requieren servicios de los objetos a través de las interfaces definidas, especificadas por la OMG como IDL (Interface Definition Language). El elemento central de CORBA es el ORB “Object Request Broker”, el cual abarca toda la infraestructura de comunicación necesaria para identificar y localizar objetos.
En general ORB no se utiliza para hacer un componente simple, éste es definido para realizar sus interfaces.
Existen en el mercado diversos productos ORB, dirigidos a suplir las necesidades de ambientes operacionales específicos, lo cual exige necesariamente formas de interoperabilidad entre ellos, normalizados por la arquitectura CORBA. Es por lo cual CORBA introduce conceptos de alto nivel de un dominio, en el que se circunscribe un conjunto de objetos de implementación o de administración separados de los otros objetos.
Esto hace necesario a su vez mecanismos de puenteo entre dominios en orden a interactuar adecuadamente. El aprovechamiento de la interoperabilidad se puede dividir en puenteo inmediato y puenteo intermediario. Cuando se habla de puenteo intermediario los elementos intermediarios de un dominio son transformados al límite de cada dominio entre la forma específica interna a este dominio y algunas otras formas mutuamente agregadas sobre el dominio. Esta forma común podría ser estándar o un acuerdo privado entre las dos partes.
Con puenteo inmediato, los elementos de interacción son transformados directamente entre la forma interna de un dominio y el otro. La segunda forma tiene un gran potencial a ser más rápida pero es menos general. Pero quizá sea adecuado usar las dos formas.
El puenteo puede ser implementado inmediato e intermediario internamente en un ORB o en su nivel superior. Si estos son implementados con un ORB estos son llamados puentes en línea, de otro modo son llamados puenteo de nivel de petición. El puenteo en línea puede ser implementado a través de requerimientos que el ORB provee o a través de la introducción adicional de código “stub code o skeleton code”.
Para hacer posible puenteo es necesario especificar alguna clase de sintaxis. Esta función es suministrada por General Inter – ORB Protocol (GIOP) definido por la OMG, el cual ha sido específicamente diseñado para cumplir con la necesidad de interacción de ORB a ORB. Aparte de la definición de la sintaxis de transferencia general la OMG también especifica, como va a ser implementada usando transporte TCP/IP definido como Internet-Inter-ORB Protocol (IIOP).
En orden a ilustrar la relación entre GIOP y IIOP. OMG apunta a que ello sea lo mismo que la relación entre IDL y su mapeo concreto, por ejemplo el mapeo sobre C++. IIOP está diseñado para proveer interoperabilidad con otros ORBs compatibles [4].
Una ventaja importante de Corba es la portabilidad de objetos entre sistemas distribuídos.
CONFLUENCIA DE LOS MODELOS DE COMPONENTES
Uno de los aspectos interesantes en los que confluyen los modelos de objetos componentes es el de las transacciones para lo cual COM, JavaBeans y CORBA tienen sus propias tecnologías.
Cuando hablamos de transacciones bajo COM debemos referirnos a los objetos MTS “Microsoft® Transaction Server” los cuales están típicamente diseñados para encapsular algún conjunto de funcionalidades del negocio. Por ejemplo un objeto MTS puede permitirle a un cliente realizar transferencias monetarias entre dos cuentas con gran flexibilidad y seguridad. Un objeto MTS básicamente puede ser invocado con la llamada directa de un objeto COM, en otras palabras usando un DCOM.
Por su parte JavaBean implementa para efectuar el servicio de transacción los EJB “Enterprise JavaBeans”. Una especificación EJB toma dos tipos de EJB diferentes, uno de ellos llamado la sección Bean la cual es muy similar al objeto MTS y el otro un objeto persistente llamado entidad Bean, con los cuales se suministra por un lado comunicación entre componentes y por otro seguridad. Ambos tipos de EJB pueden ser accedidos con JRMP “Java Remote Method Protocol” o a través de IIOP “Internet Inter- ORB Protocol” definido por la OMG.
Cuando hablamos de CORBA dirigido sustancialmente a aplicaciones distribuidas debemos mencionar entonces el conjunto de protocolo de la OMG bajo los cuales se normaliza una transacción, estos son IIOP y GIOP.
Otro aspecto importante a mencionar es el lenguaje sobre el cual se formulan cada una de las tecnologías de componentes citadas.
Cuando hablamos de COM se habla de una tecnología con posibilidades de implementación bajo diferentes lenguajes como C, C++, VB, Java, Fortran, Cobol, Perl, REXX, Javascript y muchos otros.
Cuando hablamos de JavaBean estamos hablando exclusivamente de una tecnología implementada sobre Java.
Si se trata de CORBA estamos hablando de una tecnología con un marco de implementación en lenguajes como C, C++, Java, Small Talk, cobol y ADA, no se puede implementar bajo lenguajes script.
La anterior consideración nos permite ver como COM puede ser un estándar de implementación con un rango mas amplio de lenguajes lo cual puede ser de alguna forma favorable, teniendo en cuenta lógicamente que la cantidad no necesariamente implica la calidad.
Sin lugar a dudas es necesario también hablar de otro aspecto importante a tener en cuenta cuando de componentes se trata, este es la seguridad. En el modelo componente de objeto COM hablamos de SSL clave pública, DCE o MIT Kerberos.
En el modelo de componente JavaBean podemos hablar de SSL.
En la arquitectura CORBA hablamos de múltiple variaciones de SSL para encriptar los datos que son enviados por internet.
En cuanto a protocolos de transporte sobre los cuales pueden los modelos de componentes desempeñarse podemos mencionar:
Para COM TCP IP, IP, IPX, SPX, HTTP. Para JavaBean; TCP IP, IP, IPX, HTTP. Para CORBA, TCP/IP Esta característica nos deja . entrever la flexibilidad de COM y JavaBean en cuanto a protocolos de transporte se refiere en comparación con la arquitectura CORBA la cual corre exclusivamente sobre TCP IP.
Desde luego se debe tener en cuenta la concepción bajo la cual fue creado CORBA con su énfasis distribuido el cual tiene grandes limitaciones no por su filosofía que de hecho es muy buena sino más bien sobre la infraestructura tecnológica que de alguna manera impone barreras importantes.
VI. CONCLUSIONES
Siempre que aparece en el mercado una nueva tendencia de desarrollo de software se crea una ansiedad hacia ella, mezclada con la incertidumbre de saber si será la más adecuada para un problema en particular. Surge ahí el gran trabajo de conocer su estructura y testificar si realmente es confiable, flexible y robusta.
Las características mencionadas sobre COM,JavaBean y CORBA nos presentan tres perspectivas de desarrollo de componentes, teniendo en cuenta lógicamente que CORBA ante todo hace una propuesta de componente pero con énfasis en objetos distribuidos.
Las tres con fortalezas significativas pero quizá con una característica común, la solidez no solo en el mercado sino en cuanto a la solución de problemas de software se refiere.
Las tres tendencias presentadas. COM, JavaBean y CORBA reafirman la tendencia que en este momento el mercado del software tiene, “El desarrollo de componentes” los cuales reúnen características singulares que los hacen tan atractivos entre las que podemos mencionar: portabilidad, compatibilidad, transportabilidad, seguridad, escalabilidad, y reusabilidad.
Otra de las consideraciones importantes a tener en cuenta, es el mercado de fabricantes de tecnologías, pues ello puede dar una visión de lo que se debe enfrentar. Esto para hacer referencia a lo que muchos expertos podrían llamar el monopolio de los fabricantes.
Por un lado, se puede ver el sello Microsoft con COM y por otro Sun Microsystem con JavaBean, además de CORBA del grupo de investigación OMG. Se tendrá que escoger quizá como parámetro principal de elección, la tecnología que cumpla con una mayor estandarización y solidez, tarea que puede resultar un poco complicada sino se efectúa un estudio a fondo de la tecnología en cuestión.