En un post anterior comentaba cómo una de las novedades de la última versión de RIA Services es que se integra dentro de la familia WCF. Ahora toca comprobar cómo ha quedado.
Para poder comprobarlo, lo que he hecho es hacer un ejemplo sencillo del mismo modo que lo hacía con las versiones anteriores. En este post podéis ver los principales pasos a seguir.
Sin hacer ningún paso más de los que hacíamos en las versiones anteriores, ya tenemos la comunicación WCF funcionando. La comunicación es HTTP, usando protocolo binario.
Por lo tanto, al menos de momento, la integración de RIA Services en la familia WCF no ha supuesto una mayor complejidad en este tipo de aplicaciones.
Al crear la aplicación, el DomainService crea un servicio WCF implícito, que el cliente es capaz de instanciar y usar para realizar las peticiones. La estructura del servicio es:
http://[hostname]/[namespacename]-[classname].svc
Si podemos en el navegador la URL de nuestro servicio, veremos que éste está disponible…
En la relación entre la aplicación Silverlight y el DomainService no es necesario hacer nada más.
En el servidor se van creando los servicios que consideremos y en el cliente Silverlight los podemos ir usando sin ningún trabajo extra, ya que los proxys se crean de manera automática y transparente, tal y como se hacía en la versiones anteriores. (si os fijáis en los ficheros web.config no veréis “nada” parecido a lo que veis en los servicios WCF tradicionales)
Por lo tanto, al ser un servicio WCF también lo podemos instanciar desde cualquier otra aplicación como si de un servicio “normal” se tratara. Por ejemplo, desde una aplicación WinForm podéis hacer:
Si os fijáis cómo queda el fichero de configuración de la aplicación WinForm, veréis que queda exactamente igual como quedaría si el servicio WCF fuese un servicio creado directamente.
Por ejemplo, en la sección cliente podéis ver los dos endpoints que se crean por defecto:
<client>
<endpoint address="http://localhost:30335/Services/BusinessApp-Web-EmpService.svc/soap"
binding="basicHttpBinding" bindingConfiguration="BasicHttpBinding_EmpServiceDomainService"
contract="ServiceReference1.EmpServiceDomainService" name="BasicHttpBinding_EmpServiceDomainService" />
<endpoint address="http://localhost:30335/ServicesBusinessApp-Web-EmpService.svc/binary"
binding="customBinding" bindingConfiguration="BinaryHttpBinding_EmpServiceDomainService"
contract="ServiceReference1.EmpServiceDomainService" name="BinaryHttpBinding_EmpServiceDomainService" />
</client>
Como veis, la integración de RIA Services en la familia WCF no ha supuesto una mayor complejidad en este tipo de aplicaciones….pero si será un beneficio, ya que nos permitirá beneficiarnos de algunas de las características de WCF.
gracias, siga así con estos post !!!
Muy bueno el post!!! quedo a la espera del proximo, que recomendas JSON o XML?
Como regla general yo prefiero JSON. Me parece más fácil de manejar y más ligero.
he estado usando RIA services en mi aplicacion y he notado que el tiempo de respuesta es mucho mayor que usar simplemente WCF sin mas ni menos, esto que mencionas hacer mejor el performance ?? o seguira igual ??
Hola,
RIA Services es WCF, por lo que el rendimiento debería ser igual.
Eso sí, con RIA Services el formato que se usa por defecto es binario, que es el más rápido.
Un saludo,