2010-03-27 9 views
19

Donc, je vois que MVC 2 prend maintenant en charge [HttpPut] et [HttpDelete] ainsi que [HttpGet] et [HttpPost], ce qui rend possible de faire un service Web RESTful complet en l'utilisant. J'ai utilisé la boîte à outils REST pour WCF pendant un certain temps et je la trouve assez puissante, mais j'aimerais savoir quels sont les avantages (s'il y en a) de l'approche MVC 2. Des liens, des histoires de guerre, ou même un pur dire-dire sont les bienvenus.Pourquoi utiliser ASP.NET MVC 2 pour les services REST? Pourquoi pas WCF?

+0

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

Répondre

15

Je suis sûr que ASP.NET MVC a supporté tous les verbes HTTP depuis le début. Au moins le HttpVerb Enumeration les a eu depuis le début. La seule chose qui est nouvelle dans V2, c'est qu'ils sont des attributs.

// V1 
[AcceptVerbs(HttpVerbs.Delete)] 

// V2 
[HttpDelete] 

Six de l'une, une demi-douzaine de l'autre. Quant à savoir si vous souhaitez exposer les fonctionnalités via WCF ou ASP.NET MVC, cela se résumerait à ce que vous pensez de votre application.

  • Si vous pensez comme une application client lourd qui se trouve être écrit en JavaScript et appelle à des services reposant pour données (formats puis côté client) alors WCF se sentirait comme un plus correct solution (même si vous pouvez le faire en utilisant soit). Toutefois, si vous considérez votre application comme une application serveur qui renvoie le contenu sous une forme ou une autre pour la consommation, l'utilisation d'une API RESTful pour vos actions serait plus logique. Vos actions renverraient un contenu entièrement formaté qui serait affiché dans le navigateur sans nécessiter de traitement supplémentaire. Vous pouvez retourner le contenu formaté (HTML ou autre) à partir d'un service Web, mais cela serait mal à l'aise.

Au moins ce genre de distinction a du sens dans ma tête =). Vous pouvez également être intéressé par poste de Phil Haack sur How a Method Becomes an Action.


Il existe maintenant une autre option, Web API. ScottGu a une brève introduction dans son blog et il y a un article de blog intéressant discuter de la création d'API en utilisant l'API Web vs les contrôleurs here.

3

Nous utilisons ASP.Net MVC 1.0 pour créer des services JSON.

Il y a deux raisons pour cela:

  1. Nous utilisions ASP.Net MVC pour les pages, afin de l'utiliser pour les services et réduit le nombre de technologies dans le projet.
  2. Nous l'avons trouvé très facile à utiliser pour retourner un ActionResult avec JSON données formatées

    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

Vous pouvez aussi simplement revenir JsonResult –

4

Vous devriez consulter un blog intéressant shouldersofgiants Qui a fait une série de post sur la création RESTful WebService avec ASP.Net MVC.

de Part 1 à Part 21 vous pouvez trouver des informations iteresting. Et il n'a même pas encore fini ... bonne lecture.

+0

bon lien vaut une lecture. – John

4

Je ne peux pas parler de la boîte à outils MVC, mais personnellement, je trouve que la WCF est pénible à utiliser. Il a des utilisations, mais c'est un cadre assez lourd et peut être assez difficile à utiliser à certains moments.

Si vous voulez suivre la route REST, OpenRasta est la meilleure solution .Net actuelle. Surtout en termes de conformité.

Vous pouvez également forger la structure ASP MVC pour qu'elle soit RESTful, mais cela nécessite un peu de travail (par rapport à OpenRasta qui fonctionne hors de la boîte).

Questions connexes