IDL Y ORB



IDL ayuda al ORB a cumplir su papel. Un ORB es una capa de software que no puede recibir llamadas directas por un cliente a servicios de los servidores, ya que desconoce a los objetos servidores que se diseñarán a lo largo de su vida. El ORB solo puede proporcionar unos servicios genéricos del tipo llamar método ¿pero como averigua el nombre del método correspondiente en el servidor?, lo suyo sería poder hacer llamadas desde el cliente al servidor viendo sus métodos en el lenguaje propio del cliente. Con IDL se consiguen ambas cosas. Un compilador de IDL genera unas librerías especificas, por ejemplo DDLS, para los lenguajes de programación, que funcionan como vía de comunicación con el ORB. Las llamadas al servidor que se realizan desde el cliente se empaquetan por el stub y se convierten en llamadas genericas al ORB. Este se encarga de localizar el servidor, ya sea localmente o a través de una red. En la parte del servidor se habla de los IDL-Skeletons. Para pasar la llamada del cliente al servidor, el ORB llamaría a una capa intermedia (el object Adapter) y éste al IDL-Skeleton para acceder al método de la implementación del servidor. La idea es que el skeleton conoce el nombre del método que debe llamar, ya que fue generado junto con el servidor. Debe traducir por tanto la llamada genérica que recibe del object adapter a la llamada correcta al objeto servidor, aportando el object adapter unos servicios que ayudan a localizar el skeleton y objeto correcto. Delphi 4 soporta IDL y dos de los tipos de datos usados en CORBA (struct y union) IDL supone una revolución en el mundo cliente/servidor. Además del código generado por el compilador de IDL, se genera información sobre la interfaz accesible por todo el sistema que se almacena en una base de datos propia del ORB llamada Interface Repository, identificada en todo el sistema por el repository IDS con objeto de no crear inconsistencias al usar varios orbs de distintos fabricantes. Esta información es útil para poder generar llamadas dinámicas, llamadas en tiempo de ejecución. Para ello, un cliente consulta la información necesaria mediante unos servicios del Interface Repository y construye a partir de esta la llamada al servidor. CORBA provee para ello una interfaz especial llamada Dynamic Invocation Interface (DII) que el cliente puede usar para hacer la llamada dinámica tras haber obtenido la información necesaria para ello del repositorio, es decir, una referencia al objeto, función y parámetros. El equivalente de esto en la parte del servidor se conoce como Dynamic skeleton Interface(DSI) y es útil para permitir la asociación dinámica de la llamada a una función de un objeto servidor. La diferencia de prestaciones entre el Dynamico y estático es: El método estático es fácil de usar y rápido, mientras que el dinámico es más costoso en esfuerzo de programación y tiempo de ejecución pero a la vez mucho más flexible. Otro componente es el Object Adapter o adaptador de objetos. Su función principal consiste en generar e interpretar referencias a objetos, recibir las llamadas a un método de un objeto servidor que le llegan del ORB y pasarlas a través del IDL-Skeletoon o DSI al objeto correcto, activar/desactivar objetos y servicios de seguridad. Los OA pueden variar en los servicios que ofrecen en cada implementación de ORB especifica, pero todas deben soportar, al menos, la especificaión del Basic Object Adapter de CORBA que incluye los mencionados más un servicio mínimo de persistencia consistente en poder almacenar perfectamente una referencia de un objeto. Todo lo comentado anteriormente lo podemos ver reflejado en el siguiente cuadro: El módelo de comunicación de CORBA funciona en un principio de manera sincrona, un cliente que realiza una llamada debe esperar hasta que su petición se haya servido o surja un error. Sin embargo, existen otras modalidades, una se llama one-way-request y permite que el cliente no tenga que esperar, pero sujeta a la condición que no reciba resultados del servidor. Otra modalidad se conoce como deferred-synchronas-request, es decir, petición sincrona diferida. En este modo el cliente hace su petición, sigue ejecutandose y puede recoger más adelante los resultados de la llamada. Sus funciones son las siguientes: Los CORBA services u objectservices proporcionan una serie de servicios para el móldeado lógio y almacenamiento físico de objetos. Aquí entran el ciclo de vida, persistencia, eventos, dentificadores/denominación y transacciones robustas. La CORBAfacilies consiste en una serie de clases dedicadas a funciones genéricas para distintos tipos de aplicaciones y contienen servicios como soporte de GUIS, de impresión… Los CORBAdomains están dedicados a ámbitos, dominios especificos de aplicaciones como aplicaciones financieras, Cad,etc.. De momento están sin especificar pero serán básicamente marcos de trabajo especializados en los distintos dominios. Los Application object representan a los objetos de la aplicación en sí, es decir, los que diseña e implementa el desarrollador. Corba permite comunicar objetos distribuidos.


(C) 1999 Database DM. la reproduccion total o parcial de este documento, asi como la divulgación de parte o la totalidad