【问题标题】:Why use ASP.NET MVC 2 for REST services? Why not WCF?为什么将 ASP.NET MVC 2 用于 REST 服务?为什么不是 WCF?
【发布时间】:2010-03-27 20:48:39
【问题描述】:

所以我看到 MVC 2 现在支持 [HttpPut][HttpDelete] 以及 [HttpGet][HttpPost],从而可以使用它来执行完整的 RESTful Web 服务。

我已经使用 WCF 的 REST 工具包有一段时间了,发现它相当强大,但我很想知道使用 MVC 2 方法有哪些(如果有的话)优势。

欢迎提供链接、战争故事,甚至纯粹的传闻。

【问题讨论】:

标签: wcf rest asp.net-mvc-2


【解决方案1】:

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

// V1
[AcceptVerbs( HttpVerbs.Delete )]

// V2
[HttpDelete]

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

  • 如果您将其视为一个胖客户端应用程序,它恰好是用 JavaScript 编写的,并为 data 调用 restful 服务(然后在客户端对其进行格式化),那么 WCF 会觉得像一个更正确的解决方案(即使你可以使用任何一个)。

  • 但是,如果您将应用程序视为以某种形式返回 content 以供消费的服务器应用程序,那么使用 RESTful API 来执行操作会更有意义。您的操作将返回完全格式化的内容,这些内容将显示在浏览器中,无需进一步处理。您可以从 Web 服务返回格式化的内容(HTML 或其他),但这会让人感觉有些不对。

至少这种区别在我看来是有意义的 =)。您可能还对 Phil Haack 在How a Method Becomes an Action 上的帖子感兴趣。


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

【讨论】:

    【解决方案2】:

    您应该查看一个有趣的博客shouldersofgiants,他发表了一系列关于使用 ASP.Net MVC 创建 RESTful WebService 的帖子。

    Part 1Part 21,您可能会发现一些有趣的信息。而且他甚至还没有完成……很好的阅读。

    【讨论】:

      【解决方案3】:

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

      如果您想走 REST 路线,OpenRasta 是目前最好的 .Net 解决方案。尤其是在合规性方面。

      您也可以将 ASP MVC 框架打造为 RESTful,但这需要相当多的工作(与开箱即用的 OpenRasta 相比)。

      【讨论】:

        【解决方案4】:

        我们使用 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));
          }
          

        【讨论】:

        • 你也可以只返回 JsonResult
        猜你喜欢
        • 1970-01-01
        • 2014-06-02
        • 2011-07-19
        • 2017-11-12
        • 2011-05-09
        • 2018-07-22
        • 1970-01-01
        • 2011-04-10
        • 1970-01-01
        相关资源
        最近更新 更多