2009-10-29 39 views
15

estoy reescribiendo una aplicación LOB cuya arquitectura es la siguiente:Servicios RIA frente a los servicios WCF

Silverlight & & Windows Mobile -> WCF -> Entity Framework -> Base de datos.

Se suponía que la aplicación móvil podía hacer ciertas cosas como la aplicación Silverlight. ¿Qué beneficios obtendré del uso de los Servicios de RIA aquí? ¿Cuál es la ventaja y la desventaja de RIA Services sobre WCF?

Respuesta

13

.NET RIA Services se creó para Silverlight que se ejecuta en el navegador. Silverlight está ejecutando una versión especial de .NET Framework y en una aplicación de N-nivel Silverlight no puede compartir ensamblajes con el lado del servidor. Al emplear algunos generación de código inteligente .NET RIA Services hace que esta brecha sea casi invisible para el desarrollador. Las clases similares a las clases de dominio son generadas por código en el lado del cliente, y las formas de mover objetos hacia adelante y hacia atrás entre el cliente y el servidor también están disponibles.

Es probable que pueda llamar a un .NET RIA Service desde Windows Mobile, pero no creo que sea particularmente fácil y actualmente puede que tenga que realizar ingeniería inversa de lo que se envía por cable (se usa JSON) WCF por el otro tiene un alcance mucho más amplio, pero no admite el desarrollo de Silverlight de la misma manera que lo hace .NET RIA Services.

Si está escribiendo una aplicación de nivel N de Silverlight, los servicios de .NET RIA son muy potentes. Sin embargo, si Silverlight es solo uno de varios clientes, WCF es probablemente una mejor opción.

Tenga en cuenta que los servicios de .NET RIA no se han lanzado aún, pero hay una vista previa disponible para su descarga.

+0

¿funcionaría bien una arquitectura como esta? 1) Silverlight -> Servicios RIA -> WCF -> Entity Framework 2) aplicación móvil -> WCF -> Entity Framework –

+1

¿Podría alguien con permisos de edición cambiar esta respuesta para reflejar el estado actual de RIA (ahora está disponible) . El asunto delicado, lo sé, pero lo mejor de StackOverflow es poder leer las respuestas antiguas que todavía son relevantes :) –

0

RIA Services se basa en WCF. Con el lanzamiento de PDC, esto será mucho más evidente. RIA Services simplifica el modelo de programación del lado del cliente para que coincida estrechamente con su DomainService del lado del servidor y las entidades.

0

Independientemente de la respuesta:

Servicios RIA se construye en la parte superior de la WCF. Con el lanzamiento de PDC, esto será mucho más evidente. RIA Services simplifica la programación del lado del cliente modelo para que coincida muy de cerca con su servidor DomainService y entidades.

Para mí (y supongo que para el autor del tema) no está claro qué servicios de RIA proporcionan además del acceso al DomainService (que es lo mismo proporcionado por WCF)?

Gracias.

-6

.NET RIA Services había sido nombrado WCF RIA Services en PDC, que se celebró en noviembre de 2009. Dado que se basa en WCF, de ahí el nombre WCF RIA Services.

Deberá utilizar WCF RIA Services para compilar la aplicación N tier que involucra la base de datos (o cualquier información que deba transportarse a lo largo de los niveles).

+2

No ** necesita ** para usar los Servicios de RIA de WCF para construir una aplicación de N niveles. La antigua WCF funciona, y también existe la opción de Servicios de datos WCF. Elegir entre ellos es algo más difícil. –

+1

-1; es totalmente falso que * necesite * usar WCF RIA. –

+1

Secundado: RIA es UNA forma de crear una aplicación de nivel N con Silverlight. – jlo

3

WCF RIA Services presenta varias soluciones para los desafíos que se encuentran al utilizar WCF de Silverlight. Por ejemplo, la carga asincrónica de consultas usando el EntityQuery<T> es mucho más fácil que la solución Begin.End ofrecida por WCF. Además, RIA proporciona un seguimiento de cambios integrado de su cliente que permite enviar o rechazar múltiples cambios como un conjunto de cambios. RIA combinará todos estos cambios en una sola solicitud, pero desde su Servicio de dominio se comporta como si fuera una llamada individual. Como desarrollador de WCF desde hace mucho tiempo, puedo decirte que eso es muy fácil.

0

Hasta que no haya un lanzamiento formal de WCF RIA Services, no creo que haya una respuesta definitiva a esta pregunta. A partir de la versión Beta actual (para VS 2008, SL 3), RIA Services no oculta la naturaleza asincrónica de las llamadas de servicio; aún necesita proporcionar un método de devolución de llamada. Además, RIA Services actualmente no admite clases definidas por el usuario (o colecciones de clases definidas por el usuario) como parámetros o valores devueltos en llamadas de servicio RIA. También tengo problemas para proporcionar clases de entidades no editables a través de los Servicios de RIA. (El error dice que la colección de entidades no es editable. Sí, eso es realmente lo que quiero ...)

En este punto, tengo que retroceder y echar un vistazo a la simple tarea anterior de WCF. No es tan simple, dado el tamaño de la aplicación que estamos desarrollando, pero parece ser la solución viable hasta que MS resuelva algunos de los problemas actuales con los Servicios de RIA.

1

Los servicios de Ria se crean solo para ser utilizados con Silverlight. Son sustancialmente un "paquete" estándar listo para ser utilizado por Silverlight. La ventaja es que usted tiene una gran cantidad de servicios sin necesidad de escribir código es decir .:

  1. soporte para las anotaciones de datos
  2. Apoyo para iniciar sesión proveedor de pertenencia y
  3. Soporte para transferir al lado del servidor Silverlight generado excepciones. Hay una dificultad en Silverlight que dificulta la transferencia normal de excepción a través de FaultContract. El punto es que el navegador no puede manejar todos los códigos de error. Los servicios Ria resuelven esto con un truco

Todo lo que hace Ria se puede hacer con WCF y con otro software disponible y, en particular, con los servicios de datos Wcf. Por ejemplo, para anotaciones de datos encontré this library que hacen un mejor trabajo que los servicios de Ria, el soporte para membresía solo requiere activar el extremo de membresía ya existente de un servicio WCF, y finalmente el problema de excepción se resuelve fácilmente escribiendo un comportamiento WCF. El código está disponible aquí: http: //www.silverlightshow.net/Storage/10Tips.zip El punto es que con Ria Service tienes todo esto con un clic del mouse. Por otro lado, los servicios de Ria son realmente difíciles de personalizar ... así que si no te gusta la solución estándar que ofrecen, simplemente no puedes usarlos

+0

Puede usar los servicios de RIA como servicios WCF simples, y también como extremos de OData y JSON – SteveC

Cuestiones relacionadas