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

~ por vazh en octubre 31, 2008.

17 respuestas to “Tutorial para crear un Webservice desde [Zero]”

  1. 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!

  2. 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.

  3. 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!

  4. aunno he probado este ejemplo péro se ve que esta muy bien. gracias por tomarte las molestias.gracias

  5. que tal Utiliza un Data Set para leer despues el XML

  6. 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 😀

  7. Carlos excelente trabajo, muy buen tutorial.

  8. 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

  9. 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..!!!!!!

  10. Brutal tu tutorial, SUMAMENTE UTIL, gracias. ¡saludos!

  11. 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

  12. sos un fenomeno querido, el turorial te quedo de pelos… te felicito y gracias por todo

  13. 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!

  14. bueno.. te felicito por ser tan didactico..!

  15. Excelente Post, buen ejemplo para empezar a desarrollar servicios web

  16. hola muy util tu ejemplo es excelente me fue de mucha ayuda muchas gracias

  17. 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

Deja un comentario