2008-12-08 21 views
17

Con ASP.NET MVC, es común tener código AJAX (por ejemplo, jQuery) para invocar el servicio web desde el servidor 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.¿Qué elegir: ASP.NET MVC o RESTful WCF?

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?

+2

WCF pasa por la tubería ASP.NET también. –

+1

No, no es así. –

Respuesta

12

Si ya está utilizando ASP.Net MVC para el resto del sitio web, supongo que tiene sentido utilizar el mismo marco para las llamadas AJAX también.

Con respecto a la interconexión ASP.Net, asumo que está 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, lo que evita por completo el ciclo de vida de la página ASP.Net. Hay clases similares disponibles para XML, RSS, etc.

3

Tiene que diferenciar las llamadas AJAX de las API REST en un sentido 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 la sesión. autenticación, etc. API REST, sin embargo, es un conjunto de API que proporciona para que el mundo consuma, ya que puede confiar en su aplicación para cosas como la autenticación, ofrece una complejidad completamente nueva para asegurar llamadas de sus clientes, etc.

If solo necesita el JS de su aplicación para hablar con el servidor y luego usar los controladores MVC es la solución más sencilla.

Si desea esas API separadas del código MVC de su sitio web (para fines de implementación, etc.) o si necesita una API REST para que otras utilicen su aplicación - WCF.

0

ventaja adicional de usar pila WCF es la posibilidad de exponer todas las interfaces necesarias para CRUD y exploración de datos en cuestión de unos clics de ratón utilizando WCF Data Services/ODATA (spec, demo), siempre que tenga su capa de datos implementada Marco de la entidad.

Estoy pensando en combinar esas interfaces RAD básicas con una capa adicional de servicios transaccionales más complejos creados utilizando MVC regular. La combinación no parece demasiado elegante, pero en términos de productividad puede ser beneficiosa.