代码之家  ›  专栏  ›  技术社区  ›  Jeremy McGee

为什么将ASP.NET MVC 2用于REST服务?为什么不是WCF?

  •  19
  • Jeremy McGee  · 技术社区  · 14 年前

    所以我看到MVC 2现在支持 [HttpPut] [HttpDelete] 以及 [HttpGet] [HttpPost] 使使用它的完整的RESTful Web服务成为可能。

    我已经使用了一段时间的rest toolkit for wcf并发现它相当强大,但是我有兴趣了解使用MVC 2方法有哪些优势(如果有的话)。

    链接,战争故事,甚至纯粹的听说都是受欢迎的。

    4 回复  |  直到 14 年前
        1
  •  15
  •   Roman    12 年前

    我敢肯定ASP.NET MVC从一开始就支持所有HTTP谓词。至少 HttpVerb Enumeration 从一开始就有。V2中唯一的新特性是它们是属性。

    // V1
    [AcceptVerbs( HttpVerbs.Delete )]
    
    // V2
    [HttpDelete]
    

    一个六个,另一个六个。至于您是否希望通过WCF或ASP.NET MVC公开功能,这取决于您对应用程序的看法。

    • 如果您认为它是一个厚客户端应用程序,恰好用javascript编写并调用RESTful服务 数据 (然后格式化它的客户端)那么,WCF会觉得它是一个更正确的解决方案(即使您可以使用两者之一)。

    • 但是,如果您将应用程序视为返回 内容 以某种形式或另一种形式用于消费,然后对您的操作使用RESTfulAPI将更有意义。您的操作将返回完全格式化的内容,这些内容将显示在浏览器中,无需进一步处理。你 能够 从Web服务返回格式化的内容(HTML或其他),但不知何故,这会感觉不对。

    至少这种区别在我的头脑中是有意义的。你也可能对菲尔·哈克在 How a Method Becomes an Action .


    现在还有另一个选择, Web API . ScottGu 在他的博客中有一个简短的介绍,还有一篇有趣的博客文章讨论了如何使用Web API和控制器创建API。 here .

        2
  •  4
  •   moi_meme    14 年前

    你应该查看一个有趣的博客 shouldersofgiants 他发表了一系列关于用ASP.NET MVC创建RESTfulWebService的文章。

    Part 1 Part 21 你可能会发现一些信息。他还没做完…良好的阅读能力。

        3
  •  4
  •   Bealer    14 年前

    我不能谈论MVC工具包,但我个人觉得WCF很难合作。它确实有一些用途,但它是一个相当沉重的框架,有时使用起来会很尴尬。

    如果您想沿着休息的路线走下去,OpenRasta是目前最好的.NET解决方案。尤其是在合规方面。

    您还可以将ASP MVC框架打造成一个可休息的框架,但这需要相当多的工作(与开箱即用的OpenRASTA相比)。

        4
  •  3
  •   Shiraz Bhaiji    14 年前

    我们使用ASP.NET MVC 1.0创建JSON服务。

    这有几个原因:

    1. 我们在页面上使用了ASP.NET MVC,因此在服务上使用它也减少了项目中的技术数量。
    2. 我们发现使用JSON格式的数据返回actionResult非常容易。

      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));
      }