写点什么

OData 4.0 的新特性

  • 2013-06-04
  • 本文字数:2107 字

    阅读完需:约 7 分钟

OData 是微软支持的一种查询标准,它的第四版使用了 REST 规范,最近已经被 OASIS 委员会接受。公开审查期会截至六月二日,微软期望 OASIS 在今年晚些时候采纳该标准。

这个标准的其他赞助商包括 SAP、IBM、Progress Software、美国东北大学和 Citrix。SAP 当前提供了针对Java 的开源OData 库。对于JavaScript, JayData 提供了开源和商业支持的版本。

1) 数据模型变更 对于在 CSDL 中如何表达数据模型有一些改变,特别是:

a) 对如何表达关系做出了显著的变更和简化。关系定义现在作为导航属性(navigation property)的一部分来表达,而不是指定单独的连接和连接集。另外,这可以支持单向关系和真正的包含。

b) 顶级“已命名实体(Named Entities)”让你可以在实体容器上暴露出一个单例实体。

c) 函数(function)和动作(action)现在都定义在 schema 中(像实体和复杂类型),并且可能会从你的实体容器通过导入函数和动作来暴露。

d) 服务文档现在除了包含没有参数的函数导入之外,还可以包含顶级的“已命名实体”。

e) 我们通过实体标签(etag)向元数据增加了版本控制。

f) 我们改善了对元素的定义,从而更新了分布式数据模型,让 schema 可以引用其他 schema,并确保那个实例可以总是指回到 JSON 和 ATOM 中的元数据。

g) 我们开始定义服务如何可以把元数据暴露为服务。这是最近增加的,我们希望可以获得关于那个数据模型的反馈。

h) 我们放松了复杂类型属性上的一些约束;实体的关键属性现在可以在包含的复杂类型上,就像导航属性和引用约束一样。我们还为复杂类型定义了继承的语义。

i) 我们允许在没有键值的情况下定义抽象实体类型;如果没有指定的话,那么第一个非抽象的继承类就必须指定一个键值。

j) 我们围绕注解做出了一些修改。特别是,我们合并了 TypeAnnotations 和 ValueAnnotations,增加了默认值,并应用其上,另外还开始定义核心词汇表,以获取模型在行为上的一些方面(像针对 identity 的 server-generated 属性、计算字段等等。)

2) 数据类型变更 我们优化了一系列基本类型(特别是日期和时间的系列数据类型)。特别是:

a) 我们删除了 Edm.Float(Edm.Single 的同义词)和 Edm.DateTime(使用 Edm.DateTimeOffset),不赞成使用 Edm.Time,推荐使用 Edm.Duration 和 Edm.TimeOfDay。

b) 我们为新数据类型增加了相关的标准函数,还增加了 now()、mindatetime() 和 maxdatetime() 函数。

c) 我们为枚举定义了文字型语法以及序列化格式。

d) 我们定义了抽象的“Edm.EntityType”、“Edm.ComplexType”、“Edm.PrimitiveType”,以及每种类型的集合,这可以用于数据模型中,其中实体或复杂或基本的类型是未知的。真正的类型会在实际运行时指定。

e) 我们增加了实体引用(entity reference)的概念,那可以在很多地方替代实体来使用和返回。

f) 我们为命名基本类型和固定的系列内容增加了“TypeDefinition”的概念。

3) URL 变更

a) 我们修改了如何表达扩展(expand)的方式。$expand 现在采用了扩展选项,包括 $filter(用于过滤扩展)、$orderby 等等,还可以使用 $expand 和 $select 作为扩展选项,用于内嵌的扩展和投影,而不在顶级 $expand 和 $select 通过导航属性来表示路径。我们还为递归扩展增加了 $levels。

b) 我们为在资源上做全文搜索增加了 $search 的系统查询选项。

c) 我们用 $count 替换了 $inlinecount,它可以应用给集合或者多个导航属性,从而进行过滤,并且可以用于返回相关实体的数量,而不是实体本身的数量。

4) 语义 我们围绕如何处理请求改善了一些语义。特别是:

a) 我们增加了一致性小节来定义一致性的不同级别。这是我们期待获得反馈的另一个方面。正如你所说,说明书很庞大,我们想要确保实现人员知道,为了达到一致性,并不需要实现实体的规格说明。

b) 我们更新了 $batch 相关的很多行为,包括它如何表现为同步结果,以及对错误的继续执行还是失败的引用。

c) 我们强烈推荐使用 PATCH 而不是 PUT 来更新实体和复杂类型,并澄清了 PATCH 对复杂类型的行为(应该只更新指定的属性)。

