8

[Revista Solo Program Adores] Articulo Web Services Con VB.net de Francisco Charte-Opt

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~