好奇:目前推荐的C#编写REST Web服务的方法是什么?

时间:2010-02-18 10:51:17

标签: c# web-services rest

那么,专家建议什么? WCF Rest Toolkit? ADO.NET(现为WCF)数据服务AKA Astoria?使用ASP.NET MVC手动滚动它?其他

要求非常普遍:针对少量资源类型(XML和JSON输出)的HTTP GET / POST需要与SOAP ASMX Web服务位于同一个appdomain中。

我的标准是:

A)表现

B)发展复杂性(包括学习曲线)

C)可维护性

谢谢!

3 个答案:

答案 0 :(得分:5)

我见过的REST服务的最佳框架是OpenRasta,它是从头开始构建的,只是简单地启用REST。 http://trac.caffeine-it.com/openrasta

根据我的经验,使用OpenRasta构建RESTful服务比使用WCF简单得多。这也反映在易于维护上。我没有测试性能,但从未注意到它在这个领域受到影响,而且由于结构简洁,如果它更快,我也不会感到惊讶。

其他一些链接:

http://codebetter.com/blogs/kyle.baley/archive/2009/04/19/openrasta-or-how-to-speak-rest.aspx http://blog.huddle.net/we-love-openrasta http://www.vimeo.com/3385419

我没有使用数据服务,但从我读过的内容来看,我认为它们并不算真正的REST,但它们可能符合您的要求。我不知道。

答案 1 :(得分:2)

如果您已经在SQL Server等数据库中以结构化形式获取数据,并且希望公开这些数据(例如客户,订单等),那么WCF数据服务可能就是其中之一。最有效和最有效的方式来公开您的数据。它为您处理了许多基础知识,让您专注于您想要展示的内容以及隐藏的内容。它甚至支持查询字符串中的查询,以及非常容易地插入和更新。

如果您有更多非结构化数据,那么带有REST入门工具包或ASP.NET MVC的简单WCF似乎都是非常有价值的选择。对于开发人员而言,两者都没有做到这一点,但两者都是当前的,非常有效,并且应该适合您的环境。

所以我想在你的位置,我首先检查WCF数据服务并使用它,如果它符合要求 - 如果不符合,请选择WCF REST Starter Kit(也适用于经典ASP.NET网页,或winforms,或控制台应用程序,或WPF,或Silverlight) - 或者如果你已经在项目中这样做,请查看ASP.NET MVC。

答案 2 :(得分:0)

如果使用.NET 4框架,REST可以使用RouteHandler提供更好的支持。如果您希望在早期版本上实现,我只需实现您自己的HTTP处理程序并使用IIS6通配符路由(aspnet_isapi.dll)来处理您的请求。

使用REST入门套件,您只能使用.svc文件,但如果您实现自己的处理程序,则可以手动解析请求,并对restful服务进行更精细的控制。还有一些额外的复杂性,但主要是围绕部署。