tutorial net example crear como asp apicontroller c# asp.net-mvc-4 asp.net-web-api

net - web api rest c#



ASP.NET WebAPI+Soap (5)

¿WebAPI es compatible con SOAP? Intento escribir un servidor SOAP en MVC4 y aunque puedo hacerlo en WCF, parece que WebAPI lo está reemplazando, pero no veo formas de utilizar SOAP en esto todavía, solo JSON / XML usando una interfaz REST Style.


Debería considerar buscar en ServiceStack que permite que su mismo servicio admita REST + SOAP API, aunque como SOAP solo funciona a través de HTTP POST, tiene algunas restricciones

Agregar referencia ServiceStack

Como alternativa a SOAP, ServiceStack ofrece una mejor alternativa a Add Service Reference de WCF que puede generar una API tipada desde una URL utilizando la función Add ServiceStack Reference incorporada en ServiceStackVS .

Ventajas sobre WCF

  • Simple Utiliza una pequeña plantilla T4 para guardar los tipos de POCO generados. Actualizar tan fácil como volver a ejecutar la plantilla T4
  • Versátiles Clean DTOs funciona en todos los clientes de servicios genéricos JSON, XML, JSV, MsgPack y ProtoBuf
  • Los DTO generados reutilizables no están acoplados a ningún punto final o formato. Los valores predeterminados son parciales y virtuales para una reutilización máxima
  • Los servicios resilentes basados ​​en mensajería ofrecen una serie de ventajas sobre los servicios RPC
  • La generación flexible de DTO es personalizable, el Servidor y los Clientes pueden anular los valores predeterminados incorporados
  • Los metadatos integrados de Rich Services anotados en DTO''s, los servicios internos se excluyen cuando se accede externamente

WebAPI y WCF promueven las firmas del método RPC

Lo interesante es que a pesar de que los métodos WebAPI ApiController han adoptado el mismo enfoque RPC que WCF al usar métodos C # RPC para crear y definir servicios web conversatorios, todavía no pueden soportar su propio estándar SOAP creado por la misma compañía.

ServiceStack admite extremos REST, SOAP, HTML y MQ con el mismo servicio

Este es un testimonio del diseño basado en mensajes de ServiceStack que ofrece numerosas ventajas a pesar de ser capaz de admitir múltiples endpoints y formatos incluyendo REST, SOAP y MQ endpoints, así como generar sitios web HTML del lado del cliente o del lado del servidor si necesito. Aquí hay un ejemplo de un editor de base de datos de Northwind que, debido a que fue creado con ServiceStack, habilita automáticamente una API REST con tipo que se puede llamar con ricos clientes nativos de escritorio, aplicaciones móviles y aplicaciones de una sola página.

SOAP sigue siendo una opción pobre para servicios remotos

Aunque a pesar de admitir SOAP por razones de interoperabilidad, accesibilidad y compatibilidad con versiones anteriores, no lo recomendamos para construir plataformas de servicios web, ya que es innecesariamente complejo, frágil, lento y detallado, y hay alternativas mucho mejores para usar. Explico más detalladamente en mi entrevista en InfoQ .


Es posible que desee ver ServiceStack que debe admitir SOAP y REST en una interfaz sin problemas. Afirma ser una mejor coincidencia que WebAPI para servicios web .

No puedo afirmar que sé todo sobre la diferencia, pero los problemas que afirman son inherentes al enfoque de API web que puedo decir de la experiencia son reales: la evolución de la API (inevitable en un proyecto real) es bastante complicada en la API web. Y, por supuesto, la API web no es compatible con SOAP.


Para citar a Scott Guthrie: Los últimos años han visto el aumento de API web: servicios expuestos a través de HTTP simple en lugar de a través de un contrato de servicio más formal (como SOAP o WS *).

Entonces yo diría que no.


WEB API es la respuesta de Microsoft a apis basadas en REST. Si quieres SOAP, ve con WCF.


WebApi no es compatible con SOAP, de hecho, de hecho. Pero es un marco bastante flexible y podría "adaptarlo" para manejar SOAP: nada le impide analizar manualmente los mensajes SOAP recibidos (después de todo son XML simples) y generar manualmente las respuestas como cadenas XML, y luego enviarlas con el aproproate content-type header (puedes incluso escribir tu propio formateador de contenido para esto).

Dependiendo de sus necesidades y su base de código existente, puede valer la pena el esfuerzo o puede utilizar una tecnología más inteligente como WCF o el marco ServiceStack ya mencionado.