¡Acceso ilimitado 24/7 a todos nuestros libros y vídeos! Descubra la Biblioteca Online ENI. Pulse aquí
¡Acceso ilimitado 24/7 a todos nuestros libros y vídeos! Descubra la Biblioteca Online ENI. Pulse aquí
  1. Libros
  2. ASP.NET con C# en Visual Studio 2017
  3. Los servicios web WCF y REST
Extrait - ASP.NET con C# en Visual Studio 2017 Diseño y desarrollo de aplicaciones Web
Extractos del libro
ASP.NET con C# en Visual Studio 2017 Diseño y desarrollo de aplicaciones Web Volver a la página de compra del libro

Los servicios web WCF y REST

Los servicios web WCF

Un equipo que ejecute el servidor web IIS y esté equipado con el framework ASP.NET no tiene la única vocación de albergar sitios web. Es, también, capaz de ofrecer servicios de aplicación distribuidos a otros equipos.

Entre los protocolos disponibles, SOAP se impone a la hora de conectar entornos heterogéneos. El uso intensivo del formato XML ha contribuido enormemente, y es uno de los puntos fuertes de la tecnología .NET, los servicios web SOAP implementados con ASP.NET son una referencia.

Dicho esto, Microsoft apuesta con WCF (Windows Communication Foundation) por una unificación de sus middlewares de comunicación. El método consiste en desarrollar la interoperabilidad aumentando el número de servicios de alto nivel integrados en dicha infraestructura de comunicaciones. De este modo, .NET Remoting es capaz de "modular" SOAP, y los servicios web WFC integran de forma estándar las extensiones WS.

1. El dialecto común SOAP

Los servicios web (SOAP) utilizan un protocolo Internet para asegurar la comunicación con sus aplicaciones cliente. A menudo, se trata del protocolo HTTP, de ahí la denominación servicios web.

Es posible aplicar otros protocolos tales como SNMP o FTP.

El cliente utiliza una interfaz de programación llamada proxy. Ésta incluye las funciones de extensión expuestas por el servicio web. La tecnología SOAP prevé la definición de esta interfaz con un formato independiente de los lenguajes de programación, WSDL (Web Service Description Language). Es decir, el contrato WSDL de un servicio se describe, por completo, con XML.

El proxy se encarga, para la aplicación cliente, de codificar las llamadas de funciones en consultas con formato SOAP, las cuales se transmiten por la red. A la vuelta, el proxy decodifica las respuestas SOAP recibidas del servicio web. De este modo, la programación del cliente no se realiza jamás directamente con referencia a la red, lo que facilita su evolución.

images/ch8fig1.png

El documento WSDL se utiliza solamente para generar el proxy. La operación se realiza por línea de comandos -mediante la herramienta svcutil.exe- o mediante el asistente gráfico Agregar referencia de servicio.

El siguiente esquema detalla la cronología de intercambios entre el cliente y el servicio web.

images/ch8fig2.png

En primer lugar...

Los servicios web REST

Los servicios web SOAP (y WS) son los nuevos pilares de la programación distribuida. Intervienen entre las capas de negocio de los servidores de aplicaciones. Pero su programación encaja bastante mal con las interfaces gráficas que requieren reactividad cuando evoluciona una interfaz funcional. Dicho de otro modo, el hecho de agregar una columna no debería producir toda una retahíla de operaciones de actualización del componente distribuido, de sus intefaces, de los archivos de configuración…

WCF tiene en cuenta los servicios web REST, basados en URI (fragmentos de URL) para controlar su ejecución.

Un servicio web REST presenta una implementación similar a los demás servicio, con algunas particularidades:

binding

El servicio web REST utiliza un binding (dialecto) de tipo webHttpBinding.


<endpoint address="" binding="basicHttpBinding" contract="IService"> 
          <identity>  
            <dns value="localhost" /> 
          </identity>  
</endpoint>
 

WebGet

El atributo WebGet indica que se ha escogido la URI para invocar un método de servicio:


[OperationContract] 
[WebGet(UriTemplate="personas/{idPersona}", 
ResponseFormat=WebMessageFormat.Json)] 
    Persona GetPersonaByID(string idPersona);
 

Formato de salida

El formato de salida es, habitualmente, JSON (JavaScript Object Notation), más flexible de analizar que XML para código ejecutado del lado...