Las aplicaciones RIA (Rich Internet Application) están cada vez más de moda, ya que entre otras nos permiten ofrecer una mejor experiencia de usuario. (pero pagando un coste….)
A lo largo de este post voy a intentar explicar, de una manera resumida y simplificada, los principales conceptos de RIA Services y para qué nos puede servir. Vamos a ver si lo consigo…
La arquitectura de una aplicación Web tradicional sería la siguiente:

Exceptuando ciertas funcionales Ajax que pueden suponer una parte “menor” del total, en las aplicaciones web tradicionales las diferentes capas lógicas (lógica de presentación, lógica de negocio, acceso a datos..) de las que está compuesta se distribuyen generalmente en dos capas físicas que se encuentran en el servidor.
En la parte cliente lo que tenemos es el código HTML que el servidor nos devuelve.
Una aplicación RIA sería algo así:

El desarrollo de una aplicación RIA supone desplazar una de las capas lógicas de la aplicación, la capa de presentación, a la parte cliente, convirtiéndole a éste en un “cliente pesado”…En el cliente tenemos parte de la aplicación, no sólo HTML.
Por ejemplo, en el caso de crear una aplicación Silverligth éste sería el caso dónde nos encontraríamos. La aplicación corre en el cliente y en éste dónde se ejecuta.
Pero claro, llevar esta parte al cliente no es gratis, ya que se complican las comunicaciones entre la lógica de presentación y la lógica de negocio.
En el caso de aplicaciones web tradicionales la lógica de presentación y de negocio suelen estar dentro de la misma capa física, por lo que la comunicación entre ambas no supone ninguna complejidad.
Si entre ambas capas metemos “internet”, la comunicación ya no se puede hacer de manera directa y tendremos que pensar en desarrollar una capa de servicios en el servidor que el cliente pueda consumir, lo que complica el desarrollo, aumentando los tiempos y problemas con los que nos podemos encontrar: Crear la capa de servicios, exponer los métodos que necesita, crear proxys, validación, autenticación…
¿Cuál es el objetivo de RIA Services?
Pues el objetivo de RIA Services es simplificar el desarrollo de aplicaciones RIA, para que podemos desarrollar aplicaciones de este tipo como si fuesen aplicaciones web tradicionales, sin tener que preocuparnos de los aspectos que mencionaba en el párrafo anterior.
Beneficiarnos de todas las bondades de tener aplicaciones RIA pero sin pagar un coste por ello (al menos no uno excesivo), pudiendo hacerlo de una manera similar al que si hiciésemos aplicaciones web tradicionales.
En algunos sitios he visto que definían RIA Services como las herramientas RAD de Microsoft para la construcción de aplicaciones RIA…no sé si será para tanto 🙂
RIA Services nos va a servir de pegamento entre la lógica de presentación y la lógica de negocio para simplificar la comunicación entre ambas, permitiéndonos centrarnos en el desarrollo de la aplicación propiamente dicha.
En la arquitectura que se presenta a continuación podéis ver dos nuevos componentes que aporta RIA Services, uno en la parte cliente ( DomainContext ) y otro en la parte servidora ( DomainService ). 
Seguro que ya todos conocéis los DataSources que tenemos actualmente disponibles en ASP.NET (XmlDataSource, SqlDataSource, ObjectDataSource, EntityDataSource etc…) y lo mucho que nos facilitan el desarrollo.
Pues bien, con RIA Services tendremos uno nuevo; DomainDataSource. Este componente es muy similar al resto de DataSources (la idea es la misma) y nos va permitir trabajar de una manera bastante cómoda y sencilla contra servicios de dominio que se exponen con RIA Services.
Por ejemplo, en una aplicación RIA hecha con Silverlight podemos tener los típicos formularios de lista/detalles, con las operaciones de selección, inserción, actualización, borrado, filtrado y ordenación como si de una aplicación web tradicional se tratase.
Por cierto, aunque menciono Silverlight, el componente DomainDataSource también se puede usar en aplicaciones ASP.NET tradicionales o para montar aplicaciones con Dynamic Data, no es algo sólo para Silverlight.

Bueno, no me voy a extender mucho más, porque considero que lo mejor para entender qué es y cómo funciona RIA Services va a ser mediantes ejemplos, así que en los próximos post intentará ir publicando algunos ejemplos que puedan mostrar cómo funciona.