2012-05-24 37 views
9

¿Puede alguien compartir la diferencia real entre WCF Service y ASP.NET Web Api? En cuyo caso tenemos que usar WCF Service y ASP.NET Web Api.WCF Service vs ASP.NET Web Api

+2

posible duplicar: http://stackoverflow.com/questions/9348639/wcf-vs-asp-net-web-api –

Respuesta

11

WCF Web API es la próxima generación del marco de servicios de Microsoft.

WCF Services se diseñaron originalmente con una arquitectura de canal que permite la personalización de los protocolos y transportes utilizados para la comunicación entre sistemas. Si bien esto le da al arquitecto/desarrollador una gran flexibilidad en la construcción de aplicaciones interoperables, tiene el costo de la complejidad. La configuración de WCF nunca ha sido simple (IMO).

El caso de uso más frecuente (IMO) es el uso de servicios WCF para proporcionar soporte a aplicaciones web a través de solicitudes ajax del navegador para obtener datos adicionales. Además, desde el momento en que se introdujo WCF originalmente, se ha vuelto común que las aplicaciones proporcionen una API usando http.

Debido a esto, la nueva WCF Web API es un intento de simplificar la infraestructura del servicio y asumir el protocolo de transporte http.

Si está construyendo una nueva aplicación web, usaría la nueva API Web. Solo vería el uso de los servicios de WCF si tuviera que comunicarme con otro sistema usando algo que no sea http.


WCF Canal Arquitectura

http://msdn.microsoft.com/en-us/library/ms729840.aspx

API Web WCF

http://www.asp.net/web-api

+1

Craig casi golpea el clavo en la cabeza aquí. WebAPI = todo lo que tiene que ver con los servicios de POX/JSON. WCF hace todo lo demás, incluyendo IPC/NetTCP/SOAP/RPC. – leon

0

servicio web

Está basado en SOAP y datos de retorno en forma XML. Solo es compatible con el protocolo HTTP. No es de código abierto, pero puede ser consumido por cualquier cliente que entienda xml. Puede alojarse solo en IIS.

WCF

También se basa en SOAP y datos de retorno en forma XML. Es la evolución del servicio web (ASMX) y es compatible con varios protocolos como TCP, HTTP, HTTPS, Canalizaciones con nombre, MSMQ. El principal problema con WCF es su configuración tediosa y extensa. No es de código abierto, pero puede ser consumido por cualquier cliente que entienda xml. Se puede hospedar con en la aplicación o en IIS o usando el servicio de ventana.

WCF Resto

Para usar WCF como servicio WCF resto tiene que habilitar webHttpBindings. Admite verbos HTTP GET y POST según los atributos [WebGet] y [WebInvoke], respectivamente. Para habilitar otros verbos HTTP, debe realizar alguna configuración en IIS para aceptar la solicitud de ese verbo en particular.svc files Pasar datos a través de parámetros usando un WebGet necesita configuración. La UriTemplate debe especificarse Admite el formato de datos XML, JSON y ATOM.

Web API

Este es el nuevo marco para la construcción de servicios HTTP con forma fácil y sencilla. Web API es de código abierto una plataforma ideal para crear servicios REST-ful sobre .NET Framework. A diferencia del servicio WCF Rest, utiliza todas las características de HTTP (como URI, encabezados de solicitud/respuesta, almacenamiento en memoria caché, control de versiones, varios formatos de contenido) También admite las características MVC como enrutamiento, controladores, resultados de acciones, filtros, carpetas modelo , Contenedor IOC o inyección de dependencia, pruebas unitarias que lo hacen más simple y robusto. Puede alojarse en la aplicación o en IIS. Es una arquitectura liviana y buena para dispositivos que tienen un ancho de banda limitado como teléfonos inteligentes. Las respuestas son formateadas por MediaTypeFormatter de Web API en JSON, XML o cualquier formato que desee agregar como MediaTypeFormatter.

A quién elegir entre WCF o API WEB

Elija WCF cuando se quiere crear un servicio que debería soportar escenarios especiales, tales como una forma de mensajería, colas de mensajes, comunicación dúplex etc. Elija WCF cuando desea crear un servicio que pueda usar canales de transporte rápidos cuando esté disponible, como TCP, Canalizaciones con nombre, o tal vez incluso UDP (en WCF 4.5), y también desea admitir HTTP cuando los demás canales de transporte no estén disponibles. Elija Web API cuando desee crear servicios orientados a recursos a través de HTTP que puedan usar todas las funciones de HTTP (como URI, encabezados de solicitud/respuesta, almacenamiento en memoria caché, control de versiones, varios formatos de contenido). Elija Web API cuando desee exponer su servicio a una amplia gama de clientes, incluidos navegadores, teléfonos móviles, iphone y tabletas.