一种web开发框架支持Odata的实现方法与流程

文档序号:18338370发布日期:2019-08-03 16:01阅读:585来源:国知局
一种web开发框架支持Odata的实现方法与流程

本发明涉及web应用开发技术,尤其涉及一种web开发框架支持Odata的实现方法。



背景技术:

随着技术的发展,尤其是互联网互联网技术的迅速发展,面对海量的信息,对数据的访问及处理需求日益增加,而实际数据处理中,对数据的基本操作占主要方面。Open Data Protocol (开放数据协议,OData)是用来查询和更新数据的一种Web协议,其提供了把存在于应用程序中的数据暴露出来的方式。OData运用且构建于很多Web技术之上,比如HTTP、Atom Publishing Protocol(AtomPub)和JSON,提供了从各种应用程序、服务和存储库中访问信息的能力。OData被用来从各种数据源中暴露和访问信息, 这些数据源包括但不限于:关系数据库、文件系统、内容管理系统和传统Web站点。

在SOA的世界中,最重要的一个概念就是契约(contract)。在云计算的世界中,有关通信的最重要的概念也是契约。但应用中前后台数据交互相关的协议和ODBC/OLEDB这样的真正数据交互协议相比较,还有着根本上的欠缺:缺乏数据类型的具体描述,降低了交互性能,缺乏对数据查询的控制能力。为了增强各种网页应用程序之间的数据兼容性,微软基于EDM模型释出了OData协议。目前很多接口,无论是基于SOAP、REST还是别的都在交换数据时使用不同的模式,这使得无法创建泛型客户端。随着互联网技术的发展,客户端更加多样化,开发者对于使用的开发框架支持统一数据协议的需求日益增加。



技术实现要素:

为了解决以上技术问题,本发明提出了一种web开发框架支持Odata的实现方法。使得针对数据的操作变得简单灵活,通过提供数据的元数据信息,提高了应用之间的交互性,通过统一数据格式使得其可以在不同应用程序之间进行数据通信。另外,根据展示需要可以指定数据的返回格式,实现了对数据多样化展示的支持。

本发明所要解决的技术问题是将应用中的数据暴露成服务,通过前台请求便可实现对数据的访问及操作,且可以指定数据的返回格式。

一种web开发框架支持Odata的实现方法,

通过添加框架提供的odata注解,将后台的数据实体发布为odata服务,进而可以通过发送请求的方式实现对后台数据的增删改查操作以及对数据实体元数据的查看,并可指定数据的返回格式。

此外需要在web框架提供的annotation.xml文件中配置数据实体所在的包路径,以便于在应用启动过程中可以对指定路径下的类进行扫描,并对添加了注解的类进行解析进而发布成odata服务;最后在web.xml中配置web框架提供的odata拦截路器的拦截路径,实现对odata请求的拦截,从而实现通过请求的方式对后台数据进行操作的功能。

具体步骤包括:

1)选择开发环境及开发工具,建立web项目;

开发人员可根据开发习惯选择web开发工具创建web项目,Web开发框架选用目前主流的SringMVC框架。

2)在建好的项目中添加必要的jar包,并在web.xml中添加odata监听器及odata请求拦截器。

3)在需要发布odata服务的数据实体中添加odata注解。

其中,@EdmEntityType用于存放该实体的整体描述信息,如继承的基类、实体名称、主键、关联属性、基本属性、是否为抽象类、是否包含文件流属性等;@EdmEntitySet为该实体类型的集合,也是前台调用的服务名称;@EdmKey实体主键;@EdmProperty普通实体属性;@EdmNavigationProperty关联属性。

4)在项目的编译根目录下添加annotation.xml文件,配置需要进行注解扫描的路径。

其中,datastore为需要关联的数据源,数据源的具体信息在项目的datasource.properties文件中配置,如图六所示。package为需要扫描的包路径。通过对指定路径下的类进行扫描,会对添加了如(3)中所述的注解的类进行解析,将其元数据信息存放在内存中。则当odata请求被拦截时,根据请求类型,分别获取到对应的请求数据,并返回给客户端。

采用本文提出的odata实现方法,能够将应用中的数据以服务的方式暴露出来,从而提供通过前台请求对数据的查询访问及处理功能。通过将数据暴露成服务,大大方便了对数据的访问及处理操作,而且通过添加注解的方式将数据发布为odata服务,不需要针对特定实体添加操作方法,大大简化了开发,使针对数据的操作更加简单灵活。通过在请求路径后面添加format关键字便可指定数据的返回格式,从而可以实现对不同前端组件对数据格式多样化的支持,进而能够很好的满足前端展示多样化的需求。

本发明的有益效果是

1、web开发框架对odata的支持,满足数据协议统一的需求。对不

