如何在 asp.net 中创建 RESTful Web 服务?

Posted

技术标签:

【中文标题】如何在 asp.net 中创建 RESTful Web 服务?【英文标题】:How to create a RESTful web service in asp.net? 【发布时间】:2011-02-12 11:33:33 【问题描述】:

我只是想创建一个相当基本的 REST 服务,这样我就可以将我的 asp.net/SQL 服务器应用程序中的一些数据暴露给外部工作,就像这样.....

http://domain.com/api/offices - 将返回一组 xml 办公地点。 http://domain.com/api/offices/15 - 将返回办公室 15 的所有详细信息。

这都是相当标准的东西(包括基本身份验证),但似乎有几种方法可以使用 Microsoft 技术实现这一点,我真的不知道从哪里开始。这些似乎是选项...

1) WCF

2) ASP.NET MVC

3) ADO.NET 数据服务

4) Rest Starter Kit 项目模板?

以下哪一个是创建 Web 服务的最简单和最“最新”的解决方案?

【问题讨论】:

使用 WCF 设置 REST 和 JSON 可能会令人沮丧。 【参考方案1】:

ADO.NET 数据服务现在是 WCF 数据服务,这就是我所推荐的。它很容易使用(至少对于您描述的服务类型)。您可能还想看看Open Data Protocol——您可能不需要它,除非您支持非.NET 客户端(php、Java)。

【讨论】:

我实际上想将数据公开给 Java android 应用程序,但是我不能使用 Java 访问 RESTful 服务,即使它是使用 asp.net 创建的? ODP 有什么优势? 根据这个页面,WCF 数据服务无论如何都会产生 OData 服务 - msdn.microsoft.com/en-us/data/bb931106.aspx - 这一切都非常令人困惑。 您可以从 MS for Java 获取客户端 ODP 库。如果您使用实体框架类或其他涉及的东西,这将很方便,但如果您所做的只是抓住一个简单的名称:值对层次结构,我怀疑这是否值得。【参考方案2】:

有一些替代方案,不确定您是否听说过,但不妨研究一下:

Open Rasta 它是一个相当自以为是的 Rest 框架,可让您创建 Web 服务和网站,但首先了解它有点奇怪;它的重量如此之轻,值得一试,它需要了解 Rest 的实际工作原理(而不是你可能习惯的 .net 抽象),我认为它对 asp.net 没有很强的依赖性,对我来说一个明显的优势是您可以编码为 html、JSON 或您可能需要的任何格式,这很有趣

另一个选项(我没有使用过)是Siesta,它在 Asp.net mvc 之上工作

Wcf 配置很快就会变得非常痛苦......

希望对你有帮助

【讨论】:

【参考方案3】:

如果您不打算在未来添加任何其他端点(如 SOAP 等)并且服务不会被 Silverlight 客户端使用,我建议您使用 ASP.NET MVC。

如果涉及 Silverlight,则使用 ADO.NET 数据服务。

如果您计划构建具有多种端点类型的强大服务框架,请使用 WCF。

【讨论】:

ASP.NET MVC 次之。我们的团队在上一个 Web 项目中使用了它,并且对它非常满意。 如果必须的话,我准备从头开始学习 MVC,但使用 WCF REST 入门工具包之类的东西不是更容易吗? @jonhobbs 最后我检查了一下,WCF REST 入门工具包并不完美。它产生的服务肯定存在一些问题。我认识几个成功使用 .NET MVC 构建 RESTful 服务的人。

以上是关于如何在 asp.net 中创建 RESTful Web 服务?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 ASP.NET 中创建持久性 cookie?

如何在 Web ASP.NET (.NET Framework) 中创建启动文件?

如何在 ASP.Net 中创建必须是通用的数据访问层?

如何在asp.net c#中创建连接字符串

如何在 ASP.NET MVC 中创建 CheckBoxListFor 扩展方法?

如何在 C# Asp.net MVC 中创建 websocket 客户端?