再谈谈ADO.NET Data Service

ADO.NET Data Service是.NET Framework 3.5中新增的一个特性,其他它就是一个WCF服务。但它的特点就是可以根据一个模型,自动地实现WCF的所有方法。

下面这个链接比较有用(主要是总结得比较直观易懂),有兴趣的朋友可以照着练习一下

http://kb.cnblogs.com/page/43963/?page=1

下面我谈谈个人的几点总结

1. ADO.NET Data Service的出现有它的必然性。

微软在.NET 3.5中重拳出击,不断地推出了LINQ TO SQL和ADO.NET Entity Framework,这两者都作为数据模型,当然可以用在客户端里面。但从架构上说,并不是很适合在客户端直接使用,而是应该分层使用。

那么,如果要分层,是不是要创建一个Web Service亦或是WCF Service呢?这是一个正确的思路,但随之而来的问题就是,针对EF这类数据模型的操作千奇百怪,如果需要为每个方法都单独实现一次,再公开,显然是费时费力的。与此同时,EF这些模型又不可以直接被远程访问。

所以就催生了ADO.NET Data Service。你就这么理解吧,它其实就是一个WCF服务,只不过是自动实现的WCF服务,它所实现的依据是一个数据模型(可以是LINQ TO SQL,也可以是ADO.NET Entity Framework)

2. 主要的特点

ADO.NET Data Service是所谓的微软在REST方面迈出的重要一步。关于REST的详细信息,请参考我另外一篇blog: http://www.cnblogs.com/chenxizhang/archive/2009/04/24/1442553.html

需要注意的是,REST是一种设计风格而不是一个标准。REST通常基于使用HTTPURI,和XML以及HTML这些现有的广泛流行的协议和标准。

  • 资源是由URI来指定。
  • 对资源的操作包括获取、创建、修改和删除资源,这些操作正好对应HTTP协议提供的GET、POST、PUT和DELETE方法。
  • 通过操作资源的表形来操作资源。
  • 资源的表现形式则是XML或者HTML,取决于是读者是机器还是人,是消费web服务的客户软件还是web浏览器。当然也可以是任何其他的格式

也就是说访问ADO.NET Data Service的方式可能是很直观的,它甚至可以直接根据URL访问

DataService 支持URL方式访问

格式

http://[Url]/[ServiceName]/[EntityName]/[NavigationOptions]?[QueryOptions]

Url: 数据服务所在的网址

ServiceName: 数据服务的名称

EntityName: Entity 名称或是 Service 方法名称

NavigationOptions: 查询 Entity 中关联的设定

QueryOptions: 查询的选项

具体的语法,还可以参考这里的说明

http://kb.cnblogs.com/page/43963/?page=5

3. ADO.NET Data Service的宿主环境

我们都知道WCF需要宿主环境。那么ADO.NET Data Service会可以,或者需要宿主在什么环境中呢?

答案是:ADO.NET Data Service需要宿主在ASP.NET应用程序中。而且无需进行任何特殊的配置。

4. 如何为ADO.NET Data Service做身份验证

针对实体或者方法的授权,是通过下面代码实现的

image

但这样做不能将这些实体与用户进行关联。

至于使用该服务的用户验证和授权,还有待研究。虽然它是一个WCF的服务,但其实与其他标准的服务还是有差别的。这个部分还不是很清楚怎么做

原文地址:https://www.cnblogs.com/chenxizhang/p/1459533.html