Está en la página 1de 27

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 casohttp://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 nuevohttp://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

Crear Web Services que retorne valores en formato JSON [.Net C#]
Cuando estamos trabajando con Web Services en .Net normalmente este nos retornan datos en Formato XML, pero este formato ahora es casi obsoleto, desde que llego el formato JSON Este formato es mas sencillo de entender al ojo humano y mas fcil de interpretar por una maquina. Pero a lo que vinimos, cdigo! Hacer un webservices es relativamente sencillo. Primero que todo debemos tener un Proyecto Web como este:

Sobre el proyecto (como se e en la imagen) damos clic derecho y agregar, nuevo elemento y escojemos Web services. Esto nos crea un proyecto con extensin .asmx

cuando abrimos el archivo .cs nos aparece un [WebService] con un [WebMethod], un [WebMethod] es un mtodo como cualquier otro que creamos en una clase normal, con la diferencia que estos son a los que vamos a poder exponer para que sean consumidos. Lo importante en este cdigo es importar las siguiente librerias:

Despus de esto creamos nuestro mtodo o WebMethod donde introducimos la lgica de nuestro servicio, en este ejemplo vamos a ver como se hace para retornar el JSON

En un principio tenemos la descripcin del servicio, segundo y ms importante tenemos la forma como se retornara nuestros datos, enseguida tenemos la declaracin del mtodo. Como podemos ver este mtodo crea un objeto de tipo Usuario y este es el objeto es el que se va a serealizar como un JSON. Despus que tenemos nuestro objeto creamos una variable de tipo JavaScriptSerializer esta va ser la encargada de serealizar nuestro Objeto para retornarlo. De esta forma tenemos un Web Services que convierte un Objeto y lo retorna en un JSON. El resultado se vera de la siguiente forma:

Eso es todo ya tiene un WebServices para retornar un JSON y que se pueda consumir desde culaquier otra aplicacin.