CN106371848B - 一种web开发框架支持Odata的实现方法 - Google Patents

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

Info

Publication number
CN106371848B
CN106371848B CN201610812165.8A CN201610812165A CN106371848B CN 106371848 B CN106371848 B CN 106371848B CN 201610812165 A CN201610812165 A CN 201610812165A CN 106371848 B CN106371848 B CN 106371848B
Authority
CN
China
Prior art keywords
odata
data
web
request
entity
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201610812165.8A
Other languages
English (en)
Other versions
CN106371848A (zh
Inventor
解荧
吴玉雁
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Inspur Software Co Ltd
Original Assignee
Inspur Software Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Inspur Software Co Ltd filed Critical Inspur Software Co Ltd
Priority to CN201610812165.8A priority Critical patent/CN106371848B/zh
Publication of CN106371848A publication Critical patent/CN106371848A/zh
Application granted granted Critical
Publication of CN106371848B publication Critical patent/CN106371848B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Stored Programmes (AREA)

Abstract

本发明提供一种web开发框架支持Odata的实现方法,属于web应用开发技术,本发明只需要通过添加框架提供的odata注解,便将后台的数据实体发布为odata服务,进而可以通过发送请求的方式实现对后台数据的增删改查操作以及对数据实体元数据的查看,开发人员不需添加任何方法,而且还可指定数据的返回格式。从而可以实现对不同前端组件对数据格式多样化的支持,进而能够很好的满足前端展示多样化的需求。

Description

一种web开发框架支持Odata的实现方法
技术领域
本发明涉及web应用开发技术,尤其涉及一种web开发框架支持Odata的实现方法。
背景技术
随着技术的发展,尤其是互联网互联网技术的迅速发展,面对海量的信息,对数据的访问及处理需求日益增加,而实际数据处理中,对数据的基本操作占主要方面。OpenData 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对应的实现类进行处理。

Claims (1)

1.一种web开发框架支持odata的实现方法,
通过添加框架提供的odata注解,将后台的数据实体发布为odata服务,进而可以通过发送请求的方式实现对后台数据的增删改查操作以及对数据实体元数据的查看,并可指定数据的返回格式;
需要在web框架提供的annotation.xml文件中配置数据实体所在的包路径,以便于在应用启动过程中可以对指定路径下的类进行扫描,并对添加了注解的类进行解析进而发布成odata服务;最后在web.xml中配置web框架提供的odata拦截器的拦截路径,实现对odata请求的拦截,从而实现通过请求的方式对后台数据进行操作的功能,其特征在于,
具体步骤如下:
1)选择开发环境及开发工具,建立web项目;
开发人员根据开发习惯选择web开发工具创建web项目,Web开发框架选用目前主流的SpringMVC框架;
2)在建好的项目中添加必要的jar包,并在web.xml中添加odata监听器及odata请求拦截器;
3)在需要发布odata服务的数据实体中添加odata注解,
其中,@EdmEntityType用于存放该实体的整体描述信息;@EdmEntitySet为该实体类型的集合,也是前台调用的服务名称;@EdmKey实体主键;@EdmProperty普通实体属性;@EdmNavigationProperty关联属性;
4)在项目的编译根目录下添加annotation.xml文件,配置需要进行注解扫描的路径;
其中,datastore为需要关联的数据源,数据源的具体信息在项目的datasource.properties文件中配置; package为需要扫描的包路径;通过对指定路径下的类进行扫描,会对添加了如3)中所述的注解的类进行解析,将其元数据信息存放在内存中;则当odata请求被拦截时,根据请求类型,分别获取到对应的请求数据,并返回给客户端。
CN201610812165.8A 2016-09-09 2016-09-09 一种web开发框架支持Odata的实现方法 Active CN106371848B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201610812165.8A CN106371848B (zh) 2016-09-09 2016-09-09 一种web开发框架支持Odata的实现方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201610812165.8A CN106371848B (zh) 2016-09-09 2016-09-09 一种web开发框架支持Odata的实现方法

