tutorial para crear un webservice desde

Upload: guillermo-besares-veliz

Post on 02-Mar-2016

53 views

Category:

Documents


0 download

TRANSCRIPT

Tutorial para crear un Webservice desde[Zero]Me imagino ke ya muchos hemos escuchado hablar deSOA, y una de las representaciones ke se le puede dar al SOA son loswebservicesy 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 2008Para 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 empezarA) Creando el Web ServiceEl 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 Applicationen el Nombre del proyecto ponemos WSMultiplicacion.

2. En el Explorador de Soluciones (derecha), renombramos el Service1.asmx a ServiceMul.asmx yborramosel siguiente codigo: _Public Function HelloWorld() As StringReturn Hello WorldEnd Function

3. Debido a ke es un web service de ejemplo ke pone por default Visual Studio, y lo vamos a reemplazar con : Public Function Mul(ByVal A As System.Single, ByVal B As System.Single) As System.SingleReturn A * BEnd Functionpara 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 WS6. Abrimos un nuevo Visual Studio y seguimos la sig ruta:File / New Proyect / Visual Basic / Windows / Windows Forms Applicationy 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 comoWeb Referencey para hacer esto en Visual Studio 2008 tenemos ke seguir estos pasos:- primero ke nada tenemos ke tenercorriendonuestro Web Service en el ASP.NET Development Server (como vimos en el paso 4),- una vez corriendocopienel 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 URLpegamosel path del servicio, damos click en Go y nos debe de aparecer nuestro servicio

en el Web reference name ponemoslocalMuly damos click en add reference9. 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 Form1Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.ClickDim operacion As New localMul.Service1()TextBox3.Text = operacion.Mul(TextBox1.Text, TextBox2.Text)End SubEnd ClassPueden ver comooperacion.Mul, se refiere al metodoMul, ke esta dentro delService1(nuestro web service) referenciado por medio delocalMuly recibe 2 numeros ke seran introducidos en elTextBox 1 y 2, y el resultado aparecera en elTextBox310. Enseguida probamos nuestra aplicacion (F5 o play)

*Note ke el Web Service tiene ke estar corriendo enotroVisual 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 UDDIC) Creando el Servidor11. 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 enAdd 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 ejemplo13. Ahora tenemos ke habilitar el uddi en nuestro server, para esto tenemos ke ir a Add or Remove Programsen 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.514. 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 elUDDIhttp://localhost/uddi/para elWebServicehttp://localhost:8080/ServiceMul.asmx

noten como en el caso del WebService tubimos ke especificar el puerto en el servidor ke es el 808016. Como el servidor esta corriendo en unaMaquina Virtualadentro de tu computadora, puede ser accesado por su nombre completo, en este casohttp://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 casohttp://carlos-i21g1xou:8080/ServiceMul.asmxtipo 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?wsdldespues de el path del service y keda asihttp://carlos-i21g1xou:8080/ServiceMul.asmx?wsdl

23. Ahora tenemos ke ligar el tModel con el servicio nos vamos aPublish / Providers / Prueba / Services / UddiMul / Bindings / view / instance info / add instance infoBuscamos 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 yquitamosla Web Reference existente, para agregar unanueva, en la direccion ponemoshttp://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 teniamoslocalMul.Service1()lo tenemos ke cambiar poruddiMul.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?Hamachi29. 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 elHamachiHamachi 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 nombreTutorialWebservicey password1

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 es5.75.113.212y con el podemos accesar al servicio web de la siguiente formahttp://5.75.113.212:8080/ServiceMul.asmx

32. Y asi mismo podemos accesar al UDDI desde visual studio con esta direccionhttp://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 formatoJSONEste formato es mas sencillo de entender al ojo humano y mas fcil de interpretarpor 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 tipoJavaScriptSerializeresta 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.