在.NET中实现基于REST的Web服务的最佳方法是什么?

时间:2009-05-12 01:29:34

标签: asp.net-mvc wcf rest wcf-data-services

到目前为止,我的选择是ADO.Net数据服务,WCF REST入门套件(不确定我是否可以使用它,因为它们的EULA难以理解和混淆),ASP.NET MVC。

有很多帖子,但我想看看是否还有我缺少的框架。如果您已使用上述任何选项,请发布您的经验。

我希望使用的方案是从SQL Server数据库中保存和检索某些数据。我正在寻找已经内置了一些基础设施的东西。我读了其他问题,但我没有得到人们对上述选项的任何具体经验,所以想知道事情是否会随着时间而改变。

提前致谢。

澄清#1:我目前正在将我的选项限制在MS Stack

5 个答案:

答案 0 :(得分:4)

实际上我认为ADO.NET for Data Services(以前称为Astoria)就是你想要的。

http://msdn.microsoft.com/en-us/data/bb931106.aspx

答案 1 :(得分:2)

就v1而言,WCF肯定不是最佳选择。它可以防止您实现ReST体系结构的许多约束。

如果你想通过http进行ReST,为什么不看看OpenRasta,它是从头开始构建的,以支持REST场景:

http://trac.caffeine-it.com/openrasta

的Seb

答案 2 :(得分:0)

如果您使用的是.asmx wed服务,可以使用ScriptService标记该类,然后在AJAX调用中请求Json以恢复Json。

答案 3 :(得分:0)

如果您的网站已经在运行MVC,那么只需添加额外的视图并转储xml / json而不是HTML内容。 (Stack Overflow为他们的RSS源执行此操作)

如果您想添加自定义标头,例如基本Http身份验证,X-HTTP-Method-Override以支持put / delete(因为浏览器管道仅支持get / post),在Rest Starter Kit中很容易做到,目前在WCF 3.5中几乎不可能做到(可能使用允许httpcontext的属性设置的asp.net模块)

Rest Starter Kit填补了WCF 3.5遗漏的所有空白!

REST入门套件具有ASP.NET预发布组件,如“软件已获得许可”一样。“您承担使用它的风险。它可能永远不会作为稳定版本发布“ View Licence

为了让您入门PluralSight有一些关于REST和REST入门套件的精彩视频教程。

答案 4 :(得分:-1)

ASP.NET MVC并不像其他东西。它是一个Web开发模型,是WebForms的替代品。

至于实现基于REST的Web服务,WCF可能就是这样。它几乎是设置一些额外的属性,配置单个xml文件及其相关问题。就基础设施而言,WCF与任何选择一样完整,因为它具有内置的带宽和并发性,你应该决定切换传输(比如命名管道或TCP),或者希望切换到使用SOAP,它是一个微不足道的开关。此外,内置了跟踪功能,当出现问题时可以很方便。

最后一个选项可能是Web方法。如果您只是尝试使用Ajax启用网站,那么Web方法可能就是这样做的。

至于你是否缺少任何框架......如果你正在处理MS dev堆栈,不,那就好了,除了可能仍然支持的经典Web服务。

如果您正在谈论非MS语言,那么所有各种语言(Java,Python,Ruby等)都有半种不同的Web服务标准。如果您不局限于MS技术,那么您应该明确这一点,因为它打开了一个选项。

编辑:这并不是说你不能用ASP.NET MVC做基于REST的无视界面。如果只是意味着你没有内置的基础设施,并且基本上将自己滚动。因此,无负载处理,无DDOS保护,无容错等......