Estadisticas

10/14/2011

Cargando Datos Con WCF Data Services - Parte 2


Teniendo lista la Capa De Acceso A Datos, vamos a agregar un nuevo proyecto para poder montar los servicios, en el caso como los servicios son de tipo web, entonces necesitaremos de una aplicación de tipo web. Esto quiere decir que podremos utilizar una Aplicación Web Asp .Net "Normal", o bien una Aplicación Asp .Net "Vacía", para este ejemplo, utilizaremos lo segundo, es decir una aplicación ASP Vacía:




Después de haber agregado la aplicación ASP vacía, la primera acción que debemos de hacer, es copiar el "Connection String" de la capa de acceso a datos, esto lo podemos encontrar en el archivo "App.config"  del proyecto. Seleccionamos el connection string y lo copiamos:




Luego, ubicamos el archivo "Web.config", de nuestra aplicación de ASP, para pegar el connectin string, teniendo el cuidado de colocarlo dentro de la etiqueta "configuration".






Cuando tengamos lista nuestra solución con ambos proyectos listos (Sería SYM.AccesoADatos de tipo Class Library, y SYM.Servicios de tipo Asp .NET Vacía), procedemos a trabajar en la aplicación ASP, agregando un nuevo ítem, el cuál será de tipo WCF Data Service.


Cuando ya tenemos agregado nuestro WCF Data Service, nos aparecerá una ventana parecida a la siguiente en donde tenemos 3 aspectos importantes que resaltar:


Primero: En el recuadro de color rojo, es necesario colocar la fuente de datos, es decir de dónde expondremos los datos, en el caso lo que queremos es exponer son nuestras entidades del modelo de datos, por lo cual debemos de indicar que heredaremos del nombre "PedidosEntities".

Segundo: En recuadro de color azul, lo que tenemos es la simple inicialización de un método estático que no retorna ningún valor, y que a la vez inicializa una variable de tipo "DataServiceConfiguration" llamada config, la cual nos servirá para poder establecer los permisos sobre el acceso a los datos de nuestras entidades.

Tercero: En los comentarios que aparecen dentro del recuadro amarillo, se nos brindan los ejemplos de como podemos establecer los derechos sobre las entidades, por medio de la variable config de tipo "DataServiceConfiguration".

Después de haber hecho las observaciones vamos a proceder a modificar el código, para adaptarlo de tal forma que sea útil para el ejercicio.

El primer paso, es agregar dos referencias, la primera será la del proyecto de Acceso a Datos, y la segunda será un Assembly llamado "System.Data.Entity", ambas serán para el proyecto de Servicios, para eso damos click sobre el proyecto de Servicios, y damos click sobre la opción "Add Reference...":


Con lo que nos aparecerá un cuadro de diálogo parecido a éste (el diseño del cuadro de diálogo puede variar un poco en relación con el que se muestra en la imagen), luego damos click en la pestaña de proyectos ("Projects") y damos doble click sobre el proyecto de Acceso A Datos.

En esta otra imagen nos muestra cómo agregar la otra referencia:






A continuación lo tenemos que hacer el "using" del namespace de la capa de Acceso A Datos, y del Assembly recién agregado:




Con esto no resta más que modificar el código del servicio, para agregar los permisos correspondientes a las entidades que deseamos exponer, recordando que será por medio de la variable "config". También haremos uso del método "SetEntitySetAccesRule", el cual nos permite establecer los permisos a las entidades.

Este método acepta dos parámetros:

  • El primero que es de tipo string, y que nos servirá para poder expresar las entidades a las cuales le queremos asignar los permisos, también podemos escribir un asterisco ( * ), que funcionará como un comodín, el cual significa que los permisos serán establecidos a todas las entidades de nuestro Modelo de Datos.
  • El segundo parámetro es de tipo EntitySetRights, que representa una enumeración para asignar los permisos a las entidades escritas en el parámetro anterior.
Algunos de los posibles valores para este parámetro pueden ser:

  • All: Provee las todas las autorizaciones para crear, leer, actualizar y borrar datos.
  • AllRead: Proporciona la autorización para solo leer datos.
  • AllWrite: Brinda la autorización para escribir datos.
  • None: Deniega todos los permisos para el acceso a datos.
  • ReadMultiple: Provee la autorización para llevar a cabo consultas de lectura sobre varios ítems de la entidad.
  • ReadSingle: Nos da la autorización para llevar a cabo consultas de lectura sobre un solo item  de la entidad.
  • WriteAppend: Proporciona el permiso para crear nuevos ítem sobre la entidad.
  • WriteDelete: Brinda los permisos necesarios para borrar items de una entidad.
Después de esto procedemos a programar los permisos que le asignaremos a nuestras entidades del modelo de datos, la imagen nos muestra como deberá lucir nuestro código:





En la imagen se muestran varios recuadros de colores.·       

Dentro del recuadro de color rojo, se muestra la declaración completa para establecer los permisos a nuestras entidades del modelo de datos.

Dentro del recuadro negro, podemos observar el nombre de las entidades a las cuales le asignaremos los permisos.

Dentro del recuadro azul y verde, se muestran los permisos ya asignados. A las entidades se le pueden asignar varios permisos a la vez, siempre y cuando sean separados por el símbolo | ("pipe").

Con esto, ya tenemos listo nuestro servicio.

Antes de correrlo, debemos de colocar como nuestra página de inicio el servicio que acabamos  de crear, esto lo hacemos dando clic derecho sobre el archivo "ServicioPedidos.svc", y dando clic en la opción "Set As Start Page",  con esto al ejecutar la aplicación ASP, en el navegador nos aparecerá la siguiente ventana:


Si observan la URL que aparece, nos dice que estamos en nuestro ServicioPedidos.svc, y lo que nos muestra por medio del lenguaje XML, son las entidades que tenemos dentro de nuestro modelo de datos, dentro del recuadro rojo, podemos observar la entidad "Clientes", y dentro del recuadro azul la entidad "Pedidos".

Si en la URL le agregamos el nombre de alguna de nuestras entidades lo que sucederá es que nos mostrará siempre en el lenguaje XML, los registros que se encuentren dentro de esa entidad, tal y como lo podemos ver en la siguiente imagen en los recuadros de color rojo:



En la próxima publicación veremos como consumir éste servicio programando un cliente.

2 comentarios :

  1. Buenas Jesus quisiera saber si wexiste la ercera parte de esta guía en donde se consume el servicio desde un Cliente, ojalá desde una aplicación asp.net web comun sería de gran ayuda

    ResponderEliminar
  2. Muy Bueno este tutorial... Jesus seria muy bueno que publicaras la tercera parte. Gracias.

    ResponderEliminar