2012-03-19 28 views
89

¿Cuáles son los pros y los contras de usar cada tecnología?WCF vs ASP .Net Web API

WCF Web Api ahora se fusionó en Asp.net Asp.net web api ahora es compatible con alojamiento propio.

Todavía me imagino que si quiero exponer múltiples esquemas de protocolo para la misma operación, aún me inclinaría hacia WCF o ¿puede el punto de extremo Mvc hacer esto también?

¿La nueva Asp.Net web api expone Wsdl? Si no, ¿cómo podría el cliente descubrir qué operación está disponible para ellos?

Podría decirse que la mejor característica de Mvc es el encuadernador. ¿Cuán robusto es el equivalente de WCF?

Entonces, ¿alguien puede decirme qué ventaja trae la API web de Asp.net a la mesa? WCF parece abrumadoramente la opción más poderosa/escalable, imo. Casi lo único que Mvc Web Api tiene sobre el modelo WCF es probablemente la facilidad de desarrollo, pero eso significa squat si termina siendo una seria limitación de diseño en el futuro.

+15

El título de esta pregunta me parece un poco engañoso. El título es "MVC 4 vs Wcf Web Api", pero la pregunta parece tratar más con WCF vs ASP .Net Web API. Del título pensé que lo que se estaba comparando era el marco MVC 4 estándar (Controladores, Modelos, Vistas) versus el marco ASP .NET Web API. ¿Alguien más encuentra este título engañoso? – BruceHill

Respuesta

72

En primer lugar, le sugiero que lea mi post sobre el tema: http://blogs.microsoft.co.il/blogs/idof/archive/2012/03/05/wcf-or-asp-net-web-apis-my-two-cents-on-the-subject.aspx

cuanto a su pregunta WSDL - ya que el WebAPI no utiliza SOAP, que no requiere un WSDL, y no exporta una. Puede usar Hypermedia para devolver recursos con una lista de posibles URL de actividad (piénselo como un recurso de autodescripción)

+6

Es una muy buena redacción. El mejor que he visto en mi vida. Pero ahora estoy más confundido que nunca. WebApi agrega mucho, pero la incapacidad de exponer otros puntos finales parece muy restrictiva. Si tuvieras un cliente que puede usar jabón, ahora se verán forzados a construir la acción y analizar el resultado a mano cuando soap haya generado todo el contexto para ellos. También los bloqueará de la función Soap más avanzada, como la sesión confiable y la transacción Ácida ... suspiro. – Alwyn

+2

@Alwyn: creo que todos los hechos que mencionó son ciertos y, por lo tanto, no deberían confundirlo sino ayudarlo a tomar una decisión: la API web tiene sus propias ventajas, pero si su servicio debe estar expuesto desde múltiples puntos finales, incluidos otros protocolos , o si tiene una gran necesidad de la característica de generación automática del cliente o funciones avanzadas de soap - esto podría ser una consideración por qué preferir WCF sobre la API web – BornToCode

8

La API web WCF se centra principalmente en implementaciones REST. Si está configurando una implementación de REST, los bits estándar de WCF son un poco molestos en la parte posterior. Si está configurando servicios RESTful, encontrará que la API web de WCF es una experiencia mucho más agradable. Si está configurando servicios SOAP, la API web de WCF no es su mejor amigo, y es mejor que use WCF para sus servicios.

+2

Sí, las configuraciones son un problema, pero es un costo de configuración única. Una vez que lo haya hecho, puede copiar y pegar prácticamente el comportamiento/punto final a otro servicio. La mayoría de las veces lo haces etiquetando las nuevas operaciones con WebGet. Por otro lado, si alguna vez tienes un cliente que quiere usar Soap + Wsdl, todo es solo un cambio de configuración en comparación con el código + implementar + QA + el resto. Entonces, ¿cómo es Mvc Web Api mejor? – Alwyn

+1

Si ya se siente cómodo con WCF, puede continuar por ese camino. Hay, además de lo que mencioné, algunas mejoras internas en REST en la API web de WCF (no tengo la lista en frente de mí), pero cualquiera puede funcionar y no pasaría semanas refactorizando si tiene toneladas de servicios de trabajo, esp. ya que hay un poco de cambio de paradigma en el pensamiento. Para trabajos futuros, consideraría la API web de WCF. Pero he estado con WCF Web API durante bastante tiempo, por lo que puede ser parcial. –

15

La elección depende de lo que queremos hacer.

  1. ASP.NET Web API es un marco para crear servicios que no están basados ​​en SOAP a través de HTTP, por lo que no hay más protocolos de transporte disponibles utilizando este marco. Fundación Comunicación
  2. WCF/Windows es un marco para el intercambio de mensajes basados ​​en SOAP - aquí usamos una gran cantidad de protocolos de transporte: HTTP, TCP, canalizaciones con nombre, MSMQ, etc ...

no estoy seguro sobre cuál tiene un mejor rendimiento con respecto a la cantidad de datos, tal vez WCF ya que podemos usar protocolos bajos. Cualquier comentario es apreciado.

+2

Sin ofender, pero HTTP es solo un ** protocolo de capa de aplicación **. No tiene ninguna restricción inherente sobre qué ** protocolos de la capa de transporte se pueden usar. – smwikipedia

0

Use WCF para sitios intranet/B2B n API web para B2C/C2C/sitios de Internet ... SOAP/XML sigue siendo el estándar para la comunicación dentro de las empresas n ¡¡no se va a desaparecer !!!