WCF和ADO.Net数据服务在哪里?
我对ADO.Net数据服务感到困惑。
它仅用于创建RESTful Web服务吗?我知道WCF始于SOAP世界,但现在我听说它对REST有很好的支持。 ADO.Net数据服务也是如此,如果我们不能从面向资源的视图中查看所有内容,则可以使它在RPC模型中工作。
至少从我最近看到的演示中可以看出,ADO.Net数据服务看起来是建立在服务器上的WCF堆栈上的。如果我错了,请纠正我。
我不打算开始进行REST与SOAP的辩论,但我想事情不再那么明确了。
关于在哪里使用什么的任何建议或者准则?
解决方案
回答
在我看来,ADO.Net数据服务用于创建与域模型紧密匹配的静态服务,即模型本身是发布的,而不是某种形式的DTO等。
将其用于RPC样式服务似乎不太合适,尽管不幸的是,即使某些非常基本的功能(如能够执行过滤计数)等都不可用,这通常意味着我们最终只能使用某些RPC来满足以下要求:客户,即我们可以显示分页网格等
WCF 3.5 SP1之前的版本是一个相对较弱的RESTful平台,在SP1方面,Uri模板和ATOMPub支持都得到了改进,从而使其功能越来越强大,但是它们实际上并没有提供任何优雅的解决方案来支持JSON ,XML,ATOM或者什至更深奥的东西(例如CSV之类的有效负载),而不必使用URL重写和不同的扩展名,方法名称修饰等,而只需根据请求的标头选择序列化器/反序列化器即可。
使用WCF仍然很难创建在自然宁静的庄园中工作的服务,即其中的资源包括url,并且可以通过浏览它们来转换状态,这是一个笨拙的ADO.Net数据服务通过其AtomPub支持可以很好地做到这一点。 。
我的建议是使用Web服务,因为它们自然是要强制执行的服务和强大的服务边界;对于丰富的Web样式客户端(网站,ajax,silverlight),请使用ADO.Net数据服务,其中url查询的可组合性可以节省如果我们需要对信息的完全控制,即是否要发布供其他开发人员使用的API,则可以使用很多管道,并且域模型是非常基本的...并滚动自己的REST层(也许使用MVC框架作为起点)在社交平台等上消费
我的2?值得!
回答
当使用根本不与数据库交互的代码时,使用WCF的rest绑定非常有效。 HTTP动词并不总是必须与数据提供者背道而驰。
回答
实际上,除了其他功能外,还有一些选项可以进行过滤和跳过,以获得类似页面的功能。
看这里: