2010-03-27 18 views
19

Veo que MVC 2 ahora es compatible con [HttpPut] y [HttpDelete], así como [HttpGet] y [HttpPost], lo que permite hacer un servicio web RESTful completo utilizándolo.¿Por qué usar ASP.NET MVC 2 para servicios REST? ¿Por qué no WCF?

He estado usando el kit de herramientas REST para WCF por un tiempo y creo que es bastante poderoso, pero me gustaría saber qué ventajas (si las hay) usando el enfoque MVC 2.

Los enlaces, las historias de guerra, o incluso los oídos puros son bienvenidos.

+0

Relacionados: http://stackoverflow.com/questions/3401943/what-can-wcf-webhttp-do-that-asp-net-mvc-cannot –

Respuesta

15

Estoy bastante seguro de que ASP.NET MVC ha sido compatible con todos los verbos HTTP desde el principio. Al menos el HttpVerb Enumeration los ha tenido desde el principio. Lo único nuevo en V2 es que son atributos.

// V1 
[AcceptVerbs(HttpVerbs.Delete)] 

// V2 
[HttpDelete] 

Seis de uno, media docena de los otros. En cuanto a si desea exponer la funcionalidad a través de WCF o ASP.NET MVC, se reduciría a cómo piense en su aplicación.

  • Si se piensa en ello como una aplicación de cliente pesado que sólo pasa a ser escrito en JavaScript y llama a los servicios de descanso para datos (continuación formatea lado del cliente), entonces WCF se sentiría como una más correcta solución (aunque podría hacerlo usando cualquiera de ellos).

  • Sin embargo, si usted piensa en su aplicación como una aplicación de servidor que devuelve contenido de una forma u otra para el consumo, a continuación, utilizando una API REST para sus acciones tendría más sentido. Sus acciones devolverían el contenido totalmente formateado que se mostraría en el navegador sin necesidad de un procesamiento posterior. Usted podría devolver el contenido formateado (HTML u otro) de un servicio web, pero que de alguna manera se sentiría mal.

Al menos ese tipo de distinción tiene sentido en mi cabeza =). También puede estar interesado en la publicación de Phil Haack en How a Method Becomes an Action.


Ahora hay otra opción, Web API. ScottGu tiene una breve introducción en su blog y hay una interesante publicación en el blog que discute la creación de API usando la API web frente a los controladores here.

3

Usamos ASP.Net MVC 1.0 para crear servicios JSON.

Hay un par de razones para esto:

  1. Estábamos usando ASP.Net MVC para las páginas, por lo que el uso de los servicios, así reduce el número de tecnologías en el proyecto.
  2. Nos pareció muy fácil de usar para devolver un ActionResult con JSON datos formateados

    public ActionResult GetData(string id) 
    { 
        if (string.IsNullOrEmpty(id)) 
        { 
         throw new ArgumentNullException("id", "Searchvalue must be provided."); 
        } 
    
        // Where Provider.GetData returns IEnumerable<Data> 
        return Json(Provider.GetData(id)); 
    } 
    
+1

También podría simplemente devolver JsonResult –

4

usted debe comprobar una interesante Blog shouldersofgiants que hizo una serie de post sobre Creación de servicio Web REST con ASP.Net MVC.

de Part 1 a Part 21 es posible encontrar alguna información iteresting. Y aún no ha terminado ... buena lectura.

+0

Un buen enlace que vale la pena leer. – John

4

No puedo hablar por el conjunto de herramientas MVC, pero personalmente me parece WCF un dolor para trabajar con ellos. Tiene usos, pero es un marco bastante pesado y puede ser bastante incómodo de usar a veces.

Si quiere seguir el camino de REST, OpenRasta es la mejor solución .Net actualmente alrededor. Especialmente en términos de cumplimiento.

También puede forjar el marco ASP MVC sea REST, pero que requiere un poco de trabajo (en comparación con OpenRasta que trabaja fuera de la caja).

Cuestiones relacionadas