我对ADO.Net数据服务感到有点困惑。
它只是用于创建RESTful Web服务吗?我知道WCF在SOAP世界中开始,但现在我听说它对REST有很好的支持。 ADO.Net数据服务也是如此,如果您无法从面向资源的视图中查看所有内容,则可以在RPC模型中使用它。
至少从我最近看到的演示看来,ADO.Net Data Services看起来像是在服务器上的WCF堆栈上构建的。如果我错了,请纠正我。
我不打算开始一场REST与SOAP的辩论,但我想事情已经不那么清楚了。
有关在何处使用的建议或指南?
答案 0 :(得分:2)
在我看来,ADO.Net数据服务用于创建与您的域模型紧密结合的休息服务,即模型本身已发布,而不是说某种形式的DTO等。
将它用于RPC样式服务看起来不太合适,但遗憾的是,甚至一些非常基本的功能,如能够执行过滤计数等等都不可用,这通常意味着你最终会使用一些RPC来满足您的客户的要求,即您可以显示分页网格等。
WCF 3.5 pre-SP1是一个相当弱的RESTful平台,在Uri模板和ATOMPub支持的可用性方面都有所改进,因此它的功能越来越强大,但它们并没有真正提供任何优雅的解决方案。支持说JSON,XML,ATOM甚至像CSV这样的有效载荷更加深奥,不得不使用URL重写和不同的扩展,方法名称等等 - 而不是只选择基于标题的串行器/解串器请求。
使用WCF仍然很难创建在更自然的宁静庄园中工作的服务,即资源包括网址,并且您可以通过浏览它们来过渡状态 - 它有点笨重 - ADO.Net数据服务做得很好虽然它支持AtomPub。
我的建议是使用Web服务,它们自然是服务和强大的服务边界,使用ADO.Net数据服务为富网络式客户端(网站,ajax,silverlight),其中url查询的可组合性如果您需要完全控制信息,即如果您要发布API,那么可以节省大量的管道并且您的域模型非常基础...并且可以使用自己的REST层(可能使用MVC框架作为起点)其他开发者在社交平台上消费等。
我的2价值!
答案 1 :(得分:1)
使用WCF的rest绑定在处理根本不与数据库交互的代码时非常有效。 HTTP动词并不总是违背数据提供者。
答案 2 :(得分:0)
实际上,有一些选项可以过滤和跳过以获得类似于其他功能的页面。