Tutorial para crear un Webservice desde [Zero]
Me imagino ke ya muchos hemos escuchado hablar de SOA, y una de las representaciones ke se le puede dar al SOA son los webservices y en este tutorial aprenderemos a crear los 3 elementos (El servicio, la aplicacion ke llama al servicio y el UDDI) y conectarlos entre si.
Lo ke vamos a necesitar:
Para crear el webservice y la aplicacion ke consume al WS
– Microsoft Visual Studio 2008
Para el servidor UDDI
– VMware workstation 6.5.0 (Crea maquinas virtuales)
– Windows Server 2003 (para montarlo en la maquina virtual)
– Hamachi 1.03 (crea VPNs)
Pero ke es exactamente lo ke vamos a hacer?
Vamos a crear un WS en Visual Studio y lo vamos a «consumir» con una aplicacion tambien hecha en Visual Studio, para hacer esto hay 2 formas:
1.- Creamos el WS y lo corremos en el emulador de servidor ke viene con Visual Studio y lo llamamos con el mismo Visual Studio pero en otra aplicacion aparte.
2.- Creamos el WS y lo publicamos en nuestro servidor UDDI (corriendo en Windows server 2003 siendo emulado con el VMware), donde es llamado por Visual Studio de forma completamente independiente.
Asi ke vamos a empezar…
A) Creando el Web Service
El WS ke vamos a crear es bastante sencillo, lo unico ke hace es pedir 2 numeros y regresar el resultado de la multiplicacion de estos.
1. Abrimos el Visual Studio y seguimos la siguiente ruta:
File / New Proyect / Visual Basic / Web /ASP.NET Web Service Application
en el Nombre del proyecto ponemos WSMultiplicacion.
2. En el Explorador de Soluciones (derecha), renombramos el Service1.asmx a ServiceMul.asmx y borramos el siguiente codigo:
<WebMethod()> _
Public Function HelloWorld() As String
Return «Hello World»
End Function
3. Debido a ke es un web service de ejemplo ke pone por default Visual Studio, y lo vamos a reemplazar con :
<WebMethod()> Public Function Mul(ByVal A As System.Single, ByVal B As System.Single) As System.Single
Return A * B
End Function
para ke kede asi
4. Una ves hecho esto es momento de probar nuesto WS, para esto damos click en el boton de Start Debugging (play color verde) o presionamos F5.
nos aparece un mensaje preguntandonos como queremos correr el programa «debugging o no debugging», para este caso utilizaremos «Run without debugging»
5. Entonces lo ke va a hacer es iniciar el ASP.NET Development Server donde podemos correr nuestro servicio y vamos a obtener las siguientes paginas en nuestro explorador
Damos click en Mul, para probar nuestro servicio con el boton de invoke
y nos muestra el resultado en otra ventana
Y asi es como creamos el web service, ahora la siguiente parte es hacer una aplicacion ke lo use.
B) Creando la Aplicacion ke consume al WS
6. Abrimos un nuevo Visual Studio y seguimos la sig ruta:
File / New Proyect / Visual Basic / Windows / Windows Forms Application
y como nombre del proyecto ponemos AplicacionMultiplicacion
7. Ahora hacemos una forma con minimo las siguientes caracteristicas 3 TextBox y un boton (labels opcionales)
8. Antes de modificar el codigo tenemos ke agregar nuestro WebService como Web Reference y para hacer esto en Visual Studio 2008 tenemos ke seguir estos pasos:
– primero ke nada tenemos ke tener corriendo nuestro Web Service en el ASP.NET Development Server (como vimos en el paso 4),
– una vez corriendo copien el path del servicio ke les aparece en el browser, en mi caso http://localhost:1615/ServiceMul.asmx
– Ahora en nuestra aplicacion nos vamos a:
Proyect / Add Service Reference… / Advanced (esquina inferior izq) /Add Web Reference (esquina inferior izq)
y dentro de esta ventana en el URL pegamos el path del servicio, damos click en Go y nos debe de aparecer nuestro servicio
en el Web reference name ponemos localMul y damos click en add reference
9. Ahora es tiempo de referenciar el webservice para ke pueda ser utilizado como un metodo local, damos doble click a nuestro boton y modificamos el codigo para ke kede asi:
Public Class Form1
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim operacion As New localMul.Service1()
TextBox3.Text = operacion.Mul(TextBox1.Text, TextBox2.Text)
End Sub
End Class
Pueden ver como operacion.Mul, se refiere al metodo Mul, ke esta dentro del Service1 (nuestro web service) referenciado por medio de localMul
y recibe 2 numeros ke seran introducidos en el TextBox 1 y 2, y el resultado aparecera en el TextBox3
10. Enseguida probamos nuestra aplicacion (F5 o «play»)
*Note ke el Web Service tiene ke estar corriendo en otro Visual Studio para ke este metodo funcione, puesto ke la aplicacion manda llamar al web service.
Hasta aki ha sido relativamente facil, pero esto es solo una parte del funcionamiento de los Web Services.
Lo ke haremos acontinuacion sera crear un servidor «dedicado» a web services y un UDDI
C) Creando el Servidor
11. Lo primero ke vamos a hacer es abrir el VMware Workstation y crear una nueva Virtual Machine con configuracion tipica y metemos el disco del sistema operativo ke keremos instalar (Windows Server 2003)
en este caso yo tengo la imagen en .iso asi ke simplemente le doy el path, siguiente y pongo el serial y los datos minimos, es recomendado poner un password aunke no tenga alto nivel de seguridad
12. Una vez instalado el Windows Server 2003, lo primero ke vemos es una pantalla de configuracion ke nos deja elegir ke keremos hacer con el server, poner le un rol.
Por default no tiene ningun rol, entonces le ponemos en
Add or remove a new role / next / custom configuration /
y seleccionamos Application Server (IIS, ASP.NET) y seguimos
*En este caso no vamos a habilitar SSL puesto ke no necesitamos ningun tipo de seguridad para este ejemplo
13. Ahora tenemos ke habilitar el uddi en nuestro server, para esto tenemos ke ir a Add or Remove Programs
en el panel de control, de ahi seleccionamos Add/Remove windows components y buscamos el UDDI y lo habilitamos.
*Tambien tenemos ke asegurarnos de actualizar el .NET framework hasta la version 3.5
14. Ahora nos metemos en la configuracion del IIS (Internet Information Services) y creamos un nuevo website en el puerto 8080 con el nombre ke querramos (en este caso test) aki es donde vamos a poner nuestros servicios para ke puedan ser consumidos.
Nos vamos a donde estan los archivos de Visual Studio (My Documents\Visual Studio 2008\Projects\WSMultiplicacion\WSMultiplicacion) y copiamos el contenido dentro de la carpeta de nuestro website (en el servidor)
15. La forma de probar si tenemos bien instalado el UDDI y nuestro servidor de aplicaciones ASP .NET es ir al explorador de internet y en la barra de direcciones poner:
para el UDDI http://localhost/uddi/
para el WebService http://localhost:8080/ServiceMul.asmx
noten como en el caso del WebService tubimos ke especificar el puerto en el servidor ke es el 8080
16. Como el servidor esta corriendo en una Maquina Virtual adentro de tu computadora, puede ser accesado por su nombre completo, en este caso http://carlos-i21g1xou/uddi/
17. Ahora vamos a Publicar un WS en nuestro servidor UDDI para ke podamos acceder a el desde Visual Studio.
Lo primero es ir a Publish/Providers y agregar un nuevo provider con el nombre de Prueba (vamos a dejar el lenguaje EN-us por ser un ejemplo) y es recomendable agregar descripciones
18. Despues a services/add service y de nombre UddiMul
19. Nos metemos al service con «view» y nos vamos a Bindings y le ponemos Add Binding / edit y especificamos la ruta donde esta nuestro servicio adentro del servidor, en este caso http://carlos-i21g1xou:8080/ServiceMul.asmx tipo http
20. Nos devolvemos a Publish / tModels / Add Model, en nombre le ponemos tMul
21. Dentro de ese tModel en categorias agregamos la siguiente: Specification for a web service described in WSDL
22. Siguiendo con el tModel en el Overview document ponemos el WSDL de la multiplicacion para saber cual es simplemente agregamos ?wsdl despues de el path del service y keda asi http://carlos-i21g1xou:8080/ServiceMul.asmx?wsdl
23. Ahora tenemos ke ligar el tModel con el servicio nos vamos a
Publish / Providers / Prueba / Services / UddiMul / Bindings / view / instance info / add instance info
Buscamos por tMul y lo agregamos
24. Dentro de ahi nos vamos a overview document y agregamos el WSDL de nuevo http://carlos-i21g1xou:8080/ServiceMul.asmx?wsdl
vista final del servicio en el uddi
En este momento el servidor UDDI ya tiene el servicio de multiplicar publicado en el, y puede ser accesado por medio de Visual Studio.
25. Abrimos el proyecto de aplicacion llamado AplicacionMultiplicacion ke hicimos en el paso 6 y quitamos la Web Reference existente, para agregar una nueva, en la direccion ponemos http://carlos-i21g1xou/uddi/addwebreference/ y presionamos Go
26. Para buscar el servicio le ponemos % y presionamos search con esto nos deja ver todos los proveedores disponibles, de los cuales seleccionamos el ke tenga nuestro servicio
27. Hacemos click en su WSDL y agregamos la nueva web reference como UddiMul
28. Ahora solo tenemos ke modificar un poco el codigo adentro de nuestro boton, donde teniamos
localMul.Service1()
lo tenemos ke cambiar por
uddiMul.Service1()
puesto ke es la nueva referencia
De esta forma ya queda funcionando, sin embargo hay un inconveniente, como el servidor esta en una Maquina Virtual solo puede ser accesado por su host y el entorno local y ke pasa si lo deseas accesar desde cualquier parte como se supone ke deberia ser?
Hamachi
29. Pues hay una solucion bastante facil y adecuada para esto, crear una red privada virtual (VPN) entre el server y la computadora desde donde lo quieras accesar y para esto usamos el Hamachi
Hamachi nos permite crear redes virtuales con unos cuantos clicks, su instalacion es sumamente sencilla y no necesita explicacion simplemente al momento de «prenderlo» (boton esquina inferior izq), te pide un nuevo nombre de usuario y te asigna una especie de IP.
30. Una ves ke ya tienes tu ip en hamachi, puedes crear o unirte a redes poniendo el nombre de la red y el password, en el servidor vamos a crear una nueva red con el nombre TutorialWebservice y password 1
Cualquiera que tenga el cliente de hamachi y le ponga Join an existing network y ponga estos datos, se va a poder conectar al servidor y usar el IP de hamachi para conectarse directamente.
31. Entonces podemos ver ke el IP de nuestro server es 5.75.113.212 y con el podemos accesar al servicio web de la siguiente forma http://5.75.113.212:8080/ServiceMul.asmx
32. Y asi mismo podemos accesar al UDDI desde visual studio con esta direccion
http://5.75.113.212/uddi/addwebreference/
y seguir los pasos desde el 25 para agregar la web reference
Y asi concluye el tutorial de como crear un Web service
Carlos Andree Labrado 2008
Carlos, no sabes que ayuda tiene este ejemplo que tienes, es excelente, de hecho llevo unos días buscando WS y varias paginas me despliegan pero ninguna tan explicada paso a paso desde [zero]. Felicidades, sabes, solo tengo una pregunta, tal vez un tanto tonta, pero soy nuevo en esto, mi duda es la siguiente:
Tengo un ws en c#2008 que se comunica con una bd sql y despliega los datos, como puedo llamar el ws desde una pagina http y no desde una aplicación de escritorio? Espero tu pronta respuesta, gracias!
Len said this on noviembre 26, 2008 a 6:16 am |
hehe gracias por el comentario, mira no soy un experto en .net, pero espero ke sea tan facil como irte a File/New Website/ASP.Net Website ya una ves creado el website en el menu de Website te vas a Add Web Reference.
Espero ke te sirva.
vazh said this on noviembre 26, 2008 a 3:58 pm |
hola, he leído que para poder llamar un webservice hecho de un lenguaje a otro debo utilizar las llamadas desde el xml, pero no encuentro nada que me sirva, tienes alguna idea? tengo que comunicar un .net con un php. Mil gracias! de cualquier forma si me entero antes, te lo hago saber, por si quieres hacer mas completo tu manual.
Hasta luego y mil gracias!
Len said this on diciembre 1, 2008 a 5:32 am |
aunno he probado este ejemplo péro se ve que esta muy bien. gracias por tomarte las molestias.gracias
jorge said this on diciembre 4, 2008 a 3:51 pm |
que tal Utiliza un Data Set para leer despues el XML
Angel Diaz said this on febrero 4, 2009 a 3:39 pm |
Amigo, te pasaste, este tutorial se resume en una sola palabra: magistral; lástima que no soy partidario de guindow$ pero SÏ que me ayudaste en mi trabajo de investigación. Gracias. Salud2 && Byte 😀
XZero said this on marzo 15, 2009 a 10:51 am |
Carlos excelente trabajo, muy buen tutorial.
Gabriel said this on abril 21, 2009 a 7:42 am |
Creo que este comentario sólo probará mi ignorancia en el tema, y así es. Soy un aprendiz, y nunca he hecho todavía una Webservice. Pero, hice un programa sencillo, como un diccionario de medicamentos, que, puesta una palabra, da una o dos o más páginas de respuesta para la consulta, en Prolog Amzi!. El problema es que abre una ventana de DOS y no sé cómo empotrar (embed) este programa, o cómo ponerlo en una Webservice como he leído que tan bien nos ha enseñado Carlos. Ojalá alguien pueda orientarme. Gracias.
Artvasf@gmail.com
Arturo said this on abril 25, 2009 a 9:00 am |
Hola, este tutorial es EXCELLENT, la verdad esta super completo y me ayuda a terminar con un prototipo para la maestria en automatizacion… Gracias por este conocimiento..!!!!!!
Yahaira said this on abril 25, 2009 a 11:27 pm |
Brutal tu tutorial, SUMAMENTE UTIL, gracias. ¡saludos!
Ricardo said this on May 15, 2009 a 1:35 pm |
Pues yo solo entraba buscando como utilizar un web service, y mira de todo lo qe me vine a enterar, solamente puedo decir una cosa sobre este tutorial. Mi hermano estas de lujo, ni en los cursos aprendes tanto como en este tuto.
ya le puse CTRL + D así que no lo borren porfis
Gracias
Jonathan said this on junio 11, 2009 a 8:49 pm |
sos un fenomeno querido, el turorial te quedo de pelos… te felicito y gracias por todo
Sebastian Greco said this on agosto 2, 2009 a 1:12 pm |
Hola, muchas gracias por tu ayuda. Cuando finalice el desarrollo de mi servicio web, estaré poniendo a prueba tu tutorial.
Te comento que no es necesario hamachi. Si se declara como bridge y no como nat la conexión de redes.
Saludos!
Julian said this on abril 10, 2011 a 8:26 pm |
bueno.. te felicito por ser tan didactico..!
jl said this on abril 14, 2011 a 6:29 am |
Excelente Post, buen ejemplo para empezar a desarrollar servicios web
Diego Torres Treviño said this on junio 30, 2011 a 12:56 pm |
hola muy util tu ejemplo es excelente me fue de mucha ayuda muchas gracias
Gilmer said this on julio 26, 2011 a 10:44 am |
hola, muy buen tutorial, explica de todo, yo apenas estoy en esto y estoy desarrollando una aplicación para blackberry que me esta generando un pequeño problema, y es que la plataforma en la que genere la aplicación para el dispositivo genera un archivo wsdl binding 1.1 y al seguir con el desarrollo use Visual Studio 2010 donde genere los WS que conectaran la información con la base de datos, el problema viene en que Visual Studio genera un tipo de archivo wsdl 1.2 que no es soportado por la plataforma que use para la aplicación, conocerás de casualidad la forma de hacer esta conversión de versión de wsdl binding o mejor pruebo con otra plataforma que no sea Visual studio 2010. Muchas gracias
Joe Mac said this on agosto 10, 2011 a 11:03 am |