同web应用之间的数据通信提供了便利有效的途径。

2、web开发框架通过支持odata数据协议,可以将后台数据发布为

odata服务,提供在前台直接操作后台数据的功能,使数据的处理简单灵活。

3、web开发框架通过支持odata,可以指定后台数据的返回格式,

满足前端不同展示组件对数据格式的要求,因此能很好的支持多样化展示。

4、通过在数据实体中添加框架提供的注解便可将数据实体发布为

odata服务,大大降低了开发难度及学习成本。

5、在配置文件中添加扫描路径的方式,能够让开发人员根据需要灵

活的添加扫描路径,而不需要考虑将发布odata服务的数据实体放置在特

定目录下,增加了可用性。

附图说明

图1是Web框架支持Odata的实现架构示意图;

图2是实现odata的技术原理图;

图3是web框架提供的odata监听器及odata请求拦截器示意图;

图4是使用框架提供的注解将实体发布为odata服务的示例图;

图5是扫描路径的配置示例图;

图6为datastore关联的数据源信息图;

图7是Olingo实现odata数据服务的框架图。

具体实施方式

下面对本发明的内容进行更加详细的阐述:

通过添加框架提供的odata注解,将后台数据发布为odata服务。从而前台通过发送请求的方式便可实现对后台数据的访问及操作,并可指定数据的返回格式(json、xml、atom)以满足不同展示组件对数据格式的需求。

使用注解的方式将后台实体数据发布为odata服务。

前台通过发送请求的方式来访问和操作后台的实体数据。

通过在扫描配置文件中配置扫描路径,可实现对指定路径下类的扫描并对添加odata注解的类进行解析。

通过配置odata拦截器拦击odata格式的请求,实现对odata服务的调用。

图一是web框架支持odata的整体实现示意图。如图所示,对于odata请求会被框架提供的odata拦截器拦截并调用odata服务去已发布为odata服务的数据实体中获取指定数据。

图二是实现odata的技术原理图,ODATA拦截器拦截到客户端的ODATA数据请求首先解析请求路径获取到配置的注解包路径;其次,调用注解服务工厂创建注解类型服务。注解类型服务对象中包含提供元数据的AnnotationEdmProvider对象和提供动态资源操作(数据的增删改查)的AnnotationProcessor对象。最后,使用注解服务创建数据处理对象ODataHttpHandler,用来处理Odata请求并返回响应。其中,odata请求分为元数据(服务描述文档类型)请求和资源类型请求。

元数据请求,最终调用Olingo V4中封装的DefaultProcessor类中的readMetadata和readServiceDocument接口进行处理。ODataHttpHandler接口对应的实现类在构造函数中注册了DefaultProcessor对象。因此,在获取到元数据请求时,DefaultProcessor对象通过ODataHttpHandler类中的ServiceMetadata对象获取到实体的schema信息,并根据请求的格式,将信息返回到前台。

资源类型请求,最终调用Loushang封装的AnnotationProcessor对象进行处理。对于资源类型请求,Olingo V4封装了几个继承了Processor的抽象类,里面声明了公共的方法,Olingo V4框架并不提供获取数据资源的具体实现,而是将解析好的请求信息作为参数传递给这些公共方法。因此,在整合Olingo V4的开发中,可以根据需要选择要继承的类,按照自身框架或产品的需要,在重新定义公共方法时,利用请求信息获取所需的数据资源。

图三是web框架提供的odata监听器及odata请求拦截器,其中,odata监听器用于在项目启动时加载annotation.xml,根据指定的扫描路径去扫描解析添加了odata注解的实体类,并将解析结果存放在内存中供后面使用。

图四是使用框架提供的注解将实体发布为odata服务的示例,其中@EdmEntityType用于存放该实体的整体描述信息,如继承的基类、实体名称、主键、关联属性、基本属性、是否为抽象类、是否包含文件流属性等;@EdmEntitySet为该实体类型的集合,也是前台调用的服务名;@EdmKey实体主键;@EdmProperty普通实体属性;@EdmNavigationProperty关联属性。

图五是扫描路径的配置示例,其中其中,datastore为需要关联的数据源,package为需要扫描的包路径。图六为datastore关联的数据源信息。

图七是Olingo实现odata数据服务的框架图,OData数据服务请求可分为元数据请求和数据资源请求--元数据请求返回实体数据的描述信息;数据资源请求是OData数据服务的主要功能,包括对data store(如数据库)中数据的增、删、改、查操作。Olingo提供API来处理不同的数据服务请求:元数据请求通过Edm(Entity Data Model)对应的操作接口类CsdlEdmProvider中定义的方法来处理;数据资源请求通过运行时数据处理接口Processor对应的实现类进行处理。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1