RESTful 服务:WCF 与 ASP.NET MVC

Posted

技术标签:

【中文标题】RESTful 服务:WCF 与 ASP.NET MVC【英文标题】:RESTful services: WCF versus ASP.NET MVC 【发布时间】:2011-07-23 15:11:27 【问题描述】:

实现 RESTful 服务的一种非常常见的方法是通过 WCF 使用 ASP.NET MVC 来实现。

ASP.NET MVC 通过灵活的 URL 路由和灵活的 HTTP 方法映射到控制器操作,具有出色的 RESTful 支持。

WCF 4.0 现在对使用与 ASP.NET MVC 相同的 ASP.NET 路由机制实现 RESTful 服务具有出色的支持。

问题 您在使用这两种方法中的任何一种创建 RESTful 服务时有何经验以及遇到的优缺点?

【问题讨论】:

【参考方案1】:

WCF 服务可以自托管。不需要 IIS。 ASP.NET MVC 专注于交付 html,而现有的 .net 4 WCF 堆栈更多地专注于 XML 和 JSON。

新的http://wcf.codeplex.com 是 WCF 上的下一代 REST,将比现有堆栈更强大。

新堆栈将更好地支持所有不同的媒体类型。它提供了对底层 HTTP 协议的更好访问。它将更具可测试性,并且更容易插入可重用的处理程序以添加标准行为。

【讨论】:

你提出了一些好的观点。从我所看到的来看,如果意图是仅在 IIS 中托管 WCF 服务(类似于 MVC),则需要一些额外的管道代码来返回 Xml ActionResult 或在 JSON 和 XML 之间切换以执行相同的操作,而不是进行更改端点通过 WCF 中的配置。看到 ASP.NET MVC 也非常可测试(类似于 WCF),两者之间还有其他需要注意的关键区别吗?我也会对最终选择 MVC 路由而不是 WCF 路由的用户的反馈非常感兴趣。 我不太喜欢使用测试版和预览版,因此新的 WCF Web API 还不是我想做的事情。 “公告:WCF Web API 现在是 ASP.NET Web API!ASP.NET Web API 随 ASP.NET MVC 4 Beta 一起发布。该站点上的 WCF Web API 和 WCF 对 jQuery 内容的支持将在 2012 年底之前删除。”然后wcf.codeplex.com/discussions/319671 到今天仍然是测试版nuget.org/packages/AspNetWebApi【参考方案2】:

看看 Scott Hanselminutes 和 Glenn Block 的 Podcast,他们讨论了相同的问题并比较了 MVC 和新的 WCF Web API。 http://www.hanselminutes.com/default.aspx?showID=284

【讨论】:

【参考方案3】:

我会说 WCF 更适合构建服务,您可以使用 asp.net mvc 来完成,但它需要更多的仪式

【讨论】:

以上是关于RESTful 服务:WCF 与 ASP.NET MVC的主要内容,如果未能解决你的问题,请参考以下文章

表单身份验证、ASP.NET MVC 和 WCF RESTful 服务

在 .NET 中开发新的 RESTful Web 服务——我应该从哪里开始? ASP.NET-MVC,WCF?

WCF 与 ASP.NET Web API [关闭]

WCF Restful 服务和 WCF 数据服务 [关闭]

Restful WCF 服务和 LINQ

WCF 服务与 ASP.NET Web Api