2010-09-10 21 views
95

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.¿Qué son los servicios de WCF RIA?

Por ejemplo:

"Un problema común en el desarrollo de una solución RIA de n niveles está coordinando lógica de la aplicación entre el nivel medio y la capa de presentación".

Bueno, no significa mucho para mí.

"Servicios RIA resuelve este problema proporcionar componentes estructurales, herramientas, y servicios que hacen que la lógica de la aplicación en el servidor a disposición del cliente RIA sin necesidad de duplicar manualmente que la lógica de programación . Puede crear un cliente RIA que tenga en cuenta las reglas comerciales y saber que el cliente se actualiza automáticamente con la última lógica de nivel medio cada vez que la solución es compilada nuevamente. "

¿Lo hace descarga DLL del servidor? ¿Es un metadato que describe las reglas para los datos?

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

Agradezco si puede resumir esto para mí, por favor.

+3

Es una tecnología de parte superior de WCF, que usa Code Generation y ambos, el lado del servidor y el código del lado del cliente. Se enfoca principalmente en mezclar 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. –

+7

Ah, lol, lo leí mal como *** RIAA ***, y fui psicópata. –

Respuesta

96

RIA services es 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 y proporcionan validación del lado del cliente.

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

La clave para recordar en los servicios de RIA es que se trata principalmente de un truco de construcción sofisticado. Cuando crea un servicio de dominio y compila su solución, se genera una representación de su servicio de dominio del lado del cliente. Esta representación del lado del cliente tiene la misma interfaz. Supongamos que crea un servicio de dominio del lado del servidor CustomerService con un método IQueryable<Customer> GetCustomersByCountry. Cuando crea su solución, se genera una clase dentro de su proyecto de Silverlight llamado CustomerContext que tiene un método GetCustomersByCountryQuery. Ahora puede usar este método en el cliente como si lo estuviese 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 luego 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 CustomerContext es un método llamado SubmitChanges. Entonces, ¿cómo funciona esto:

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

Cuando termine de editar, llame al CustomerContext.SubmitChanges().

En cuanto a la validación, puede decorar los objetos del lado del servidor con los atributos de validación del espacio de nombres System.ComponentModel.DataAnnotations. De nuevo, cuando construyes tu proyecto, el código de validación ahora se genera automáticamente para los objetos correspondientes del lado del cliente.

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

+0

Seguro que sí. Gracias por compartirlo. Desearía que pudieras actualizar el sitio de MSDN. Ahora, ¿qué sucede si agrego una propiedad a mi objeto de dominio? ¿Se actualizaría? – Aliostad

+0

Agregué información adicional sobre actualizaciones, inserciones y eliminaciones. –

Cuestiones relacionadas