Crear soluciones de RIA Services

WCF RIA Services permite crear soluciones que abordan una variedad de escenarios cuando se crean aplicaciones de negocios. Estos escenarios varían entre bastante elementales y significativamente complejos. Por ejemplo, un escenario elemental podría estar formado por una aplicación de Silverlight con acceso a solo unos pocos servicios de dominio en el nivel intermedio. Un escenario más complejo puede contener varias aplicaciones de Silverlight vinculadas todas ellas a una capa de nivel intermedio común que expone un conjunto grande de servicios de dominio. En este tema se resuelven los problemas que surgen al crear y administrar una solución de RIA Services . Aborda preguntas como las siguientes:

  • ¿Cuáles son las diferentes formas de estructurar una solución de RIA Services ?

  • ¿Qué estructura es mejor para un escenario determinado?

  • ¿Cómo se pueden solucionar los problemas de una solución?

  • ¿Cómo se puede implementar una solución?

En este tema también se proporciona guía para los tutoriales y otros temas contenidos en esta sección que explican paso a paso las tareas asociadas a una serie de escenarios típicos relevantes para RIA Services . Esta sección contiene los cinco tutoriales siguientes:

  1. Tutorial: realizar un paseo por RIA Services

  2. Tutorial: crear una solución de RIA Services

  3. Tutorial: utilizar la plantilla de aplicación de negocios de Silverlight

  4. Tutorial: crear una biblioteca de clases de RIA Services

  5. Tutorial: localizar una aplicación de negocios

Esta sección también contiene los tres temas siguientes:

  1. Agregar o quitar un vínculo a RIA Services acerca de la administración de los vínculos a RIA Services .

  2. Utilizar el Asistente para servicios de dominio que documenta los elementos de la interfaz de usuario en el cuadro de diálogo.

  3. Debugging a RIA Services Solution que proporciona guía sobre lo que se debe hacer cuando surgen problemas en la creación de una solución de RIA Services .

Los tutoriales presentados en esta sección de la documentación de RIA Services requieren la instalación y configuración correctas de varios programas de requisitos previos, como Visual Studio 2010 y Silverlight Runtime y SDK, además de WCF RIA Services y el Kit de herramientas de WCF RIA Services. También requieren la instalación y configuración de SQL Server 2008 R2 Express con Advanced Services, así como la instalación de las bases de datos OLTP y LT de AdventureWorks.

Los temas del nodo Requisitos previos para WCF RIA Services proporcionan instrucciones detalladas para el cumplimiento de cada uno de estos requisitos previos. Siga las instrucciones proporcionadas en ellos para asegurarse de encontrar el menor número de problemas posibles al trabajar en estos tutoriales de RIA Services incluido en esta sección.

Vínculo a RIA Services

En todas las soluciones de RIA Services , existe un vínculo (conocido como vínculo a RIA Services ) entre un proyecto de Silverlight y su proyecto de nivel intermedio asociado. Un vínculo a RIA Services es una forma especial de referencia entre proyectos que facilita la generación de código de nivel de presentación a partir del código de nivel intermedio. Puede crear un vínculo a RIA Services activando la casilla Habilitar WCF RIA Services cuando cree un nuevo proyecto de Silverlight. También puede crear un vínculo a RIA Services para los proyectos existentes en las propiedades del proyecto. En algunos casos, creará el vínculo a RIA Services entre proyectos de aplicación y en otros casos creará el vínculo entre proyectos de biblioteca de clases, como se describe en las secciones siguientes.

Cuando existe un vínculo entre los proyectos, el proyecto de Silverlight recibe clases de proxy que le permiten tener acceso al código de nivel intermedio. No hay una manera de especificar que solo ciertas partes del nivel intermedio se apliquen a un proyecto de Silverlight. Las reglas siguientes se aplican al uso de vínculos a RIA Services :

  • El vínculo se define en un proyecto de cliente de Silverlight.

  • El vínculo siempre señala de un proyecto de cliente de Silverlight a un proyecto de servidor o una biblioteca de clases de .NET.

  • Solo puede haber un vínculo por cada proyecto de cliente de Silverlight.

  • El vínculo no puede señalar otros proyectos de cliente de Silverlight.

  • Varios proyectos de cliente de Silverlight pueden señalar el mismo proyecto de servidor o la misma biblioteca de clases.

  • Una aplicación de Silverlight no puede vincular directamente a un proyecto de biblioteca de clases.

Para obtener más información sobre cómo administrar vínculos a RIA Services , vea Agregar o quitar un vínculo a RIA Services en esta sección.

Estructura de solución predeterminada

En la estructura de solución predeterminada, RIA Services crea un proyecto de cliente único y un proyecto de servidor (único). Cuando cree un nuevo proyecto utilizando la plantilla Aplicación de Silverlight y active la casilla Habilitar WCF RIA Services, se creará una solución con esta estructura predeterminada. Ya existe entonces un vínculo a RIA Services entre los dos proyectos. Cuando cree la solución, se generará código de cliente para los servicios de dominio y el código compartido. La siguiente ilustración muestra la estructura de solución predeterminada.

Estructura predeterminada del proyecto

La estructura de solución predeterminada es muy práctica porque la totalidad de tipos de servicio de dominio y código compartido agregados al proyecto de servidor estarán automáticamente disponibles para el proyecto de cliente de Silverlight después de generar la solución. Además, el código compartido que agregue al proyecto de servidor estará visible en el proyecto de cliente. Esta estructura funciona bien cuando no se tienen muchos servicios de dominio en el proyecto de servidor y no se necesita reutilizar la lógica de negocios en muchas aplicaciones de Silverlight diferentes.

