WCF Data Service 使用小结 —— 了解OData(一)
最近做了一个小项目,其中用到了 WCF Data Service,之前是叫 ADO.NET Data Service 的。关于WCF Data Service,博客园里的介绍并不多,但它确实是个很好的框架。可以很方便地通HTTP来访问数据库,如果你是做富客户端开发的,用它绝对能大大减少你 的工作量。出于对这个框架的喜爱,于是把自己的一些使用经验写下来,并且希望有更多的人能够用上。
OData简介
说 起 WCF Data Service ,不得不说的是 OData。对于一个标准的 Web 服务,它往往会提供了一些功能,比如说:订货、退货这些,然后使用者通过HTTP协议来使用这些功能。这是面向服务的基本思想,然而面前服务有一些缺点, 很多时候,没法准确预测到用户需要什么。因此总是要不断地增加新的接口,不断地修改返回的对象。
另一种方法是所谓的资源为导向的架构(ROA),暴露Web服务的资源,并且用户能够对各种对资源进行实时的查询,具有表现数据和整合数据的能力。类似于使用 SQL 在数据库中查询数据。唯一的区别是,ROA你通过URL创建查询。
OData是一个协议,规定公开数据的Web服务的特点。下面这段话是OData的定义
Open Data Protocol (开放数据协议,OData)是用来查询和更新数据的一种Web协议,其提供了把存在于应用程序中的数据暴露出来的方式。OData运用且构建于很多 Web技术之上,比如HTTP、Atom Publishing Protocol(AtomPub)和JSON,提供了从各种应用程序、服务和存储库中访问信息的能力。OData被用来从各种数据源中暴露和访问信息, 这些数据源包括但不限于:关系数据库、文件系统、内容管理系统和传统Web站点。
OData协议概述
正如上面所提到的,OData服务通过Web服务来透露所提供的资源。然后您可以通过URL访问这些资源。 OData 协议指明了如何通过HTTP来查询数据。基本原则是,你可以输入某些带参数的 URL 来对资源进行查询。
下面是一些你可以使用的 OData 公共服务,更多可以使用的 OData 服务,你可以通过访问 OData 的官网来获得。
- http://services.odata.org/WebSite/OData.svc/
- http://services.odata.org/OData/OData.svc/
- http://services.odata.org/Northwind/Northwind.svc/
在介绍使用 OData 协议进行查询时,将会使用这些公开的 OData 服务。下面以 http://services.odata.org/Northwind/Northwind.svc/
为例,在浏览器中输入刚网址,你将会看到
从上图中你可以看到该服务提供了 Products、Advertisements、Categories、Suppliers 这些资源。通过输入下面这些 URL 即可对这些资源进行访问。例如:
- http://services.odata.org/Northwind/Northwind.svc/Products
- http://services.odata.org/Northwind/Northwind.svc/Categories
- http://services.odata.org/Northwind/Northwind.svc/Suppliers
这些查询,将会返回该资源的所有基于 XML-Atom 格式的数据。例如下图是 Products 的数据。
格式输出的数据
默认的格式是 XML-Atom,当然,你也可以其它格式,当前还支持 JSON 格式。只要在URL上添加 $format=json 参数,即可获得 json 格式的数据。
- http://services.odata.org/Northwind/Northwind.svc/Products?$format=json
- http://services.odata.org/Northwind/Northwind.svc/Categories?$format=json
- http://services.odata.org/Northwind/Northwind.svc/Suppliers?$format=json
选取字段
默认情况下,是会返回所有字段的,但很多时候,你可能只是需要获取其它的某些字段。例如下面的查询中只返回 ID 和 Name 字段。
- http://services.odata.org/Northwind/Northwind.svc/Products?$select=ProductID,ProductName&$format=json
展开
很多时候,我们还需要将关联的导航属性取出来。打开下面的 URL:http://services.odata.org/Northwind/Northwind.svc/$metadata
从下面这个图可以看到,Product 还有 Category、Order_Details、Supplier 三个导航属性。
通过 expand 参数,可以把相关的导航属性的数据一并取出。输入 http://services.odata.org/Northwind/Northwind.svc/Products?$format=json&$expand=Supplier
当然,你也可以一次展开多个导航属性,多个导航属性之间使用“,”分隔,例如:
ttp://services.odata.org/Northwind/Northwind.svc/Products?$format=json&$expand=Supplier,Category
分页
通过 $top 和 $skip 参数,可以进行分页显示,例如:
http://services.odata.org/Northwind/Northwind.svc/Products?$format=json&$skip=10&$take=10
过滤
使用 $filter参数,可以对数据进行过滤,例如:
http://services.odata.org/Northwind/Northwind.svc/Products?$format=json&ProductId gt 4
排序
使用 $orderby 参数,可以对数据进行排序,例如:
http://services.odata.org/Northwind/Northwind.svc/Products?$format=json&$orderby=Product
升序
http://services.odata.org/Northwind/Northwind.svc/Products?$format=json&$orderby=Product asc
降序
http://services.odata.org/Northwind/Northwind.svc/Products?$format=json&$orderby=Product desc
关于关键字的详细使用,可以参考 OData 官网的文档。
http://www.odata.org/documentation/odata-v2-documentation/uri-conventions/
WCF Data Service 使用小结 —— 了解OData(一)的更多相关文章
- WCF Data Service 使用小结(二) —— 使用WCF Data Service 创建OData服务
在 上一章 中,介绍了如何通过 OData 协议来访问 OData 服务提供的资源.下面来介绍如何创建一个 OData 服务.在这篇文章中,主要说明在.NET的环境下,如何使用 WCF Data Se ...
- WCF Data Service 使用小结 (一)—— 了解OData协议
最近做了一个小项目,其中用到了 WCF Data Service,之前是叫 ADO.NET Data Service 的.关于WCF Data Service,博客园里的介绍并不多,但它确实是个很好的 ...
- 使用WCF Data Service 创建OData服务
使用WCF Data Service 创建OData服务 在 上一章 中,介绍了如何通过 OData 协议来访问 OData 服务提供的资源.下面来介绍如何创建一个 OData 服务.在这篇文章中,主 ...
- WCF Data Service
WCF Data Service:http://www.cnblogs.com/shanyou/category/240225.html
- 我的WCF Data Service 系列 (一、为什么要有WCF Data Service)
开篇先说两名题外话, 在博问上,经常看到有个问性能问题,比如Entity Framework的性能行不行啊之类的. 其实这个行不行,关键还是看对象,一夜家族的老七可能勉强吃点蓝片片,也就行了,可真要让 ...
- 调用WCF Data Service的几点Tips
使用Linq实现sql in statement的时候,用EF的时候可以通过Contains.Exists的方法实现.但是在使用WCF Data Service的context的时候,会报不支持该方法 ...
- WCF Data Services 5.0 for OData V3
https://www.microsoft.com/en-us/download/details.aspx?id=29306 VS 2010 下 安装 WCF Data Services 5.0 en ...
- Silverlight通过Wcf Data Service访问数据库之ADO.NET Entity Framework篇
- 为 Oracle Database 开发 WCF Data Services 和 OData 应用程序
为 Oracle Database 开发 WCF Data Services 和 OData 应用程序 本教程包含以下部分: 目的 所需时间 概述 先决条件 创建新的网站项目 ...
随机推荐
- 深入理解SELinux
目录(?)[+] 1. 简介 SELinux带给Linux的主要价值是:提供了一个灵活的,可配置的MAC机制. Security-Enhanced Linux (SELinux)由以下两部分组 ...
- Ubuntu 14.10 下查看系统硬件信息(实例详解)
linux查看系统的硬件信息,并不像windows那么直观,这里我罗列了查看系统信息的实用命令,并做了分类,实例解说. cpu lscpu命令,查看的是cpu的统计信息. blue@blue-pc:~ ...
- linux下vi命令
Vi共分三种模式,分别是“一般模式”.“编辑模式”与“命令行命令模式”. 1.一般模式:vi处理文件时,一进入该文件就是一般模式.在这个模式中,可以使用“上下左右”键来移动光标,可以使用“删除字符”或 ...
- VBS_For_next
指定循环次数,使用计数器重复运行语句,语法结构如下: 1 2 3 4 5 For counter = start To end [Step step] [statements] [Ex ...
- CRM客户关系管理系统 ——客户联系人添加(十五)
需求描述: 1.业务员自己可以查看属于自己的客户信息 2.客服部经理可以查看查看所有客户信息 3.其他人员不得查看客户信息 效果截图:
- div居中问题
首们需要position:absolute搜索;绝对定位. 而层的定位点,使用外补丁margin负值的方法. 负值的大小为层自身宽度高度除以二. div { position:absolut ...
- select2美化下拉单
http://www.51xuediannao.com/js/jquery/select2.html http://www.51xuediannao.com/demo.php
- Inno如何在安装完成时删除指定的文件夹(下的所有文件及子目录)??
删除安装目录下的任意文件夹及下的所有文件及子目录,或者删除指定目录的文件夹,要如何做到呢?谢谢!! //删除文件 用 DeleteFile 只能删除一个文件,不能使用通配符来删除多个文件Dele ...
- [转]设计模式(22)-Strategy Pattern
一. 策略(Strategy)模式 策略模式的用意是针对一组算法,将每一个算法封装到具有共同接口的独立的类中,从而使得它们可以相互替换.策略模式使得算法可以在不影响到客户端的情况下发生变化. 假 设现 ...
- jQuery对象与DOM对象之间的转换
刚开始学习jQuery,可能一时会分不清楚哪些是jQuery对象,哪些是DOM对象.至于DOM对象不多解释,我们接触的太多了,下面重点介绍一下jQuery,以及两者相互间的转换. 什么是jQuery对 ...