Publications (2)

Publication Number Publication Date
CN106371848A CN106371848A (zh) 2017-02-01
CN106371848B true CN106371848B (zh) 2019-08-02

Family

ID=57900498

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201610812165.8A Active CN106371848B (zh) 2016-09-09 2016-09-09 一种web开发框架支持Odata的实现方法

Country Status (1)

Country Link
CN (1) CN106371848B (zh)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108874390B (zh) * 2017-05-10 2023-05-16 腾讯科技(北京)有限公司 一种数据处理方法及装置、设备、存储介质
CN107590259A (zh) * 2017-09-21 2018-01-16 浪潮软件股份有限公司 一种数据服务的发布方法和装置
CN108108470B (zh) * 2017-12-31 2020-08-21 浙江工业大学 一种基于rest的电梯数据服务自动抽取与封装方法

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20120215763A1 (en) * 2011-02-18 2012-08-23 Microsoft Corporation Dynamic distributed query execution over heterogeneous sources
CN103888508A (zh) * 2012-12-20 2014-06-25 Sap股份公司 用于数据连接多样化的服务和管理层

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20120215763A1 (en) * 2011-02-18 2012-08-23 Microsoft Corporation Dynamic distributed query execution over heterogeneous sources
CN103888508A (zh) * 2012-12-20 2014-06-25 Sap股份公司 用于数据连接多样化的服务和管理层

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
My CDS view self study tutorial - Part 4 how does annotation @OData;佚名;《blogs.sap.com/2016/03/12/my-cds-view-self-study-tutorial-part-4-how-does-annotation-odatapublish-work/》;20160312;第1-7页 *
如何建立与OlingoV4 OData服务;佚名;《blog.csdn.net/limm33/article/detail/52313875》;20160825;第1-14页 *

Also Published As

Publication number Publication date
CN106371848A (zh) 2017-02-01

Similar Documents

Publication Publication Date Title
US20240114076A1 (en) System and Method for a Unified Interface to Networked Web Services
CN109885311B (zh) 一种应用程序的生成方法及设备
US8965864B2 (en) Method and system for efficient execution and rendering of client/server interactive applications
WO2022135178A1 (zh) 微前端系统、子应用加载方法、电子设备、计算机程序产品及计算机可读存储介质
US10200439B2 (en) In-memory cloud triple store
CN109451028B (zh) 一种基于适配器技术的云管理系统
US20120089931A1 (en) Lightweight operation automation based on gui
CN103390018B (zh) 一种基于SDD的Web服务数据建模与搜索方法
US20120166977A1 (en) User programming access to data model in user interface design
CN106371848B (zh) 一种web开发框架支持Odata的实现方法
US20230319054A1 (en) Tenant-specific solution subscriptions for an extensibility platform
KR20100062785A (ko) 오픈 api 기반 웹포털 서비스 제공 방법 및 시스템
CN101727475A (zh) 一种获取数据库访问过程的方法、装置及系统
Wang et al. SaaS-based enterprise application integration approach and case study
CN104270443A (zh) 一种能够动态解析Web应用的云计算系统及方法
Gropengießer et al. Database backend as a service: automatic generation, deployment, and management of database backends for mobile applications
CN117850771A (zh) web服务的业务应用开发平台、方法及存储介质
US20230315428A1 (en) Extensibility platform
US20140101280A1 (en) Generic serializer framework
US20070240048A1 (en) A standard communication interface for server-side filter objects
Srinivasmurthy et al. Web2exchange: A model-based service transformation and integration environment
US11468101B2 (en) Context-rich key framework implementations for global concept management
Schmitt et al. Reducing integration effort for cyber-physical systems through integrated information modelling using annotated application code
US11966719B2 (en) Event consumption for high-level programing language platform
US20240036946A1 (en) Event provisioning for high-level programing language platform

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant