微软已经做了一项精明的工作,没有在SOA / Web开发的精彩世界中概述数据服务的实际位置。
所以我的问题是WCF数据服务是否可以通过外部客户端使用?有没有人听说有人在服务器端使用它们(即Web服务的数据库访问)?
简单场景使用BO业务对象的一般分层架构(括号表示层之间传递的内容)
(XML)WCF服务 - > (BO)业务逻辑 - > (BO)Dao - >实体框架
或使用数据服务,DS BO将被建模为在数据服务中使用的业务实体。
(XML)WCF服务 - >(BO)业务逻辑 - > (BO)WCF数据服务 - > (DS BO)服务器
我看不到后者的用途,除非很多情况下人们会通过您的数据服务层与服务层访问您的数据?
想到任何人,任何有助于支持它的参考文档都会很有用。
我正在寻找帮助其他人的优点/缺点,例如我定义何时/何地使用数据服务。
答案 0 :(得分:3)
不要做第二次。
WCF数据服务接口基于Atom Pub,它基于REST,旨在面向客户端。
这是一个关键原因。您不能通过WCF数据服务接口进行两阶段提交事务,我希望WCF团队永远不会尝试启用它。
WCF数据服务是将数据暴露给远程客户端,而不是作为体系结构中的层。
答案 1 :(得分:3)
这是我试图概述我在这个主题上发现的一切。
Data Services的目的是通过Web URI公开某种类型的资源。通过标准HTTP谓词(GET,POST,PUT,DELETE)访问/更改所有数据。
DS的标准响应(完全可配置)是JSON / Atom。
开箱即用的数据服务风格旨在成为需要通过网络访问其数据的任何类型客户端的后端访问层。
Data Services支持添加额外的业务逻辑(通过服务操作/拦截器),但通常用于业务逻辑有限的情况。
总而言之,数据服务旨在面向客户,您将公开您的数据,以便可以通过Web从其他机构访问它。虽然您可以强制数据服务适合后端服务器数据访问层,但只有在找到合理的理由时才应该这样做。随着数据服务带来了许多不必要的开销性能和编码。
我还没有找到任何资源(博客或文章),建议将它们用作服务器端应用程序上的dao层。
在服务器端使用数据服务的案例:
1)更容易版本化数据服务。我可以发布实体模型的不同版本,而不会影响使用它的每个人(有人可能会说你只需使用ADO.NET实体模型就可以做更多工作)
2)希望能够访问较低级别的数据。您允许后门访问您的数据库。在高级别,您将公开业务服务和后门数据访问服务。可能存在这样的情况:另一个域在其数据模型中仅具有共享数据的子集,并且需要过滤模型中的某些内容。数据服务允许您通过uris普遍地与VIA交谈。
资源
White Paper Using Microsoft ADO.NET Data Services
ADO.NET Data Services Overview
Simplifying our n-tier development platform: making 3 things 1 thing
答案 2 :(得分:0)
在数据服务上设置数据访问层是一种自杀。 WCF数据服务适用于远程客户端。就是这样。
答案 3 :(得分:-3)
记住,“客户”一词具有广泛的含义,并且可以具体包括后端系统,因此从这个意义上说,简短的答案是肯定的。我没有听说有人在服务员那边使用它们,但没有理由不这样做; RSS用于在系统之间联合数据,WCF数据服务将是另一种方式。所以我的问题很简单,就是WCF数据 旨在通过使用的服务 客户呢?或者有没有人听说有人在服务器端使用它们?
也许你从一个以技术为中心的观点来看这个,当你真的需要更全面地思考时? WCF数据服务只是一个工具 - 在适当的地方使用它们。
查看一些high-level overview docs,看起来WCF数据服务有很多可能的应用程序。