¿Debo usar tanto la API web de WCF como la ASP.NET?

7

Ya tenemos una API WCF con basichttpbinding. Algunas de las llamadas tienen objetos complejos tanto en la respuesta como en la solicitud.

Necesitamos agregar habilidades REST a la API. al principio intenté agregar un punto final webHttp, pero obtuve

At most one body parameter can be serialized without wrapper elements

Si lo hice Envuelto, no fue tan puro como necesito que sea.

Tengo que leer this , y this ( que dice "ASP.NET Web API es la nueva forma de crear un servicio RESTful en .NET").

Entonces, mi pregunta es, ¿debo hacer 2 API (2 proyectos diferentes)? ¿Uno para SOAP con WCF y otro para RESTful con ASP.NET Web API? ¿Hay algo incorrecto en términos arquitectónicos con este enfoque?

    
pregunta Mithir 27.08.2012 - 13:15

3 respuestas

6

Me hice la misma pregunta hasta que encontré esta API web de WCF y ASP.NET página de comparación en MSDN (con mi propio énfasis a continuación):

  

Use WCF para crear servicios web seguros y confiables que sean accesibles a través de un   Variedad de transportes. Utilice la API web de ASP.NET para crear basada en HTTP   Servicios accesibles desde una amplia variedad de clientes. Utilizar   API web de ASP.NET si está creando y diseñando un nuevo estilo REST   servicios. Aunque WCF proporciona algún soporte para escribir estilo REST   servicios, el soporte para REST en ASP.NET Web API es más completo y   todas las mejoras futuras de la función REST se realizarán en la API web de ASP.NET.   Si tiene un servicio WCF existente y desea exponer   Los puntos finales REST, usan WCF y WebHttpBinding.

OMI, tener dos API (dos proyectos) no es un buen enfoque: tendrá problemas de mantenimiento y puede confundir o molestar a los consumidores / clientes de su servicio.

Yo diría que depende de los requisitos de su proyecto y las necesidades de los clientes. Si SOAP es una necesidad, vaya con la respuesta de @ Smokefoot, use WCF y exponga los puntos finales SOAP y REST. Si ningún cliente desea usar más SOAP y desea REST, detenga el desarrollo en la versión WCF (servicio web v1) y vaya a ASP.NET Web API (servicio web v2)

    
respondido por el Gan 18.12.2012 - 12:11
7

Esto no es realmente una respuesta directa a tu pregunta, sino una alternativa para que puedas explorar.

Además de mi otra respuesta, también puede consultar otro marco de servicios web .NET denominado ServiceStack . Algunos buenos puntos al respecto:

Menciones notables que comparan ServiceStack y ASP.NET Web API:

Si desea obtener más información sobre ServiceStack, asegúrese de visitar su sitio oficial , con los códigos y la documentación en GitHub , y una presentación en slideshare .

    
respondido por el Gan 27.12.2012 - 16:07
2

La nueva API web incluida en el nuevo ASP.NET MVC es buena para agregar servicios de descanso a las páginas para habilitar algunas funcionalidades de AJAX. Es bueno si solo quieres tener una API pequeña o algo así, pero solo descansa.

En el momento en que implementas REST y SOAP como una API más grande, siempre preferiría usar una aplicación WCF. Creo que es mejor mantener este enfoque y tiene todos los servicios web ubicados en un proyecto central.

    
respondido por el Smokefoot 27.08.2012 - 13:25

Lea otras preguntas en las etiquetas