web services con vb net - francisco charte

8

Upload: viermo

Post on 14-Jul-2015

165 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Web Services Con Vb Net - Francisco Charte

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@

Page 2: Web Services Con Vb Net - Francisco Charte

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©

Page 3: Web Services Con Vb Net - Francisco Charte

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~

Page 4: Web Services Con Vb Net - Francisco Charte

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@

Page 5: Web Services Con Vb Net - Francisco Charte

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©

Page 6: Web Services Con Vb Net - Francisco Charte

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©

Page 7: Web Services Con Vb Net - Francisco Charte

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@

Page 8: Web Services Con Vb Net - Francisco Charte

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