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 数据服务