CN101739249A - 服务客户端自动构建系统 - Google Patents
服务客户端自动构建系统 Download PDFInfo
- Publication number
- CN101739249A CN101739249A CN200810197588A CN200810197588A CN101739249A CN 101739249 A CN101739249 A CN 101739249A CN 200810197588 A CN200810197588 A CN 200810197588A CN 200810197588 A CN200810197588 A CN 200810197588A CN 101739249 A CN101739249 A CN 101739249A
- Authority
- CN
- China
- Prior art keywords
- service
- information
- memory module
- retrieval
- module
- 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.)
- Pending
Links
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提供了一种服务客户端自动构建系统,其特征在于包括有以下三个部分:存储模块,用于持久存储服务信息;服务发现模块,用于提供服务检索接口,根据服务检索接口接受的查询请求信息检索存储模块中的相应服务信息,展示检索结果并为检索到的相应服务信息建立检索结果索引;服务调用代码生成模块,用于从服务发现模块接收检索结果索引,按照检索结果索引从存储模块中提取相应服务信息,并填入代码模板生成服务调用代码。本发明提供的服务客户端自动构建系统具备了服务发现功能,就可以直接为用户检索到的服务产生调用代码,提高了服务支持水平。
Description
技术领域
本发明属于服务客户端自动构建技术领域,特别是涉及一种服务客户端自动构建系统。
背景技术
当下主流的服务客户端自动构建工具主要包括Apache Axis提供的WSDL2Java命令行工具以及微软的Visual Studio.NET的自带图形化工具。这些工具提供了Web服务调用代码生成系统,但不能为用户提供服务检索功能,用户需要自己阅读服务描述文档(WSDL)查找需要的服务,并使用操作名、参数名、参数类型等信息进行所生成代码的使用。由于WSDL文档结构复杂,不适于人读,这使得服务使用的门槛依然很高,并且使用效率低下。当获得的服务描述文档很多时,这样的方式更有可能成为服务使用效率的瓶颈。
而当前的各类服务发现系统,如搜索引擎与UBR(UDDI BusinessRegistries),服务发现网站(XMethods,StrikeIron,BindingPoint)等。虽然可以提供部分服务的在线测试页面,但是不能生成用于构建基于服务软件的代码,对于服务使用帮助不大。
发明内容
本发明目的在于针对现有技术的不足,提出一种便于查找服务的高效服务客户端自动构建系统。
本发明的技术方案为:包括有以下三个部分,
存储模块,用于持久存储服务信息;
服务发现模块,用于提供服务检索接口,根据服务检索接口接受的查询请求信息检索存储模块中的相应服务信息,展示检索结果并为检索到的相应服务信息建立检索结果索引;
服务调用代码生成模块,用于从服务发现模块接收检索结果索引,按照检索结果索引从存储模块中提取相应服务信息,并填入代码模板生成服务调用代码。
而且,所述存储模块采用中间件存储模式存储服务信息,即将服务信息内容分解为一项以上元素后分项存储。
而且,存储模块中建立服务表、操作表和参数表,将服务信息内容分解为服务元素、操作元素和参数元素后分别存储到服务表、操作表和参数表。
而且,所述存储模块建立WSDL解析机制,用于实现WSDL文档所含服务信息到按中间件存储模式存储的转换,所述转换包括以下步骤,
步骤一,读取WSDL文档的根元素,构建一个Definition对象;
步骤二,使用Definition的子元素Types生成标准的Java对象Schema向量;
步骤三,获得在WSDL文档中定义的所有Service对象,提取每个Service对象的服务元素信息填入服务表;提取每个Service对象的端口集合得到相应绑定信息,从绑定信息中取得每个端口的操作集合和操作的地址信息,作为操作元素信息填入操作表;再对每个操作进行处理,得到每个操作相关的参数信息并填入参数表。
本发明为改进了现有服务客户端自动构建系统,将服务发现功能和服务调用代码生成功能融合为一,提高了服务支持水平。服务客户端自动构建系统具备了服务发现功能,就可以直接为用户检索到的服务产生调用代码。用户不必再对服务描述文档(WSDL)进行人工阅读与查找需要的服务功能,然后记录下服务的各类信息来进行代码的使用。本发明还提出采用中间件存储模式存储服务信息,将所有服务信息内容按元素划分进行存储,进一步提高了服务发现效率。采用中间件存储模式可以进行属性扩展,所以生成的代码可以比直接通过WSDL生成的代码具备更多特征,比如支持多语言等。本发明提出可在存储模块中内建WSDL解析机制,用于自动实现将WSDL文档所含服务信息按中间件存储模式存储,以便根据客户需要从任意WSDL文档中进行高效率的服务发现。
附图说明
图1为本发明实施例的中间件存储模式示意图;
图2为本发明实施例的系统结构示意图;
图3为本发明实施例的生成代码示意图。
具体实施方式
参见附图2,本发明提出的服务客户端自动构建系统包括有以下三个部分,(一)存储模块,用于持久存储服务信息;
具体实施时,存储模块可以用多种方式实现存储,如内存中的对象或物理文件,也可以使用数据库与XML;服务信息内容也可以用多种结构被存储管理,例如直接用目前本领域常用的WSDL文档。为了提高响应查询请求信息的速度,保障检索结果准确性,本发明提供了进一步技术方案:所述存储模块采用中间件存储模式存储服务信息,即将服务信息内容分解为一项以上元素后分项存储。按照中间件存储模式存储服务信息,条理化结构化地存储管理服务信息所含内容,既便于支持服务检索接口的高级查询,还能快速响应查询请求信息,也便于在服务检索接口清晰地展示检索结果。更重要的是,中间件存储模式的目标是能够支持不同的应用,服务发现模块和服务调用代码生成模块都能方便地从存储模块调用服务信息。在以分布式数据库技术实现存储模块时,中间件存储模式具有支持分布式计算,提供跨网络、硬件和OS平台的交互优势,支持实现大规模的服务使用资源共享。
参见附图1,本发明实施例在存储模块中建立服务表、操作表和参数表,将服务信息内容分解为3项元素,即服务元素(Service)、操作元素(Operation)和参数元素(parameter)后,然后分别存储到服务表、操作表和参数表。中间件存储模式将服务定义为包括多个属性的元组,这些属性可以包括服务调用所需要的信息、服务语义信息、服务属性的其他语言表示信息、用户自定义属性、服务包含的操作集合,如附图1中的服务表记载的服务信息包括服务ID、服务名称、命名空间、服务地址、服务中文名、相关概念等;类似的,操作定义为操作各属性元组,以及所含有的输入输出参数集合,操作表记载的操作信息包括操作的操作ID、操作名称、soapaction、绑定协议、传输方式、端口地址、服务ID等;参数定义为参数各属性元组,参数表记载的参数信息包括参数名称、参数类型、参数排列方式、所属参数ID、参数数据类型、是否复杂参数、操作ID等。图中PK表述主键,FK1表示外键。具体实施时,可以选择其它元素划分方式,按照更多项元素类别存储服务信息内容。
本发明实施例的中间件存储模式可以视为WSDL在结构上的简化与结构化,其与WSDL模式的关系如下:第一,除去Definition元素,使用服务元素作为根元素,将命名空间信息存储于Service元素中;第二,除去Message元素,使用参数元素的参数类型标识参数属于操作的输入还是输出;第三,使用参数元素替代Part与DataType,使用的属性标识是否为复杂类型。使用嵌套引用的方法标识从属的父参数,以支持复杂数据类型;第四,将Port,Binding的信息合并存储操作元素中,即将服务的抽象与具体信息进行融合。某些情况下操作可能被多个端口支持,所以可能会出现少许数据冗余;第五,支持属性扩展,本模式中所有元素均可以进行属性扩展,比如语义信息,汉语标注信息均可以存储入中间件存储模式,这些信息可以支持系统生成更加丰富的代码。因此,本发明实施例在存储模块建立WSDL解析机制,用于实现WSDL文档所含服务信息到按中间件存储模式存储的自动转换,所述转换包括以下步骤:步骤一,读取WSDL文档的根元素,构建一个Definition对象;步骤二,使用Definition的子元素Types生成标准的Java对象Schema向量;步骤三,获得在WSDL文档中定义的所有Service对象,提取每个Service对象的服务元素信息填入服务表;提取每个Service对象的端口(PortType)集合得到相应绑定(Binding)信息,从绑定信息中取得每个端口的操作(Operation)集合和操作的地址信息,作为操作元素信息填入操作表;再对每个操作进行处理,得到每个操作相关的参数信息并填入参数表。以上各英文标识为WSDL文档和java语言的标准用语,可以参见相关标准:
Types-数据类型定义的容器,它使用某种类型系统(一般地使用XMLSchema中的类型系统)。
WSDL4J技术构建与WSDL模式相对应的对象:
Definition-WSDL的根元素。
Operation-对服务中所支持的操作的抽象描述,一般单个Operation描述了一个访问入口的请求/响应消息对。
PortType-对于某个访问入口点类型所支持的操作的抽象集合,这些操作可以由一个或多个服务访问点来支持。
Binding-特定端口类型的具体协议和数据格式规范的绑定。
Port-定义为协议/数据格式绑定与具体Web访问地址组合的单个服务访问点。
Service-相关服务访问点的集合。
建立这种机制后,本发明提出的服务客户端自动构建系统可以收录WSDL文档后自动转换存储,便于扩展服务使用支持范围。具体实施时,也可以建立更多样的转换机制,例如采用DOM技术将Xml文件转换为中间件存储模式的服务信息。
可以在存储模块中对已存储的服务信息建立服务索引,例如对中间件的各个元素的属性值与服务信息构建倒排索引。如果使用数据库存储服务信息信息,可以直接使用数据库的视图功能,将整个中间件存储模式建为一个视图,支持对视图进行检索。服务索引也可以不直接使用中间件信息进行构建,在索引文件中保存服务的编号即可将服务索引与服务相联,这使得本系统可以使用任何复杂的服务发现策略。
存储模块的具体实现可以由本领域技术人员运用现有数据库技术和java技术完成软件建设,本发明不予赘述。
(二)服务发现模块,用于提供服务检索接口,根据服务检索接口接受的查询请求信息检索存储模块中的相应服务信息,展示检索结果并为检索到的相应服务信息建立检索结果索引;
服务发现模块可以采用现有检索技术方便的实现,只需根据服务检索接口接受的查询请求信息检索存储模块中的相应服务信息即可。若存储模块建立了服务索引,使用服务索引文件对服务进行检索更加方便高效,用户可以使用中间件中各元素的所有属性进行查询。服务检索接口以列表的方式呈现服务信息,列表的每个元素呈现可视化的整个服务信息,用户可以很方便的看到服务是否满足需要。为了方便生成用户需要的服务调用代码,服务发现模块根据用户点选的列表项目建立检索结果索引,并传送到服务调用代码生成模块。检索结果索引包含用户点选的列表项目对应服务信息在存储模块中的地址,可以直接采用服务索引文件的相关内容。
(三)服务调用代码生成模块,用于从服务发现模块接收检索结果索引,按照检索结果索引从存储模块中提取相应服务信息,并填入代码模板生成服务调用代码。
服务调用代码生成模块的代码生成部分与现有服务客户端自动构建系统相符,提供代码模板,填入的代码来源于按照检索结果索引从存储模块中提取的相应服务信息。图3提供了本发明实施例的一个检索结果,以便实施参考:
生成的代码为工厂模式,主要包括三种类结构,服务类、操作父类、具体操作类。
服务类:服务类为操作工厂,通过操作名产生操作对象;
操作父类:本类为虚类,使用虚方法定义SOAP调用;
具体操作类:继承操作父类,使用私有变量定义SOAP调用所需要的参数以及输入输出参数,并使用Getter和Setter提供这些参数的共有接口。对操作父类中SOAP调用进行重写。图3提供了三个操作子类:操作类1、操作类2、操作类3。
各图内元素含义如下:
操作工厂的createoperation():产生操作对象的方法;
操作父类的invoke():操作调用的虚方法,需要子类具体实现;
操作子类的invoke():操作父类的对应虚方法具体实现;
操作类的私有成员soapaction、soapaddress、parameter1、parameter2、parameter3:用于标志操作所需要的各个参数;
操作类的共有成员getparameter1、getparameter2、getparameter3、setparameter1、setparameter2、setparameter3:各个参数对应的公共接口,用于对参数赋值或者获取参数的值。
实施例的生成代码过程如下:
第一步:初始化中间件内存对象;
第二步:生成代码流程如下:
读取服务对象,以服务名产生文件夹。
以服务名产生服务类(操作工厂)文件;
产生操作父类;
产生操作父类中服务调用虚方法;
For Each Operation in Service do
Begin
使用操作名产生服务类中创建操作对象代码;
使用操作名产生操作子类;
产生操作调用所需参数的私有变量定义代码;
For Each Input Parameter in Operation do
Begin
产生输入输出参数的私有变量定义代码;
产生输入输出参数的公共接口;
End
产生操作子类中的服务调用方法;
写入操作子类文件。
End
写入操作父类文件以及服务文件。
Claims (4)
1.一种服务客户端自动构建系统,其特征在于:包括有以下三个部分,存储模块,用于持久存储服务信息;
服务发现模块,用于提供服务检索接口,根据服务检索接口接受的查询请求信息检索存储模块中的相应服务信息,展示检索结果并为检索到的相应服务信息建立检索结果索引;
服务调用代码生成模块,用于从服务发现模块接收检索结果索引,按照检索结果索引从存储模块中提取相应服务信息,并填入代码模板生成服务调用代码。
2.如权利要求1所述服务客户端自动构建系统,其特征在于:所述存储模块采用中间件存储模式存储服务信息,即将服务信息内容分解为一项以上元素后分项存储。
3.如权利要求2所述服务客户端自动构建系统,其特征在于:存储模块中建立服务表、操作表和参数表,将服务信息内容分解为服务元素、操作元素和参数元素后分别存储到服务表、操作表和参数表。
4.如权利要求3所述服务客户端自动构建系统,其特征在于:所述存储模块建立WSDL解析机制,用于实现WSDL文档所含服务信息到按中间件存储模式存储的转换,所述转换包括以下步骤,
步骤一,读取WSDL文档的根元素,构建一个Definition对象;
步骤二,使用Definition的子元素Types生成标准的Java对象Schema向量;
步骤三,获得在WSDL文档中定义的所有Service对象,提取每个Service对象的服务元素信息填入服务表;提取每个Service对象的端口集合得到相应绑定信息,从绑定信息中取得每个端口的操作集合和操作的地址信息,作为操作元素信息填入操作表;再对每个操作进行处理,得到每个操作相关的参数信息并填入参数表。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN200810197588A CN101739249A (zh) | 2008-11-11 | 2008-11-11 | 服务客户端自动构建系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN200810197588A CN101739249A (zh) | 2008-11-11 | 2008-11-11 | 服务客户端自动构建系统 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN101739249A true CN101739249A (zh) | 2010-06-16 |
Family
ID=42462776
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN200810197588A Pending CN101739249A (zh) | 2008-11-11 | 2008-11-11 | 服务客户端自动构建系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101739249A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103001981A (zh) * | 2011-09-10 | 2013-03-27 | 深圳市龙视传媒有限公司 | 一种调用能力服务的方法及系统 |
CN108932130A (zh) * | 2018-06-29 | 2018-12-04 | 深圳市元征科技股份有限公司 | 一种实现服务器功能调用的代码生成方法及装置 |
-
2008
- 2008-11-11 CN CN200810197588A patent/CN101739249A/zh active Pending
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103001981A (zh) * | 2011-09-10 | 2013-03-27 | 深圳市龙视传媒有限公司 | 一种调用能力服务的方法及系统 |
CN108932130A (zh) * | 2018-06-29 | 2018-12-04 | 深圳市元征科技股份有限公司 | 一种实现服务器功能调用的代码生成方法及装置 |
CN108932130B (zh) * | 2018-06-29 | 2022-02-22 | 深圳市元征科技股份有限公司 | 一种实现服务器功能调用的代码生成方法及装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101609415B (zh) | 基于中间件的通用服务调用系统及方法 | |
CN101799826B (zh) | 一种基于虚拟视图的网络化数据共享系统及方法 | |
CN102254022B (zh) | 一种面向多数据类型信息资源元数据的共享方法 | |
CN101446971B (zh) | 构建内容管理系统的方法及装置 | |
CN105138592A (zh) | 一种基于分布式架构的日志数据存储和检索方法 | |
CN102067116B (zh) | 数据仓库中的空间查询 | |
JP5152877B2 (ja) | 文書ベースシステムにおける文書データ記憶方法およびその装置 | |
US20020032775A1 (en) | System and method for transmitting and retrieving data via a distributed persistence framework | |
CN101197700A (zh) | 提供日志服务的方法及系统 | |
CN101727502A (zh) | 一种数据查询方法及装置、系统 | |
CN102436513A (zh) | 分布式检索方法和系统 | |
CN102541529A (zh) | 一种查询页面生成装置和方法 | |
US20090125488A1 (en) | Geographic XML database management system | |
CN107463366A (zh) | 一种基于移动App的界面动态化方法 | |
CN101464894A (zh) | 数据查询方法和系统 | |
CN101060539B (zh) | 采用统一入口网站地址集成和推送多网站内容的方法及系统 | |
EP2521043A1 (en) | Method for establishing a relationship between semantic data and the running of a widget | |
CN102999600A (zh) | 一种嵌入式数据库自动生成方法和系统 | |
CN103390018A (zh) | 一种基于SDD的Web服务数据建模与搜索方法 | |
KR101511267B1 (ko) | 검색 가능한 웹 서비스들을 위한 방법 및 시스템 | |
CN101676901A (zh) | 搜索调度方法及搜索服务器 | |
KR101331854B1 (ko) | 오픈 api 통합 검색 및 매쉬업 블록 기반코드 생성 장치 및 그 방법 | |
CN104636265A (zh) | 一种cimxml文档的高效内存模型组织的访问方法 | |
CN102982034A (zh) | 互联网站内信息的搜索方法和搜索系统 | |
CN104243565A (zh) | 获取配置数据的方法和装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C02 | Deemed withdrawal of patent application after publication (patent law 2001) | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20100616 |