web services con vb net - francisco charte
TRANSCRIPT
5/13/2018 Web Services Con Vb Net - Francisco Charte - slidepdf.com
http://slidepdf.com/reader/full/web-services-con-vb-net-francisco-charte 1/8
Microsoft ©
V isua l Bas ic .ne t
Servicios Web
ci6n -como puede ser CORBA (Com-
mon Object Request Broker Architec-
ture), DCOM (Distributed Component
Object Model) 0 RMI (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 alll
donde la mayorfa de soluciones de
conectividad entre aplicaciones han
fracasado. La principal raz6n para ello
es que se fundamentan en el uso de
protocolos y lenguajes consolidados,
como es el caso de HTTP, para el
transporte, y XML (extensible Markup
Language) para la codificacion de
mensajes.
Can Visual Basic .NET podemos
crear servicios Web con gran simplici-
dad, ya que el propio lenguaje incluye
los elementos, conocidos como atri-
butos, para convertir los rnetodos de
cualquier clase en rnetodos de un ser-
vicio Web. De igual manera, tarnbian
podemos crear aplicaciones que co-
necten con esos servicios Web.
Francisco Charte Ojeda
L os serv ic io s W e b facilitan Ia co nex io n en tre ap licacio nes su peran dod ife re nc ia s e ntr e s is tem as o p er ativ o s, p la ta fo rm a s y lo ca liz ac io n es
g eo gra fic as. C on VB .NET la creac ion de estos serv ic io s resu lta m uy
senc il la .
.: CONTENIDO
o
'.FJ~~1;~~~to:s;; o : t o c o l . o s y.::I~~~H~i~s::;::'; ;;'':';'~ ' C t e a c i q o ; d e : serv, ic : ips,yv,eb• cO : ~S :t !lI n ;Q : d :e :s e r\ tic io ~ :We b .. : t v 1 : ~ o r i i s ~ : I J Y i s u a r B~~ i l? ' NET
20Q 3;;;;:;:;:, . "
o
Diseflada originalmenle como un me-
dio para compartir documentos cientf-
ficos can enlaces entre sf, la WWW
(World Wide Web) se ha convertido,
can el tiempo, en el servicio mas po-
pular de Internet si exceptuamos, qui-
za, el correo electrOnico. La Web, co-
mo se la conoce popularmente, hace
posible que cualquiera ponga en la
red un documento y este sea accesi-
ble universal mente, sin importar el tl-
po de ordenador, sistema operativo ni
localizacion qeoqrafica desde el que
se solicite.
Esa independencia es posible gracias
al uso de protocolos y lenguajes acep-
tados como estandar, en este caso
HTTP (HyperText Transfer Protocol) y
HTML (HyperText Markup Language).
EI protocolo HTTP tiene la ventaja de
ser aceptado como canal de cornunl-cacion con el exterior en la mayoria
de las configuraciones, no siendo in-
terceptado par los cortafuegos (fire-
walls) hardware ni software. Esto Ie
convierte en un protocolo ideal para
conseguir la conectividad entre aplica-
clones que, historicarnente, han en-
contrado problemas para operar ade-
cuadamente a traves de Internet por
ef hecho de que los puertos que se
util izan, especificos para cada solu-
~ ~ ~ lm ; I ! I M ! I I I I ] ~ ~ 13 .
R p a r t i r d e u n m 6 d u l o
R S I I 1 X R S P . n E T e s C i l p a zd e d e s c u b r i r e l s e r v 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 algo indispensable,
puesto que podemos crear y consumir
servicios Web con Visual Basic .NET
sin necesidad de conocer ni 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-
rnacion, 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
'I ro o b o x
~_~om&1t;P!)I_
~ . I . -~ attriJ ute
[ l I ; ] attriJutoGrouP
J§ j c"",loxTY;-
I§! <~TI'I'"
lI D Qr 'Q< J I )
l * I " ' Y
JO;iI . . , . , .AttrW.
III fecet. . ~~R.~
f¥~~E
E ...
E .....
J i i I d 1 i o. f Titulo
E Aut",
E E d it or ia l
E IS SI II
strtlQ
st~
,tti 'og
.t....
"11-
V - U U A / Btuie .NET J Js po n e t ie un eJitor II inuJ ti e NquntUU XSD 'l'"poJe rno , Win' t:Im«J
pmw t:Mt7' como pmw modif iau' NquntUU XML
Patrocinado por
. A ficro so tt@
5/13/2018 Web Services Con Vb Net - Francisco Charte - slidepdf.com
http://slidepdf.com/reader/full/web-services-con-vb-net-francisco-charte 2/8
Microsoft ©
V isua l Basic .net
Sollcllo desclipcl6n
WSDL
S e rv ic io W e b
software que se ejecuta en un servi-
dar, en ocasiones solidariamente con
un servidor Web como puede ser
liS (Internet Information Server) 0
Apache, y atiende solicitudes que Ie
lIegan de clientes remotos. En
esta cornunlcacion intervienen un pro-
tocolo de transporte, un protocolo de
gesti6n de lIamadas remotas, un len-
guaje de descripcion de servicios y ,
en ocasiones, un servicio de directorio
que ayuda a localizar el servicio Web
que se necesita.
E s qu em a d e f un cio nam ie ntoObtengamos primero una vision gene-
ral de todo el proceso que se sigue
desde que un cliente necesita un cier-
to servicio hasta que 10localiza 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 solicitud al servidor de
directorio, conocido como UDDI (Uni-
versal Description, Discovery and In-
tegration), indlcandole el servicio Web
que necesita y obteniendo como res-
puesta el URL al que debe dirigirse.
Con ese URL el cliente se dirige al
servidor que ofrece el servicio Web y
solicita el documento de descnpclon,
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.
I
Er i~? fed e".lp.~e:.ia~fa.);~~)~!~~i~bl~·i~stalar unof q\lll)as; regis ros
t .>1 • 1 • .I., !l
UDDI que ayUl"~~ a localiza'1los
iservicios Web ~e~d.e cada ipJestoj .," t
partlclilar. Tam ien eiisteh regis-I
: tros accesibl~~ i!~ubllb~l]J~nte, ,t ~ , ' -1 -, t.. como los que off,ec~Micros.oft.I 1111 ·1 I \;d"I;" i,dj \1 1 ' I\i'",·;.",·, uru.
Disponiendo de la descripcion, el
cliente atectua una Ilamada al rnetodo
que Ie interese codificandola en un
mensaje SOAP (Simple Object Ac-
cess Protocol) que incluira tambien
los parametres adecuados. La res-
puesta del servidor, devolviendo el re-
sultado al cliente, se codificara igual-
mente utilizando SOAP.
La cornunicacicn entre el consumidor
y los servidores se etectua a traves de
Internet y sobre el protocolo HTTP
para transportar los mensajes SOAP.
De esta forma puede superar los dis-
positives cortafuegos sin problemas.
EI consumidor y el servicio no tienen
por que estar escritos en el mismo
lenguaje, ni ejecutarse sobre el mis-
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 i l i z a
e l p r o t o c o l o H T T P c o m o
m e d i o d e t r a n s p o r t e .
la base es XM lEI pilar principal de los servicios Web
es, sin duda alguna, el lenguaje 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 alios como es-
tandar del W3C (World Wide Web
Consortium), actualmente XML esta
presente en todos los sistemas a
traves de multitud de aplicaciones ya
< ? x m l v e r s i o n - · l . 0 · e n c o d i n q = · u t f - S - 7 >< L i b r o s >
< L ib r o I S BN z "S 4 -4 1 5- 1 37 5 -g w >
< T i t u l o > B a s e s d e d a t o s c o n V i s u a l B a s 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 o i s o o C h a r t e < / A u t o r >
< p l I . g i n a . s > 5 2 8 < / P a q i n a s >
< P r e c i o > 3 S < / P r e c i o >
< / L i b r o >
< L ib r o I S BN . MS 4 -4 1 5- 1 48 2 -S w >
< 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 d it o r il l . l> A n ay a M u l t1 m e di a < /E d i to r i al >
< A u t o r > F r a n o i sc o C h a r t e < / A ut o r >
< p l I . q i n a s > 6 8 S < / P a q i n a s >
< P r e o i o > 3 9 . 5 < / P r e c i o >
< / L i b r o >
< / L i b r o s >
~ ~ , l i I ~ : l M ~ 1 I I I 1 : l ~ 14 .Potrocinado par
. /fIIicrosott©
5/13/2018 Web Services Con Vb Net - Francisco Charte - slidepdf.com
http://slidepdf.com/reader/full/web-services-con-vb-net-francisco-charte 3/8
Microsoft ©
Visua l Basic .net
o
que, fundamentalmente, facilita el in-
tercambio de informacion al ofrecer
una representacion independiente de
lenguajes, sistemas y plataformas. Un
ejemplo son los sistemas de gestion
de bases de datos, como es el caso
de SQL Server, que contemplan la ge-
neracion de XML a partir de las con-
sultas.
La estructura de los documentos XML
se deduce a partir de las marcas que
contiene, es 10habitual en docurnen-
-tos aislados, a bien se define en un
esquema XSD (XML Schema Defini-
tion). Ajustando sus documentos a un
mismo esquema XSD, varias empre-
sas pueden intercambiar informacion
en formato XML sin importar en que
esten escritas sus aplicaciones 0
sabre que confiquracion softwarehardware se ejecuten.
EI editor de Visual Basic .NET recono-
ce la sintaxis de XML y, en caso de
contar can un esquema XSD,incluso
ofrece ayuda sabre las marcas a me-
dida que van introduciendose, En rea-
lidad, usando el disenador de esque-
mas XSD y la edicion de datos XML,
mediante la cual se muestra como
una tabla de datos la informacion con-
tenida en los docurnentos XML, nunca
necesitaremos escribir directamentecodigo XML.
TRueD
Puede usar Visual Basic .NET
para editar cualquier documento
XML, en sustituci6n de otras he-
rramientas, valldandolo y editan-
do su contenido como si de una
tabla de una base de datos se
tratase.
En el listado 1 puede ver un sencillo
documento XML compuesto de un
elemento raiz, Libras, con dos ele-
mentos de tipo Libra cada uno de los
cuales dispone de un atributo, lIama-
do ISBN, y una serie de subelemen~
los. Como puede apreciar, es tacil
comprender tanto la estructura comoel contenido.
S O A P
EI primer problema que plantea la in-
terconexion de aplicaciones remotas,
que se ejecutan en distintas localiza-
ciones qeoqraficas y, posiblemente,
sabre distintas configuraciones y sis-
temas, es el transporte de las lIama-
das a rnetodos y las respuestas desde
el origen al destino y viceversa, sal-
vando los obstaculos que pone Inter-net y tarnbien todas esas diferencias
Nuevo provecto ~
I l pos de_p"0yecto: E ! l a n t i l ias :
o "@ 1 P fo te -C 1D s d e v ls tIa l B as IC " A plie a eiJ n p a ra W i nd o ws
. P ro ye e to s d e V is ua l C # ,- Bb l o t e e a de c lases
. · · · · e J P ro ye c1 Ds d e V isua l CH Y B i l i o t eea de l con t r a l e s de Whd ow s
: E J Proyec1DS de n ta l ac i J n e Imp I e t n e n t a c !0 1 Ap l l cac i J n W e b AS P.N ET
f f ieJ O t ro s p ro y ec to s
L. . SOiu:1cms d e V isua l studio
B b l o t eca de c o n tr a l as " W e b
A p I it ac iJ n d e C O I lS t Ila
'a S e rv lc o de W i n d ow s
t :i li '1 ' lO r e : -= - ICOTliIo iCiCJI1es~t~~~ i ~ 0 ~ ~ - - ~ : / ~ ~ '- . ·~a l~ho -s~VDx~_ -s -o~VB~~~~·_~_ t -~ -~ -bn - ·es-- - - - - - - - - - - - -~- , ·~
U i s u a l B a s i c . O f f 2 0 0 3
i n c l u y e u n c u a d r o d e
d i d l o g o m e j o r a d o p a r aa n a d i r r e f e r e n c i a s ' W e b .
de arquilectura software y hardware.
La respuesta a este problema as
SOAP, un protocolo definido en abril
de 1998 de manera conjunta entre Mi~
crosoft, UserLand y Developmentor.
SOAP facilita un mecanisme RPC
(Remote Procedure Call) compatible
can Internet al usar HTTP como me-
dia de transporte y supera todas las
diferencias al estar basado en XML.SOAP. Por tanto, es un protoeolo de
tipo XML-RPC, no siendo en este
momenta el unico pera sf el mas utili-
zado.
SOAP codifica las Ilamadas y res-
puestas utilizando un cierlo esquema
XML, de tal forma que las aplicacio-
nes no tienen en ninqun momento que
saber el lenguaje en que estan escri-
tas a la plataforma sabre la que se
ejecutan a fin de efectuar convsrsio-
nes. Suponiendo que tuviesemos unaaplicacien, un servlclo Web, que taci-
litase informacion biblioqrafica, un
cliente cualquiera podrfa enviar el si-
guiente rnensaje SOAP para solicltar
la ficha de un cierto libra:
<SOAP-ENV,Envelope>
<SOAP-ENV.:Body>
<Solicitud>
<ISBN>B4-415-1375-9</ISBN>
</Solic,itud>
</SOAP-ENV:Body>
< !SOAP-ENV: Envelope>
EI servicio Web, al recibir el mensaje,
10descodificarfa y obtendrla el ISBN
dellibro que dasea consultarse, gene-
rando una respuesta, que podria ser
la mostrada a continuacion, yenvian-
dola de vuelta al cliente.
<SOAP-ENV:Envelope>
<SOAP-ENV:Body>
Patrocinado par
MicIosott~
5/13/2018 Web Services Con Vb Net - Francisco Charte - slidepdf.com
http://slidepdf.com/reader/full/web-services-con-vb-net-francisco-charte 4/8
Microsoft ©
V isua l Bas ic .ne t<SolicitudRespuesta>
<Titulo>Bases de datos con
V is ual Ba si c . NE T< /T it ul o>
<Elditorial>Anaya,
Multirnedia</Editorial>
< A ut o r> F ra n ti s co C h ar t e< / Au t or >
<paginas>S28</paginas>
<Precio>35</Precio>
</Solicitud~espuesta>
</SOAP-ENV:Body>
</SOAP~ENV:Envelope>
Estos mensajes se transportarfan de
un extremo a otro mediante el proto-
colo HTTP, aunque realmente SOAP
contempla el uso de otros como
SMTP. En este caso, el mensaje se
recibiria como si fuese un mensaje de
correo y, por el mismo media, se de-volverfa la respuesta.
AI trabaiar 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.
WSDL es, al igual que SOAP,una aplicaci6n de XML, un tipo
de documento que se ajusta a un
cierto esquema XSD .1 1
WSD lEn el punto anterior hemos supuesto
que el cliente a consumidor sabe d6n-
de tiene que dirigir sus mensajes
SOAP, el URI del servicio Web y , ade-
mas, conoce los rnetodos que hay dis-
ponibles y los parametres que necesi-
ta cada uno de elias. En el ejemplo
previa se utiliza un rnetodo lIamado
Solicitud al que se facilita el pararne-
Iro ISBN.
Seran muchos los casos, sin embar-
go, en los que el cliente desconozca
cual es la denominaclon exacta del
rnatodo al que debe invocar, 0 la lista
de parametres, especialmente duran-
te la fase de desarrollo. Esta informa-
ci6n puede obtenerse solicitando al
servidor que facilite una descripci6n
del servicio que ofrece. La respuesta
sera un documento WSDL.
WSDL es un lenguaje que, al igual
que el protocolo SOAP, asta basado
en XML, de tal manera que un docu-
mento WSDL es, al fin y al cabo, una
aplicaci6n XML, un documento que se
ajusta a un cierto esquema. En dicha
descripci6n se enumeran los metodos
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 elias.
t"""~ur~~.~.~ __ ........ .. . - - !. .. ·W ' . .. I J I ,' 1 .: iI l . . .·.··,j:J·c, ,t_
Dude el entorno de Jisefio poJemo.impkmtmtllr nuntro .ervkio, ejeellklrlo Ydip_rio
Como vera despues, ASP.NET es ca-
paz de generar autornatlcarnente la
descripcion WSDL de un servicio Web
sin ninguna intervenci6n del c6digo denuestro programa.
UDD IEI primer paso que dara un consurni-
dor que necesita un servicio Web y
que no conoce su localizaci6n sera,
sequn el esquema trazado anterior-
mente, dirigirse a un servidor UDDI
para efectuar una busqueda. Cuando
necesitamos un cierto documento de
nuestro ordenador y conocemos el
camino y nombre exactos, 10 pode-
mos abrir directamente. En muchos
casos, sin embargo, necesitaremos
efectuar una busqueda, por ejemplo
desde el Explorador de Windows.
UDDI es un servicio de directorio que
funciona de manera analoqa al direc-
Iorio de archivos que hay en nuestro
sistema.
Para efectuar una consulta es nece-
sario conocer la direcci6n de una
base de datos 0 registro UDDI. Las
empresas que trabajan conjuntamen-
m ~ : II I~ t~ l~ ~ l I I l l i l ~ i6 .
E m p r e s a s c o m o I B m y
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 UDDI,
existiendo asimismo registros publi-
cos. ofrecidos por empresas como
IBM, Microsoft y SAP, y registros para
realizar pruebas puestos en marcha
par esas mismas firmas.
EI entorno de Visual Studio .NET
cuenta can un cuadro de dialoqo, 10
utillzara en un ejemplo posterior al co-
dificar un cliente, que permite conec-
tar' can un registro UDDI para descu-
brir los servicios que hay disponibles y
localizar el que nos interesa.
P rog r amac ion con a tr ibu to sUno de los nuevos 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-
racterfstica de la plataforma de
desarrollo que dellenguaje en sf.
Los atributos pueden ir asoclados adiferentes construcciones del lengua-
je, como pueden ser clases, enumera-
clones, rnetodos, interfaces, estructu-
ras y propiedades. EI atributo en sl,
ciMndonos a la sintaxis de Visual Ba-
sic .NET, precede al elemento al que
afecta y vendra delimitado entre los
signos <y >.
Mediante los atributos es posible aso-
ciar una descripci6n 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 rnetodo sera
ofrecido como rnetodo de un servicio
Web.
Suponiendo que estuviesernos dise-
nando un servicio Web capaz de otre-
cer la cotizacion actual de cualquier
valor en balsa, 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, oesiqnandolo como metoda
Potrocinodopor
Microsott@
5/13/2018 Web Services Con Vb Net - Francisco Charte - slidepdf.com
http://slidepdf.com/reader/full/web-services-con-vb-net-francisco-charte 5/8
Microsoft ©
Visua l Bas ic .ne t
de un servicio Web, serla la siguiente:
<WebMethod(Dsscription:="Devuelve
cotizaci6n de un valor"» _
P ub li c F un ct io n C ot iz ac io n( Pu bl ic
Valor As Strinq) As Double
o
En este caso el atributo WebMethod
lIeva asociado un parametro, Descrip-
tion, con el que tacilitarnos la descrip-
ci6n del metodo, Esto es algo total-
mente opcional, pudiendo incluirse el
atributo como <WebMethod(», sin
pararnetro alguno.
Observe, en el fragmento de codiqo
anterior, la existencia del caracter _
tras el atributo, uniendolo de hecho
con la linea siguiente. Puede colocar
atributo y cabecera de la funcion todoen una sola linea.
o
Ahora que ya tenemos un conoci-
miento general sobre los servicios
Web y los distintos protocolos y len-
guajes implicados, vamos a centrar-
nos en la creacion de un servicio Web
con Visual Basic .NET.
Las clases que van a contener rneto-
dos con el atributo WebMethod, y que
van a actuar, por tanto, como servi-
cios Web, suelen derivarse de Sys-
tem.Web.Services. WebService , una
c l a s s 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 ciase mencio-
nada, 10unico que tendremos que ha-
cer sera marcar con el atributo Web-
Method aquellos rnetodos que
queremos hacer accesibles para los
consurnidores Opcionalmente, pode-mos preceder la definicion de la class
con el atributo WebSelVice. Esto es
util, por ejemplo, para asociar un am-
bito especifico, en forma de URI, con
nuestro servicio, evilando el uso del
ambito temporal representado por
http://tempuri. org.
C o dific ac io n d e l m o dulo ASMXLa qestion de los servicios Web sscri-
tos con Visual Basic .NET queda en
-. OIt1mcm"es m o b Servlc" - Galeo"
; 1 Archl"o !"d"ar ",er ~e'ta~a Qp~lone. Ir ~a r~Mo 'e . ! 'I"rrarnlsnta' I\~u~a+-..--- .---~ - --------------~,! «l II 1 n I . , Ii C > = ¢' Q ® P ., ar j I I I n t dh l l l l :111921 ij~ O . ~ IC o t i, a Cj O n e s a.""',
;;:,!Im. . : . J I : ' ! l i I
Cotizaciones
"I 'hU web ~e iriI1IIiins1'l;t1J:Nt_~fi esit~ Uf~ .QJIlIeqace:.
Re~ C l umge tho dol..... "" ' ' ' ' ' " 1 ' ' ' ' ' ' ' lief .. e"'" XMt W~b _~ .. .....to po I i l l < .
£ ac t . . XY11 lh b sevtce II.(M!; a I . .O iqut I 'L<IDlI ! " ! iPKtt ne cd ee f o~ d i~ tU. "p.P ' lk: i lt ion: i t,lI dlsli[)!Uili:L it f :M r ( 'L , ,~ ~ ~n~.u 0iI I I t " b i ! : W¢.. hlq. :/~l'N'Wi .on:! t1 i ~~O~P l l ! !o~XM L W d J I H 1, 1 'k t! i t h .: iI lu ~ ~ rl !l t' i' LJ : op a 'l l! f' L 'l "b U 'l .P u P ll i; !l t\ M .X M l . W e b k r V1 ~ tt "" ~ d. td c IftLO"PI:.tl'laCiRi.t~~CIj:.
Y OI.D XMl W(b service sh.oul.,fiIMioimtifird bv" [")ffi(~~ I:b:iIt]lOO.oo; t . .1 l ) . ) . For ( ::umpl.o !:, yoomu .a e l I t 'U1 o((I~1i Intnru:tdDro:l1nOilt'rit~! p21t ( J . t W Wlmo! ! ! ip . : i I ( . . j ! .
Al~utb!rua j'XML W(b"W~vic t ~~~llMk.11~ U :~L ! , 'I1lIrIrIU:(1M1~O~ 'II)~~ :t{1.O~t l )AWW@l.(Xt4J., Wtt ;. . .ul i ' lCt ~Jllic~ne ClUj,)
Jo~ XM.L.Wdl·lUvi~u nCllirij UlinJ ASP.NET, 1 D I : d . c f ~ t O : i l r . . - t r .! l p K l r CaI :Lb( ~ IJJiq 1 : b t WdlS~rvic~ .nUilutL1 N:iIffiI!:!ip.ic~pat:T.1ht W~b~n.,iu au:dl;.tru
is ~ attzi,UU"P(i'IKdwt..tw!:d"i5t..h.:i1t(OD.birt:i W XML W".:b!~rtwi~~mtt.htld:li. Bdowlll(O~~:-;:~~ ih.U~(UWIIH~IOI!:f..O "b-tt.,p.~olMt.~~M,!,,:
~ie ~~"I I '~~""; e"iIi [
II ;:i.~J.llliilillii.ta~
manos de ASP.NET, el conjunto de
servicios que se encarqara de inter-
ceptar la solicitud, generar el modulo
de descripcion correspondiente 0 eje-
cutar el rnetodo que corresponda, in-
cluso compilando el codigo del servi-
cia si ella fuese preciso.
Para poner el servicio Web a disposi-
cion de los clientes deberemos codifi-
car un modulo ASMX, conocido asl
por ser un archivo con dicha exten-
sion. La cabecera de dicho m6dulo
contara con la maroa <%@ WebServi-
ee %> indicando el lenguaje en que
esta escrito el servicio, la clase que 10
implements y, si es necesario, el nom-
bre del archive que contiene el codiqo
de implementacion,
APUNTE
Podemos crear un servicio Web intro-
duciendo todo el codlqo en el interior
del modulo ASMX, sin utllizar siquiera
el entorno de desarrollo de Visual Ba-
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 tsxto simple. EI l istado 2
muestra el contenido de un archive,
1.lamado Cotizaciones.asmx, que al
set copiado en el directorio ra t z de liS,
habitualmente IlnetPublWWlfllroot, ya
funciona como un servicio Web com-
pleto.
En este caso ASP.NET se encargarfa,
al recibir una solicitud, de com pilar el
modulo y generar la respuesta ade-
cuada a partir de la tuncion Cotiza-
cion. Observe como se han utilizado
los atributos WebService y WebMet-
hod.
D esa rro llo c o n e le nto rn o d e Visua lB a s ic .N E TLa separacion entre el modulo ASMX
y la implernentacion del servicio Web,
as! como la edici6n del codiqo de es-
te en caso de que se utilicen compo-
nentes y, par tanto, sea precisa la per-
sonalizacion de propiedades y
respuesta a eventos, resultaran rnu-
cho mas sencillos desde el entorno de
Potrocinodo per
m ~ i I @ i m ~ m I I l l i l ~ i7 . ." . . . .. . . .. . . . . . . . . . . . . . . . . . . . ' , . . . . . " . . . ' , . , ' , . . . . . . . . . . . . . . . . . . . . . . . .. . . . . . . .. . . ' , . . . . . . . . . . .. . . . . . . . . . . . . . . . . .AficlOsoft©
5/13/2018 Web Services Con Vb Net - Francisco Charte - slidepdf.com
http://slidepdf.com/reader/full/web-services-con-vb-net-francisco-charte 6/8
Microsoft ©
Visual Basic .net
< % @ W e bS e rv i ce L a ng u ag e ~" vb " C l aB s ~" So l oP r og r am a do r es . co t iz ac i on e s" % >
. Derivamos la clase de WebService
<lvebService(NameSpace,~ "http' //www.fcharte.com ..)>Public C lass C otizaciones -
I n he r it s W e bS e rv i ce
, Identificamos el m~todo con, e 1 a tr ibu to <We bM eth od >< WebM et hod > P ubl ic Fu nc tio n C ot i z ac ion (V alo r A s S tr ing ) As Do ubl e
Dim Aleatorio As New Random(), De vo 1ve mos u n n Um ero a lea tor ioR eturn A1eator io.NextDouble()
E nd F un ct io nEn d C las s
I mp or ts S ys te mI m po r ts S y st e m. W eb . S e r vi c es
N a me s pa c e S o lo P ro g ra m ad o re s
E nd N am es pa ce
desarrollo de Visual Basic .NET, em-pleando asistentes, disenadores 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 IDea/host.
AI cerrar el cuadro de dialoqo anterior,
el asistente qenerara un proyecto
compuesto de un m6dulo ASMX con
un m6dulo de c6digo asociado. EIser-
vicio aparece en un diseriador que
nos permite incluir componentes des-
de el Explorador de servidores y el
Cuadro de herramientas, usando Ia
ventana Propiedades para personali-
zarlos. Tarnbien podemos acceder al
c6digo de implementaci6n, con tan
s610pulsar un enlace.
Utilizando el entorno de desarrollo no
s610nos sera mas tacil la creaci6n de
nuestro servicio Web, sino que tam-
bien podremos probarlo y depurarlo
con gran sencillez, bastando la colo-
caci6n de algunos puntas de parada yla pulsacionde la tecla F5.
A cceso al serv icio desde unc lie nte W e bTras crear el m6dulo ASMX propuesto
en el Iistado 2, 0 bien un servicio Web
utilizando el asistente tal y como aca-
ba de mencionarse, podemos com-
probar su funcionamiento incluso an-
tes de desarrollar un cliente, algo que
haremos 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 c l a r a t i u o sq 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 sd 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 m6dulo ASMX, inclu-
yendo en ella un enlace para obtener
la descripci6n WSDL del servicio y
tantos enlaces como metodos tenga
el servicio. Aunque 10 16gico es que
ese acceso 10efectuemos localmente,
al pulsar F5 se abrira Internet Explo-
rer con la paqina, nada nos impide ac-
ceder de manera remota con cual-
quier clients, incluso desde otros
sistemas operativos.
Afiadiendo al URI usado para accederal servicio Web el sufijo ?op~ seguido
del nombre de uno de los rnetodos,
por ejemplo ?op=Cotizacion, obten-
dremos de ASP.NET una paqina con
un formulario que permite comprobar
el funcionamiento de dicho rnetodo. EI
formulario contara con apartados para
la introducci6n de los parametres, asi
como un bot6n que, al ser pulsado,
enviara la lIamada al servicio y aorira
una nueva ventana mostrando el re-
. ,_'_'_- l---=.J--.-=J
'''' '-.~..........".., "I.J,~....,,~~.-n....+I"
"""_\IJrD.Pu--! ~ 1< ...... ' ( ·_ ...
. . .. . ' i t' . r w .r . o ; .t . . .. .(~~"~r .....~
> J M t. t • • · _ ,. . . .. . . ri.I_.·'I_' ..·.- .. _ It ,-"F- ~I·" .,
1 t , ~-
I ~ ~ . : , ' _ 1 ! U " ' I. . " _ " " " " " "1 · " "& J ·~ · '· o ' Io ! I r· · . ;. " , )' . . ~ " ,~ · , ,· · . . .. . .i ....'..;~~... , . , J , • • ..-t,:. .......
J
sultado. As! podemos comprobar si
todo es correcto mucho antes de es-
cribir un cliente,
Otra capacidad de ASP.NET es la ge-
neraci6n automatrca de ta descripci6n
WSDL a partir del c6digo del servicioWeb. Desde un cliente Web basta can
aftadir ?WSDL tras el URI del servicio
para obtener dicha descripci6n que,
en el caso de nuestro ejemplo, serfa
la que puede verse en ellistado 3. Por
cada rnetodo disponible aparece su
nombre, el tipo y nombre de los para-
metros y el tipo de los valores devuel-
tos, as! como los enlaces correspon-
dientes a los mensajes entrantes y
salientes.
CONSUMO DE SER \ lI C IO~B
Teniendo en marcha nuestro servicio
Web, que lncluso hemos comprobado
localmente desde un cliente Web, el
paso siguiente sera preparar la aplica-
ci6n que consumira ese servicio, una
aplicaci6n que puede escribirse en
cualquier lenguaje y ejecutarse en
cualquier sistema operative siempre
Potrocinoda par
Af icmsot t©
5/13/2018 Web Services Con Vb Net - Francisco Charte - slidepdf.com
http://slidepdf.com/reader/full/web-services-con-vb-net-francisco-charte 7/8
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 Ii
i n t e r c o n e x 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 tengamos los recursos necesa-
rios para enviar y recibir mensajes
SOAP. l.oqicamente, a nosotros nos
interesa saber como crear ese tipo de
proyecto con Visual Basic .NET.
Independientemente del tipo de pro-
yecto en que nos encontremos, para
poder consumir un servicio Web ne-
cesitamos construir un proxy, un mo-
dulo que se ejecutara localmente ac-
tuando como intermediario entrenuestro programa y el propio servicio
Web, encarqandose de los detalles de
preparacion, envfo, recepcicn y des-
codificacion de mensajes.
Aunque podriamos construir ese
proxy mediante herramientas exter-
nas, la manera mas sencilla consiste
en desplegar el menu emergente aso-
ciado al proyecto en el que estamos
trabajando y seleccionar la opcion
Agregar referencia Web. EI cuadro de
dialoqo que se abre, can el mismo ti-
tulo que la opcion, facilita tanto el ac-
ceso a los registros UOOI de Microsoft
como la introducci6n directa de un
URI para obtener la informaci6n nece-
saria.o,MII.bn,<k""1!
Q.,.:} 00 0 t : ' I
' .JJ .' ~~~ •. ------::: ~
S a I ~Wb'-' ..· - I · · . .- ' . . . · ~t a r t . r o w s n g rcr I ! ! I ~nl(i!!~
: : : .: . - ,, " : : ." : : : .. . . .~ r : t ; : .~ . : : . : . :H V O O u l l ; l; ; '" " .. .~
I.!lfrlu:.lI.[!l~.U.l'" ....lhi'OI""~'i"H
I • E~'t : t t i ! : ' i . . I ""~(r,I I 'h: I ' I.~••..,I>l~w.,t. r
. :';~::~':!!-!:!::i~~.
- -- - "'~ . _ _I_ ' ' ' _ _ . J
Tras agregar la referencia, nuestro
proyecto contara can un nuevo ambi-
to cuyo nombre dependera del servi-
dor en el que se ejecute el servicio. Si
. e l servidor fuese www.fcharte.com
nos encontrarfamos con un ambito Ila-
< "/ ml ve rs io n=" 1 .0 " enc odi ng =" utf- 8" ? >
- < d ef i ni t io ns xmlns:http=''http://schemas.xmlsoap.org/wsdl/http/'' xmlns:so-ap=''http://schemas.xmlsoap.org/wsdl/soap/''
xmlns:s=''http://www.w3.org/2001/XMLSchema'' xmlns:sO=''http://www.fcharte.com''
xmlns:soapenc=''http://schemas.xmlsoap.org/soap/encodingI"xmlns:tm=''http://microsoft.com/wsdl/mime/textMatching/''
xmlns:mime=''http://schemas.xmlsoap.org/wsdl/mime/''t a rg e tN a me s pa c e= ..ttp://www.fcharte.com ..xmlns=''http://schemas.xmlsoap.org/wsdl/''>
- < ty pe s>
- < s :s c he m a e le m en tF o rm D ef a ul t= " qu a li f ie d" t a rg e tN a me s pa c e- '' h tt p :/ / ww w. f ch a r -te.com">- < s: el em en t n am e; "C ot i~ a ci on ">- < s :c o mp le x Ty p e>- < s :s e qu en c e>
< 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" / ><Is: sequence></s:complexType></s:element>
- < s :e l em e nt n a me =" C ot i za c io nR e sp o ns e ">- < s :c o mp l ex T yp e>
- < s :s e qu e nc e>
< s: el em en t m in Oc cu rs =" l" m ax Oc cu rs -" l" n am e= "C ot iz ac io nR es ul t" t yp e= "s :d ou -ble" I >
</s:sequence>
</s:complexType></s:element>
<Is: schema></types>
- < m es s a ge n a me =" C ot i za c io nS o ap l n" >< p ar t n a me = ' ; p a ra m et e rs " e l em en t =" s O :C o ti za c io n " I ></message>
- < m es s a ge n a me =" C ot i za c io nS o ap O ut ">< pa r t n a me - "p a ra m et er s " e le m en t -" s O: C ot iz a ci o nR e sp on s e" I ></message>
- < p or t Ty pe n a me = "C o ti za c io n es S oa p ">- < op er a ti on n am e= "C ot iz ac io n" >
< i n pu t m e ssage - "sO : Cot i zac i o nS o apI n " I >< ou tp ut m es sa g e= "s O: Co ti za ci on So ap Ou t" / >< l o p e rat i o n ></portType>
- < b in d in g ~ n a me =" C ot i za c io ne s So a p" t y pe "' ' 's O :C o ti za c io n es S oa p '' ><soap:binding transport'''''http://schemas.xrnlsoap.org/soap/http''style="docu-
ment" />
- < op er a ti on n am e= "C ot iz ac io n" >< so ap :o pe ra ti on s oa pA ct io n= ..ttp://www.fcharte.com/Cotizacion ..style-"docu-
ment" I >- < in pu t>
< s oa p :b od y u s e= "l i te r al " I ></input>
- < ou tp ut >< s oa p :b od y u s e- "l i te r al " I ><Ioutput></operation>
</binding>- < se rv ic e n am e= "C ot iz ac io ne s" >
- < p or t n a me = "C o ti z ac io n es S oa p " b i nd i ng = "s O :C o ti z ac i on e sS oa p ">
<soap:address location=''http://localhost/Cotizaciones.asrnx'' I ></port>
</service>
</definitions>
made www dentro de otro lIamado
fcharte que, a su vez, estarfa content-
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.
Suponiendo que tenemos un formula-
rio can dos cajas de texto y un bot6n
en su interior, el c6digo siguiente ob-
tendrfa una cotizaci6n y la rnostrarla
en el formulario:
Pr iva te Su b But ton l C lic k(By Va l
sender As System.Qb;ect, BVVal e As
S ys te m. E ve nt Ar qs ) H an dl es
B u tt o n !. Cl i ck
Dim Servicio As New localhost.
C ot iz ac io n ( )
Palroci nodo por
Microsoft@
5/13/2018 Web Services Con Vb Net - Francisco Charte - slidepdf.com
http://slidepdf.com/reader/full/web-services-con-vb-net-francisco-charte 8/8
Microsoft ©
V is ua l B a s ic .net
C t· . I I ! !
o rza cro n
Click J~~. for a complete list of operatlons.
Cotizacion
T e s t
To test tne operabon using the HTTPPOSTprotocol. did< the 'Invoke' button,
Parameter Value
Valor: rIM"'sFTj=--------------
SOAP
The following '$ a sample SOAP request and response. The placeholders shown need to be replaced
witt>a c tu al v a lu e s.
P OS T I Cu r3 0V B/ Co :t iz ac io ne s/ Co ti ~" ci on es .B .s mx H TT P/ l. 1
Ho,~t. Lcce Ihoet;
C on te nt -T yv e: t ex t/ xm l; C hB .r 3e t~ ut f- B
Content-Length: hngthSOAPAct ion : ''http://WoIIol _fcharte. cO.m/cotizac ion'
~?XIlIl vetsion~"l.O" encodi!lg~'u'tf-8 ·1>
<soap:Envelope ,,~ln~ :x~i~·http://...-ww.wJ .org/2001iXMLSche:ma-i!l9tance" xmlns,,..
t bC ot iza ci on .T ex t ~ S er vi ci o.
Cotizacion(tbValor.Text)
End Sub
metoco Cotizacion se encarga de ge-
nerar el mensaje SOAP, enviarlo al
servidor, esperar la respuesta, desco-
dificarla y facilitar el resultado.
EI servicio, Cotizecion, se utiliza como
si de cualquier otra clase se tratase,
creando un objeto a partir de ella e in-
vocando a un rnatodo. Aunque
aparentemente se esta utilizando un
objelo local, este es en realidad un
proxy que, por ejemplo. al Ilamar al
M E J O R A S E N V IS U A L B A S IC .N E T
2 1 ) 0 3
La nueva version de Visual Studio
.NET, que sera presenlada a finales
~ ~ ~. .~ ~ . ~ ' " . x : ~~I~ - ISol.<:tn "CotIzac...,.' (2 ~ ) !
a · ~ _,
,iii a~ V~agonerlJ"
" J Illeo- ~dcI~O)'.e<to,,-
, ._ s a Ql"den de goner ac i6n deI~oyecto".
&1"" , , "
- - - -- .-~----Es~ como ~oyecto de , n co
t!<'prlJ"
g a..-<lirCc<>sumdc<
r.x QuIa "
de este mismo mes, incluye diversas
mejoras en los lenguajes, componen-
tes y el propio entorno de desarrollo
que Visual Basic .NET comparte con
los dernas lenguajes. Una de esas
mejoras afecta al cuadro de dialoqo
Agregar referencia Web.
Como se aprecia en la ultima figuraque acompaPia el texto, este nuevo
cuadro de dialoqo incluye opciones
adicionales que facilitan la busqusda
de servicios en el ordenador local, as!
como la de registras UDDI en la red
donde se ejecuta la aplicacion. Resul-
ta. por tanto, mas tacil localizar el ser-
vicio que se necesita, permaneciendo
el resto de la funcionalidad sin
cambios.
A t a n a d i r u n a r e f e r e n d aW e b s e c r e a
a u t o m i f t i c a m e n t e e t p r o K Yq u e f a c i u t a r 6 l a
c o m u n l c a c i 6 n c o ne l s e r u i d o
Ademas de facilitar la creacion de
aplicaciones con interfaces Web,
ASP.NET tamoien simplifica el desa-
rrollo de servicios Web aislandonos
de todos los detalles de bajo nivel y
automatizando tareas como la obten-
ci6n del modulo de descripcion del
servicio Conjuntamente con el entor-
no de Visual Basic .NET, sus asis-
tentes y disePiadares, el disei'io de
servicios Web y aplicaciones que losconsumen, como ha podido ver en es-
ta enlrega, no es una larea compleja.
La enlrega tarnbien Ie ha servido para
adquirir algunos conacimientos gene~
rales sabre el funcionamiento de los
servicios Web y fundamentos sobre
SOAP, WSDL Y UDDI. Esta informa-
cion Ie sera util indistintamente del
lenguaje, el sistema operativo y la pla-
taforma hardware sobre la que
trabaje.
Patrocinado por
Mic IOso f tc