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.
M eha gustado tu post. Un conmceptio nuevo más aclarado, gracias
Estan los servicios RIA lo sufientemente maduros para tenerlos en cuenta a la hora de empezar una aplicacion empresarial?????
Esperamos tus ejemplos.
Buena pregunta David..
De momento lo que hay es una preview, la última de mayo y todos sabemos el riesgo que corremos si lo utilizamos; no están todo los finas que podrían ir ni tienen toda la funcionalidad que podríamos llegar a necesitar en una aplicación.
En http://silverlight.net/forums/p/101160/230835.aspx puedes encontrar un Roadmap del producto, que habla de una release para primeros de 2010.
En mi caso, yo lo estoy evaluando para un par de proyectos en los que usaré Silverligth. Silverlight va a suponer una parte menor del total y podría usar esta tecnología como prueba de concepto.
Un saludo,
En dos anteriores veíamos un ejemplo de cómo funciona RIA Services y de cómo nos puede facilitar la creación
Primeramenta gracias por el post. Muy bueno. Existe la posibilidad de programar nuestra aplicación con Silverlight en una sola capa, simplificando el desarrollo ? Estoy comenzando una aplicación mediana (Una aplicación típica de gestión Inventarios, Compras, Facturación, etc.) para las PYMES. Dónde los clientes tienen una infraestructura pequeña, digamos cuando mucho 10 equipos en red y requieren accesar a sus sucursales eventualmente por medio de Internet. Sin duda Silverlight es una aproximación al escritorio, pero estoy empezando a pensar que únicamente para la UI, cómo bien lo comentas agregando una complejidad más (a esto si le agregamos las diversas formas de acceso a datos que Microsoft ofrece), hay que pagar ese coste. Si no hay alternativas, entonces Siverlight no es la solución para llevar el escritorio al web, asi como los desarrolladores lo entendemos. En algunas escenarios programar la aplicación en una sola capa es lo más adecuado, cuando lo que se busca es simplemente servir a la aplicación misma y terminar una solución lo más pronto posible.
Hola Alex,
La complejidad que comento es una complejidad inherente a cualquier aplicación cliente-servidor, dónde dos componentes residen en ubicaciones diferentes y necesitan comunicarse.
Usar aplicación de gestión como la que comentas con Silverlight implica una arquitectura como la que comento en el post; la aplicación Silverlight corriendo en las delegaciones y el servidor corriendo en la central. Todas las delegaciones trabajan contra los mismos datos.
La alternativa en una capa es hacer simplemente una aplicación ASP.NET, que corra completa en un servidor de la sede central y que las delegaciones se conecten a la aplicación a través del navegador.
Un saludo,
Suficiente para no utilizar Silverlight. Muchas gracias. Un saludo.
Me parece super interesante ya que se podria optimizar las paginas web en su desarrollo, una muy buena metodologia para su correcta aplicacion….
Talvez me prodrias ayudar ya que estoy haciendo un tema de investigacion y falta informacion de lo que RIA y su implementacion..
espero que me puedas ayudar mi correo es fmvj_899@hotmail.com
Estoy estudiando utilizar WCF en un nuevo proyecto. EL sábado te escuché en el codeCamp Tarragona con RIA Services y me quedé con la pregunta: ¿WCF y RIA ofrecen una funcionalidad similar, o no entendía nada? Es decir entiendo que ambos cominican los componentes remotos, y WCF me parece muy bueno, porqué usar RIA?
Muchas Garcias,
Max
Hola!
RIA Services no sólo te simplifica la comunicación cliente-servidor. Tb te da otras características, como las los métodos para las operaciones CRUD ( altas,bajas, modificaciones) basándose en EF, integración con la seguridad ASP.NET o seguimiento de los cambios en el cliente.
Según está ahora, está pensado para hacer simplificar el desarrollo de aplicaciones de negocio para Silverlight y ASP.NET. El protocolo de comunicación sería HTTP/REST, si se usa la integración con ADO.NET Data Services.
WCF es un tecnología de comunicación mucho más potente que RIA, pero digamos es de ámbito general. Te permite usar TCP, HTTP, HTTPS, seleccionar el formato ( XML, JSON…), usar colas MSMQ, exponer por REST…Simplificando mucho, sería como usar WebServices, pero pudiendo personalizar cualquier aspecto de la comunicación.
De todas maneras, ten en cuenta que RIA Services todavía está en preview y hasta el Q1 de 2010 no estará disponible, así que la solución pasa por usar WCF.
Después de echar la bronca a un “mal” compañero por no leerme y preguntarme sobre RIA Services, he decidido
Después de echar la bronca a un “mal” compañero por no leerme y preguntarme sobre RIA Services, he decidido
bueno, esta bien comentar y probar en silverlight, pero no olvidemos que RIA no solo implica a Silverlight, tambien esta el padre de esto, ADOBE, que trae consigo a Adobe Flex que tambien es una herramienta poderosa, cabe recalcar que Adobe tiene muchisima experiencia en la parte grafica y de animacion en cambio Microsoft, como siempre, copia y copia…
Estoy realizando un aplicacion empresarial usando Silverlight 3, luego de mucha investigacion he llegado a una parte de decidir que arquitectura utilizar para la comunicacion de la logica con los datos, me encuentro con 4, de las cuales 1 es descartable.
-Sockets (obsoleto)
-WCF (Simple, pero problemas de seguridad debido q con silverlight solo soporta el basicHttpBinding)
-REST (ADO .Net Data Services, me parece la mas factible)
-RIA Services (potente, pero conlleva muchos costos y sta en version beta)
Entonces…que me recomiendan, escucho sugerencias, Muchas Gracias.
Gracias por esta introducción.
Encuentro en RIA un gran problema. Práctiamente la mayoria de libros y tutoriales utilizan el Entity Framework. En nuestra organización utilizamos nHibernate. ¿Puedes darme alguna referencia sobre RIA y nHibernate?
Saludos,
JB
Lo siento, no he hecho ni visto nada al respecto.
Lo único..
https://blogs.msdn.com/b/brada/archive/2009/08/06/business-apps-example-for-silverlight-3-rtm-and-net-ria-services-july-update-part-nhibernate.aspx
Hola Ibon,
gracias por ese enlace. Veo q todavía no hay mucha información por la red sobre los RIA con nHibernate…
Saludos
He visto que ya empiezan a salir los BUGS en la versión final y no parece haber una solución.
¿Cómo puede ser que pasen por alto cosas así?
A mí la verdad no me da mucha confianza…
Este es uno de los BUGs que he visto, y me parece chocante que el que pone el mensaje se queja de que le hestán borrando Posts y manipulando el hilo, y además no hay una solución.
http://forums.silverlight.net/forums/p/191689/442690.aspx
En las aplicaciones web tradicionales las diferentes capas lógicas (lógica de presentación, lógica de