选择哪一个:ASP.NET MVC 还是 RESTful WCF?

Posted

技术标签:

【中文标题】选择哪一个:ASP.NET MVC 还是 RESTful WCF?【英文标题】:Which to choose: ASP.NET MVC or RESTful WCF? 【发布时间】:2010-09-25 20:52:45 【问题描述】:

使用 ASP.NET MVC,通常使用 AJAX 代码(例如 jQuery)从服务器调用 Web 服务而不刷新页面。使 Web 服务 RESTful 是很自然的。似乎有两条路可以走。首先,ASP.NET MVC URI 是 RESTful 的,很容易让一些 Controller/Action 充当 Web 服务方法。其次,从 3.5 版开始,WCF 可以是 RESTful 的。

那么,这两种方式的优缺点是什么?

对 ASP.NET MVC 的请求将通过 ASP.NET 管道。这是否使它比 WCF 慢?

【问题讨论】:

WCF 也通过 ASP.NET 管道。 【参考方案1】:

如果您已经在网站的其余部分使用 ASP.Net MVC,我想对 AJAX 调用也使用相同的框架是有意义的。

关于 ASP.Net 管道,我假设您担心整个页面生命周期的事情。仅当您将视图与 WebFormViewEngine 一起使用时,才会执行页面生命周期。该框架提供JsonResult 用于轻松对操作结果进行 JSON 序列化,完全绕过 ASP.Net 页面生命周期。类似的类可用于 XML、RSS 等。

【讨论】:

【参考方案2】:

在我的博客http://shouldersofgiants.co.uk/Blog/ 上,我整理了一个系列,研究如何使用 ASP.Net MVC 提供 RESTful Web 服务(如果有帮助的话)。

【讨论】:

【参考方案3】:

您必须将 AJAX 调用与 REST API 区分开来,因为 AJAX 调用是在应用程序的上下文中进行的,并且可以依赖应用程序上下文进行会话、身份验证等操作。 然而,REST API 是您提供给全世界使用的一组 API - 因为它可以依赖您的应用程序进行身份验证等事情,它为保护来自客户端的调用等带来了全新的复杂性。

如果您只需要应用程序的 JS 与服务器通信,那么使用 MVC 控制器是最简单直接的解决方案。

如果您希望这些 API 与您网站的 MVC 代码分离(用于部署等目的),或者如果您需要一个 REST API 供其他人使用来调用您的应用 - WCF。

【讨论】:

【参考方案4】:

使用 WCF 堆栈的另一个优点是,只要您有数据,只需单击几下鼠标,即可使用 WCF 数据服务/ODATA(spec、demo)公开 CRUD 和数据探索所需的所有接口使用实体框架实现的层。

我正在考虑将这些基本 RAD 接口与使用常规 MVC 构建的更复杂事务服务的附加层结合起来。这种组合似乎不太优雅,但就生产力而言,它可能是有益的。

【讨论】:

以上是关于选择哪一个:ASP.NET MVC 还是 RESTful WCF?的主要内容,如果未能解决你的问题,请参考以下文章

CORS:使用 ASP.NET 4.5.1 MVC 的 Rest API

使用 PayPal REST API ASP.NET MVC 一次支付多个项目

同时对 Asp.Net core 2.0 MVC 应用程序 (cookie) 和 REST API (JWT) 进行身份验证

如何使用 ASP.NET MVC Rest API 调用和 jQuery Ajax 下载文件

有效日期的 Asp.net MVC DateTime 错误

ASP.NET MVC C# PayPal Rest API - UNAUTHORIZED_PAYMENT