WCF 和 ADO.Net 数据服务在哪里?

Posted

技术标签:

【中文标题】WCF 和 ADO.Net 数据服务在哪里?【英文标题】:Where WCF and ADO.Net Data services stand? 【发布时间】:2010-09-08 02:59:22 【问题描述】:

我对 ADO.Net 数据服务有点困惑。

它只是用于创建 RESTful Web 服务吗?我知道 WCF 始于 SOAP 世界,但现在我听说它对 REST 有很好的支持。 ADO.Net 数据服务也是如此,如果您无法从面向资源的视图中查看所有内容,您可以使其在 RPC 模型中工作。

至少从我最近看到的演示来看,ADO.Net 数据服务似乎是在服务器上的 WCF 堆栈上构建的。如果我错了,请纠正我。

我不打算发起 REST 与 SOAP 的辩论,但我想事情不再那么清晰了。

关于在哪里使用什么的任何建议或指南?

【问题讨论】:

【参考方案1】:

在我看来,ADO.Net 数据服务用于创建与您的域模型紧密结合的 restful 服务,即模型本身是发布的,而不是某种形式的 DTO 等。

将它用于 RPC 风格的服务似乎不太合适,但不幸的是,即使是一些非常基本的功能(例如能够执行过滤计数等)也不可用,这通常意味着您最终会使用一些 RPC 来满足您的客户的要求,即您可以显示分页网格等。

WCF 3.5 pre-SP1 是一个相当薄弱的 RESTful 平台,在 SP1 中,Uri 模板和 ATOMPub 支持的可用性都得到了改进,因此它变得更加强大,但它们并没有真正提供任何优雅的解决方案同时支持说 JSON、XML、ATOM 甚至更深奥的东西,比如像 CSV 这样的有效负载,而不必使用 URL 重写和不同的扩展名、方法名称修改等 - 而不是仅仅根据标题选择序列化器/反序列化器请求。

使用 WCF,仍然很难创建在更自然的宁静庄园中工作的服务,即资源包括 url,并且您可以通过导航它们来转换状态 - 这有点笨拙 - ADO.Net 数据服务做得很好有了它的 AtomPub 支持。

我的建议是使用 Web 服务,它们自然是服务并且强制执行强大的服务边界,将 ADO.Net 数据服务用于丰富的 Web 样式客户端(网站、ajax、silverlight),其中 url 查询的可组合性可以节省大量管道,并且您的域模型非常基本......如果您需要完全控制信息,即如果您要发布 API其他开发者在社交平台等上消费。

我的 2ø 值!

【讨论】:

【参考方案2】:

在处理根本不与数据库交互的代码时,使用 WCF 的 rest 绑定非常有效。 HTTP 动词不必总是与数据提供者背道而驰。

【讨论】:

【参考方案3】:

实际上,有一些选项可以过滤和跳过以获取类似页面的功能。

See here:

【讨论】:

以上是关于WCF 和 ADO.Net 数据服务在哪里?的主要内容,如果未能解决你的问题,请参考以下文章

WCF REST 与 ADO.NET 数据服务

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

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

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

实体框架寻找 ADO.NET 提供程序 SqlServerCe.3.5 而不是 4.0

asp.net和ado.net有啥区别?