Descripción y utilización práctica del patrón de diseño Callback Distribuido en aplicaciones distribuidas con CORBA (LSI-2000-04)
Full text
'
(6&5,3&,Ï1<87,/,=$&,Ï135È&7,&$'(/3$75Ï1'(',6( 2
&
$//%$&.
'
,675,%8,'2(1$3/,&$&,21(6',675,%8,'$6&21
&25%$
-RDTX Q3HxD)UDQFLVFR/HDO 5DIDHO&RUFKXHOR
,QIRUPH7pFQLFR
'SWR/HQJXDMHV 6LVWHPDV,QIRUPiWLFRVGHOD8QLYHUVLGDGGH6HYLOOD
$YGDGHOD5HLQD0HUFHGHVVQ6HYLOOD
(PDLOMSHQD#OVLXVHV
3DWURQ&DOOEDFN'LVWULEXLGRSDUDDSOLFDFLRQHV&25%$
,1',&(
,1752'8&&,Ï1
)81'$0(1726'(&25%$
02'(/2(175(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$JHQWH6HUYLGRU
(QODFH&OLHQWH$JHQWH
3$7521'(',6( 2&$//%$&.',675,%8,'23$5$$3/,&$&,21(6
&25%$
3.1. INTRODUCCIÓN..................................................................................................10
3.2. DESCRIPCIÓN DEL PATRÓN.................................................................................10
,QWHQFLyQ
0RWLYDFLyQ
$SOLFDELOLGDG
&RQVHFXHQFLDVYHQWDMDVHLQFRQYHQLHQWHV
,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'LVWULEXLGRSDUDDSOLFDFLRQHV&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 WXORSULPHUR
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 WXORTXLQWR
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 WXORVH[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'LVWULEXLGRSDUDDSOLFDFLRQHV&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'LVWULEXLGRSDUDDSOLFDFLRQHV&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'LVWULEXLGRSDUDDSOLFDFLRQHV&25%$
02'(/2(175(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'LVWULEXLGRSDUDDSOLFDFLRQHV&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/yJLFDR$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'LVWULEXLGRSDUDDSOLFDFLRQHV&25%$
&DSD6HUYLGRU
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[LyQHQWUHFDSDV
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$JHQWH6HUYLGRU
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'LVWULEXLGRSDUDDSOLFDFLRQHV&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'LVWULEXLGRSDUDDSOLFDFLRQHV&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'LVWULEXLGRSDUDDSOLFDFLRQHV&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.
•
&DSD6HUYLGRU
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'LVWULEXLGRSDUDDSOLFDFLRQHV&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).
0RGHODGRGHODDSOLFDFLyQ
0RGHORGHFODVHV
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'LVWULEXLGRSDUDDSOLFDFLRQHV&25%$
'HVFULSFLyQGHOPRGHORGHFODVHV
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'LVWULEXLGRSDUDDSOLFDFLRQHV&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:
-
SXEOLFV QFKURQL]HGYRLG
REWHQHU(PSOHDGR
6WULQJ
U3ULPHU$SHOOLGR&OLHQWH$EVWUDFWRPLBFOLHQWH
-
SXEOLFV QFKURQL]HGYRLG
LQWURGXFLU(PSOHDGR
6WULQJU3ULPHU$SHOOLGR6WULQJU1RPEUH6WULQJ
U6XHOGR
-
SXEOLFV QFKURQL]HGYRLG
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
-
SXEOLFYRLG
FDOOEDFN
6WULQJF1RPEUH
6WULQJF6XHOGR
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'LVWULEXLGRSDUDDSOLFDFLRQHV&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(PSOHDGRLQWURGXFLU(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]DFLyQGHOSDWUyQGHGLVHxR&DOOEDFN'LVWULEX GRHQOD
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'LVWULEXLGRSDUDDSOLFDFLRQHV&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'LVWULEXLGRSDUDDSOLFDFLRQHV&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'LVWULEXLGRSDUDDSOLFDFLRQHV&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'LVWULEXLGRSDUDDSOLFDFLRQHV&25%$
3DWURQ&DOOEDFN'LVWULEXLGRSDUDDSOLFDFLRQHV&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.