写点什么

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:398659
用户头像

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

关注

评论

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

全面数字化时代,国有大型银行如何走好金融创新之路?

华为云开发者联盟

数据库 后端 华为云 华为云开发者联盟 企业号 4 月 PK 榜

使用CodeArts发布OBS,函数工作流刷新CDN缓存

华为云开发者联盟

云计算 后端 华为云 华为云开发者联盟 企业号 4 月 PK 榜

消息服务MNS之初见

六月的雨在InfoQ

Java 云产品 MNS 三周年连更 消息服务

瓴羊Quick BI与网易有数,看国产BI工具如何起势

夏日星河

观远数据 × Azure OpenAI,国内首个 BI Copilot 产品化应用

观远数据

ChatGPT

CSS中的各种格式化上下文-FC(BFC、IFC、GFC、FFC)

肥晨

css3 三周年连更

这些央国企在数智化转型时为何选择用友?

用友BIP

技术大会 用友iuap 用友技术大会

升级企业数智化底座,加速推进国产替代

用友BIP

技术大会 用友BIP 升级企业数智化底座

防止网页防篡改,华为云网站安全方案省心又省力

爱尚科技

护航信息安全,就看华为云网站安全方案

爱尚科技

JavaScript 对象遍历为什么要使用 hasOwnProperty 检查属性

Lee Chen

JavaScript

JMeter 并发测试和持续性压测详解

Liam

测试 压测 并发测试 测试工具

被称为大数据分析工具的瓴羊Quick BI,与传统数据分析工具有何不同?

流量猫猫头

相约用友BIP技术大会,用友iuap带您玩转数据智能

用友BIP

技术大会 用友iuap 数智化底座

各大金融企业都在用的堡垒机-行云管家堡垒机

行云管家

金融 数据安全 堡垒机

牛客网热度最高的17套一线大厂Java面试八股文!面面俱到,太全了

架构师之道

Java 面试

macbook触摸板怎么按右键

互联网搬砖工作者

Spring Security 的介绍和简单使用

会踢球的程序源

Java 后端 spring security Java进阶

​华为云网站安全解决方案,多重防御保护企业数据安全

IT科技苏辞

九科信息RPA产品bit-Worker通过信创产品评估

九科Ninetech

摄影师必备图像编辑工具:Capture One Pro 23中文版

真大的脸盆

Mac Mac 软件 图像编辑 图像编辑工具 图像处理软件

火山引擎云原生数据仓库ByteHouse技术白皮书V1.0(中)

字节跳动数据平台

数据仓库 云原生 白皮书 云数据仓库 企业号 4 月 PK 榜

保护企业网站安全,华为云网站安全解决方案有绝招

秃头也爱科技

众多企业的共同选择,华为云网站安全解决方案有哪些优势?

秃头也爱科技

MatrixOne logservice 原理解析

MatrixOrigin

分布式数据库 MatrixOrigin MatrixOne Log Service

对话 BitSail Contributor | 刘啸:参与开源,提升自我技术力

字节跳动数据平台

大数据 开源 数据集成 数据集成平台 数据引擎

前端开发:未来依旧光明 | 社区征文

海拥(haiyong.site)

三周年征文

看数据如何驱动业务增长,来用友BIP技术大会探索数据智能的力量

用友BIP

数据智能 技术大会 用友iuap 用友技术大会

企业内部培训网站为例,探索云上成本优化

华为云开发者联盟

云计算 后端 华为云 华为云开发者联盟 企业号 4 月 PK 榜

从网站安全说起,华为云为何能成为政企的“好伙伴”

IT科技苏辞

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