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

好奇:目前推荐用C#编写REST web服务的方法是什么?,c#,web-services,rest,C#,Web Services,Rest,那么,专家们有什么建议呢?WCF Rest工具包?ADO.NET(现在的WCF)数据服务又名Astoria?使用ASP.NET MVC手动滚动它?其他的 需求相当普通:少量资源类型(XML和JSON输出)的HTTP GET/POST需要与SOAP ASMX web服务位于同一appdomain中 我的标准是: A) 演出 B) 开发复杂性(包括学习曲线) C) 维修性 谢谢 如果您已经在SQL Server之类的数据库中拥有结构化形式的数据,并且您希望公开这些数据(例如,您的客户、他们的订单等)

那么,专家们有什么建议呢?WCF Rest工具包?ADO.NET(现在的WCF)数据服务又名Astoria?使用ASP.NET MVC手动滚动它?其他的

需求相当普通:少量资源类型(XML和JSON输出)的HTTP GET/POST需要与SOAP ASMX web服务位于同一appdomain中

我的标准是:

A) 演出

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

C) 维修性


谢谢

如果您已经在SQL Server之类的数据库中拥有结构化形式的数据,并且您希望公开这些数据(例如,您的客户、他们的订单等),那么WCF数据服务可能是公开数据的最有效和最高效的方法之一。它可以为您处理许多潜在的问题,并让您专注于要公开的内容和要隐藏的内容。它甚至支持在查询字符串中进行查询,并且很容易插入和更新

如果您有更多的非结构化数据,那么带REST初学者工具包的基本WCF或ASP.NET MVC似乎都是非常有价值的选择。我本人对这两种方法都做得不多,但它们都是最新的,对开发人员来说是非常高效的,应该很适合您的环境


因此,我想在您的位置上,我会首先检查WCF数据服务并使用它,如果它符合要求的话——如果不符合要求,则在WCF REST初学者工具包(也适用于经典的ASP.NET webforms、winforms、控制台应用、WPF或Silverlight)之间进行选择-或者,如果您已经在项目中使用ASP.NET MVC,请查看它。

我所见过的REST服务的最佳框架是OpenRasta,它是从头构建的,可以简单地启用REST

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

为您提供一些其他链接:


我没有使用数据服务,但从我所读到的内容来看,我认为它们算不上真正的RESTful,但它们可能满足您的要求。我不知道。

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


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

这个答案相当于告诉人们如果想使用winsocks控制naggle算法,就要重新实现TCP堆栈。实现自己的IHttpHandler的级别太低,除了最简单的情况外,在所有情况下都没有用处。我不同意。我根本不明白这种比较是如何起作用的。自定义处理程序的级别不是很低,它仍然在IIS上运行。您以前有没有这样做过,或者您害怕离开WCF REST初学者工具包。NET4 WCF REST构建在RouteHandler之上,正如我所描述的实现。微软似乎认为这是个好主意。放下态度。我构建了OpenRasta,我知道在IHttpHandler之上构建东西的一两件事。微软似乎认为很多事情是一个好主意,让我在半夜惊恐地醒来,这并不能使它变得好。因此,准确地说,处理HttpContext来进行内容协商、uri解析、控制器/处理程序执行、绑定,以及一个好的框架提供给您的所有其他事情都太低了,无法产生效果,除非您的需求是构建一个hello world应用程序。serialseb:您完全错了。我能够使用IHttpHandler在大约20小时内实现功能齐全的REST服务。如果你认为它是低水平的生产力,这是基于你的理解(这是相对的)。在我们的例子中,这是最好的选择,它给了我们灵活性,我们能够在微软的标准初学者工具包或WCF(对序列化、压缩和完整HTTP规范的更多支持/扩展性)中实现比微软提供的更多的功能,所有这些都只需要很短的时间。当你显然不明白这有多容易时,不要误导读者。