RIA Services: Paso a paso (I)
Es un post anterior hablaba de RIA Services y de cómo esta nueva tecnología nos puede ayudar a simplificar el desarrollo de aplicaciones RIA
En este post toca empezar con la práctica y enseñar paso a paso un ejemplo básico de lo que es. Vamos a hacer un ejemplo muy sencillo usando la base de datos Northwind. Crearemos una aplicación Silverlight que muestre en un grid la lista de proveedores.
Si queréis repetir los ejemplos que aquí os enseño necesitareis tener instalado Silverlight 3 y la preview de mayo de RIA Services.
Lo primero será crear una nueva aplicación Silverlight; Silverlight Application.
Una seleccionado este tipo de proyecto os aparecerá un cuadro de diálogo, que sólo os aparecerá si tenéis instalado RIA Services.
Para que la aplicación sea una aplicación que haga uso de la funcionalidad de RIA Services, es necesario seleccionar la opción “Link to ASP.NET server project”. Si no se selecciona esta opción la aplicación será una aplicación Silverlight normal y corriente.
Una vez seleccionada esta opción, se generarán dos proyectos dentro de la solución que se acaba de crear; un proyecto que contiene la aplicación Silverlight, la aplicación que hará de cliente, y una aplicación web, que contendrá el código de servidor.
Este segundo proyecto es el que se ejecutará en el servidor y el que contendrá toda la lógica de negocio y acceso a datos que necesite la aplicación. El primer proyecto es la parte cliente, la que se ejecuta en el navegador de cliente y la que tiene que consumir los servicios que el servidor le ofrezca.
Si ya tenemos nuestra aplicación Silverlight creada o la hemos creado sin la opción de unirla a un proyecto web no te preocupes, a posteriori también se puede hacer a través de las opciones del proyecto.
Una vez que tenemos creada la estructura de nuestra aplicación, en el proyecto servidor, vamos a crear todo lo necesario para exponer al cliente la lista de proveedores.
Para el ejemplo vamos a usar un diagrama de ADO.NET Entity Framework, pero tenemos que tener en cuenta que para usar RIA Services no tenemos por qué hacer uso de una base de datos ni de Entity Framework.
Eso sí, si necesitamos hacer uso de una base de datos, Entity Framework puede ser el complemento perfecto.
Agregamos un nuevo elemento al proyecto; ADO.NET Entity Data Model. Al nuevo diagrama le llamamos Northwind.
Una vez creado nos aparecerá un asistente que nos permitirá crear el diagrama de Entity Framework. Para este ejemplos seleccionaremos únicamente la tabla Suppliers.
En los ejemplos que veremos haremos uso de Entity Framework pero no entraremos lo pasaremos sólo por encima sin entrar a explicar todas las posibilidades que nos ofrece. Para ello, os recomiendo el libro “ADO.NET Entity Framework”, un libro en castellano de Unai Zorrilla, Octavio Hernández y Eduardo Quintás y que la editorial Krasis ha publicado. Un libro fantástico y además en castellano!
Una vez creado nuestro modelo de datos, tenemos que crear el servicio encargado de exponer nuestro dominio, para que el cliente pueda consumirlo. Este es el componente DomainServices del que hablábamos en el post anterior.
Añadiremos un nuevo elemento de tipo “Domain Service Class” y le llamaremos SuppliersService. Esta plantilla es una de las que incorpora RIA Services.
Una vez seleccionado este elemento, nos aparecerá este cuadro de diálogo desde el cual podemos configurar la parte del modelo de datos que queremos exponer. En este caso la cosa es sencilla, ya que sólo tenemos la entidad Suppliers.

Seleccionamos también la opción de permitir edición y la opción de generar las clases de metadatos asociadas. En los siguientes post entraremos a explicar para que sirve cada opción y efectos tiene seleccionar o no la opción.
Una vez realizada esta opción ya tenemos creado nuestro DomainService que expone la entidad Suppliers del model Northwind. Ahora vamos a ver cómo lo consumimos desde el cliente.
En el proyecto, en el el fichero Main.xaml vamos a añadir un componente DataGrid, que será el que muestre el listado de proveedores.
Una vez que tenemos el grid, en el codebehind añadiremos el código necesario para cargar en el grid el listado de proveedores.
Fijaros que en ningún momento he creado un proxy al servicio que expone el modelo Northwind, pero aún así, lo tenemos accesible!
Y si ejecutamos este código tendremos la lista de proveedores..
y se acabó, ya tenemos nuestra aplicación RIA funcionando!
En el próximo post entraré a explicar con más detalle algunos de los aspectos que hoy he mencionado pero que no he entrado a explicar, como el código generado al crear el DomainService o cómo el cliente puede hacer uso del servicio sin haber creado un proxy previamente.