scieee Open visual document viewer

Descripción y utilización práctica del patrón de diseño Callback Distribuido en aplicaciones distribuidas con CORBA (LSI-2000-04)

Peña Siles, Joaquín; Leal, Francisco; Corchuelo Gil, Rafael

Full text

' (6&5,3&,Ï1<87,/,=$&,Ï135È&7,&$'(/3$75Ï1'(',6( 2 & $//%$&. ' ,675,%8,'2(1$3/,&$&,21(6',675,%8,'$6&21 &25%$ -RDTX Q3HxD)UDQFLVFR/HDO 5DIDHO&RUFKXHOR ,QIRUPH7pFQLFR 'SWR/HQJXDMHV 6LVWHPDV,QIRUPiWLFRVGHOD8QLYHUVLGDGGH6HYLOOD $YGDGHOD5HLQD0HUFHGHVVQ6HYLOOD (PDLOMSHQD#OVLXVHV 3DWURQ&DOOEDFN'LVWULEXLGRSDUDDSOLFDFLRQHV&25%$  ,1',&( ,1752'8&&,Ï1  )81'$0(1726'(&25%$  02'(/2(175(6&$3$6  2.1.CAPA CLIENTE......................................................................................................7 2.2. CAPA LÓGICA O AGENTE......................................................................................7 2.3. CAPA SERVIDOR ..................................................................................................8 2.4. INTERCONEXIÓN ENTRE CAPAS.............................................................................8 (QODFH$JHQWH6HUYLGRU  (QODFH&OLHQWH$JHQWH  3$7521'(',6( 2&$//%$&.',675,%8,'23$5$$3/,&$&,21(6 &25%$  3.1. INTRODUCCIÓN..................................................................................................10 3.2. DESCRIPCIÓN DEL PATRÓN.................................................................................10 ,QWHQFLyQ  0RWLYDFLyQ  $SOLFDELOLGDG   &RQVHFXHQFLDVYHQWDMDVHLQFRQYHQLHQWHV   ,PSOHPHQWDFLyQ  (-(03/2'($3/,&$&,Ï1  4.1. INTRODUCCIÓN..................................................................................................15 4.2. DESCRIPCIÓN DE LA APLICACIÓN A DESARROLLAR..............................................15 4.3. MODELADO DE LA APLICACIÓN. .........................................................................18 4.4. UTILIZACIÓN DEL PATRÓN DE DISEÑO CALLBACK DISTRIBUÍDO EN LA APLICACIÓN. ................................................................................................................................21 )81&,21$0,(172(,167$/$&,Ï1  5.1. FUNCIONAMIENTO. ............................................................................................26 352%/(0$6<&21&/86,21(6  6.1. PROBLEMAS.......................................................................................................30 6.2. CONCLUSIONES..................................................................................................30 %,%/,2*5$)Ë$  3DWURQ&DOOEDFN'LVWULEXLGRSDUDDSOLFDFLRQHV&25%$  ,1752'8&&,Ï1 El p opósi o de es e documen o es mos a an o la es uc u a como la u ilización p ác ica del pa ón de diseño &DOOEDFN 'LVWULEXLGR pa a aplicaciones CORBA. Un pa ón de diseño es una desc ipción de clases y obje os comunicándose en e sí adap ada pa a esol e un p oblema de diseño gene al en un con ex o pa icula . En es e caso, el con ex o que se p opone es una aplicación en es capas con uncionamien o sínc ono que se á modi icada pa a que se compo e de mane a asínc ona u ilizando dicho pa ón. Pa a pode comp ende de mane a global la aplicación p opues a es necesa io conoce algunos concep os como son CORBA y el modelo en es capas. CORBA es un middlewa e que pe mi e conec a clien es y se ido es he e ogéneos an o en el lenguaje de p og amación como en la pla a o ma de ejecución de una mane a anspa en e. Po o o lado, la a qui ec u a en es capas, que se co esponde al pa ón a qui ec ónico ni el, ealiza una di isión de la aplicación en capas pa a aisla en cada una de ellas aquellos elemen os del sis ema que es án elacionados en e sí a un al o ni el de abs acción. Las ca ac e ís icas de una capa conc e a no dependen en ningún aspec o del es o de las capas, compo ándose cada una de ellas como un elemen o independien e del es o. Es e documen o se di idi á en 6 capí ulos. En el FDS WXORSULPHUR se desc ibi á, en é minos gene ales, el es ánda CORBA. En el FDS WXOR VHJXQGR se in oduci á el concep o de a qui ec u a en es capas. En el FDS WXOR WHUFHUR se desc ibi á el pa ón de diseño FDOOEDFN GLVWULEXLGR de allando sus ca ac e ís icas, en ajas, incon enien es e implemen ación. Seguidamen e, en el FDS WXOR FXDUWR se desc ibi á un ejemplo p ác ico de aplicación al que se le aplica á el pa ón FDOOEDFN . En el FDS WXORTXLQWR se mos a á el uncionamien o de la aplicación y se des aca án la mejo as conseguidas con la aplicación del pa ón. Y po ul imo, en el FDS WXORVH[WR se ha á un eco ido po los p oblemas más impo an es encon ados y las conclusiones in e idas de la ealización de es e documen o. 3DWURQ&DOOEDFN'LVWULEXLGRSDUDDSOLFDFLRQHV&25%$  )81'$0(1726'(&25%$ CORBA es una no ma, no un p oduc o, que se enca ga de especi ica la in e ope abilidad en e obje os en un en o no dis ibuido he e ogéneo de mane a anspa en e. CORBA ue impulsada po la OMG (Objec Managemen G oup) en 1990. Se p opuso una a qui ec u a basada en componen es con capacidad de in e ope abilidad (lle an in eg ada la conec i idad de ed) con independencia de la localización. Finalmen e, en 1992 la OMG de inió el p ime ORB (Objec Reques B oke ). En de ini i a, CORBA es un middlewa e que pe mi e conec a clien es y se ido es he e ogéneos an o en el lenguaje de p og amación como en la pla a o ma de ejecución. Es o se consigue de o ma anspa en e pa a los clien es y se ido es. Los clien es simplemen e in ocan un mé odo de un obje o se ido y no ienen que p eocupa se de la localización de dicho obje o. Además, la pe ición se ealiza en el lenguaje de p og amación en que es á implemen ado el clien e aunque el se ido es é ealizado en o o dis in o. El enca gado de la aducción y anspo e de la llamada es el ORB (Objec Reques B oke ), una pieza undamen al de la a qui ec u a de CORBA. Figu a 1. El ORB de CORBA El ORB es un "bus de obje os" que pe mi e a los obje os hace llamadas a o os de o ma anspa en e, independien emen e de su localización, del sis ema ope a i o donde se ejecu en y del lenguaje en el que es án implemen ados. Es o se consigue g acias al lenguaje IDL (In e ace De ini ion Language). Median e IDL se especi ican in e aces, consis en es en conjun os de ope aciones que los obje os que ac úan como se ido es p opo cionan a los clien es. Usando un compilado de IDL, se gene a el código necesa io en un 3DWURQ&DOOEDFN'LVWULEXLGRSDUDDSOLFDFLRQHV&25%$  lenguaje de p og amación de e minado pa a el lado clien e (los s ubs) y el lado se ido (skele ons). En el lado clien e, el código gene ado se usa en la implemen ación del clien e como cualquie lib e ía con encional, que hace e al clien e el obje o(s) se ido y sus se icios. En la pa e se ido a se gene a código que ecibe las pe iciones locales o ía ed de los clien es y se enca ga de llama a las unciones del se ido que p opo ciona la in e az IDL, cuyas cabece as/esquele os ambién se han gene ado, debiendo se implemen ado po el p og amado el código de los mé odos exis en es en la in e az. Es e esquema es simila al de las clásicas Remo e P ocedu e Calls (RPCs). 3DWURQ&DOOEDFN'LVWULEXLGRSDUDDSOLFDFLRQHV&25%$  02'(/2(175(6&$3$6 El modelo en es capas su ge como una mejo a sob e la a qui ec u a clásica en dos capas. Es a basado en la inclusión de una nue a capa o ni el de abs acción en la que se aísla la lógica de adminis ación del sis ema del es o de bloques. El obje i o de es a di isión es consegui una mayo independencia en e los elemen os que o man pa e del sis ema, haciendo que cada uno de ellos se compo e de mane a anspa en e y que pueda cambia sin a ec a a los demás. El obje i o es que cada capa se ea como un elemen o independien e del es o de capas. Una de las consecuencias de es a mejo a es que la pa e clien e puede queda educida a una simple in e az g á ica y la pa e se ido a a la base de da os y el DBMS. La lógica de negocio en e la pa e clien e y la se ido se cen aliza á en la nue a capa inse ada. G acias a la e sa ilidad que p opo ciona es e modelo se pod án u iliza las capas como piezas de un mecano, omando el núme o de ellas que sean necesa ias y adap ando así el esul ado inal a dis in as necesidades. Además, se pod á eu iliza cada pa e an as eces como sea necesa io. Figu a 2. Modelo en es capas. A con inuación se desc ibi á cada una de las capas que cons i uyen el modelo. 3DWURQ&DOOEDFN'LVWULEXLGRSDUDDSOLFDFLRQHV&25%$  &DSD&OLHQWH La p ime a capa que se obse a en la igu a an e io es el clien e. En ella es a á implemen ado el clien e en o ma de in e az g á ica con la que in e ac ua á el usua io. La in e az pe mi e in oduci da os a p ocesa po la aplicación y mues a los da os que gene a como esul ado de dicho p oceso. La in e az de usua io puede consis i desde una aplicación independien e has a un e minal o incluso una pagina web. La misión de es a capa es únicamen e con ene la in e az g á ica pa a in e ac ua con el usua io. Si se ienen dis in os ipos de clien es (enca gados de sección, caje os...) con necesidades dis in as y pla a o mas dis in as, a la ho a de implemen a los la can idad de código a desa olla se á pequeña, ya que sólo hab á que esc ibi la in e az de usua io. Si se u iliza un edi o de in e aces g á icas la a ea se hace casi i ial. &DSD/yJLFDR$JHQWH La nue a capa que in oduce el modelo es la capa in e media, que se á la enca gada de maneja la lógica de la aplicación. Se denomina capa Agen e o capa de Lógica de Negociado. Es a capa se e á como una especie de in e az que p opo ciona á una se ie de p imi i as y da os a los que se á posible accede . De es a o ma, se dispond á de un conjun o de se icios que pod án se usados po la capa clien e. El clien e debe á pode se p og amado sin necesidad de conoce la implemen ación in e na de la lógica de negociado. El obje i o es que las modi icaciones ealizadas a la capa lógica man engan la in e az (la apa iencia ex e na) in ac a, y no desemboquen en la modi icación de ninguna de las o as dos capas. La p incipal unción del agen e es la de aduci y adap a las pe iciones del clien e (llamadas a las p imi i as que p opo ciona la capa) a la semán ica in e na del se ido . En el Agen e es á cen alizado además el acceso de los clien es al se ido , lo que aumen a la segu idad y la e iciencia. De es e modo es posible ealiza una mejo ges ión de la ca ga del se ido . Se pueden in oduci , po ejemplo, a ios se ido es y balancea la ca ga en e ellos, con lo que se consigue que él núme o de clien es pueda aumen a conside ablemen e. 3DWURQ&DOOEDFN'LVWULEXLGRSDUDDSOLFDFLRQHV&25%$  &DSD6HUYLGRU Es a capa consis e en un ges o de bases de da os (DBMS). Hay que no a que, al exis i muchos ges o es de bases de da os dis in os, cada uno de ellos posee u inas de acceso di e en es. Es o ha ía que la capa lógica no ue a o almen e abs ac a y dependie a ue emen e del ges o que se u iliza a. Como se explica á pos e io men e, es e p oblema se puede soluciona g acias a SQL. Al es a es anda izado y exis i puen es aduc o es de sen encias SQL a las p opias del ges o , se á posible abaja de mane a independien e al ges o de bases de da os u ilizado. ,QWHUFRQH[LyQHQWUHFDSDV O a de las ca ac e ís icas del modelo muy a ene en cuen a es la mane a en la que se comunican las capas en e sí. La in e az de usua io se comunica á con el agen e, y és e a su ez lo ha á con el ges o de bases de da os. Así pues, se ienen dos ías de comunicación que end án obje i os y necesidades dis in as, po lo que se u iliza án elemen os di e en es pa a cada una de ellas. (QODFH$JHQWH6HUYLGRU Los ab ican es de bases de da os suelen p opo ciona u inas de acceso al ges o de la base de da os, pe o aunque p opo cionan un acceso más ápido no es aconsejable u iliza las si se quie e man ene la lexibilidad del sis ema. Hay o as o mas de comunica al agen e con la base de da os de mane a que no se engan que u iliza las u inas p opias de cada ges o . Es o se puede log a u ilizando ODBC o JDBC, g acias a los cuales odas las consul as con a la base de da os se ealiza án en SQL. Se á ODBC o JDBC, según el caso, el enca gado de aduci las pe iciones a la semán ica p opia del ges o que se es é u ilizando. Es o pe mi e cambia el sis ema ges o de bases de da os con ela i a acilidad, ya que no hab á que modi ica p ác icamen e nada en el código (solo la línea en que se especi ica el ges o u ilizado en el caso de JDBC) del Agen e. (QODFH&OLHQWH$JHQWH Pa a comunica el clien e con el agen e exis en a ias posibilidades, en e las que se encuen an ja a-RMI, DCE, DCOM y CORBA. Si se quie e consegui un p oduc o lexible, po able y escalable, son es as dos ul imas la más adecuadas. En la ac ualidad DCOM es un p oduc o que sólo es a disponible pa a pla a o mas Windows, y en cambio CORBA lo es á pa a un g an nume o de pla a o mas y lenguajes de p og amación. CORBA pe mi e u iliza g an a iedad de lenguajes de p og amación (exis en implemen aciones 3DWURQ&DOOEDFN'LVWULEXLGRSDUDDSOLFDFLRQHV&25%$  de CORBA pa a C++, JAVA, Small alk, Ada 95, COBOL) con lo que el código del clien e y el del agen e pueden es a esc i os en lenguajes di e en es. Incluso se pod á cambia el clien e o el agen e sin necesidad de eesc ibi la o a capa. 3DWURQ&DOOEDFN'LVWULEXLGRSDUDDSOLFDFLRQHV&25%$  Figu a 4. A qui ec u a Clien e-Se ido . Sob e es e esquema se ha aplicado el modelo en es capas es ableciendo una capa pa a el Clien e, o a pa a el Agen e (lógica de negociado) y una úl ima pa a el Se ido de Bases de Da os. La igu a siguien e ep esen a ía el nue o esquema de la aplicación: Figu a 5. Modelo en es capas aplicado a la aplicación. &DSD&OLHQWH Como se obse a en la igu a an e io , se dispone de dos clien es que se comunican con el agen e. Cada uno de ellos posee una in e az de usua io 3DWURQ&DOOEDFN'LVWULEXLGRSDUDDSOLFDFLRQHV&25%$  dis in a, en la que se p opo ciona la uncionalidad necesa ia pa a ealiza las ope aciones mencionadas an e io men e: in oduci empleado, elimina empleado y ob ene da os de un empleado. Si la pe ición del usua io es “in oduci empleado” o “elimina empleado”, el clien e se limi a a en ia la pe ición a la capa agen e, que ejecu a á las acciones necesa ias pa a a ende la. Si la pe ición es “ob ene empleado”, el clien e ealiza la pe ición al agen e, el cual ejecu a á las acciones necesa ias pa a de ol e le los da os del empleado solici ados. Una ez el clien e iene los da os, ealiza un a amien o sob e ellos; en es e caso consis i á únicamen e mos a los po pan alla. • &DSD$JHQWH El agen e se enca ga de a ende las pe iciones del clien e. Cuando el clien e llame a una ope ación, és a se solici a á al agen e, que la p ocesa á de o ma adecuada. Las ope aciones pueden se de consul a con a la base de da os o de modi icación de la misma. • &DSD6HUYLGRU Es a capa con iene la base de da os de los empleados, y a iende a las pe iciones de la capa agen e p opo cionando los da os eque idos si se a a de la ope ación “ob ene empleado”, o bien modi icando la base de da os si la ope ación es “in oduci empleado” o “elimina empleado”. Exis en muchas con igu aciones posibles a la ho a de dis ibui las capas del modelo en máquinas conc e as, g acias a la e sa ilidad que p opo ciona el diseño u ilizado. El sis ema de es capas p opues o es á pensado pa a ejecu a se sob e a ias máquinas localizadas en luga es di e en es. Cada uno de los clien es se pod á ejecu a en una máquina. Pa a ejecu a el clien e es necesa io únicamen e un na egado que se conec a á con el se ido HTTP y ejecu a á el apple JAVA que con iene la aplicación clien e. Es e apple se comunica á con el agen e u ilizando CORBA. La comunicación se ealiza á en e el ORB del Clien e y el del Agen e a a és de In e ne con el p o ocolo IIOP (In e ne In e ORB P o ocol). El IIOP pe mi e comunica dos ORBs que se encuen en en edes dis in as consiguiendo así un único ORB i ual. La comunicación en e el Clien e y el Agen e ambién pod ía ealiza se a a és de una LAN e i ando la u ilización del IIOP, ya que el ORB del clien e y el Agen e es a ían en el mismo dominio. El Agen e se encuen a en o a máquina y se comunica an o con los clien es como con el Se ido de Bases de Da os. Pa a comunica se con el 3DWURQ&DOOEDFN'LVWULEXLGRSDUDDSOLFDFLRQHV&25%$  Se ido de Bases de Da os, el Agen e u iliza JDBC, median e el cual una aplicación JAVA puede ealiza consul as en lenguaje SQL con a un se ido de Bases de Da os. JDBC puede u iliza se con cualquie se ido que econozca el lenguaje SQL, po lo que esul a más lexible que cualquie p oduc o conc e o que se u ilice pa a accede a una base de da os conc e a. Únicamen e es necesa io u iliza el d i e JDBC co espondien e a la base de da os a la que se quie a accede . En el caso de las bases de da os de Mic oso , es necesa io u iliza un d i e JDBC que adap a las pe iciones a ODBC (d i e de acceso a las bases de da os de Mic oso ), el cual ealiza la consul a conc e a a la base de da os. En es a aplicación se ha u ilizado el Se ido de Bases de Da os MSQL, p esen e en o a máquina di e en e que ecibe las consul as SQL del Agen e y le p opo ciona los esul ados de las mismas. Es impo an e ene en cuen a que no es es a la única con igu ación posible a la ho a de implemen a la aplicación, exis iendo una g an can idad de a ian es. Se pod ía, po ejemplo, ene múl iples clien es epa idos po odas las máquinas, así como a ios Agen es pa a epa i la ca ga de clien es. Incluso el Se ido de Bases de Da os puede encon a se en cualquie o a máquina, mien as se indique su di ección IP en el código de implemen ación del Agen e (la modi icación es i ial, ya que sólo es necesa io modi ica una línea de código). Es posible, además, que an o los clien es como el Agen e es én implemen ados en cualquie lenguaje que sopo e CORBA. El clien e únicamen e debe espe a la in e az que le p opo ciona el se ido . Si cambia la implemen ación del se ido , lo único que hab á que modi ica se á el acceso a la base de da os (JDBC es sólo pa a JAVA). 0RGHODGRGHODDSOLFDFLyQ 0RGHORGHFODVHV Pa a acili a la comp ensión del diag ama de clases no se han ep esen ado odas las clases u ilizadas. El conjun o de las clases no ep esen adas son las que implemen an algunas de las ope aciones in e nas de CORBA. El modelo de clases de la aplicación se co esponde con el siguien e diag ama. 3DWURQ&DOOEDFN'LVWULEXLGRSDUDDSOLFDFLRQHV&25%$  'HVFULSFLyQGHOPRGHORGHFODVHV Pa a la comp ensión del modelo de clases es necesa io ene p esen e que JAVA no pe mi e he encia múl iple. Pa a emula la se u ilizan LQWHUIDFHV que se decla an de mane a abs ac a y con ienen la signa u a de un conjun o de ope aciones que han de se de inidas po o a u o as clases. • &ODVH(PSOHDGRV6HUYLGRU,PSO Es a es la clase que implemen a la in e az de (PSOHDGRV En ella eside la capa Agen e, y se á la enca gada de p opo ciona la in e az que u iliza á el clien e pa a ealiza sus pe iciones. Es a clase he eda de (PSOHDGRV6HUYLGRU,PSO%DVH que se enca ga de implemen a unciones 3DWURQ&DOOEDFN'LVWULEXLGRSDUDDSOLFDFLRQHV&25%$  in e nas de CORBA, que se usan pa a ges iona la comunicación a a és del ORB (al igual que odas las clases que e minen en ,PSO%DVH , que son gene adas au omá icamen e po el compilado de IDL). Es a clase implemen a las unciones: - SXEOLFV QFKURQL]HGYRLG REWHQHU(PSOHDGR 6WULQJ U3ULPHU$SHOOLGR&OLHQWH$EVWUDFWRPLBFOLHQWH - SXEOLFV QFKURQL]HGYRLG LQWURGXFLU(PSOHDGR 6WULQJU3ULPHU$SHOOLGR6WULQJU1RPEUH6WULQJ U6XHOGR - SXEOLFV QFKURQL]HGYRLG HOLPLQDU(PSOHDGR 6WULQJ U3ULPHU$SHOOLGR Cuando inalice su ejecución, la ope ación REWHQHU(PSOHDGR llama á al mé odo FDOOEDFN del obje o mi_clien e que se le pasa como pa áme o pasándole los esul ados pa a que és a los p ocese (es o se explica á mas de alladamen e en el pun o 4.4). • &ODVH(PSOHDGRV6HUYLGRU Es a clase posee un obje o inc us ado de ipo (PSOHDGRV6HUYLGRU,PSO que implemen a la ag egación con la clase (PSOHDGRV6HUYLGRU,PSO El obje o inc us ado (PSOHDGRV6HUYLGRU,PSO se á dado de al a en el ORB una ez inicializado es e, y se i á pa a implemen a la ag egación que se es ablece de mane a i ual, a a és del ORB, en e (PSOHDGRV6HUYLGRU y (PSOHDGRV/HW (que co esponde al clien e)  • &ODVHV&OLHQWH,PSO &OLHQWH,PSO Es as dos clases son las enca gadas de implemen a los in e aces &OLHQWH &OLHQWH que he eda án de la in e az &OLHQWH$EVWUDFWR En ellas se encuen a únicamen e la implemen ación de la ope ación - SXEOLFYRLG FDOOEDFN 6WULQJF1RPEUH 6WULQJF6XHOGR cuya signa u a es igual pa a ambas clases, siendo su implemen ación dis in a. Es a ope ación se enca ga de p ocesa la in o mación ecibida del Agen e, lo que se ealiza de mane a di e en e en cada clien e. Las Clases Clien e1Impl y Clien e2Impl he edan de Clien e1ImplBase y Clien e2ImplBase. • &ODVHV(PSOHDGRV/HW (PSOHDGRV/HW 3DWURQ&DOOEDFN'LVWULEXLGRSDUDDSOLFDFLRQHV&25%$  Su unción es implemen a la capa clien e. Se dispond á de dos clien es di e en es con in e aces de usua io dis in as. Es necesa io que ambas clases he eden de la clase Apple , debido a que en JAVA odos los apple s deben hace lo pa a ede ini los mé odos LQLW UXQ y SDLQW . (PSOHDGRV/HW y (PSOHDGRV/HW se enca gan de inicializa el ORB y de ob ene la e e encia al obje o de ipo (PSOHDGR6HUYLGRU,PSO , que u iliza án como obje o inc us ado i ual pa a pode llama a a és de és e a las ope aciones que implemen a el se ido ( REWHQHU(PSOHDGRLQWURGXFLU(PSOHDGR HOLPLQDU(PSOHDGR ). G acias a la u ilización de CORBA, el obje o (PSOHDGRV6HUYLGRU,PSO se pod á usa como si se hubie a decla ado de la o ma habi ual, educiéndose la llamada a los p ocedimien os implemen ados po el se ido a: - obje oSe ido ImplRemo o.ob ene Empleado(...) 8WLOL]DFLyQGHOSDWUyQGHGLVHxR&DOOEDFN'LVWULEX GRHQOD DSOLFDFLyQ El obje i o de la u ilización del pa ón callback en es a aplicación es hace que el clien e pueda segui abajando de mane a no mal mien as el se ido es á p ocesando una pe ición de REWHQHU(PSOHDGR Como se puede obse a en la siguien e aza de ejecución co espondien e a la aplicación o iginal, el clien e quedaba bloqueado as ejecu a la pe ición, espe ando que el se ido espondie a con el esul ado. Es o hace imposible in oduci nue os empleados o elimina los mien as se espe a el esul ado. Figu a 5. T aza de ejecución sin aplica Callback. 3DWURQ&DOOEDFN'LVWULEXLGRSDUDDSOLFDFLRQHV&25%$  Una ez in oducido el pa ón se consigue que, mien as se ejecu e en el p oceso se ido una pe ición de REWHQHU(PSOHDGR el clien e pueda segui ealizando pe iciones. La nue a aza de ejecución se ía la siguien e: Figu a 6. T aza de ejecución aplicando Callback. En la igu a se puede obse a que, aunque el Agen e admi e múl iples pe iciones del Clien e mien as se ejecu a en el Agen e la ope ación REWHQHU(PSOHDGR , las pe iciones se p ocesan de mane a secuencial en el mismo o den en que p oduje on. Es o es debido a que las ope aciones de acceso a la base de da os ( LQWURGXFLU(PSOHDGR HOLPLQDU(PSOHDGR y REWHQHU(PSOHDGR ) es án decla adas como V QFKURQL]HG , lo que hace que no se puedan ejecu a de mane a concu en e pa a man ene la consis encia de la base de da os. Nó ese que, a pesa de que no puedan ealiza se múl iples accesos a la base de da os al mismo iempo, el clien e sí puede ealiza an as pe iciones como desee, ya que es as se encola án a la espe a de que inalicen las ope aciones an e io es. Pa a pode aplica es e pa ón es necesa io modi ica el a chi o IDL que con iene la especi icación de la aplicación.: • El IDL o iginal de la aplicación e a: 3DWURQ&DOOEDFN'LVWULEXLGRSDUDDSOLFDFLRQHV&25%$  Module EmpleadosAp { in e ace (PSOHDGRV { oid REWHQHU(PSOHDGR ( LQ s ing P ime Apellido, RXW s ing Nomb e, o XW s ing Sueldo); oid LQWURGXFLU(PSOHDGR ( LQ s ing P ime Apellido, LQ s ing Nomb e, LQ s ing Sueldo); oid HOLPLQDU(PSOHDGR ( LQ s ing P ime Apellido); }; }; Una ez aplicamos el pa ón callback con la mejo a pa a desacopla clien e y se ido (agen e en el caso de es capas) pasa ía a se : Module EmpleadosAp{ In e ace Clien eAbs ac o; In e ace (PSOHDGRV { RQHZD  oid REWHQHU(PSOHDGR ( LQ s ing P ime Apellido, LQ Clien eAbs ac o PLBFOLHQWH ); oid LQWURGXFLU(PSOHDGR ( LQ s ing P ime Apellido, LQ s ing Nomb e, LQ s ing Sueldo); oid HOLPLQDU(PSOHDGR ( LQ s ing P ime Apellido); }; in e ace &OLHQWH$EVWUDFWR { RQHZD  oid FDOOEDFN ( LQ s ing cNomb e, LQ s ing cSueldo); }; in e ace &OLHQWH :Clien eAbs ac o{}; in e ace &OLHQWH :Clien eAbs ac o{}; }; El p ocedimien o pa a ans o ma el an iguo IDL en el nue o es el explicado en la sección 3.2.5. En es e caso conc e o, la única ope ación que equie e el uso del mé odo callback es REWHQHU(PSOHDGR , ya que solici a da os al se ido pa a que és e se los de uel a como pa áme os de salida. En la aplicación o iginal sólo se disponía de un clien e. Aho a se han in oducido dos clien es que poseen in e aces g á icas di e en es y p ocesan la 3DWURQ&DOOEDFN'LVWULEXLGRSDUDDSOLFDFLRQHV&25%$  in o mación ecibida de mane a dis in a (implemen aciones di e en es de la ope ación callback en cada uno de ellos). Como ya se ha explicado, el p incipal p oblema del pa ón callback es que p o oca un acoplamien o en e el clien e y el se ido , ya que en la ope ación REWHQHU(PSOHDGR se pasa como pa áme o un obje o de ipo clien e pa a que el se ido pueda llama a la ope ación callback de dicho clien e. Debido a que se ienen dos clien es dis in os, se debe ía implemen a una ope ación ob ene Empleado sob eca gada pa a cada uno de ellos. Po cada clien e di e en e se debe ía ealiza una nue a sob eca ga de la ope ación ob ene Empleado. Exis e ambién la posibilidad de ecibi un obje o del ipo gené ico Objec (del que he edan odas las clases), y chequea el ipo o iginal del obje o. Una ez se conoce el ipo se ejecu a ía una sección de código de e minada (con sen encias LI , po ejemplo). Tan o la p ime a como la segunda solución p o oca ían que el clien e y el se ido es u ie an ue emen e acoplados. Con el obje i o de e i a es e acoplamien o y soluciona así el p incipal p oblema del pa ón, se ha aplicado una a ian e del pa ón comando. La solución consis e en que el mé odo REWHQHU(PSOHDGR eciba como e e encia al clien e un obje o de ipo &OLHQWH$EVWUDFWR . La clase &OLHQWH$EVWUDFWR es una clase de ipo abs ac o en la que se de ine el p o o ipo de la ope ación callback. Todos los clien es conc e os he edan de dicha clase, y cada uno de ellos implemen a la ope ación callback de mane a di e en e, según las necesidades del clien e conc e o. De es e modo es posible llama a la ope ación REWHQHU(PSOHDGR u ilizando cualquie ipo de clien e, siemp e que és e enga implemen ada la ope ación callback. Así se pueden añadi odos los clien es conc e os que se desee, con la única condición de que he eden de la clase &OLHQWH$EVWUDFWR e implemen en la ope ación callback. Como se obse a en la igu a, las clases que implemen an el callback son &OLHQWH,PSO y &OLHQWH,PSO . Es as clases implemen an las in e aces &OLHQWH y &OLHQWH , que a su ez he edan de la in e az abs ac a &OLHQWH$EVWUDFWR . 3DWURQ&DOOEDFN'LVWULEXLGRSDUDDSOLFDFLRQHV&25%$  3DWURQ&DOOEDFN'LVWULEXLGRSDUDDSOLFDFLRQHV&25%$  %,%/,2*5$)Ë$ [1] Clien /Se e P og aming wi h JAVA and CORBA. Second Edi ion Robe O ali, Dan Ha key. Edi o ial Wiley 1998 [2] CORBA Design Pa e n, Thomas J. Mowb ay, Raphael C. Mal eau, Wiley, 1998. [3] E ich Gamma e al. “Design Pa e ns”. Addison-Wesley. 1994 [4] La Biblia de JAVA. Edi o ial Anaya.