【IT168 资讯】OData 4与OData 2有很大差异。在使用混合数据管道时,用户需要了解它们之间的区别,然后决定你需要的是OData 2还是OData 4,或者两个都需要。
OData(开放数据协议)定义了一组用于构建和使用RESTful API的非常好的做法。 OData非常受欢迎,已经被SAP,IBM,Salesforce,Tableau,Databoom,Progress,Red Hat和Dell等众多技术和公司所采用。如果您想了解OData的基础知识,请参阅OData FAQs。
很多技术巨头都是OData委员会的原始成员之一,如IBM,Microsoft,SAP,Redhat,CA和Citrix。委员会提供可混合数据管道(Hybrid Data Pipeline),这是业界第一个不依赖于厂商的数据网关,它可以让您通过简单的操作来支持您的数据源。
OData 2和OData4之间的10个主要区别
当您考虑使用OData端点启用应用程序或数据源时,您可能不能确定应该选择OData 2、OData 3还是最新的OData 4。虽然OData 3和OData 2非常相似,但OData 4与OData 2截然不同。在最新版本中,混合数据管道可以帮助您从数据源中生成OData 2以及OData 4。了解混合数据管道的这些端点之间的差异可以帮助您做出决定。
OData 2是Microsoft Open Specification Promise(OSP),而OData 4由OASIS和ISO批准。开发人员对采用OData 2感到担忧,也正在观察OData 4的更多应用。
根据OData 2规范,必须以XML和JSON格式检索有效载荷。然而,在OData 4中,XML是可选的。因此,混合数据管道在OData 2中支持XML和JSON,在OData 4中只支持JSON。但是,仍然可以在OData 4中以XML格式检索元数据。
3. 在OData 4中,JSON数据格式允许用户控制查询响应中返回的元数据量。有三个级别的元数据支持:
A. Full:响应包含描述响应所需的所有元数据。
B. Minimal:响应元数据引用元数据文档。元在响应中不会重复元数据文档中的信息。
C. None:响应不包含元数据。应用程序必须了解响应结构。
4. 混合数据管道仅支持OData 4中的批处理请求。批量请求允许用户以单个端点请求的形式提交多个操作。操作在HTTP请求有效载荷中提交,并且可以包括单个请求和更改集。
5. OData 4新增了一种灵活搜索功能,$ search。这种搜索功能允许您查询与指定搜索表达式匹配的实体集合。与现有的过滤功能不同,该功能允许查询指定的属性或与特定条件匹配的结果,搜索特性可以将搜索表达式应用到实体的任何属性中。混合数据管道也在使用$ ddsearch功能,并将此功能扩展到OData 2。
6. $ expand系统查询选项已在OData 4中得到优化。该特性指定了与检索资源一致的相关资源。在OData 2中,如果单个值导航属性被扩展,那么如果实体是单值导航属性,则可以获取实体的所有属性。如果扩展了集合导航属性,则可以获取集合中的所有实体以及这些实体的所有属性。在OData 4中,用户现在可以使用$ select,*,$ filter和$ top操作来优化结果:
7.在进行更新时,有两种更新实体的方式:用一个新的实体替换实体的定义(Replace语义)。或者,更改现有实体的单个属性(编辑语义)。 HTTP PUT方法用于更新具有替换语义的实体。在OData 4中,使用标准HTTP PATCH方法来更新具有编辑语义的实体。 OData 2使用非标准MERGE HTTP方法进行更新与编辑语义。
8. $ count替代了OData 4中的$ inlinecount。$ count已经得到了优化,可以为与$ filter,$ expand和$ orderby选项一起使用。
9. 对OData 4中数据类型的支持的改变:
* DateTime已被弃用。 OData 2中缺少时区信息会导致重大问题。使用DateTimeOffset来代替。
* Edm.Time已被Edm.Duration和Edm.TimeOfDay替换,以便弄清楚这是否是特定时间的持续时间。
* Edm.Date,因为在OData 2中没有办法表达日期,所以在OData4中添加了日期。
* Edm.Float已被淘汰。
与OData 2相比,OData 4中的所有优化功能都可以显着提升您的应用程序。
使用混合数据管道支持OData 2或OData 4
由于这些框架的定义方式发生了重大变化,因此您将需要不同的客户端来使用OData 2和OData 4。与OData 2相比,OData 4显示出显著的性能提升。虽然有些功能已被替换和优化,但其中一些功能已经被弃用,例如,对XML数据格式的支持。
如果您正在为现代生态系统构建应用程序,OData 4提供了显着的性能。然而,一些现有的应用程序需要OData 2或XML有效载荷。因此,您应该利用混合数据管道,它既支持两个接口,又不需要任何编码。