svcutil servicio example ejemplo consumir consume c# wcf asp.net-web-api proxy-classes

c# - example - Agregar una referencia de servicio al servicio API Web de ASP.NET



wcf c# ejemplo (3)

No directamente, pero a partir de las pocas muestras que he visto, el uso de Web Api implica configurar un ServiceContract. Parece que si agrega una segunda interfaz de contrato de servicio con los atributos normales de OperationContract y DataContract según sea necesario, puede crear un punto final con un enlace WCF estándar de su elección y su punto final MEX correspondiente. El servicio implementaría ambas interfaces para que la referencia de servicio agregada pueda obtener un documento WSDL del punto final estándar de WCF.

Tengo una solución MVC que aloja algunas rutas para servicios de API web. En algunas situaciones, los llamaré desde JavaScript con un simple HTTP get. En otros, quiero llamarlos desde algún código .NET, quizás otra aplicación MVC.

¿Hay una manera de agregar una referencia de servicio a estos puntos finales de la API web y hacer que las herramientas creen los tipos de cliente proxy y CLR como lo haría con un servicio WCF típico? Sé que no hay SOAP involucrado aquí, pero leí que es posible, pero no cómo.


No tenemos ningún mecanismo estándar para hacer eso. REST se trata de crear sistemas que permitan a los clientes evolucionar independientemente del servidor. HTTP define una interfaz uniforme de GET, PUT, POST, DELETE, etc., por lo que no es necesaria una descripción del método. Por ambas razones, no hay un REST WSDL equivalente, o debería decir que no hay un equivalente que realmente haya cobrado impulso entre la comunidad REST (es decir, hay WADL).

El punto de acoplamiento en los servicios REST está realmente alrededor del tipo de medio / formato del cuerpo. Para eso apoyamos un mecanismo fuertemente tipado. En Web API, enviamos un HttpClient (HttpClient en Nuget) que le permite tomar un tipo CLR y transformarlo en alguna representación. Fuera de la caja soporta XML y JSON.

Por lo tanto, puede crear un tipo CLR y compartirlo con los clientes, y luego usar HttpClient en el cliente.

Para crear el tipo en sí también hay varias opciones.

  1. Crealo a mano
  2. Use la herramienta "Pegar como XML" y use la función de página de ayuda automática de la API de la web para copiar / pegar.

No es servicio REST. El servicio REST no expone los metadatos para crear un proxy por referencia del servicio (excepto los servicios de datos WCF que tienen alguna forma especial de metadatos). Utilice la clase HttpClient la API web para llamar al servicio.