
Where WCF and ADO.Net Data services stand?我对ADO.Net数据服务有些困惑。 这仅仅是为了创建RESTful Web服务吗?我知道WCF始于SOAP世界,但现在我听说它对REST有很好的支持。 ADO.Net数据服务也是如此,如果您不能从面向资源的视图中查看所有内容,则可以使它在RPC模型中工作。 至少从我最近看到的演示中可以看出,ADO.Net数据服务看起来是建立在服务器上的WCF堆栈上的。如果我错了,请纠正我。 我不打算开始进行REST与SOAP的辩论,但我想事情不再那么明确了。 有关在何处使用什么的任何建议或准则? 在我看来,ADO.Net数据服务用于创建与您的域模型紧密匹配的静态服务,即模型本身是发布的,而不是说某种形式的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数据服务用于URL的可组合性丰富的Web样式客户端(网站,ajax,silverlight)查询可以节省大量资源,并且您的域模型非常基础...如果您需要对信息进行完全控制(例如,如果要发布信息),则可以滚动自己的REST层(也许使用MVC框架作为起点)供其他开发人员在社交平台等上使用的API。 我的2?值得! 在处理根本不与数据库交互的代码时,使用WCF的rest绑定非常有效。 HTTP动词并不总是必须与数据提供者相对。 实际上,有一些选项可以进行过滤和跳过,以获取类似功能的页面。 请参阅此处: |