经过大量尝试不同的.NET REST框架,我得出了结论。使用ASP.NET MVC是处理RESTful服务最简单、最透明的方式。配置也要简单许多。
ASP.NET MVC
由于它的本质,ASP.NET MVC非常适合RESTful服务方法。与将复杂的SOAP驱动框架“适应”RESTful协议不同,ASP.NET MVC在其核心处采用Web编程范例。它更加透明和易于调试。利用ASP.NET路由框架,IIS请求被连接到控制器类。返回任何类型的内容变得十分容易。因为约定优于配置的哲学,设置起来也更加容易。它就是这么好用。说够了。
这是我在尝试使WCF很好地与REST配合时玩过的项目列表。我花了数天时间研究不同的方法。最后,每个项目都有各自的优点,但没有一个可以满足我们所有的需求。MVC胜出了。
WCF Rest Contrib - wcfrestcontrib.codeplex.com
这个项目具有一些非常有用的功能,如零配置、错误处理(返回适当的Web响应代码)和Web身份验证。
它要求您更改创建WCF服务的服务工厂类。这意味着它不能与其他要求您使用其工厂的库很好地协作。
WCF Rest Starter Kit - code.msdn.microsoft.com/wcfrestlabs/
这实际上只是一个“学习工具”和实验室,展示了如何在WCF中实现REST。看起来它已经不再更新了。我认为ASP.NET MVC和WCF 4.0让它失去了市场。它确实有一些很好的类,最终被纳入了WCF 4.0中(Help功能)。
WCF Rest AutoDocs - autodocs.codeplex.com
WCF Rest AutoDocs 可以根据属性和新的端点行为适配器类,生成非常酷炫、易于使用的文档。
但是我在使用它时遇到了一个大问题——一旦将其添加到 WCF 中,post 请求就不再工作了。我一直收到“未找到端点”的错误。最终我放弃了并停止使用该库,因为它无法与其他库很好地兼容。
WCF Doc - wcfdoc.codeplex.com
WCF Doc 可以为基于 soap 和 rest 的服务生成文档。你可以创建自己的 xslt 样式表,然后生成符合公司品牌的酷炫文档。我目前正在将其集成到我们的构建过程中。
自 .Net Framework 3.5 版本以来,WCF 提供了对 REST 风格服务的支持,您可以立即在 WCF 上开始构建 REST 服务。
WCF REST Starter Kit 旨在成为团队从社区获取有关 WCF 中 REST 的新功能想法的工具。我们正在积极努力地将开发人员喜爱的启动包功能纳入 .Net Framework 中 - 例如,您可以在最近发布的 .Net 4 Beta 1 版本中使用帮助页面功能。随着我们收到有关启动器包功能的反馈,我们会考虑将它们纳入框架中,这样您就可以在生产中使用它们。
关于启动包“不再更新”的评论,我可以向您保证,实际情况恰恰相反。正如我们在启动器包主页上所述,我们的目标是在四个月的开发周期内发布新版本的启动器包。我们已经投入资源支持启动包,并致力于开发未来的版本。
这取决于您的场景,但是您会发现WCF REST在启用某些场景时会遇到很多问题。
起始套件开始修复其中一些问题,其他问题将在下一个版本中得到解决,但如果您想要像链接创建、内容类型协商和自定义媒体类型等功能,则需要花费大量时间使其正常工作。
还有其他框架可以更直接地解决相同的问题,我建议您看看OpenRasta和Snooze,甚至是MVC。
另一种可能性是,这个功能将成为.NET 4.0和Visual Studio 2010的一部分。我建议你下载beta版本并自己尝试。
我正在使用WCF Rest Contrib,只是因为我需要支持从第三方开发的iPad应用程序发送给我们的x-www-form-urlencoded格式。此外,我需要支持自定义用户名验证,这也不是WCF 4 REST服务的原生支持。
不幸的是,缺点是我失去了自动生成帮助页面的能力,这似乎在WCF Rest Contrib库中不被支持。
失去了帮助页面已经成为一个真正的麻烦,但就以上需求而言,我没有看到其他选择。
我希望随着使用REST的移动设备的爆炸式增长,微软将更加认真地考虑在WCF中实现工业级版本。目前,我对WCF 4有点失望... 我希望它更接近于WCF Rest Contrib。
(顺便说一下,服务实现库还支持SOAP WS部署,以供经典的非移动客户端使用,其中可以使用WSDL合同来生成代理)。
http://wcfrestcontrib.codeplex.com/
它基于3.5 SP1 WCF REST API,并提供了一些在RSK中找不到的功能。