crear web screar web service usando wcf
DESCRIPTION
Mini tutorial de como crear un web service sencilloTRANSCRIPT
Crear Web Service usando WCF
Antes utilizaban ASMX WebServices hora se usa WCF (Windows Communication Foundation) es mucho mejor y trae otras cosa. Ver WCF vs ASMX WebServices
BuenoLo primero es crear un nuevo proyecto de tipo WCF Service Library
Obtenemos esto
Luego Hacemos algunos cambios en la parte marcada. Como cambiar el nombre de la librería
También cambiamos es Nombre de IService1.vb. Este archivo es el llamado Interfaz (Interface) y es aquí donde se define nuestro contrato del servicio (ServiceContract) o en otras palabras aquí se definen los métodos o funciones. Al igual que las clases en C++ solo se define las funciones y los parámetros que recibe y lo que retorna. Y en el otro archivo esta la declaración de las funciones.
Ahora la clase Service1.vb. que es la que implementa la interfaz. Hay que renombrarlo
Por cuestiones de Orden sigo la siguiente nomenclatura:
Nombre del WebService <Prueba> o como decida llamarlo.
Para el nombre de la Librería <Prueba>ServiceLibrary Para la Interfaz I<Prueba>Service.vb Para la Clase <Prueba> Service.vb
Usted puede decidir si desea seguir esta nomenclatura. La I de la interfaz es casi obligatoria para distinguir un archivo de otro.
Continuamos; después de renombrar los archivos anteriores miremos que contiene el IService1.vb
A esto <ServiceContract()> llaman atributos. Este es colocado automáticamente por visual Studio. Es OBLIGATORIO y solo indica que esa interfaz es el contrato del servicio.
La etiqueta <OperationContract()> sirve para indicar que ese método va poder ser utilizado una vez que el que Web Service sea utilizado o como le dice Consumido. Si un método no tiene este atributo no va a poder ser utilizado.
Mire la Diapositiva que le Adjunto. Para un mejor entendimiento. Dado que no se mucho acerca de esto. Lo he utilizado pero no lo he explotado.
Lo de <DataContract()> se utiliza para retornar como colecciones o tipos de datos definidos por nosotros. Al definirlo como DataContract a veces el tiende ha convertirlo en un tipo de dato genérico para el cliente que lo consume.
Miremos la Clase Service1.vb
Como mira en la imagen marque en amarillo el nombre de la interfaz. Esta clase PruebaService es una implementación de la interfaz IPruebaService. Si usted cambia el nombre de la interfaz también tiene que cambiarla aquí. Anteriormente cuando cambiamos el nombre de los archivos Visual Studio hizo este cambio automáticamente. Si ha usted no se lo hace debe hacerlo manualmente.
Hora en las funciones puede ver que esta subrayado el nombre de la interfaz y el nombre de la función que se esta implementando. Este nombre debe estar igual que el de la interfaz. No es obligatorio que el nombre de la función sea igual a la que esta implementando. Ver Imagen para evitar mi confusión
Todo este código lo genera Visual Studio como ejemplo.
Para probar este código de ejemplo simplemente pulsamos F5 o click en Aparece la siguiente ventana
En el área remarcada puede observar que aparecen las funciones definidas en la interfaz. Al dar doble click en una de las funciones podemos ver esto
Esto es lo que devuelve
Para poder utilizar o consumir el web service este debe ser publicado. Los videos muestran varias formas de hacer esto. Mas adelante le mostrare como hacerlo en el IIS.
Espero que las imágenes estén ayudando para que me entienda mejor.
Aquí aparecen los parámetros que recibe la función
Aquí aparecerá lo que devuelve la función
Click para probar
Una de las partes más tediosas es la definición de los endpoints (Extremos) que es a través de estos que los clientes se conectan al web service. Nota: Casi no entiendo esto Mire este link para ver la documentación y entender mejor. Tratare de explicárselo lo mejor que pueda para no confundirla.
Para configurar el web service click derecho en App.Config. Click Edit WCF Configuration.
Este es solo un asistente para configuración. Este es un archivo xml que puede ser modificado manualmente. Bueno esta es la ventana
Esos Endpoints los crea automáticamente Visual Studio. El más importante es el mex que es utilizado para el intercambio de la metadata.
Cuando nos movemos y damos click en wsPrueba.PruevaService aparece esto
En la parte derecha de la imagen donde dice BehaviorConfiguration esta en blanco. En visual Studio esto no se crea automáticamente y nosotros por ende debemos hacerlo. Esto define el comportamiento de servicio más que todo es habilitar que en caso de un error en el web service este error sea transmitido al cliente que lo esté consumiendo. Y también habilitar algo de la metadata no se muy bien.
Para hacer esto nos vamos a la carpeta Advanced y luego Service Behaviors
Al dar click en New Service Behavior Configuration obtenemos esto
Cambiamos en Nombre a PruebaServiceLibrary.ServiceBehavior y agregamos elementos. Click en el botón Add…
Agregar ServiceMetadata y ServiceDebug
La ventana marcada en rojo es la que aparece cuando se le da click a Add… y al fondo se mira los 2 elementos que agregue.
A estos elementos a que hacerles una pequeña configuración. Para el serviceMetada en la opción HttpGetEnabled cambiar a true.
Y en el otro serviceDebug la opción IncludeExecptionDetailInFaults cambiar a true también. Esta es para recibir las notificaciones de error a la hora de estar consumiendo el servicio.
Así debe quedar. Una vez hecho esto volvemos a wsPrueba.PruevaService y en BehaviorConfiguration
asignamos el que hemos creado
Así debe quedar
Esto fue el Behavior para el Service. Los Endpoints también tienen Behaviors, solo que esto se configuran dependiendo si el Endpoint lo requeriré o se desea un Behavior diferente por cada endpoint.
Ahora lo publicaremos en el IIS. Dado que esta es una librería tenemos que agregar un Sitio web al proyecto. Asegúrese de crearla en la misma carpeta en la que esta el proyecto. Ver video 8
Click derecho en la solución -> Add -> New Web Site
Escogemos WCF Service Continuamos con la Nomemclatura para el nombre de sitio PruebaServiceSite lo que seria <Nombre del WebService>ServiceSite.
Lo Creamos en la misma carpeta del proyecto.
Nuestra solución debe quedar de esta forma
La carpeta App_Code contiene 2 archivos IService.vb y Service.vb los cuales debemos borrar por los nuestros se encuentran en la librería PruebaServiceLibrary. Click derecho Delete
Ahora procedemos a hacer referencia a la librería. Click derecho en PruebaServiceSite -> Add Referecence…
Aparece la siguiente ventana
En el tab Projects Aparecerán todos los proyectos que hallamos agregado a nuestra solución. Por los momentos solo aparece la librería del web service PruebaServiceLibrary la seleccionamos y le damos click al botón OK. Esto creara una carpeta llamada Bin donde aparecerán los archivos DLL de que genera PruebaServiceLibrary
Ahora renombramos el Archivo Service.svc a Prueba.svc también debemos modificarlo. Inicialmente aparece como se muestra en la imagen la parte subrayada.
La parte CodeBehind="~/App_Code/Service.vb" la borramos dado que nuestro código se encuentra en la librería. Y procedemos a modificar Service="Service" donde aquí le diremos que use el código de nuestra librería. Dejándolo de la siguiente forma Service = "wsPrueba.PruebaService" esto debe ir de esa forma <Nombre de la DLL>.<Nombre de la Clase> Y guardamos los cambios.
Luego tenemos que editar el archivo Web.Config para esto le damos click derecho al Archivo y luego click en Edit WCF Configuration
Se debe abrir la siguiente ventana
Es básicamente la misma que cuando configuramos App.Config de la librería. Visual Studio 2008 hace algunas cosas automáticamente, pero Visual Studio 2010 nos presenta la ventana en blanco. Y nosotros debemos configurarle todo. Prácticamente se configura igual que App.Config.
Debemos empezar creado un Nuevo servicio a partir de la librería. Damos click en Create a New Service
Click en Boton Browse aparece la siguiente ventana y abrimos la carpeta Bin
Ahora vemos el Archivo wsPrueba.dll
Le damos doble click para abrir el archivo como si fuera una carpeta y veremos lo siguiente
Veremos el archivo wsPrueba.PruebaService, lo seleccionamos y le damos Open.
Luego se cerrara la ventana y a la que queda le damos click en Next
De nuevo Next la parte marcada en amarillo aparece automáticamente
En la siguiente pantalla yo siempre he utilizado HTTP no sé que es lo demás. De nuevo click en Next
Igual Next
Luego el Address lo dejamos en blanco borramos el Http:// y le damos Next
Aparecera una ventana de Confirmación de que si dejamos en blanco el Address lo tenemos que definir después le damos que Si
Luego Finish
Ya tenemos creado el servicio en el Web.Config
Ahora tenemos que configurarlo de la misma forma que configuramos La librería
El Behavior para el Servicio
No ponga las imágenes de como crear el Behavior por que es lo mismo
Visual Studio 2010 nos creo un Endpoint. En este momento no estoy seguro si ocupamos otro Endpoint. Seguire asi si lo necesitamos los crearemos después.
Ahora podemos probar para ver como se mira en el navegador. Click derecho en Prueba.svc -> click en View in Brower
Tendríamos que ver esto
Que es la pagina del web Service. Lo que marque en amarillo es el número de puerto que visual Studio asigna. Cuando publiquemos este sitio en el IIS ya no nos aparecerá el número de puerto (este numero puede variar).
Ahora pongámoslo en el IIS. En el menu de Inico tecleamos IIS y aparecerá esto Si esta instalado el IIS. Ver Link 1, Link 2,…
Hay que tener instalado el framework 4.0 Click para descargar.
Le damos click a Administrador de Internet Information Services (IIS) y este se abrirá
Este es el que tengo yo tengo creado un Web Service wsReportes. Verifique que en Grupos de aplicación tenga lo que le muestro en la siguiente ventana. Que le aparezcan ASP.NET v4.0
Classic y ASP.NET v4.0
De no ser así verifique que ya tenga instalado el Framework 4 si no es así instálelo y luego verifique la misma ventana para ver si se agregaron. Si todavía no aparecen debe registrar el framework, para hacer esto se va a la carpeta c:\Windows\Microsoft.NET\Framework\v4.0.30319 y estando ahí apreté la tecla Shift y click derecho en algún espacio en blanco de la carpeta. Esto es para que le salga la opción de abrir el cmd desde esa dirección.
El cmd debería abrirse de esta forma
Estando ahí debemos escribir lo siguiente aspnet_regiis.exe -i y damos Enter
Cuando termina
Y listo. Si no funciona hay que preguntarle a Google.
Una vez hecho esto en la parte de Sitios -> Default Web Site, Click derecho Agregar Aplicación…
Esta ventana aparece
He enumerado los campos.
1 es el alias para el nombre de la aplicación en nuestro caso el web service2 Grupo de aplicaciones debemos escoger ASP.NET v4.03 Ruta en la que se encuentra PruebaServiceSite. Obligatoriamente debe ser esta carpeta
Esto es lo que debe quedar
Le da Aceptar y nos debe aparecer esto
La seleccionamos y en la parte de abajo le damos Vista Contenido mirar imagen
Seleccionamos Prueba.svc, click derecho Examinar
Esto nos abrirá el navegador de nuevo
Fíjese en la URL y vera que no aparece el número del puerto porque lo estamos corriendo desde el IIS y no con Visual Studio
Esto es el Inicio del manual mire los videos para un mejor entendimiento. Próximamente le estaré añadiendo más a este manual esto solo es para que se vaya preparando.
Me hace falta enseñarle como consumir este web service y como agregarle mas cosas. Como accesar a bases de datos.
Yo cree un web service y lo consumí solo con javascript es algo que también pienso enseñarle.
Bueno pruebe esto por mientras continuo con este manual.
Documentación OnlineWindows Communication Foundation
Basic WCF Programming
Implementing Service Contracts
How to: Create a Service with a Contract Interface
WCF vs ASMX web service
Error HTTP 500.21 - Internal Server Error
También puede ver los videos del Dropbox de carpeta Descargas
En la Carpeta Web Services esto es lo que hay y en la carpeta WCF Tranning Videos se Encuentran los video tutoriales de WCF