学习使用ADO.NET Data Services (ADO.NET 数据服务框架)
ADO.NET Data Services Framework是在.NET Framework 3.5 SP1新推出的扩充功能,这个功能和概念在以前的.NET 1.0-.NET3.5 技术中都没有出现的新概念,它主要用途是可以很容易的将数据库服务公开在网络上,然后透过URL网址就可以对数据库进行CRUD的操作。ADO.NET Data Services能通过一个REST化的方式将数据以Web上的数据服务展示。使得应用可以以数据服务的方式展现数据,然后被应用在企业网络和互联网上的 Web客户端中。
REST (Representational State Transfer) 用最单纯的 URL 网址,就让一般客户、应用程序能直接访问、写入远程主机上的数据库。此外,微软实现 REST 的 ADO.NET Data Services,亦有一套安全控管、存取权限控管的机制,不必担心安全性的问题。
在 .NET 平台方面,未来的 .NET Framework 4.0 及 Visual Studio 2010,仍有 ADO.NET Data Services Framework 2.0 的版本,也有新的 4.0 版的 System.Data.Services 类库。
在我的博客网站 (http://blog.entlib.com/entlibforum ) 将演示如何在n-tier 应用程序中使用ADO.NET Data Servers,不过本文将重点介绍ADO.NET Data Services 的入门部分。按照如下具体操作来完成整个练习。
File > New Project > ASP.NET Web Application....
通过VS 2008 SP1 创建一个ADO.NET Data Service 是很容易的,第一步创建一个ASP.NET Web Application 项目:
上述将创建一个带有default.aspx 页面的ASP.NET 项目。如果你仅仅需要创建service,你可以删除default.aspx 文件。接着增加一个新的item到项目中,选择ADO.NET Data Service。
在本实例中我们采用了SubtextData 数据库(http://blog.entlib.com/ 开源博客平台的后台数据库),因此这里对ADO.NET Data Service 命名为 SubtextData.svc。上述步骤将自动添加System.Data.Services 和System.Data.Services.Client 到项目中。右键点击SubtextData.svc 文件,选择”设置为起始页”选项。
上述步骤自动创建的SubtextData.svc.cs 文件如下,SubtextData 类继承DataService类:
namespace MyDataService
{
    public class SubtextData : DataService< /* TODO: 在此放置数据源类名*/ >
    {
        // 仅调用此方法一次以初始化涉及服务范围的策略。
        public static void InitializeService(IDataServiceConfiguration config)
        {
            // TODO: 设置规则以指明哪些实体集和服务操作是可见的、可更新的,等等。
            // 示例:
            // config.SetEntitySetAccessRule("MyEntityset", EntitySetRights.AllRead);
            // config.SetServiceOperationAccessRule("MyServiceOperation", ServiceOperationRights.All);
        }
    }
}
增加Entity Data Model
增加ADO.NET Entity Data Model 到项目中,文件命名为 SubtextDataModel。然后,按照实体数据模型向导创建模型。这里,我们选择从数据库创建,并选择所有的数据表,完成向导操作。
 
关于ADO.NET Entity Data Model 的具体介绍,请参考如下文章:
ADO.NET Entity Framework 深入分析系列文章
上述过程创建IQueryable 数据源SubtextDataEntities。现在,我们返回Data Service类,并填充Class name,如下所示:
public class SubtextData : DataService< SubtextDataEntities >
设置数据模型中表的访问控制
下一步,我们需要控制数据模型中表的访问控制。允许对数据库中所有表进行读、写操作是一个糟糕的设计,因此我们需要在 DataServiceConfigration 中配置 EntitySetAccessRule,并传入给 InitializeService 方法。这是一个共享的方法,因此不管创建多少个SubtextData DataService,该方法仅运行一次。在通过Visual Studio 调试时,如果你修改了该方法的代码,你需要记得强制重新编译。
        public static void InitializeService(IDataServiceConfiguration config)
        {
            // TODO: 设置规则以指明哪些实体集和服务操作是可见的、可更新的,等等。
            // 示例:
            config.SetEntitySetAccessRule("*", EntitySetRights.All);
        }
上述设置允许所有人更新、插入、删除和查询模型中的所有表,可能是一个不好的设计,因此你可以调整为只读Read-only:
config.SetEntitySetAccessRule("*", EntitySetRights.AllRead);
你也可以写一些额外的方法用来查询和更新数据,我们在随后的文章会进行描述,或者你也可以直接访问MSDN - http://msdn.microsoft.com/en-us/library/cc907912.aspx。
下面我们开始在 IE 浏览器通过HTTP GET 查询数据。
通过HTTP GET 查询数据
编译运行本项目,将自动打开浏览器,并列出所有在数据模型中运行方法的实体。
http://localhost:31948/SubtextData.svc/
其中具体的端口号可能不同。

 
当我们想查询数据时,可以通过HTTP GET 在浏览器地址栏输入:
http://localhost:31948/SubtextData.svc/subtext_Content
将返回SubtextData数据库中所有博客帖子的种子(feed)。如果你使用 IE 或者Firefox浏览器,浏览器将自动对种子应用样式表CSS,不过你可以右键点击,并查看源文件就可以看到实际返回的数据。下面仅仅显示部分返回的数据:
 
如果仔细一点,你会发现上述文件也返回subtext_content 到其他表之间的关联关系。例如,你可以返回subtext_content 中特定文章的评论信息:
http://localhost:31948/SubtextData.svc/subtext_Content%2810%29/subtext_FeedBack
上述链接返回subtext_content 文章(10)的所有评论列表信息。

如果你对开发RESTful Web services 感兴趣,推荐你下载 Fiddler 工具,该工具允许你监视HTTP 数据,使用Fiddler 比 IE 更方便查看数据。

欢迎继续访问 - 学习使用ADO.NET Data Services (ADO.NET 数据服务框架) - Part 2,及下载本文范例程序。

学习使用ADO.NET Data Services (ADO.NET 数据服务框架) - Part 1相关推荐

  1. 为什么微软要推 ADO.NET Data Services

    微软在 .NET 3.5 SP1 平台上,推了一组新的数据访问 Framework,叫做 ADO.NET Data Services.微软怕程序员太闲吗?为什么要创造 ADO.NET Data Ser ...

  2. ADO.NET Data Services Framework 基础概述

    随着.NET Framework 4.0 及 Visual Studio 2010 的发布, ADO.NET Data Services Framework 2.0 的版本也将同时发布,新的.Net ...

  3. datetime插入数据_量化学习:聚宽jqdatasdk对接vnpy的数据服务

    -- 本篇文章 by 丁智 数据服务:使用聚宽jqdatasdk获取分钟数据按vnpy的Bar格式导入至mongodb中 提供downloadAllMinuteBar(),可以通过定时任务的形式,按v ...

  4. 无人驾驶算法学习(十五):高精度地图数据存储框架Lanelet2

    文章目录 1.引言 2.lanelet2特点 3.数据结构 3.1 Points 3.2 Linestrings 3.3 Polygon 3.4 Lanelets 3.5 Areas 3.6 regE ...

  5. 聚宽mysql,量化学习:聚宽jqdatasdk对接vnpy的数据服务

    数据服务:使用聚宽jqdatasdk获取分钟数据按vnpy的Bar格式导入至mongodb中 提供downloadAllMinuteBar(),可以通过定时任务的形式,按vnpy的数据格式,每日获取分 ...

  6. WCF Data Services 基础

    把最近使用的WCF Data Service和WCF RIA Service的使用例子发布在站点http://dskit.codeplex.com , 本系列文章就把WCF Data Service和 ...

  7. 分布式服务框架-原理与实践:14---流量控制-学习笔记(理论篇)

    2019独角兽企业重金招聘Python工程师标准>>> 上次学了灰度发布,这次我们学习流控. ============================================ ...

  8. HCIA-Big Data华为认证大数据工程师在线课程笔记

    文章目录 一.简介 二.HDFS分布式文件系统 三.MapReduce分布式离线批处理和Yarn资源协调 四.Spark2.x基于内存的分布式计算 五.HBase分布式NoSQL数据库 HBase架构 ...

  9. kratos mysql_kratos微服务框架学习笔记一(kratos-demo)

    本文将为您描述kratos微服务框架学习笔记一(kratos-demo),教程操作步骤: 目录 kratos微服务框架学习笔记一(kratos-demo) kratos本体 demo kratos微服 ...

最新文章

  1. 源码解析:解析掌阅X2C 框架
  2. ADO.NET与XML的结合
  3. 使用 Oracle Datapump API 实现数据导出
  4. win10 创建python虚拟环境
  5. [Machine learning] 国外程序员整理的机器学习资源大全
  6. 谷歌浏览器如何更改语言
  7. text-overflow: ellipsis; 文本溢出隐藏
  8. vue中如何实现pdf文件预览?
  9. frame边框阴影html,CSS阴影效果的比较之drop-Shadow与box-Shadow
  10. EXCEL 趋势图生成的公式应用说明
  11. WIN10系统——打开PB的帮助文档
  12. 岗位:python后端工程师
  13. Paper翻译:《A Novel Convolutional Neural Network Based Model for Recognition and Classification of App》
  14. 虚拟盘可以挂载多个服务器吗,两台云服务器挂载一个云硬盘吗
  15. 一对情侣用计算机电影,一个剧情电影,讲述一对情侣谈恋爱的故事
  16. enumerate用法
  17. 印象最深的一次服务器维护中,与服务器最深的羁绊,你有着怎样的闯荡大荒的故事?...
  18. Mac 程序员的十种武器
  19. 27岁从业软件测试5年的我被无情的辞退了
  20. python绘图用什么软件_作图用什么软件比较好?

热门文章

  1. 计算机中的进制位运算
  2. Java多线程再理解(synchronized)
  3. Kubernetes集群部署1
  4. 书写「简历」时,需要规避的错误
  5. ShellSort -- 希尔排序
  6. SQLServer 维护脚本分享(05)内存(Memory)
  7. Could not resolve this reference. Could not locate the assembly
  8. Android 中shape的使用(圆角矩形)
  9. 修改centos6.5的时区
  10. 转载文章:Microsoft 将僵尸网络威胁智能分析程序引入云中以提供近实时数据