En una solución con la estructura predeterminada, se pueden agregar más aplicaciones de Silverlight con un vínculo a RIA Services al proyecto de servidor. Sin embargo, la estructura predeterminada tiene limitaciones. El código generado para cada cliente de Silverlight puede tener acceso a todo el código de nivel intermedio del proyecto de servidor. Por ejemplo, si tiene tres aplicaciones de Silverlight vinculadas a un proyecto de servidor único y desea agregar un servicio de dominio que solo lo utilizará una de las aplicaciones de Silverlight, las tres aplicaciones cliente tendrán un contexto de dominio generado para el servicio de dominio y podrán tener acceso a ese servicio de dominio.

Para obtener más información sobre cómo crear soluciones de RIA Services en Visual Studio 2010, vea Tutorial: crear una solución de RIA Services. Para obtener más información sobre el código generado para un proyecto de cliente, vea Generación de código de cliente.

Plantilla Aplicación de negocios de Silverlight

RIA Services también proporciona una plantilla Aplicación de negocios de Silverlight. Esta plantilla proporciona un punto de partida apropiado para compilar una aplicación de negocios que utiliza Silverlight para el cliente. La plantilla se genera en la Aplicación de navegación de Silverlight y utiliza RIA Services para admitir el registro de autenticación y de usuario. Cuando cree un proyecto utilizando la plantilla Aplicación de negocios de Silverlight, RIA Services creará la solución con la estructura predeterminada. La plantilla Aplicación de negocios de Silverlight agrega automáticamente las características siguientes:

  • Ventana de inicio de sesión

  • Ventana de registro

  • Navegación de Silverlight

El modo de autenticación predeterminado para la aplicación de negocios es la autenticación mediante formularios. Para utilizar la autenticación de Windows, solo tiene que cambiar el valor del elemento de autenticación en el archivo Web.config, como <authentication mode="Windows"/>, y cambiar el valor de la propiedad Authentication en la clase WebContext generada. La plantilla Aplicación de negocios contiene automáticamente código para admitir la autenticación mediante formularios o la autenticación de Windows. Para obtener más información, vea el tema Tutorial: utilizar la plantilla de aplicación de negocios de Silverlight.

La carpeta Services del proyecto de servidor contiene los servicios de dominio que exponen el registro de usuario y la autenticación de usuario. El servicio de registro de usuario utiliza el proveedor de pertenencia de ASP.NET para crear nuevos usuarios. En el proyecto de servidor, una carpeta denominada Models contiene las clases para definir propiedades para los datos de registro y de usuario. Puede agregar propiedades a estas clases para personalizar los datos de usuario para la aplicación.

En el proyecto de cliente, la plantilla Aplicación de negocios contiene código para simplificar el desarrollo de la capa de presentación. Las carpetas Libs y Controls contienen los ensamblados y controles que se utilizan dentro de la plantilla. La carpeta Login (ubicada dentro de la carpeta Views) contiene los controles de autenticación y de registro de usuario. Estos controles se habilitan automáticamente en el proyecto. La carpeta Resources (ubicada en la carpeta Assets) contiene cadenas de recurso para texto dentro del proyecto. Cuando se agrega texto a la aplicación, puede agregarse al archivo para las cadenas de aplicación.

Para obtener más información, vea Tutorial: utilizar la plantilla de aplicación de negocios de Silverlight.

Admisión de componentes de biblioteca de clases de n niveles

RIA Services proporciona el tipo de proyecto Biblioteca de clases de WCF RIA Services para admitir el uso compartido de código mediante bibliotecas. Mediante el uso de bibliotecas de clases, se puede empaquetar la lógica de negocios en componentes de biblioteca de clases de n niveles reutilizables.

La siguiente ilustración muestra una estructura de solución que utiliza una biblioteca de clases de RIA Services.

Estructura de la biblioteca de clases

En la ilustración, observe que no existe un vínculo a RIA Services entre los proyectos de aplicación. En su lugar, el vínculo existe entre los proyectos de biblioteca de clases. Puede utilizar cualquier número de las bibliotecas de clases en la aplicación y puede reutilizar la biblioteca de clases en cualquier número de aplicaciones.

El uso de las bibliotecas de clases de RIA Services proporciona las ventajas siguientes:

  • Las partes de cliente y de servidor de un dominio de datos único se pueden desarrollar y empaquetar como un componente único. Este componente se puede reutilizar en varias aplicaciones.

  • La generación de código proxy de cliente y el uso compartido de código fuente se produce en solo una ubicación. La ubicación está entre los niveles del componente y no en cada aplicación de Silverlight.

  • Varias aplicaciones de Silverlight dentro de un proyecto de aplicación web único pueden hacer referencia a solo las bibliotecas de clases que necesitan. De este modo, un cliente de Silverlight no tiene que ver toda la lógica de negocios expuesta por el nivel intermedio.

Con las bibliotecas de clases de RIA Services , se puede generar una estructura de solución flexible que proporciona solo los componentes necesarios para una aplicación. La siguiente ilustración muestra una estructura de solución que utiliza varias bibliotecas de clases de RIA Services .

Estructura de la biblioteca de clases

[!NOTA] Si agrega un proyecto de biblioteca de clases a un proyecto de Aplicación de negocios de Silverlight, no podrá agregar un servicio de autenticación al proyecto de servidor en la biblioteca de clases. El objeto User de la plantilla Aplicación de negocios de Silverlight es inaccesible a la biblioteca de clases.

Para obtener más información, vea Tutorial: crear una biblioteca de clases de RIA Services.