¿Qué son los servicios WCF RIA?

102

Odio el sitio de MSDN para los servicios WCF RIA. No dice lo que es, solo dice lo que hace. Dice lo que puede lograr pero no dice por qué lo necesito.

Por ejemplo:

"Un problema común al desarrollar una solución RIA de n niveles es coordinar la lógica de la aplicación entre el nivel medio y el nivel de presentación".

Bueno, no significa mucho para mí.

"Los servicios de RIA resuelven este problema al proporcionar componentes de marco, herramientas y servicios que hacen que la lógica de la aplicación en el servidor esté disponible para el cliente de RIA sin necesidad de que duplique manualmente esa lógica de programación. Puede crear un cliente de RIA que conozca las reglas de negocio y sepa que el cliente se actualiza automáticamente con la última lógica de nivel medio cada vez que se vuelve a compilar la solución ".

Entonces, ¿descarga archivos DLL del servidor? ¿Es un metadato que describe las reglas para los datos?

¿Así que qué es lo? ¿Es solo un complemento de VS 2010 para RAD? ¿O es una tecnología sobre WCF o debajo de ella o qué? ¿Dónde vive? Con datos, con servidor, ¿qué?

Le agradecería que me pudiera resumir esto, por favor.

Aliostad
fuente
3
Es una tecnología en la parte superior de WCF, que usa la generación de código y el código del lado del servidor y del lado del cliente. Se centra principalmente en barajar datos del servidor al cliente y viceversa, con validación y otras cosas.
Rangoric
1
@Rangoric: Podrías publicar eso como una respuesta. Las respuestas cortas también pueden ser buenas respuestas.
Henk Holterman
7
Ah, jejeje, lo malinterpreté como RIAA y me volví loco .
Mateen Ulhaq
Es bueno saberlo: RIA = Rich Internet Applications (clientes ligeros de los cuales Silverlight), bien explicado aquí . Los servicios WCF RIA son servicios RIA sobre WCF, que vinculan el cliente ligero al servidor. " WCF RIA Services recupera datos de una base de datos de Microsoft Structured Query Language (SQL) Server y los pone a disposición de un cliente de Silverlight donde se presentan para su edición y visualización "
min

Respuestas:

109

Los servicios RIA son una tecnología del lado del servidor que genera automáticamente objetos del lado del cliente (Silverlight) que se encargan de la comunicación con el servidor por usted y brindan validación del lado del cliente.

El objeto principal dentro de un servicio RIA es un DomainService, generalmente un, LinqToEntitiesDomainServiceque está conectado a un modelo LinqToEntities.

La clave para recordar en los servicios RIA es que se trata principalmente de un truco de compilación sofisticado. Cuando crea un servicio de dominio y compila su solución, se genera una representación del lado del cliente de su servicio de dominio. Esta representación del lado del cliente tiene la misma interfaz. Suponga que crea un servicio de dominio del lado del servidor CustomerServicecon un método IQueryable<Customer> GetCustomersByCountry. Cuando construye su solución, se genera una clase dentro de su proyecto Silverlight llamado CustomerContextque tiene un método GetCustomersByCountryQuery. Ahora puede usar este método en el cliente como si lo estuviera llamando en el servidor.

Las actualizaciones, inserciones y eliminaciones siguen un patrón diferente. Cuando crea un servicio de dominio, puede indicar si desea habilitar la edición. Los métodos correspondientes para actualizar / insertar / eliminar se generan en el servicio de dominio del lado del servidor. Sin embargo, la parte del lado del cliente no tiene estos métodos. Lo que tienes en tu CustomerContextes un método llamado SubmitChanges. Entonces, cómo funciona esto:

  • Para obtener actualizaciones, simplemente actualice las propiedades de los clientes existentes (que recuperó a través de GetCustomersByCountryQuery).
  • Para inserciones, usa CustomerContext.Customers.Add(new Customer(...) {...}).
  • Para eliminaciones, usa CustomerContext.Customers.Remove(someCustomer).

Cuando termines de editar, llamas CustomerContext.SubmitChanges().

En cuanto a la validación, puede decorar sus objetos del lado del servidor con atributos de validación del System.ComponentModel.DataAnnotationsespacio de nombres. Una vez más, cuando crea su proyecto, el código de validación ahora se genera automáticamente para los objetos del lado del cliente correspondientes.

Espero que esta explicación te ayude un poco más.

Ronald Wildenberg
fuente
Seguramente lo hace. Gracias por compartirlo. Ojalá pudieras actualizar el sitio de MSDN. Ahora, ¿qué pasa si agrego una propiedad a mi objeto de dominio? ¿Se actualizaría solo?
Aliostad
Agregué información adicional sobre actualizaciones, inserciones y eliminaciones.
Ronald Wildenberg