WCF REST 与 ADO.NET 数据服务

Posted

技术标签:

【中文标题】WCF REST 与 ADO.NET 数据服务【英文标题】:WCF REST vs. ADO.NET Data Services 【发布时间】:2010-09-24 23:31:07 【问题描述】:

有人可以比较和对比 WCF Rest 服务与 ADO.NET 数据服务吗?有什么区别,什么时候用?

谢谢,

雷。

编辑:感谢第一个答案,只是为了提供一些关于我想要做什么的背景知识:我有一个网络应用程序,我打算(有一天)放在云中, DAL 是使用 ADO.NET 实体框架构建的。而且,我需要确定哪种 Web 服务数据访问技术最适合我的情况。

【问题讨论】:

Google 员工注意事项:ADO.NET 数据服务 大约在一年后重命名为 “WCF 数据服务” OP的帖子。见en.wikipedia.org/wiki/WCF_Data_Services。既然我们知道 WCF 数据服务是 ODATA 的 WCF 实现,那么 "REST" 方面无论如何都是 OData 的要求,因此 WCF 数据服务是 OData,因此是 REST。在更名之前也是如此。 docs.microsoft.com/en-us/dotnet/framework/data/wcf 【参考方案1】:

我不确定我是否可以在这里给出完整的答案,但我在 PDC 花了很多时间试图自己解决这个问题,所以可以尝试一下......

这里的简短回答是,ADO.Net 数据服务旨在为 ADO.Net 框架(DataContext、Datasets、DataTables 等)提供一个接口,该接口使用 URI 和众所周知的数据与 Web 无缝集成指向您的数据。 ADO.Net 数据服务也适用于在云中对 ADO.Net 进行编程。微软的云服务“Azure”是一个新的云编程平台,将在不久的将来发布。有关云服务的更多信息,请转到 here。

我发现关于 ADO.Net 数据服务和云的一件很酷的事情是,作为数据源提供者的底层 DataContext 可以轻松配置为将您的资源指向云中,,一个本地数据库。这允许您在不更改任何代码的情况下切换 DataContext !!! (如果你说不出来,我就被这件事打动了)

WCF Rest 服务只是普通的 WCF 服务,它们添加了功能,因此可以以 RESTful 方式使用它们(URI 与 URL、HTTP 动词的使用、不同数据传输格式(如 JSON、YAML 等)的使用...... )。因此,例如,如果您有一个在 WCF 中构建的股票行情 Web 服务,而不是要求调用者使用繁重的 WSDL 实现和 ASMX,您可以只使用 WCF Rest 功能将该服务发布为 JSON 服务,然后无需指向 ASMX 资源即可通过 AJAX 使用它。有关使用 rest 的 WCF 的更多信息,请查看PDC Presentation

【讨论】:

接下来看我的帖子,最初是作为评论发布的,后来我觉得需要超过300个字符 可能应该补充一点,所有 ADO.Net 数据服务都是 WCF REST 服务 但不是所有 WCF REST 服务都是 ADO.Net 数据服务。 Google 员工注意事项: ADO.NET 数据服务在 OP 发布大约一年后重命名为 “WCF 数据服务”。见en.wikipedia.org/wiki/WCF_Data_Services【参考方案2】:

非常感谢您的洞察力!对于我的应用程序,我确实计划将它放在云中,并且我还使用 ADO.NET Entity Framework 来构建我的 DAL,所以听起来 ADO.NET 数据服务是我可以选择的。

我发现关于 ADO.Net 数据服务和云的一个很酷的事情是,作为数据源提供者的底层 DataContext 可以轻松配置为将您的资源指向云中,或者,一个本地数据库.这允许您在不更改任何代码的情况下切换 DataContext !!! (如果你看不出来的话,我就被打动了)

关于 ADO.NET 数据服务 + EF 如何在云中工作,您能否就这一点多说一些?

【讨论】:

【参考方案3】:

如果您想开发和交付以数据为中心的服务,在某些情况下,WCF REST 入门工具包和 WCF 数据服务都可以实现很多功能,因为 WCF 的这两种技术都可以以一种方式交付您的数据RESTful 方式(例如,具有 URL 和标准数据格式(如 xml 和 json)的可寻址内容)。它们还配备了一系列 .NET 类,用于处理和处理大量网络和 Web 请求,例如 HTTP 拦截器和缓存。

然而,WCF 数据服务拥有而非 REST 入门工具包的一个优势是 WCF 数据服务可以以 .NET 实体对象的形式以标准格式公开其数据(这是实现的由 OData 协议)。所以我想 WCF 数据服务会在很多现实世界的场景中为您提供更通用的性能。

【讨论】:

【参考方案4】:

ADO.Net 数据服务和 WCF REST 服务之间的主要区别之一是 REST 服务是轻量级的,您可以通过编写单独的方法/函数来自定义获取什么,而 ADO.Net 数据服务更像是一个转储,你得到了一切......所以对于 web 和 RIA 应用程序,在我看来,WCF Rest 服务是最佳和优化的选择......

【讨论】:

【参考方案5】:

WCF 数据服务(以前称为 ADO.NET 数据服务), http://msdn.microsoft.com/en-us/data/aa937697.aspx

【讨论】:

以上是关于WCF REST 与 ADO.NET 数据服务的主要内容,如果未能解决你的问题,请参考以下文章

您可以将 WCF 数据服务(ne OData、ne Astoria、ne ADO.NET 数据服务)与 NetTcpBinding 一起使用吗?

使用 REST WCF 数据服务作为 SQL 报告服务的数据源

Silverlight 启用 WCF 服务、Web 服务、ADO.NET 数据服务

WCF ado.net 插入记录(最后)

ado.net 数据服务调用的 guid REST URL?

是否可以检测 .NET BCL、ASP.NET、WCF 或 ADO.NET 程序集?