Upload
noe-martinez
View
173
Download
0
Embed Size (px)
Citation preview
5/14/2018 [Revista Solo Program Adores] Articulo Web Services Con VB.net de Francisc...
http://slidepdf.com/reader/full/revista-solo-program-adores-articulo-web-services-con-vbnet-de-fra
Microsoft ©
Visua l Bas ic .ne t
Servicios WebFrancisco Charte Ojeda
L os serv ic io s W e b fac ilitan la co nex io n en tre ap licac io nes su peran dod ife re nc ia s en tre sistem a s o pe ra tiv os , p la ta fo rm a s y lo caliz acio ne s
geograficas. C on V B.N ET 1a creac ion de esto s se rv ic io s resu lta m uy
sencilla.
CONTENIDO
o
• Fundamentos. protocolos ylenguajes
• Creaci6n de servicios Web
• Consume de servicios Web
• Mejoras en Visual Basic . N ET
2003
o
Disefiada originalmente como un me-
dio para compartir documentos cientf-
ficos con enlaces entre sf, la WWW
(World Wide Web) se ha convertido,
con el tiempo, en el servicio mas po-
pular de Internet si exceptuamos, qui-
za, el correa electr6nico. La Web, co-
mo se la conocs popularmente, hace
posible que cualquiera ponga en la
red un documento y este sea accesi-
ble universal mente, sin importar el ti-
po de ordenador, sistema operativo ni
locallzacion qeoqrafica desde el que
se solicite.
Esa independencia es posible gracias
al usa de protocolos y lenguajes aeep-
tados como estandar, en esle caso
HTTP (HyperText Transfer Protocol) y
HTML (HyperText Markup Language).
EI protocolo HTTP tiene la ventaja de
S8r aceptado como canal de comuni-cacion con el exterior en la mayorfa
de las configuraciones, no siendo in-
terceptado por los cortafuegos (fire-
walls) hardware ni software. Esto Ie
convierte en un protocolo ideal para
conseguir la conectividad entre aplica-
ciones que, hist6ricamente, han en-
contrado problemas para operar ade-
cuadamente a traves de Internet par
el hecho de que los puertos que se
util izan, especfficos para cada solu-
cion -como puede ser CORBA (Com-
mon Object Request Broker Architec-
ture), DCOM (Distributed Component
Object Model) a RM I (Remote Method
Invocation)" no son estandar y , por
tanto, la comunicaci6n a traves de
ellos se intercepta por cuestiones de
seguridad.
Los servicios Web tienen exito alii
donde la mayorfa de soluciones de
conectividad entre aplicaciones han
fracasado. La principal razon para ello
es que se fundamentan en el uso de
protocolos y lenguajes consolidados,
como es el caso de HTTP, para 81
transporte, y XM L (extensible Markup
Language) para la codificaci6n de
mensajes.
Con Visual Basic .NET podemos
crear servicios Web can gran simplici-
dad, ya que el propio lenguaje incluye
los elementos, conocidos como atri-
butos, para convertir los rnetodos de
cualquier class en metodos de un ssr-
vicio Web. De igual manera, tarnbian
podemos crear aplicaciones que co"
necten can esos servicios Web.
H p a r t i r d e u n m 6 d u l o
f I S I I l H A S P . n E T e s c a p a zd e d e s c u b r i r e l s e r u i c i o y
o f r e c e r e l m 6 d u l o W S D L
Aunque no es alga indispensable,
puesto que podernos crear y consumir
servicios Web can Visual Basic .NET
sin necesidad de conocer nl un solo
detalle interno, nunca esta de mas ad-
quirir ciertos fundamentos sobre el
funcionamiento, los protocolos y len-
guajes que se implican en la progra-
maci6n, publicacion y acceso de un
servicio Web. Este conocimiento nos
perrnitira comprender mejor posterior-
mente ciertos aspectos del desarrollo.
Un servicio Web es un componente
1 foolbox
i < M I . S < " " ' n &
It : Poi",,",
]jor_
~ attrW.
[1iI attmutoGrouP
~(.,..,JexTY;-
<~TY1l "
lI D Q"OIJQ
r < > J . . . . , .
jiiiiJ..,.,.-w.
[i'l fecet
. . ~t, o I o t I o n
W i I J < OE
E
E
E
M i lf oE T 1 t u k !
e AI , I tDr
E Editorial
E ISIIN
V"uwri Btui& .NET JUptme tk _ uJitoT m-J tk uq_ XSD tpupotkmo,_ ta7Uo
pm"II t:rfiW COmDpiZnl m o d i J i e m " Uqumuu XML
Palrodnado per
m ~ ~ l m ; l ! I M : I I I I 1 : i ~ 13 n.. . . . . . . . . . . . . . . Microsof t@
5/14/2018 [Revista Solo Program Adores] Articulo Web Services Con VB.net de Francisc...
http://slidepdf.com/reader/full/revista-solo-program-adores-articulo-web-services-con-vbnet-de-fra
Microsoft ©
Visual Bas ic .net
Serv ic io Web
software que se ejacuta en un servi-
dor, en ocasiones solidariamenle con
un servidor Web como puede ser
liS (Internet Information Server) 0
Apache, y atiende solicitudes que Ie
lIegan de clientes remotos. En
esta comunicacion intervienen un pro-
tocolo de transporte, un protocolo de
gesli6n de lIamadas remotas, un len-
guaje de descripci6n de servicios y ,
en ocasiones, un servicio de directorio
que ayuda a localizar el servicio Webque se neceslta,
E s q u e m a . de func ionam ien toObtengamos primero una vision gene-
ral de todo el proceso que se sigue
desde que un cliente necesita un cier-
10 servicio hasta que 1 0 localiza y usa.
En este proceso intervienen, par regia
general, un cliente 0 consumidor, un
servidor de directorio y el servidor que
ofrece el servicio Web propiamente
dicho.EI primer paso que da el consumidor
es enviar una sollcitud al servidor de
directorio, conocido como UODI (Uni-
versal Description, Discovery and In-
tegration). indicarrdole el servicio Web
que neceslta y obteniendo como res-
puesta el URL al que debe dirigirse.
Can ese URL el cliente se dirige al
servidor que ofrece el servicio Web y
soilcita el documento de descripci6n,
que obtiene en lenguaje WSDL (Web
Services Description Language). A
partir de este documento el cliente
puede saber que protocolos acepta el
servidor y los rnetodos que hay dispo-
nibles en el servicio.
APUNTE
En una red empresarial es posible
in_stalar uno 0 mas registros
UODI que ayuden a localizar los
servi~ios Web desde cada puesto
particuler, Tambien existen regis-
tros accesibles publlearnente,
I como los que ofrece1Microsoft.
mensaje SOAP (Simple Object Ac-
cess Protocol) que incluira tarnbien
los parametres adecuados. La res-
puesta del servidor, devolviendo el re-
sultado al clients, se codificara igual-
mente utilizando SOAP.
La cornunicacion entre el consumidor
y los servidores se etectua a traves de
Internet y sobre el protocolo HTIP
para transportar los mensajes SOAP.
De asta forma puede superar los dis-
positivos cortafuegos sin problemas.
EI consumidor y el servicio no lienen
por que estar escritos en el mismo
lenguaje, ni ejecutarse sabre el rnls-
mo sistema operativo ni plataforma
hardware.
E l p r o t o c o l o S O H P e s u nm e c a n i s m o R P C q u e u t l U z a
e l p r o t o c o l o H T T P c o m om e d l o d e t r a n s p o r t e .
Disponiendo de la descripcion, el
cliente etectua una lIamada al metoda
que Ie interese codificandola en un
L a b a s e e s X M L
EI pilar principal de los servicios Web
es, sin duda alquna, ellenguaje XML,
un derivado de SGML (Standard Ge-
neralized Markup Language) al igual
que HTML, que se basa en la descrip-
cion de la estructura de los datos con-
tenidos en un documento.
Surgido hace ya cinco aries como es-
tandar del W3C (World Wide Web
Consortium). actualmente XML esta
presente en todos los sistemas a
traves de rnultitud de aplicaciones ya
< ?x ml v er si onm-l.0· e n c o d i n q : · u t f - 8
R7 >
< L i b r o s >
< L . i b r o I S B N = " 8 4 - 41 5 - 1 3 7 5 - 9 R >
< T i t u l o > B a s e s d e d s . t o s c o n V i a u a 1 B a B i c .N E T < / T i t u l o >
< E di t or i al > An a y a M u lt i me d ia < /E d it o ri a l>
< A u t o r > F r a n c i s c o C h a r t e < / A u t o r >
< P a q i n s s > 5 2 8 < / P a q i n a s >
< P r e c i o > 3 5 < / P r e c i o >
< / L i b r o >
< Li br o I SB N" " 8 4- 41 5- 14 8 2- 8" >
< T i t u l o > E n s a m b l a d o r p a r a D O S , L i n u x y W i n d o w s < / T i t u l o >
< E di t or i al > An a y a M u lt i me d ia < /E d it o ri a l>
< A ut o r> F .r a nc i a c o C h ar t e< / Au t or >
< p a q i n a a > 6 8 8 < / P a q i n a s >
< P r e c i o > 3 9 . 5 < / P r e c i o >
< / L i b r o >
< / L i b r o a >
~ ~ ; I i I ~ I W ~ W I I I 1 : l ~ 14 ." , , , , , "" , , , , , M~oit°
5/14/2018 [Revista Solo Program Adores] Articulo Web Services Con VB.net de Francisc...
http://slidepdf.com/reader/full/revista-solo-program-adores-articulo-web-services-con-vbnet-de-fra
Microsoft ©
V isua l Basic .net
que, fundamentalmente, tacilita el in-
tercambio de informacion al ofrecer
una representacion independiente de
lenguajes, sistemas y platatormas. Un
ejemplo son los sistemas de qestion
de bases de datos, como es el case
de SOL Server, que cantemplan la ge-
neraci6n de XML a partir de las can-
sultas,
La estructura de los documentos XML
se deduce a partir de las rnarcas que
contiene, es 10 habitual en docurnen-
tos aislados, a bien se define en un
esquema XSD (XML Schema Defini-
tion). Ajustando sus doeumentos a un
mismo esquema XSD, varias empre-
sas pueden intereambiar informacion
en formato XML sin importar en que
esten escritas sus aplieaciones 0
sobre que contlquraclon softwarehardware se ejecuten.
EI editor de Visual Basic .NET reeono-
ee la sintaxis de XML y, en case de
contar con un esquema XSD,. incluso
ofrece ayuda sobre las marcas a me-
dida que van introduclendose. En rea-
lidad, usando el disenador de esque-
mas XSD y la edici6n de datos XML,
mediante la cual se muestra como
una tabla de datos la informacion con-
tenida en los documentos XML, nunca
necesitaremos escribir directarnentsc6digo XML.
o
TRueD
Puede usar Visual Basic .'NET
para editar cualquier documento
XML, en sustituoion de otras he-
rramientas, valtdandolo y editan-
do su contenido como sl de una
tabla de una base de datos se
tratase.
En el listado 1 puede ver un senciHo
documento XML compuesto de un
elemento ra iz , Libras, con dos ele-
mentos de tipo Libro cada uno de los
cuales dispone de un atributo, lIama-
do ISBN, y una serie de subelemen:
tos. Como puede apreciar, es tacil
comprender tanto la estructura comoel contenido.
S O A P
EI primer problema que plantea la in-
terconexi6n de aplicaciones remotas,
que se ejecutan en distintas localiza-
ciones qeoqraficas y, posiblemente,
sabre distintas configuraciones y sis-
temas, es el transports de las llama-
das a rn etodos y las respuestas desde
el origen al destino y vieeversa, sal-
vando los obstaculos que pone Inter-net y tarnbien todas esas diferencias
Nuevo provecto £ J
~~
t b ' i c a c : 1 t f i E J h t t : p : l t1 o r . : : a l h o s t K : \ . .r r o v e . ! C o t l t a c l o n e s
r~ ..E -$ l:JiI,IC~ ~ ~r,*.soILl\:I6h
E I p ro ~ s e c re w el e n h ~ :f f~ l'l 9S tP S lS SO v e,;c o tl :a cIo n eS .
o ~ A pllc ac iO n p ara W in do ws
r: B blloteca de c l as e s
VB Bbl loteca de c on tro le s d e W i nd ow s
B Apl lcacoo We b A SP .N ET
" ' B Ib l lo t sca de con l ro la s W eb
~ .Ap ll ca c lOn de conso la
.&6ervlclo de Windows
~----
U l s u a l B a s i c . D . U 2 0 0 3
i n c l u y e u n c u a d r o d e
d i 6 l o g o m e j o r a d o p a r a
a n a d l r r e f e r e n c i a s · W e b .
de arquitectura software y hardware.
La respuesta a este problema es
SOAP, un protocolo definido en abril
de 1998 de manera conjunta entre Mi-
crosoft, UserLand y Developmentor.
SOAP facilita un mecanisme RPe
(Remote Procedure Call) compatible
con Internet al usar HTIP como me-
dlo de transporte y supera todas las
diferencias al estar basado en XML.SOAP. Por tanto, es un protocolo de
tipo XML-RPC, no siendo en este
momento el unico pero sf el mas utili-
zado.
SOAP eodifica las Ilamadas y res-
puestas utilizando un cierto esquema
XML, de tal forma que las aplicacio-
nes no tienen en ninqun momenta que
saber el lenguaje en que estan eseri-
tas 0 la plataforma sobre la que se
ejecutan a fin de efectuar conversio-
nes. Suponiendo que tuvlesernos unaapl lcaclon, un servicio Web, que tact-
lltase informaci6n biblioqratica, un
cliente cualquiera podrfa enviar el si-
guiente rnensaje SOAP para solrcitar
la fieha de un cierto libra:
<SOAP-ENV' Enve lope>
<SQlIP-ENV ,Body>
<solicitud>
<ISBN>B4-415-1375-'!<"'{ISBN> .
</-Solici tud>
< ". (SOAP-EIN, Body.>
< ". I SQAP-ENV 'Envelope>
EI servicio Web, al recibir el mensaje,
1 0 descodificaria y obtendria el ISBN
dellibro que desea consultarse, gene-
rando una respuesta, que podrla ser
la rnostrada a continuacion, y envian-
dola de vuelta al clients.
<SOAP-ENV,Envelope>
<"'SOAP-BNV,Body>
Polrocinodo par
MicIosoft~
5/14/2018 [Revista Solo Program Adores] Articulo Web Services Con VB.net de Francisc...
http://slidepdf.com/reader/full/revista-solo-program-adores-articulo-web-services-con-vbnet-de-fra
Microsoft ©
V isua l Bas ic .ne t< S o l l c i t u d R e s p u e s t a . >
< T i t u J , . o > B a s e s de d a t o s con
V i s u a l Basic .•i E T < f T i t u l e >
< E d i tda.1>AnaVa;
~ Q l t i m e d i a < / E d ~ t o r i a l >
< A ut e r> F r an . c· i 5c q Charta</ A u t o P
<Paginas>S28c/paginas>
< l ? r e d i o > 3 S < / P r e c i o >
</solicitud~espuesta>
< / S O A l i ' - E N V : B O d y >
< / S O A P - E N V : E n v e 1 o p e > ,
Eslos mensajes se transportarfan de
un extrema a otro mediante el proto-
colo HTIP, aunque realmente SOAP
contempla el uso de otros como
SMTP. En este caso, el mensaje se
recibirla como si fuese un mensaje de
correa y , par el mismo media, se de-volveria la respuesta.
AI lrabajar can Visual Basic .NET, no
tendremos que preocuparnos de la
construcci6n y descodificaci6n de los
mensajes SOAP ya que es una tarea
de la que se ocupan los servicios in-
cluidos en la plataforma .NET.
WSOl es, al igual que SOAP,una aplicaci6n de XNlL, un tipo
de documento que se ajusta a un
cierto esquema XSO.
WSO lEn el punta anterior hemos supuesto
que el cliente 0consumidor sabe don-
de tiene que dirigir sus mensajes
SOAP, el URI del servicio Web y , ade-
mas, conoce los rnatodos que hay dis-
ponibles y los parametres que necesi-
ta cada uno de sllos. En el ejemplo
previa se utiliza un rnetodo IIamado
Solicitud al que se facilita el parame-
Ira ISBN.
Seran muchos los casas, sin embar-
go, en los que el cliente desconozca
cual es la oenominaclon exacta del
metoda al que debe invocar, 0 la lista
de parametres, especialmente duran-
te la fase de desarrollo. Esta informa-
cion puede obtenerse solicitando al
servidor que lacil ite una descripcicn
del servicio que ofrece. La respuesta
sera un documento WSOL.
WSOL es un lenguaje que, al igual
que el protocolo SOAP, ssta basado
en XML, de tal manera que un docu-
mento WSOL es, al fin y al cabo, una
aplicacion XML, un documento que se
ajusta a un cierto esquema. En dicha
descripcion se enumeran los metooos
que ofrece el servicio. la lista de para-
metros con sus tipos y los puntos de
conexi6n posibles, especificando el
protocolo de transporte para cada uno
de ellos,
Desde til tIfJ.torno de audio potlemOI
implnnentltr mush'O servkio, ejeemar18yJiPurario
Como vera despues, ASP.NET es ca-
paz de generar autornaticarnente la
descripcion WSOL de un servicio Web
sin ninguna intervencion del c6digo denuestro programa.
UOO I
EI primer paso que dara un consumi-
dor que necesita un servicio Web y
que no conocs su localizaci6n sera,
sequn el esquema trazado anterior-
mente, dirigirse a un servidor UoDI
para efectuar una busqueda. Cuando
necesitamos un cierto documento de
nuestro ordenador y conocemos el
camino y nombre exactos, 10 pode-
mas abrir directamente. En muchos
casas, sin embargo, necesitaremos
efectuar una busqueda, par ejemplo
desde el Explorador de Windows.
UOOI es un servicio de directorio que
funciona de manera analoqa al direc-
torio de archivos que hay en nuestro
sistema.
Para efectuar una consulta es nece-
sario conocer la direccion de una
base de datos ° registro UOOI. Las
empresas que trabajan conjuntamen-
~ ~ ~ I I ~ t m ~ ~ l I I l l t l ~ i6 ", , , , ", , .
f m p r e s a s c o m o 1 8 m g
m i c r o s o f t c u e n t a n c o nr e g i s t r o s U D D I p O b U c o s .
te pueden compartir un registro UOOI,
existiendo asirnisrno registros publl-
cos, ofrecidos por empresas como
IBM, Microsoft y SAP, y registros para
realizar pruebas puestos en marcha
por esas mismas firmas.
EI entorno de Visual Studio .NET
cuenta con un cuadro de dialogo, 10
utilizara en un ejemplo posterior al co-
dificar un cliente, que permite conec-
tar' can un registro Uool para descu-
brir los servicios que hay disponlbles y
localizar el que nos Interesa.
P rog r amac ion con a tr ib u to sUno de los nuevas elementos apare-
cidos en el lenguaje con la aparicion
de Visual Basic .NET, y que necesita-
remos conocer a la hora de crear un
servicio Web, son los atributos, Real-
mente todos los lenguajes .NET cuen-
tan con atributos, siendo mas una ca-
racteristica de la plataforma de
desarrollo que del lenguaje en si.
Los atributos pueden ir asociadas adiferentes construcciones del lengua-
je, como pueden ser clases, enumera-
clones, rnetocos, interfaces, estructu-
ras y propiedades. EI atrlbuto en sf,
ciriendonos a la sintaxis de Visual Ba-
sic .NET, precede al elemento al que
afecta y vendra delimilado entre los
signos <y c- .
Mediante los atributos es posible aso-
ciar una descripcion a los miembros
de una clase, establecer la propiedad
par defecto de un componente 0, 10
que mas nos interesa en este caso,
indicar que un cierto metoda sera
ofrecido como metoda de un servicio
Web.
Suponiendo que estuvlesernos dise-
fiando un servicio Web capaz de ofre-
cer la cotlzaclon actual de cualquier
valor en bolsa, un posible rnetodo se-
ria Cotizacion, que recibiria el identifi-
cador de un valor y devolverfa su ac-
tual cotizaci6n. La cabecera de dicho
rnetodo, desiqnandolo como rnetodo
Patrocinado por
Microsot t@
5/14/2018 [Revista Solo Program Adores] Articulo Web Services Con VB.net de Francisc...
http://slidepdf.com/reader/full/revista-solo-program-adores-articulo-web-services-con-vbnet-de-fra
Microsoft ©
Visual 'Basic.net
de un servicio Web, serla la siguiente:
<Web~lethod(Description: ="Devuelve
cotizaci6n de un valor"» _
P ub li c F un ct io n C ot iz ac ip n( Pu bJ ,i c
Valor As Strintl) As Double
o
En este caso el atributo WebMethod
lIeva asoclado un pararnetro, Descrip-
tion, can el que facilitamos la descrip-
ci6n del rnstodo. Esto es algo total-
mente opcional, pudiendo mciuirse 61
atributo como <WebMethod()>, sin
pararnetro alguno.
Observe, en el fragmento de c6digo
anterior, la existencia del caracter _
tras el atributo, uniendolo de hecho
con la linea siguiente. Puede colocar
atributo y cabecera de ta funclon todoen una sola linea.
o
Ahara que yatenemos un conoci-
miento general sabre los servicios
Web y los distintos protocolos y len-
guajes implicados, vamos a centrar-
nos en la creaci6n de un servicio Web
con Visual Basic .NET.
Las clases que van a contener rneto-
do s con el atributo WebMethod, y que
van a actuar, por tanto, como servi-
cios Web, suelen derivarse de Sys-
te m. We b. S erv ice s. W eb S erv ice , una
clase que facilita el acceso a objetos
habituales de ASP.NET como en el
caso de las aplicaciones Web abor-
dadas en la entrega previa.
Aparte de derivar de la clase mencio-
nada, 1 0 unico que tendremos que ha-
cer sera marcar can e . 1 atributo Web-
Method aquellos rnetodos que
queremos hacer accesibles para los
consurnidores. Opcionalmente, pode-mos preceder la definici6n de la clase
con el atributo WebService. Esto es
util , par ejemplo, para asociar un am"
bito especifico, en forma de URI, con
nuestro servicio, evitando el usa del
ambito temporal representado por
http://tempuri.org.
Cod ific ac io n del modu lo ASMXLa gesti6n de los servicios Web escri-
tos con Visual Basic .NET queda en
~~Ilar Ver P•• ta~", Qpoione. Ir tttarctidOlet Herro,mlent.l.S A~ud"j---
«l AU<\' I> "'Q Q ® P.~'" 100 z, d I hUp:II1SZC1nB.O.~ICOlitaClone$.urnx
1_C'lX
Cotizaciones
This ""b
_ e ' "-shttp,I~"'_';'"""W",ito de l"""_""" , , "_
~,CIum!l" 1MM_....M(I,. '' ''~' '' 'elM XMl.W~b... 'Iri<~"'_J"'bl!<.
E aGb . XM l wm s e v t c e r l, uo h a I.Dqut fl ,l I[Dap:K4! io .m da f Ol c rte m ~pp']k~tia rt ' i UI di!idrtyd5'b it[~~~.t 1*'" . t ' l ' j ,c.u0 0 t h o : : W m _ h 'L tJ I: I l u r o , p . . , q i , l) u: 1 ~ ~ ~ . t~ b ~ tD,~
KML W i !t ll ~ !i V k' tI ~.u.;m d ' I tk . . .rl !'~o~m .• , i1 , J. ! . pl.J.! ,) I I : IMd~~:t. W~ b ;gvlQQ. '~iGI.IldQk ~moJC P I i : :RTUI tmt~C~
YGII.IIXMl Wcb~~lt'l. lMUo1b1 idmtl:f ird.b'p'' ' Nm!I::i,~( I.I'lilItVOJ.coo't1o,I_FIjI'(xllCi"lpl.o!:.:fOi.In{UJ(li~Y'I)UJ((I~'!itn~jMl:.doro;d[],~mt~, p.n~o,f'wmrnt'lpllU!
' & ld J ou P *r tU l lV X 1 d :L W WW . i !Y i r~ M U I !! !i P~ o !! li lJ j~ l .I kI ! l 1 P. .1 . .t ., ' I . J.VV~M lPO" r . '"J)~~ m lf 1~ 1 ~ 'W W - ,: b_ fK M :r ,. 'W,!)~~~ ~~ ~ l: Jn ~ U l :. : IJ)
fOr XMl. Wdl n:l'vtc~~ul:~'int:wKtJA:s.P.Nzr, ' l 1 1 l i : ~rJuJ.tn;jrN!fiKt"Cll:IlK ~~u:Ii"1irI!! WdlSmrlCI;rtt1:b.J. t. i" I,Ni lm.np~(~~. Ttl i!:W~bSn'i 'ju ~tl :dl:Mru:
II ;;ro_~tt..f• . lU t .! :l p~ I j, j: d t. D tN d "H t h. a . .(oonil)jj tht X M . L W ! l bl t~ ~ : lT I II !' L hr id li . B d ,y w II ~ ( w o tn : l ft l C lk ~ ' I .~ l u 'l t u: m r a .H f J ~ C<! : '~ "hltp~Q~fL~~:&gv.k.u"-
[fA..mSm:vi~,~·kU.p!/,~~~n.~~..u..n~"iWl
'p.!bJ:i.~ 1C"t.~1IJ ~;ev.,'=" !1 [
II :h.pJ.,~Lat.:lcn
manos de ASP.NET, el conjunto de
servicios que se encarqara de inter-
ceptar la solicitud, generar el m6dulo
de descripci6n correspondiente 0 eje·
cutar el rnetodo que corresponda, in"
ciuso compilando el c6digo del servi-
cio si ella fuese preciso.
Para poner el servicio Web a disposl-
cion de los clientes deberemos codifi-
car un modulo ASMX, conocido asi
par ser un archive can dicha sxtsn-
sian. L a cabecera de dicho m6dulo
contara con la marca <%@ WebServi-
ce %> indicando 61 lenguaje en que
esta escrito el servici0, la clase que 1.0
implementa y, si es necesario, el nom-
'bredel archivo que contiene e.1codiqo
de irnplernentacion.
APUNTE
En , cierta f-orma, un modulo
ASMX serfa para un servicio
Web elequivalente al moduloAS~X para una apllcaelon Web:
gusrdando las distancias. elaro
est3..
Podemos crear un servicio Web lntro-
duciendo todo el codlqo en elinterior
del modulo ASMX, sin utilizar siquiera
el entorno de desarrollo de Visual B a-sic .NET. Basta con un sistema en el
que tengamos instalado ASP.NET y
E . l l e n g u a j e K m l e s l a b a s ed e l o s d i s t i n t o s p r o t o c o l o s
g l e n g u a j e s q u e
f u n d a m e n t a n l o ss e r o i d o s W e b .
un editor de texto simple. EI listado 2
rnuestra el contenido de un archive,
Ilamado Cotizaciones.asmx, que al
ser copiado en el directorio ralz de liS,
habitualmente IlnetPublwwwroot, ya
funciona como un servicio Web com-
pleto.
En este caso ASP.NET se encargaria,
al recibir una solicitud, de compilar el
m6dulo y generar la respuesta ade-
cuada a partir de la tuncion Coiize-
cion. Observe c6mo se han utilizado
los atributos WebService y WebMet-
hod.
D esarrollo con el e ntorno de V isualBasi c .NETLa separacion entre el modulo ASMX
y la implementaci6n del servicio Web,
as! como la edici6n del codlqo de es-
te en caso de que se utilicen cornpo-
nentes y , por tanto, sea precisa la per-
sonalizaci6n de propiedades y
respuesta a eventos, resultaran rnu-
cho mas sencillos desde el entorno de
Potrocincdo per
m ~ i I I I ~ i m ~ m I I l l i I ~ i7 _ AficlOSoft@
5/14/2018 [Revista Solo Program Adores] Articulo Web Services Con VB.net de Francisc...
http://slidepdf.com/reader/full/revista-solo-program-adores-articulo-web-services-con-vbnet-de-fra
Microsofte
V isua l Basic .net
<%@WebService Language~"vb" C1ass="SoloProgramarlores. Coti2aciones" % >
Imports System
Imports System. I~eb.Sen lees
Namespace SoloProgramadores
. Derivamos 1s clase de WebService
<WehService (NameSpace:~ "http://WW.tI.fcharte.com" )>
Public Class Cotizaciones -
Inheri t.s webService
, Identificamos e1 metodo con
, e1 atrihuto <WebM.ethod>
<WebMethod> Public Function Cotizacion (V a lor As String) A. s Double
Dim Aleatorio As New Random!)
• Devo1vemos un numero aleatorio
Return A1eatorio.NextDoub1e()
End Function
End Class
End Namespace
desarrollo de Visual Basic .NET, em-pleando asistentes, diseriadores y
editores.
EI primer paso sera iniciar, desde la
ventana Nuevo proyeeto, un Servicio
Web ASP NET, facilitando la ubica-
cion que, normalmente, sera el propio
equipo, representado como loea/host.
AI eerrar el ouadro de dialogo anterior,
el asistente generara un proyecto
eompuesto de un modulo ASMX con
un modulo de cadi go asociado. EI ser-
vieio aparece en un disefiador que
nos permite inclulr componenles des-
de e/ Exp/orador de servidores y el
Cuadra de herramientas, usando la
ventana Propiedades para personali-
zarlos, Tarnbien podemos aeceder al
codiqo de irnplernentacion, eon tan
solo pulsar un enlace.
Utilizando el entorno de desarrollo no
solo nos sera mas Iacil la creacion de
nuestro servicio Web, sino que tam-
bien podremos probarlo y depurarlo
can gran sencillez, bastando la colo-
cacion de algunos puntos de parada yla pulsacionde la tecla F5.
A cce so a l se rv ic io d esd e u nc lle nte W e bTras crear el modulo ASMX propuesto
en el llstado 2, 0 bien un servicio Web
utilizando el asistente tal y como aca-
ba de mencionarse, podemos com-
probar su funcionamiento incluso an-
les de desarrollar un clients, alga que
hararnos de inmediato.
l o s a b 1 b u t o s s o n
e l e m e n t o s d e d a r a t i u o s
q u e p u e d e n a s o c i a r s e a
d i s t i n t o s e l e m e n t o s
d e l l e n g u a j e .
ASP.NET es capaz de generar dina-
micamente una paqina de respuesta
cuando recibe una solicitud que hace
referencia a un modulo ASMX, inclu-
yendo en ella un enlace para obtener
la descripcion WSDL del servicio y
tantos enlaces como rnetocos tenga
el servicio. Aunque 1 0 16gico es que
ese acceso 1 0 efectuemos local mente,
al pulsar F5 se abrira Internet Explo-
rer con la paqina, nada nos impide ac-
ceder de manera remota can cual-
quier cliente, lncluso desde otros
sistemas operativos.
Afiadiendo al URI usado para aecederal servieio Web el sufijo ?op~ seguido
del nombre de uno de los rnetodos,
por ejemplo ?op=Cotizaeion, obten-
dremos de ASP.NET una paqina con
un formulario que permite eomprobar
el funcionamiento de dicho rnetodo, EI
formulario contara con apartados para
la introducci6n de los parametres, aSI
como un baton que, al ser pulsado,
enviara la lIamada al servicio y abrira
una nueva ventana mostrando el re-
J
_ ....... 10" . .... ' 1 .. '.
•• It •. " ,I ,.
1 " •• '''r'~'i;'''''_''.''' ..11....' I....._>.1.... e:."'"
' . : '" ~ ~ ~ : ~ u . . . o ; ~.I,J..,I --...y M ' : . . . L . L . I I .
sultado. Asi podemos comprobar si
todo es correcto mucho antes de es-
eribir un cliente.
Otra eapacidad de ASP.NET es la ge-
neraclon autornatica de la descripeion
WSDl a partir del c6digo del servieioWeb. Desde un cliente Web basta con
ariadir ?WSDL tras el URI del servicio
para obtener dicha descrlpclon que,
en el caso de nuestro ejemplo, serfa
la que puede verse en ellistado 3. Por
cada metodo disponible aparece su
nombre, el tipo y nombre de los para-
metros y el tipo de los valores devuel-
los, asl como los enlaces correspon-
dientes a los mensajes entrantes y
salientes.
La descripci6nWSDL e~u h d o - .•cu~.ento XML, por 1 0 que para
poder verlo en un. cliente WebI ~. Ii" •
este' debe contemp'ar,'alYisualj.
i 'zaci6~ de e s e tip6 de do'c~~I~ntocon alguna hojade estllo. Inter-
, n e t Ex.plorer~la h~ce,1er~ I~OI~si
otros'cIiJntes.1 I' I ' II; I! I L l i I I !' I I P I J
Teniendo en marcha nuestro servicio
Web, que incluso hemos eomprobado
localmente desde un clienle Web. el
paso siguiente sera preparar la aplica-
cion que consumira ese servicio, una
aplicaclon que puede escribirse en
cualquier lenguaje y ejecutarse en
cualquier sistema operative siempre
Pctrocinodo por
MlClOso f tc
5/14/2018 [Revista Solo Program Adores] Articulo Web Services Con VB.net de Francisc...
http://slidepdf.com/reader/full/revista-solo-program-adores-articulo-web-services-con-vbnet-de-fra
Microsoft @
Visua l Bas ic .ne t
m e d i a n t e l o s s e r o i c i o s
W e b s e f a c i l i t a l a
i n t e r c o n e s i 6 n e n t r e
a p U c a c i o n e s h e t e r o g e n e a s .
o
que tengamas los recursos necesa-
rios para enviar y recibir mensajes
SOAP. Logicamente, a nosotros nos
interesa saber como crear ese tipo de
proyecto con Visual Basic .NET.
Independientemente del tipo de pro-
yecta en que nos encontremos, para
poder cansumir un servicio Web ne-
cesitamos construir un proxy, un mo-
dulo que se ejecutara localmente ac-
luanda como intermediario entrenuestro programa y el propio servicio
Web, sncarqandose de los detalles de
preparacion, envfo, recepcton y des-
codificacicn de mensajes.
Aunque podriamos construir ese
proxy mediante herramientas exter-
nas, la manera mas sencilla consists
en desplegar el menu emergente aso-
ciado al proyecto en el que estamos
trabajando y seleccionar la opci6n
Agregar referenda Web. EI cuadra de
dialoqo que se abre, can el mismo ti -
tulo que la opci6n, facilita tanto el ac-
ceso a los registros UOOI de Microsoft
como la introducci6n directa de un
URI para obtener la informacion nece-
saria.o
liiE,lt it lWill'l!il ro r W e . b Sl!r-.I~!!!I i:
UOOII. , .. _ I J O l l ' , J ;,r..." " II IW.' • • " ,. . .. ._.j ,_Ull""" _~
BrfllW iil
~ ~ U1~~i .l li lL I~ IuJ IWJJ L~
~&';;!.'iJ}~,.~~.~fltW~~~.lu~1I1""""r~
,!!!~-,." ..~,--."-,-- F"-___j
~~-I_'_"-1
Tras agregar la referencia, nuestro
proyecto contara con un nuevo ambi-
to cuya nombre dependera del servi-
dar en el que se ejecute el servicio. Si
el servidor fuese www.fcharte.com
nos encontrariamos con un ambito Ila-
.~
< 'I xm 1 v er si on =" l. O" e nc odi ng =" ut f- 8" ? >
- < de fi ni ti on s x ml ns : h tt p~ '' ht tp :/ /s ch em as .x ml so ap ,o rg /w sd l/ ht tp / " x ml ns : s o-
ap~''http://schemas.xmlsoap.org/wsdl/soap/''
xmlns:s=''http://www.w3.org/2001/XMLScherna'' xmlns:sO~''http://www.fcharte.com''
xmlns:soapenc=''http://schemas.xmlsoap.org/soap/encoding/''
xmlns: tID= ..ht tp:Ilmicrosoft ..om/wsdl/mirne/textMatching I"xmlns:mirne=''http://schemas.xmIsoap.org/W6d1/mime/''
t ar ge tN a me sp ac e= ..ttp://www.fcharte.com ..
xmlns=''http://schemas .xmlsoap .org!l;sdll">
- < ty pe s>
- < s: s ch e ma e le me nt Fo rm De f au lt = "q u al if i ed " t ar ge tN a me sp ac e= ' 'h t tp : // ww w .f c ha r-
te.com">
- < s: el em en t n am e= "C ot iz ac io n" >
- < s: c om p1 ex T yp e>
- < s: s eq u en ce >
< s: el em en t m in Oc cu rs =" O" m ax Oc cu rs =" l" n am e= "V al or " t yp e= "s :s tr in g" I ></s:sequence>
</s:cornplexType>
</s:e1ement>
- <s re Lemen+ name="CotizacionResponse">
- < s, co mp le x Ty pe >
- < s: s eq u en ce >
< s: e1 em en t m in Oc cu rs =" l" r na xO cc ur s= "l " n am e= "c ot iz ac io nR es u1 t" t yp e= "s :d ou -
ble" I ></s:sequence>
</s:complexType></s:element>
</s:schema>
<I types>- < me ss ag e n am e= " Co ti za ci on So ap ln " >
<part n am e= e paremet ers" element="sO: Cotizacion" I ></message>
- < me ss ag e n am e= " Co ti za ci on So ap ou t" >
<part name="parameters" element="sO:C otizacionResponse" I ></message>
- < po rt T yp e n am e" ' '' C ot iz ac io ne sS oa p' ' >
- < op er at io n n am e= "c ot ha ci on ">
< in pu t me ss ag e= "s O: Co ti za ci on Soa pl n" ! >
<output message="sO:CotizacionSoapOut" I ></operation>
<!portType>
- < bi nd in g n am e= " Co ti za ci on es So ap " t y pe = "s O :C ot iz ac io ne sS oa p" >
<soap:binding transport=''http://schemas.xmlsoap.org/soap/http'' style="docu-
ment" I >- < op er at io n n am e= " Co ti za ci on " >
< 6o ap :o pe ra ti on s oa pA ct io n= ..ttp://www.fcharte.com/Cotizacion ..style="docll-
ment" I >- < in pu t>
<aoape body usa=" literal" I ></input>
- < ou tp ut >
< so ap :b od y u se -" l it er al " />
</output>
</operation>
</binding>
- < se rv i ce n am e- " Co ti za ci on es " >
- < po rt n am e= " Co ti za ci on es So ap " b in di ng " '' ' sO : Co ti za ci on es So ap ' '>
<soap:address location-''http://localhost/Cotizaciones.asnIX'' I ><Zpoz t>
<Zserv ice>
</definitions>
made www dentro de otro lIamado
fcharte que, a su vez, sstarla conteni-
do en com, de tal manera que habria
que usar la referencia com.fcharte.
www.NombreServicio para acceder al
servicio. Asumiendo que estamos pro-
bando el servicio localmente, el ambi-
to se denorninara localhost.
Supaniendo que tenemos un formula-
rio con dos cajas de texto y un bot6n
en su interior, el codiqo siguiente ob-
tend ria una cotizaci6n y la mostraria
en el formulario:
Priv ate Sub Buttonl Click {By Val
sender As system.Obiect. BvVal e As
s vs te m. Ev en tA rq s) H an dl es
Buttonl. Click
D im S er vi ci o As N ew l oc al ho st .
C ot iz ac io n ( )
Palrocinodopor
MicrosoftC J
5/14/2018 [Revista Solo Program Adores] Articulo Web Services Con VB.net de Francisc...
http://slidepdf.com/reader/full/revista-solo-program-adores-articulo-web-services-con-vbnet-de-fr
Mi,crosoft ©
V isual Basic .net
ClickJ~ fur a complete list of operatlons.
Cotizacion
Test
To test tile operation uslllg tile HTTPPOSTprotocol. did< the 'Invoke' button,
Parametef" Value
Valor. I r M ' : C S F ' i j = - ~ - - - - -- - - - -- - -
SOAP
The fullowlng IS a sample SOAP request and response, The placeholders shown need to be replaced
Withactual values.
P02'I' /CUt:!loV'B/Cotiz acionea/cot Lzac Lones , "smx HTl'P/l.l
H.o~t, lo<:a~lhost
Com;'ent:-Type: text:/XlIL1; chllrs.,t=ut:f- a
Content-Length.: hngth90AE'Act:i.on: "bttp: / /www.fchat·te.com/COti zac ion'
<?:ml vel:~lion="LO" encoding="utf-B "1>
<"o"-p: Envelope x:m.lns:"""i~"ht'~p: / /""""'. w3 .0(g/2 00l/XMLSchema- in9umce" xmln9 ...
~Ir
tbCoi:izacion.Text = Servicio.
Cotizacion (tJ:)V.alo~.Text)
End Sub
metoda Cotizacion se encarga de ge-
nerarel mensaje SOAP, enviarlo al
servidor, esperar la respues1a, desco-
dificarla y facilitar el resultado.
EI servicio, Cotizscion, se utiliza como
si de cualquier otra clase se tratass,
creando un objeto a partir de ella e in-
vocando a un rnetodo. Aunque
aparentemente se este utilizando un
objeto local, este es en realidad un
proxy que, por ejernplo, al Hamar al
M E J O R A S E N V 1 S U A b . B A S IC .N E T
1 0 0 3
La nueva version de Visual Studio
.NET. que sera presenlada a finales
~II
'" GJlldiJ CC<lSUm"""
. . .)<' a u . . . . -
de este mismo mes, incluye diversas
mejoras en los lenguajes, componen-
les y el propio entorno de desarrollo
que Visual Basic ~NET comparte con
los demaa Ienquajes. Una de esas
mejoras afecta al cuadra de dialoqo
Agregar referencia Web.
Como se aprecia en la ultima figuraque acornpafia el lexto, este nuevo
cuadro de dialoqo incluye opciones
adicionales que facilitan la busqusda
de servicios en el ordenador local, as!
como la de registros UDDI en la red
donde se ejecuta la aplicaclon. Resul-
ta. por tanto, mas tacil localizar el ser-
vicio que se necesita, permaneciendo
el resto de la funcionalidad sin
cambios.
H I a n a d l r u n a r e f e r e n d a ·W e b s e c r e a
a u t o m c t t i c a m e n t e e l p r o K Y .q u e f a c i U t a r 6 l a
c o m u n l c a d 6 n c o n
e l s e r o l t l o
R E S U M I E N D O
Adernas de facilitar la creacion de
aplicaciones can interfaces Web,
ASP.NET tarnbien simplifica el desa-
rrollo de servicios Web alslandonos
de todos los detalles de bajo nivel y
autornatizanco tareas como la oblen-
cion del modulo de descripcion del
servicio Conjuntamen1e can el entor-
no de Visual Basic .NET, sus asis-
tenles y disei'iadores, el diseno de
servicios Web y aplicaciones que losconsumen, como ha podido ver en es-
ta entrega, no as una larea compleja.
La entrega tarnbien Ie ha servido para
adquirir algunos conocimienlos gene-
rales sobre el funcionamiento de los
servicios Web y fundamentos sobre
SOAP, WSDL Y UDDI. Esta informa-
cion Ie sera utll indistintamente del
lenguaje, el sistema operative y la pla-
taforma hardware sobre la que
trabaje.
Patrocinado por
Miclf1soft~