【问题标题】:RESTful service in .net - which is better choice WCF or ASP.NET MVC?.net 中的 RESTful 服务 - WCF 或 ASP.NET MVC 哪个更好?
【发布时间】:2012-02-16 15:23:23
【问题描述】:

我计划编写 Web 应用程序,它主要在客户端 (AJAX) 上工作,并使用 JSON 与服务器进行 RESTful 通信,并有另一个使用 XML(或最终也使用 JSON)的客户端。这个应用程序将具有客户端身份验证,但相当简单和小。

对于这个 RESTfully Web 服务,哪个是更好的选择:WCF 还是 ASP.NET MVC?

【问题讨论】:

    标签: .net asp.net-mvc wcf rest wcf-web-api


    【解决方案1】:

    此时,如果您现在开始一个项目,我会选择WCF WebAPI 路线。 MVC 为构建 REST API 提供了基本的基础设施,但没有内置对内容类型协商等内容的支持。

    WebAPI 旨在为 .NET 框架的 REST 样式服务提供一流的支持

    但是,Web API 尚未发布(尽管我很确定今年会发布)所以您将使用 beta 代码进行开发 - 哦,它也可以在 Nuget 上使用

    顺便说一句 - CHM 文件中有一些好东西可以帮助您入门

    【讨论】:

    • 这种内容类型协商对 PUT 操作有用吗?如果没有,WCF WebAPI 还能提供哪些 ASP.NET MVC 不能提供的功能?
    • 您可以使用 MVC 进行完整的 GET、PUT、POST、DELETE。对于大多数应用程序,我不确定 WCF WebAPI 通过 MVC 提供什么(如果 MVC 是按照 Omar Al Zabir 的项目中所示完成的)。
    • @Dommer - 我知道 MVC 当然可以处理 GET、PUT、POST、DELETE。我只是说这个答案中提到的内容类型协商作为好处并不那么重要,因为它可能(如果我没记错的话)仅对 GET 有用。就我而言,我想在 GET 和 PUT 中同时支持 JSON 和 XML。
    • 我也看不到 WCF 内容类型协商的好处(但我当然可能只需要教育)。在我链接的 CodeProject 文章中,返回类型是根据请求的类型计算出来的。有一个示例,您可以将 XML 或 JSON 发送到相同的 URL,它会自动以 XML 或 JSON 响应。看起来还不错!
    • 正如您所说,内容类型协商对于 GET 很重要,但可以用于其他人(例如,我必须向您发送 XML,但我通常更喜欢不同的内容类型 - 比如说 JQuery 客户端)。然而,内容类型协商是 WebAPI 支持的 REST 风格惯用语的一个示例,您必须使用 MVC 手动滚动:JSONP 和 OData 支持也是开箱即用的,您必须使用 MVC 手动滚动。我当然不是说你不能使用 MVC 构建 RESTful API - 为什么不使用专为这项工作设计的工具
    【解决方案2】:

    正确的答案可能是:视情况而定。

    如果您已经熟悉其中一种技术,那么也许您应该使用该技术,但我更愿意使用 ASP.NET MVC。

    我现在要提两篇Omar Al Zabir的文章

    如果您想走 ASP.NET MVC 路线,请阅读以下内容:http://www.codeproject.com/Articles/233572/Build-truly-RESTful-API-and-website-using-same-ASP

    如果您打算使用 WCF,请阅读这篇关于提高可伸缩性的文章:http://www.codeproject.com/Articles/234085/Fixing-WCF-to-build-highly-scalable-async-REST-API

    使用 MVC 很酷的一点是,您可以编写一个 RESTful 应用程序使用相同的代码公开一个 RESTful API。

    编辑:澄清一下,MVC RESTful 项目确实支持 GET、PUT、POST、DELETE,因此它确实是 RESTful。 请参阅此处的文档:http://code.msdn.microsoft.com/Build-truly-RESTful-API-194a6253

    特别是这一点:

    所有这些 URL 都支持 GET、POST、PUT、DELETE。用户可以浏览到 这些 URL 并获取呈现的 html 页面。客户端应用程序可以进行 AJAX 调用 对这些 URL 执行 CRUD。从而使一个真正的 RESTful API 和网站。

    【讨论】:

    • 我已经阅读了 MVC 文章,感谢您的链接。但是,它使用 MVC 2。这在 MVC 3 中是实际的吗?
    猜你喜欢
    • 1970-01-01
    • 2011-07-23
    • 2011-01-17
    • 2010-09-25
    • 1970-01-01
    • 1970-01-01
    • 2011-04-24
    • 2011-02-23
    • 1970-01-01
    相关资源
    最近更新 更多