d) 我们在最新的 IETF 草案中增加了 Prefer 头,并为客户端增加了大量引用,可以提示服务所需的行为。

e) 我们对不存在资源的 URL 做 PUT 或 PATCH,从而支持 UPSERT。

5) 新服务方面 我们增加了对服务新的(可选的)支持:

a) 异步执行通过 return-async 请求头来定义,这遵循了 IETF 中最新的想法。

b) 变更跟踪(Delta)支持现在定义为说明书的一部分,从而对之前取得的结果值返回差别。语义是围绕对相关实体的变更跟踪来定义的,并为了表现已删除的实体和增加或删除的链接来细化,并针对每种格式来记录。

6) 格式

a) 我们不推荐使用旧的“JSON Verbose”格式,而推荐使用新的、更整洁的 JSON 格式。

b) 我们不需要服务来支持 ATOM;一个服务必须实现 ATOM 或者 JSON;我们推荐 JSON,并在最高的一致性级别上需要它。

c) ATOM 现在包含了响应的元数据 URL,如果类型信息无法从响应的元数据 URL 中继承到,那么就可能会包含导航属性的元数据 URL。

2013-06-04 01:398813
用户头像

发布了 340 篇内容, 共 138.1 次阅读, 收获喜欢 13 次。

关注

评论

发布
暂无评论
发现更多内容

(价格准确)淘宝推荐引擎揭秘:商品详情页API背后的智能算法

代码忍者

API 安全 API 文档 API 测试

从知识图谱到 GraphRAG:探索属性图的构建和复杂的数据检索实践

可信AI进展

人工智能

修改手机定位软件--AnyGo中文激活版 AnyGo永久激活破解安装

Rose

Mac软件 AnyGo 虚拟机定位

【附源码+教程】基于华为云物联网设计的人工淡水湖养殖系统

DS小龙哥

8月月更

科研数据绘图分析 GraphPad Prism10激活版 for mac/win

Rose

GraphPad Prism 10 GraphPad Prism破解版 GraphPad Prism下载 科研数据绘图

有了MES、ERP,质量管理为什么还需要QMS?

万界星空科技

万界星空科技 QMS 质量管理QMS系统 生产质量管理 产品质量管理

Topogun 3 for mac安装教程(强大的模型拓扑工具)v27840激活版

Rose

淘宝商品详情数据接口:价格数据实时获取方法

tbapi

淘宝API接口 淘宝商品详情接口 淘宝商品价格接口 淘宝实时价格接口

局域网远程桌面控制软件有哪些

科技热闻

开发者必看:Temu商品列表API接口详解应用

tbapi

temu temu API temu商品列表接口 关键词搜索temu列表接口

阿里云实时计算Flink在多行业的应用和实践

阿里云大数据AI技术

大数据 flink 实时计算

科学文献管理endnote 21激活码(endnote 21大客户授权版许可证)

Rose

endnote 21激活码 endnote 21大客户授权版 科学文献管理

后端开发和你聊聊JVM如何优化

京东零售技术

后端 企业号 8 月 PK 榜 #JVM

化学绘图神器 ChemDraw for Mac破解版 兼容m/intel芯片

Rose

ChemDraw破解版 ChemDraw化学绘图 ChemDraw下载安装

(优惠券数据)京东商品详情API深度解析:品牌与分类信息的智能检索与应用

代码忍者

API 安全 API 文档 API 测试

扣子专业版:低代码能力+专业级SLA,让“企业级 AI Bot”更快落地

新消费日报

3D渲染和动画制作KeyShot 2024.2 中文版 for mac/win破解版下载 含许可证文件

Rose

渲染 动画制作 KeyShot 2024许可证 KeyShot 2024.2安装教程 KeyShot 2024 破解下载

CleanShot X for mac:屏幕全域截图、窗口截图、屏幕、标注、滚动截图

Rose

mac截图工具 CleanShot X for mac CleanShot X下载 CleanShot X截图

FlowJo 10 for Mac 流式数据分析软件 破解版安装教程

Rose

FlowJo 10下载 FlowJo破解版 FlowJo安装教程

WebStorm 2024 mac中文永久密钥 WebStorm安装教程 支持M1/M2/M3

Rose

WebStorm中文版 WebStorm 2024下载 WebStorm 2024破解版 WebStorm密钥

5年质保!英特尔宣布:为第13和14代酷睿台式处理器延长2年保修

E科讯

Autodesk Maya 2025.2中文版最新浮动许可证 maya2025安装教程分享

Rose

Maya 2025中文版 Maya 2025安装教程 玛雅2025破解版 Maya 2025浮动许可 三维动画

OData 4.0的新特性_SOA_Jonathan Allen_InfoQ精选文章