2012-07-25 16 views
12

¿Debería aprovechar un servicio ASMX o la API web ASP.NET para mis dos API simples?¿Debería ser un WebAPI o asmx

Quiero crear dos API simples en mi proyecto ASP.NET MVC. Se aceptan 3 parámetros (currentUserID, DataType, ActionName). Los devuelve y una cadena XML de los datos que han solicitado. La API es consumida por el código JavaScript del lado del cliente. La otra API recibe una cadena XML y la usa en el lado del servidor para realizar acciones en la base de datos.

+2

ASMX = jabón - no es fácil "consumibles" por todo el mundo; WCF = SOAP pero con toneladas de mecanismos de transporte diferentes (mucho más que * solo * HTTP); WebAPI = "WCF RESTful" en ropa nueva, estilo REST, cualquiera con una pila HTTP puede consumir datos, pero es ** HTTP solo ** (no hay otros transportes disponibles). Así que elige según tus necesidades. –

+0

Bueno, parece que WebAPI es el camino a seguir. Una pregunta más, ¿cómo se implementa un Método WebAPI que toma múltiples argumentos/Parámetros en el método (para el escenario 1 descrito en la pregunta). Intenté simplemente tener un método con los parámetros múltiples, pero nunca puedo presionarlo en el navegador cuando lo pruebo. Estoy reuniendo tiene que ver con el enrutamiento del mapa? ¿Consejo? – Matt

+0

posible duplicado de [asmx a WCF o API web] (http://stackoverflow.com/questions/10172506/asmx-to-wcf-or-web-api) – Aliostad

Respuesta

20

Me acaba de responder una pregunta relacionada:

What is the future of ASP.NET MVC framework after releasing the asp.net Web API

Básicamente, los marcos proporcionados por Microsoft para desarrollar servicios Web son:

  • ASMX. Servicios XML basados ​​en SOAP.

  • WCF. Servicios web basados ​​en SOAP. Estos servicios fueron la evolución de los servicios ASMX tradicionales y básicamente se enfocaron en separar el servicio del protocolo de transporte. Es por eso que puede exponer el mismo servicio utilizando varios puntos finales y, por lo tanto, varios protocolos (TCP, HTTP, Canalizaciones con nombre, MSMQ, HTTPS). Esta flexibilidad vino con el problema de configuración. Una de las principales quejas de la comunidad sobre el WCF es la configuración tediosa y extensa

  • WEB API. Basado en HTTP no en SOAP. Esta nueva API es un nuevo marco para crear servicios. La principal diferencia con los otros dos predecesores, es el hecho de que está basado en HTTP y no en SOAP, por lo tanto, se puede utilizar varias características HTTP como:

    • Contiene encabezados de los mensajes que son muy significativos y descriptivos - cabeceras que sugerir el tipo de contenido del cuerpo del mensaje, encabezados que explican cómo almacenar información en caché, cómo protegerla, etc.
    • uso de verbos para definir las acciones (POST, PUT, DELETE ...)
    • contiene un cuerpo que se puede usar para enviar cualquier tipo de contenido
    • Utiliza URI para identificar rutas de información (recursos) y acciones

    WEB API se centra en la escritura de servicios para exponerlos a través de HTTP (solo en HTTP en este momento). Si desea exponer su servicio usando otro protocolo, entonces debería considerar usar WCF.

    Web API se basa en MVC (si desea conocer las razones por las que está basado en MVC, que son simples)

    Otro de los objetivos de las API Web WCF fue incorporar conceptos conocidos que podrían ayudar a los desarrolladores para superar algunos de los inconvenientes que enfrentaron con WCF, como las configuraciones enormes, el uso excesivo de atributos y la infraestructura de WCF que no admitía las pruebas.Por lo tanto, las API web utilizaban IoC, habilitaban la convención sobre configuración y trataban de ofrecer un entorno de configuración más simple.

    La infraestructura de ASP.NET MVC con su elegante manejo de solicitudes y respuestas HTTP, y su compatibilidad con controladores fáciles de crear, parecía ser la forma adecuada de crear este nuevo tipo de servicios.

tomar los siguientes puntos en cuenta para elegir entre WCF o API WEB

  • Si su intención es crear servicios que soportan escenarios especiales - uno de mensajería manera, colas de mensajes, dúplex comunicación etc., entonces es mejor que elija WCF
  • Si desea crear servicios que puedan usar canales de transporte rápidos cuando estén disponibles, como TCP, Canalizaciones con nombre, o tal vez incluso UDP (en WCF 4.5), y también w Para soportar HTTP cuando el resto de los transportes no están disponibles, entonces está mejor con WCF y usando ambos enlaces basados ​​en SOAP y el enlace WebHttp.
  • Si desea crear servicios orientados a recursos a través de HTTP que pueden usar las características completas de HTTP, defina el control de caché para navegadores, control de versiones y concurrencia mediante ETags, pase varios tipos de contenido como imágenes, documentos, páginas HTML, etc. utilice plantillas URI para incluir URI de tareas en sus respuestas, entonces las nuevas API web son la mejor opción para usted.
  • Si desea crear un servicio multiobjetivo que se pueda utilizar como servicio orientado a recursos a través de HTTP y como servicio SOAP de estilo RPC a través de TCP, hable primero, así que le daré algunos consejos.

Para una comparación más detallada:

http://www.codeproject.com/Articles/341414/WCF-or-ASP-NET-Web-APIs-My-two-cents-on-the-subjec

+1

Dos puntos para agregar: (1) configuración de WCF en. NET 4 es ** mucho más simple ** de lo que era antes, hasta el punto de que puede tener un servicio SOAP en funcionamiento básicamente con ** sin configuración ** en absoluto (como ASMX). Y (2) WCF también tiene un enlace RESTful, el 'webHttpBinding', que hace posible crear servicios híbridos SOAP/REST con una base de código y configuración adecuada. –

+0

Sí, lo sé. Aunque prefiero WEB API. Solo usaría WCF para situaciones específicas, por ejemplo para aumentar el rendimiento exponiendo mi enlace a través de TCP, el resto de las situaciones de la API WEB es mucho mejor. Dado que ambos equipos unieron fuerzas WCF + ADO.Net Data Services, creo que el enfoque es 1) seguir manteniendo WCF 2) La mayoría de las nuevas características se implementarán en la API WEB – Jupaol

+0

Además, ¿de qué sirve usar los servicios WCF REST (exponiéndolos? via HTTP) si puede lograr el mismo comportamiento usando la API WEB en un MVC orientado? – Jupaol

0

Si es posible, usaría un controlador Web Api en mvc4. Puede devolver una lista o modelo genérico de inventario y automáticamente dará salida a los datos al formato solicitado, como xml o json. Es bastante asombroso.

0

Parece que realmente estás haciendo mucho con Views, así que creo que Web API sería una solución más concisa en este momento.

Cuestiones relacionadas