You are on page 1of 10

Curso .

NET con C#
Servicio de Informtica
Servicios web
ndice de contenido
Un poco de culturilla........................................................................................................................1
Crear un servicio Web.....................................................................................................................1
Usar servicios web..........................................................................................................................
Un poco de culturilla
!a alta conectividad entre ordenadores "a sido una meta desde #ue comen$% la informtica
personal. Con el au&e de las redes internas dentro de las empresas lle&a el deseo de unir
m#uinas de forma pro&ramtica. Es decir' un pro&rama en una m#uina deber(a poder llamar a
m)todos del pro&rama en otra m#uina sin la necesidad de intervenci%n "umana' para lo #ue se
utili$aron diferentes tecnolo&(as como el *odelo de +b,eto de Componente -istribuido .-C+*/.
El si&uiente paso al conectar ordenadores es "acerlo a trav)s de Internet. *ediante ordenadores
conectados a trav)s de 0TT1 2 el formato 3*! se crearon los servicios Web 3*!.
!os pasos fundamentales del 4emotin& son5
1. El llamador prensa la pila de llamadas del m)todo local en una cadena #ue se env(a por
una cone6i%n. Esto se conoce como serializacin.
7. El llamador env(a la pila de llamadas seriali$ada a trav)s de la cone6i%n
8. El e6tremo recibe la pila de llamadas seriali$ada 2 la convierte en una pila de llamadas
utili$able en el servidor. Se llama deserializacin.
9. El e6tremo procesa la llamada al m)todo
:. El e6tremo transmite los resultados de vuelta al llamador.
El formato #ue los llamadores 2 servicios acuerdan se llam% ori&inalmente Simple +b,ect ;ccess
1rotocol. 0o2 s%lo se utili$an sus si&las SOAP. El protocolo S+;1 es una formali$aci%n 3*!
para comunicaci%n basada en mensa,es.
;S1.NET manipula los detalles de reali$ar un servicio Web a trav)s de la clase
System.Web.Services.WebService.
!os servicios Web ;S1.NET viven en un tipo de arc"ivo nombrado con la e6tensi%n .asmx.
Crear un servicio Web
1ara crear un nuevo servicio web creamos un Nuevo pro2ecto de sitio Web 2 ele&imos servicio
Web ;S1.NET. .Ilustracin 1/.
En el e6plorador de soluciones tendremos una estructura como la #ue se muestra en la
Ilustraci%n 7. 4enombramos el fic"ero Service.cs dentro de ;pp<Code a un nombre ms
si&nificativo.
Tema = > 1&ina 1
Curso .NET con C#
Servicio de Informtica
0aremos lo mismo con Service.asm6
-entro del c%di&o de Service.cs cambiaremos tambi)n el nombre de la clase con la utilidad de
refactori$aci%n de ?isual Studio. 1ara esto seleccionamos Service 2 pinc"ando con el bot%n
derec"o ele&imos refactori$ar Cambiar nombre.
La referencia a la clase en el fichero asmx hay que cambiarla de forma manual.
En el e,emplo se "a cambiado Service por ServCitas.
El fic"ero ServCitas.asm6 #ueda de la si&uiente manera5
<%@ WebService Language="C#" CodeBehind="~/App_Code/ServCita!c"
C"a="ServCita" %#
Tema = > 1&ina 7
Ilustracin 1: Nuevo servicio web
Ilustracin 2:
Curso .NET con C#
Servicio de Informtica
@ el servicio web llamado a"ora ServCitas.cs as(5
uing S$te%&
uing S$te%!Lin'&
uing S$te%!Web&
uing S$te%!Web!Service&
uing S$te%!Web!Service!(rotoco"&
uing S$te%!)%"!Lin'&
*WebService+,a%epace = "http-//te%puri!org/"./
*WebServiceBinding+Con0or%1o = Wi(ro0i"e!Baic(ro0i"e2_2./
// (ara per%itir 'ue e ""a%e a ete ervicio 3eb dede un cript4 uando
// AS(!,51 A6A)4 'uite "a %arca de co%entario de "a "7nea iguiente!
// *S$te%!Web!Script!Service!ScriptService/
pub"ic c"a ServCita - S$te%!Web!Service!WebService
8
pub"ic ServCita +. 8
//5"i%inar "a %arca de co%entario de "a "7nea iguiente i uti"i9a "o
//co%ponente die:ado
//;nitia"i9eCo%ponent+.&
<
*Web=ethod/
pub"ic tring >e""oWor"d+. 8
return ">e""o Wor"d"&
<
<
@ el e6plorador de soluciones como muestra la ilustraci%n 8.
Si nave&amos a"ora al arc"ivo ServCitas.asm6 para ver lo #ue nos muestra un 0TT1 AET
predeterminado obtendr(amos lo si&uiente .Ilustracin 4/ .
;S1.NET nos muestra los nombres de los metodos disponibles cuando se "ace un AET "acia el
arc"ivo ;S*3. 1odemos ver el m)todo 0elloWorld .creado por ?isual Studio/. Si #ueremos
probar a e,ecutar el m)todo s%lo tenemos #ue pinc"ar en 0elloWorld. .Ilustracin 5/
Si en la primera p&ina pinc"amos en el v(nculo descricin de servicios veremos el WS-!'
#ue es un c"ori$o de 3*! para fliparlo' pero no est "ec"o para #ue lo leamos nosotros' sino un
cliente pro62.
Tema = > 1&ina 8
Ilustracin 3:
Curso .NET con C#
Servicio de Informtica
;"ora vamos a borrar el m)todo 0elloWorld 2 a crear uno nuevo #ue se llame dameCita #ue lo
#ue "ar ser devolver una cita aleatoriamente de una lista de citas.
Tema = > 1&ina 9
Ilustracin 4: Navegar a ServCitas.asmx
Curso .NET con C#
Servicio de Informtica
El c%di&o del metodo dameCita ser(a5
*Web=ethod/
pub"ic String da%eCita+. 8
String */ cita = 8
",o ha$ %a" 'ue por bien no venga"4
"(or un perro 'ue %at?4 %ata perro %e ""a%aron"4
",o por %ucho %adrugar a%anece %a te%prano"<&
@ando% rando% = ne3 @ando%+.&
int nu%Cita = rando%!,eAt+B4C.&
return +cita*nu%Cita/.&
<
Tema = > 1&ina :
Ilustracin 5: Eecutar !ello"orl#
Curso .NET con C#
Servicio de Informtica
Si lo e,ecutamos podremos ver #ue obtenemos una respuesta como la si&uiente5
<DA%" verion="2!B" encoding="ut0EF" D#
<tring A%"n="http://tempuri.org/"#,o ha$ %a" 'ue por bien no
venga</tring#
?ariando la cita cada ve$ #ue la e,ecutemos.
Este es un m)todo simple pero sirve de e,emplo para ver como funcionar(a un servicio #ue
sacara datos de una base de datos.
;"ora creamos un nuevo m)todo llamado cita1ropia #ue recibe un parmetro 2 lo devuelve
concatenado a una cadena.
*Web=ethod/
pub"ic String cita(ropia+String "aCita.
8
return +"5ta e tu cita- " G "aCita.&
<
El funcionamiento es i&ual #ue el anterior pero si lo e,ecutamos nos pedir el valor del parmetro.
.Ilustracin $/
Usar servicios web
Usar servicios web desde ?isual Studio es casi tan fcil como crearlos. No "a2 #ue olvidar #ue
los servicios web 3*! son una plataforma independiente' 2 las plataformas informticas ms
modernas soportan el uso de servicios web 3*!.
?amos a crear un sitio web #ue utilice el servicio antes creado.
;&re&amos un nuevo sitio web a la soluci%n anterior pulsando con el bot%n derec"o en la
soluci%n dentro del E6plorador de Soluciones 2 eli&iendo ;&re&ar Nuevo Sitio Web.
Una ve$ lo tenemos creamos una referencia de servicio pulsando con el bot%n derec"o en el
pro2ecto dentro del E6plorador de Soluciones 2 eli&iendo A!re!ar referencia de servicio. Nos
aparecer un cuadro de dilo&o como el #ue se muestra a continuaci%n. .Ilustracin %/.
Tema = > 1&ina
Ilustracin $: Servicio con &ar'metros
Curso .NET con C#
Servicio de Informtica
1ulsamos en el bot%n -etectar 2 obtenemos una lista con los servicios disponibles. E6pandimos
el rbol pulsando en el ms. 1odremos ver los m)todos creados anteriormente en el cuadro
+peraciones..Ilustracin (/
Tambi)n cambiaremos el espacio de nombres a uno mas si&nificativo.
Tema = > 1&ina B
Ilustracin %: )gregar re*erencia #e servicio
Curso .NET con C#
Servicio de Informtica
Si pinc"amos en el bot%n ;van$adas... podremos especificar ms opciones' como la de Aenerar
operaciones as(ncronas. *arcamos esta casilla .Ilustracin +,.
;"ora 2a podemos llamar al servicio web a trav)s del pro62. El nombre del pro62 ServicioCitas es
ServicioCitasSoapClient. !o instanciamos como si fuese una clase ms.
Cuando llamamos a m)todos' el pro62 empa#uetar la llamada en un envoltorio S+;1 2 enviar
la petici%n al destino especificado dentro del pro62.
?amos a imprimir en nuestra web las citas devueltas por el servicio web.
Incluimos el espacio de nombres antes creado con5
uing ServicioCita&
Tema = > 1&ina =
Ilustracin (: Servicios #is&onibles
Curso .NET con C#
Servicio de Informtica
El c%di&o de nuestro sitio web es5
uing S$te%&
uing S$te%!Con0iguration&
uing S$te%!Hata&
uing S$te%!Lin'&
uing S$te%!Web&
uing S$te%!Web!Securit$&
uing S$te%!Web!I;&
uing S$te%!Web!I;!>t%"Contro"&
uing S$te%!Web!I;!WebContro"&
uing S$te%!Web!I;!WebContro"!Web(art&
uing S$te%!)%"!Lin'&
using ServicioCitas;
Tema = > 1&ina C
Ilustracin +: Con*iguracin #e re*erencia #e servicio
Curso .NET con C#
Servicio de Informtica
pub"ic partia" c"a _He0au"t - S$te%!Web!I;!(age
8
protected void (age_Load+obJect ender4 5ventArg e.
8
ServCitaSoapC"ient ervicioCita = ne3 ServCitaSoapC"ient+.&
String citaHe>o$ = ervicioCita!dameCita+.&
String %iCita = ervicioCita!citaPropia+"A" pan pan $ a" vino vino".&
@epone!Write+"<br /#La cita auto%Ktica de ho$ e- L" G citaHe>o$ G "L".&
@epone!Write+"<br /#=i cita e- L" G %iCita G "L".&
<
<
Si visuali$amos en el nave&ador obtendremos lo si&uiente .Ilustracin 1-/.
No "a2 #ue olvidar #ue este es un e,emplo mu2 sencillo #ue s%lo devuelve 2 recibe cadenas de
te6to. 1ero se puede e6tender a cual#uier tipo de ob,eto
CDest finit EE
Tema = > 1&ina 1F
Ilustracin 1-: .so #e servicio web

You might also like