programacion - ¿Qué elegir: ASP.NET MVC o RESTful WCF?
diferencias entre web forms y mvc (4)
Si ya está utilizando ASP.Net MVC para el resto del sitio web, supongo que también tiene sentido utilizar el mismo marco para las llamadas AJAX.
Con respecto a la cartera de ASP.Net, asumo que estás preocupado por todo el asunto del ciclo de vida de la página. El ciclo de vida de la página solo se ejecuta si usa Views con WebFormViewEngine. El marco proporciona JsonResult para una fácil serialización JSON de los resultados de acción, que elude por completo el ciclo de vida de la página ASP.Net. Clases similares están disponibles para XML, RSS, etc.
Con ASP.NET MVC, es común tener código AJAX (por ejemplo, jQuery) para invocar el servicio web desde el servidor a sin actualizar la página. Es natural hacer que el servicio web sea RESTful. Parece que hay dos formas de hacerlo. En primer lugar, los ASP.NET MVC URI son RESTful, es muy fácil hacer que algún Controlador / Acción actúe como método de servicio web. En segundo lugar, WCF puede ser RESTful desde la versión 3.5.
Entonces, ¿cuáles son los pros y los contras de estas dos formas?
Las solicitudes a ASP.NET MVC pasarán por ASP.NET Pipeline. ¿Esto lo hace más lento que WCF?
Debe diferenciar las llamadas AJAX de las API REST en el sentido de que las llamadas AJAX se realizan en el contexto de su aplicación y puede confiar en el contexto de la aplicación para cosas como sesiones, autenticación, etc. REST API es un conjunto de API que proporciona para el mundo para consumir, ya que puede confiar en su aplicación para cosas como la autenticación, ofrece una complejidad completamente nueva para asegurar las llamadas de sus clientes, etc.
Si solo necesita el JS de su aplicación para hablar con el servidor, el uso de controladores MVC es la solución más sencilla.
Si desea que esas API se separen del código MVC de su sitio web (para fines de implementación, etc.) o si necesita una API REST para que otros la utilicen para llamar a su aplicación: WCF.
En mi blog http://shouldersofgiants.co.uk/Blog/ , he creado una serie que analiza el uso de ASP.Net MVC para proporcionar un servicio web RESTful si eso ayuda.
La ventaja adicional de usar la pila WCF es la posibilidad de exponer todas las interfaces necesarias para CRUD y exploración de datos en unos pocos clics con WCF Data Services / ODATA ( spec , demo ), siempre que tenga su capa de datos implementada utilizando Entity Framework.
Estoy pensando en combinar esas interfaces RAD básicas con una capa adicional de servicios transaccionales más complejos creados con MVC regular. La combinación no parece demasiado elegante, pero en términos de productividad puede ser beneficiosa.