专利名称:一种soa服务提供方法及系统的利记博彩app
技术领域:
本发明涉及ESB (Enterprise Service Bus,企业服务总线)技术领域,具体涉及ー种SOA (Service-Oriented Architecture,面向服务的体系架构)服务提供方法及系统。
背景技术:
SOA是面向服务的应用架构的构筑理念,而ESB是目前实现SOA应用架构的较为有效且可行的基础平台。ESB通过消息中介的方式 来实现同构或异构系统之间的互联,并且ESB还具有对服务的注册、发布、流程化等一系列的管理功能。ESB是传统中间件技术与XML (Extensible Markup Language,可扩展标记语言)、Web服务等技术结合的产物,ESB的出现改变了传统的软件架构,可以提供比传统中间件产品更为廉价的解决方案,同时它还可以消除不同应用之间的技术差异,让不同的应用服务器协调运作,实现了不同服务之间的通信与整合。从功能上看,ESB提供了事件驱动和文档导向的处理模式,以及分布式的运行管理机制,它支持基于内容的路由和过滤,具备了复杂数据的传输能力,并可以提供一系列的标准接ロ。目前,ESB套件上同一服务只能同时有I个版本部署和执行,由于各运营商业务繁杂,因此需要频繁地进行服务升级,而且,相应的外部系统也需要同步升级到新的接ロ。由于接口数量庞大,导致各系统接ロ部署周期都很长。为此,现有技术提供了一种解决方案,即多版本服务接ロ同时部署,同时存在。相应地,在ESB侧也需要针对不同的服务版本部署不同的接入方式。客户端在调用时需要根据其使用的服务版本来选择接入方式,而客户端对服务版本的选择是需要人工介入的。而且,这种方式需要部署的接ロ多,系统间的耦合性高。一旦有涉及到接ロ的改动,所有与此接ロ相关的系统都需要做相应的改造。虽然目前也有使用UDDI (Universal Description, Discovery and Integration通用描述、发现与集成服务)来提供统ー接入入口的技术方案,但是具体需要使用哪些服务,仍然是需要客户端去选择的。而且UDDI针对同一个服务,只能保留唯一的ー个版本,通常用服务名称来作为唯一性标识。所以对于同一服务的不同版本是无法支持的。
发明内容
本发明实施例针对上述现有技术存在的问题,提供ー种SOA服务提供方法及系统,能够根据外部系统所请求的服务自动选择相匹配的服务版本,避免人工干预。为此,本发明实施例提供如下技术方案ー种SOA服务提供方法,包括接收外部系统的服务调用请求,在所述服务调用请求中包含服务名称及服务參数;从版本库中获取与所述服务名称相匹配的服务的所有版本;根据匹配规则和所述服务參数从所述服务的所有版本中选出最佳匹配服务版本;利用所述最佳匹配服务版本为所述外部系统提供服务。一种SOA服务提供系统,包括服务提供模块,用于接收外部系统的服务调用请求,在所述服务调用请求中包含服务名称及服务參数;版本库,用于保存在用的各版本的服务;服务版本自动鉴别模块,用于从 所述版本库中获取与所述服务名称相匹配的服务的所有版本,并根据匹配规则和所述服务參数从所述服务的所有版本中选出最佳匹配服务版本;所述服务提供模块,还用于利用所述服务版本自动鉴别模块选出的最佳匹配服务版本为所述外部系统提供服务。本发明实施例提供的SOA服务提供方法及系统,可以根据外部系统的服务调用请求中包含的服务名称及服务參数;从版本库中获取与所述服务名称相匹配的服务的所有版本;根据匹配规则和所述服务參数从所述服务的所有版本中选出最佳匹配服务版本;利用所述最佳匹配服务版本为所述外部系统提供服务。从而可以使系统兼容多个服务版本,并使对服务版本的选择实现了自动化,避免了人工干预。
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明中记载的一些实施例,对于本领域普通技术人员来讲,还可以根据这些附图获得其他的附图。图I是本发明实施例SOA服务提供方法的流程图;图2是本发明实施例SOA服务提供系统的ー种结构示意图;图3是利用图2所示实施例SOA服务提供系统进行月租费用查询的流程图;图4是本发明实施例SOA服务提供系统中版本管理模块的一种结构示意图;图5是本发明实施例SOA服务提供系统的另一种结构示意图;图6是利用图5所示实施例SOA服务提供系统进行月租费用查询的流程图。
具体实施例方式为了使本技术领域的人员更好地理解本发明实施例的方案,下面结合附图和实施方式对本发明实施例作进ー步的详细说明。本发明实施例提供的SOA服务提供方法及系统,可以根据外部系统的服务调用请求中包含的服务名称及服务參数;从版本库中获取与所述服务名称相匹配的服务的所有版本;根据匹配规则和所述服务參数从所述服务的所有版本中选出最佳匹配服务版本;利用所述最佳匹配服务版本为所述外部系统提供服务。从而可以使系统兼容多个服务版本,并使对服务版本的选择实现了自动化,避免了人工干预。如图I所示,是本发明实施例SOA服务提供方法的流程图,包括以下步骤步骤101,接收外部系统的服务调用请求,在所述服务调用请求中包含服务名称及服务參数。
可以通过不同的接ロ来接收不同的外部系统的服务调用请求,然后,对该服务调用请求进行相应的协议转换,提取出所述外部系统请求的服务名称及服务參数。当然,也可以利用UDDI来统ー不同外部系统的接入,即通过UDDI接ロ接收外部系统的服务调用请求。UDDI实现了一组可公开访问的接ロ,通过这些接ロ,网络服务可以向服务信息库注册其服务信息、服务需求者可以找到分散在世界各地的网络服务。通过UDDI机制查找分布在互联网上的 Web 服务,在获取其 WSDL (Web Services Description Language, Web 服务描述语言))文件后,就可以在自己的程序中以SOAP (Simple Object Access Protocol,简单对象访问协议)调用的格式请求相应 的服务了。步骤102,从版本库中获取与所述服务名称相匹配的服务的所有版本。可以预先将在用的所有版本的服务保存到版本库中,在接收到外部系统的服务调用请求后,根据该服务调用请求中的服务名称从所述版本库中提取与所述服务名称相匹配的服务的所有版本。步骤103,根据匹配规则和所述服务參数从所述服务的所有版本中选出最佳匹配服务版本。上述匹配规则可以包括以下任意ー项或多项服务參数个数,服务參数类型,当然还可以包含其它信息,而且,由于不同服务对应的服务參数的属性、类型、个数等信息可能不同,因此,不同服务可以对应不同的匹配规则,也可以对应相同的匹配规则,对此本发明实施例不做限定。在实际应用中,可以预先设置对应不同服务的匹配规则,并将所述匹配规则存储在SOA服务提供系统中,在从版本库中获取与所述服务名称相匹配的服务的所有版本后,根据相应的匹配规则和所述服务參数从所述服务的所有版本中选出最佳匹配服务版本。当然,为了方便用户的使用及系统的扩展,还可以向用户提供规则匹配接ロ,根据所述用户从所述规则匹配接ロ输入的匹配规则參数生成所述匹配规则,并保存所述匹配规贝1J。步骤104,利用所述最佳匹配服务版本为所述外部系统提供服务。可见,本发明实施例SOA服务提供方法根据外部系统所请求的服务名称及服务參数对相应服务的所有版本进行匹配,筛选出最佳匹配服务版本供所述外部系统调用。由于对服务版本的选择实现了自动化,从而避免了人工干预。在本发明实施例中,还可以通过对版本库中服务版本的升级加载,实现对不同服务版本的管理和维护。具体可以包括以下步骤接收服务发布请求,所述服务发布请求中包含需要发布的服务的服务名称;如果所述版本库中没有与所述服务名称相同的服务,则将所述服务加载到所述版本库中;如果所述版本库中有与所述服务名称相同的服务,则先将所述服务的服务名称增加版本号后綴,然后再将所述服务加载到所述版本库中。也就是说,如果需要发布到版本库中的服务的服务名称与已加载到版本库中的服务的服务名称相同,则需要对新发布的服务的服务名称进行处理,即在该服务名称后増加版本号后缀,以区别于已加载到版本库中该服务的其它版本,然后再将该服务加载到所述版本库中,使相同名称的服务的多个不同版本同时存在于所述版本库中。比如,如果新发布的服务的服务名称在版本库中能够查询到,而且版本库中对应该服务的最大版本号为3. 0,则将新发布的该服务的版本号设置为3. I ;如果新发布的服务的服务名称在版本库中没有查询到,则直接将该服务的版本号设置为1.0,当然,在这种情况下,也可以不设置版本号。具体如何編制版本号本发明实施例不做限定。这样,在外部系统调用版本库中的服务时,无需了解版本库中该服务的版本,也无需选择需要调用的版本,而是 由SOA服务提供系统根据外部系统的服务调用请求中包含的服务名称及服务參数,从所述服务的所有版本中选出最佳匹配服务版本,然后使用对应该最佳匹配服务版本的“服务名称+版本号后綴”作为服务名称,为所述外部系统提供相应服务。可见,本发明实施例SOA服务提供方法,不仅可以自动实现对服务版本的选择,而且通过对版本库中服务版本的管理,可以兼容一种服务的多个版本,而且也无需调用者在调用时进行区分。相应地,本发明实施例还提供ー种SOA服务提供系统,如图2所示,是该SOA服务提供系统的ー种结构示意图。 在该实施例中,所述SOA服务提供系统200包括服务提供模块201、版本库202和服务版本自动鉴别t旲块203。其中服务提供模块201,用于接收外部系统的服务调用请求,在所述服务调用请求中包含服务名称及服务參数;版本库202,用于保存在用的各版本的服务;服务版本自动鉴别模块203,用于从所述版本库202中获取与所述服务名称相匹配的服务的所有版本,并根据匹配规则和所述服务參数从所述服务的所有版本中选出最佳匹配服务版本;所述服务提供模块201,还用于利用所述服务版本自动鉴别模块203选出的最佳匹配服务版本为所述外部系统提供服务。在该实施例中,服务提供模块201可以通过不同的接ロ来接收不同的外部系统(比如,外部系统A、外部系统B和外部系统C)的服务调用请求,然后,对该服务调用请求进行相应的协议转换,提取出所述外部系统请求的服务名称及服务參数。当然,也可以利用UDDI来统ー不同外部系统的接入,即通过UDDI接ロ接收外部系统的服务调用请求,对此本发明实施例不做限定。下面进ー步举例说明利用本发明实施例SOA服务提供系统向外部系统提供月租费查询服务的过程。假设版本库中存放的月租费查询服务有两个版本,具体如下月租费查询服务vl. O{账期编码(number6),账户标识(number16),用户标识(number16),手机号码(number11),
账目编码(number8 )};月租费查询服务ν2· O {账期编码(number6), 账户标识(number16),用户标识(number16),手机号码(number11),账目类型(varchar10)};如图3所示,是利用图2所示本发明实施例SOA服务提供系统进行月租费用查询的流程图。在该流程中,A系统 CRM (Customer Relationship Management,客户关系管理)客户端通过服务提供模块调用月租费查询服务进行某用户的月租费用查询,具体根据账目编码来查询,需要使用的服务为月租费查询服务vl. O。该流程包括以下步骤步骤301,A系统CRM客户端向服务提供模块发出服务调用请求,请求服务名称为 “Rental Query”,服务參数为Cycle_id(201112), Account_id (90000001), user_id (10000001), serial_number(18651888888), item_code(10000000);步骤302,服务提供模块从所述服务调用请求中提取出请求服务名称及服务參数,然后通过服务版本鉴别请求将提取出的请求服务名称及服务參数发送给服务版本自动鉴别模块,以使服务版本自动鉴别模块进行版本自动鉴别;步骤303,服务版本自动鉴别模块接收到服务版本鉴别请求后,到版本库中查询出服务名称“Rental Query”的所有版本,如“月租费查询服务vl. 0”、“月租费查询服务v2. O” 等;步骤304,版本库返回服务名称为“Rental Query”的服务的所有版本给服务版本自动鉴别模块;步骤305,服务版本自动鉴别模块将服务名称为“Rental Query”的所有版本的服务,根据A系统CRM客户端请求调用的服务參数等信息进行规则匹配处理,得到服务版本鉴别结果;需要说明的是,上述匹配规则可以预先设定,比如服务參数个数为5个,最后ー个服务參数的数据类型为number型。这样就能够很容易地判断出A系统CRM客户端所需调用的服务为“月租费查询服务vl. O”。当然,这只是上述匹配规则的ー个简单举例,在实际应用中,可以根据不同的服务,设定不同的匹配规则,对此本发明实施例不做限定。步骤306,服务版本自动鉴别模块将服务版本鉴别結果“月租费查询服务vl. O”返回给服务提供模块;步骤307,服务提供模块将服务版本自动鉴别模块返回的服务版本鉴别結果,即“月租费查询服务vl. O”给A系统的CRM客户端使用ESB使用“月租费查询服务vl. O”到B系统的CBS (Convergent Billing System,融合计费系统)后台进行相关用户的月租费用的查询;步骤308,服务提供模块从B系统的CBS后台获取相关用户的月租费用查询结果;步骤309,服务 提供模块将获取的月租费用查询结果反馈给A系统的CRM客户端。由此可见,利用本发明实施例SOA服务提供系统,由系统中的服务版本自动鉴别模块根据外部系统的服务调用请求中的服务名称及服务參数对相关服务的所有版本进行匹配,筛选出最佳匹配服务版本供外部系统的客户端调用。由于对服务版本的选择实现了自动化,从而避免了客户端侧的人工干预。前面提到,版本库中存放着在用的所有版本的服务,由于需要发布到版本库中的服务的名称可能会存在完全相同的情况,因此,在本发明实施例中,还可以在所述SOA服务提供系统设置版本管理模块,由所述版本管理模块所述版本库中的服务进行升级、加载和管理,实现对不同服务版本的管理和维护。如图4所示,是本发明实施例SOA服务提供系统中版本管理模块的一种结构示意图。在该实施例中,所述版本管理模块包括请求接收单元401,用于接收服务发布请求,所述服务发布请求中包含需要发布的服务的服务名称;查询单元402,用于查询所述版本库中是否有与所述服务名称相同的服务;加载单元403,用于在所述查询単元402查询到所述版本库中没有与所述服务名称相同的服务时,将所述服务加载到所述版本库中;在所述查询単元402查询到所述版本库中有与所述服务名称相同的服务时,先将所述服务的服务名称増加版本号后缀,然后再将所述服务加载到所述版本库中。所述版本管理模块在有新版本发布时会进行服务名称的校验。如果版本库中存在与需要发布的服务的名称完全相同的服务,则默认在新发布的服务名称后増加版本号后綴。通过版本管理机制简化了服务版本的发布工作。版本库中的服务名称统ー为“服务名称+版本号”,如“Rental query vl. 0”、“Rental query ν2·0”等。将多版本相同服务名称转换为内部版本后缀使得能够发布成功,多版本同时运行,但该版本后缀对外不可见,夕卜部看到的是ー个同名的服务。如图5所示,是本发明实施例SOA服务提供系统的另一种结构示意图。与图2所示实施例不同的是,在该实施例中,所述系统还包括规则库501和匹配规则处理模块502。其中规则库501,用于保存对应不同服务的规则;匹配规则处理模块502,用于从所述规则库501中获取对应所述服务名称的匹配规则,井根据所述匹配规则和所述服务參数从所述服务的所有版本中选出最佳匹配服务版本。在该实施例中,服务版本自动鉴别模块203通过调用匹配规则处理模块502获得最佳匹配服务版本。下面进ー步举例说明利用本发明实施例SOA服务提供方法向外部系统提供月租费查询服务的过程。
假设版本库中存放的月租费查询服务有两个版本,具体如下月租费查询服务vl. O{
账期编码(number6),账户标识(number16),用户标识(number16),手机号码(number11),账目编码(number8)};月租费查询服务v2. O:{账期编码(number6),账户标识(number16),用户标识(number16),手机号码(number11),账目类型(varchar10)};如图6所示,是利用图5所示本发明实施例SOA服务提供系统进行月租费用查询的流程图。在该流程中,A系统 CRM (Customer Relationship Management,客户关系管理)客户端通过服务提供模块调用月租费查询服务进行某用户的月租费用查询,具体根据账目编码来查询,需要使用的服务为月租费查询服务vl. O。该流程包括以下步骤步骤601,A系统CRM客户端向服务提供模块发出服务调用请求,请求服务名称为 “Rental Query”,服务參数为Cycle_id(201112), Account_id (90000001), user_id(10000001), serial_number(18651888888), item_code(10000000);步骤602,服务提供模块从所述服务调用请求中提取出请求服务名称及服务參数,然后通过服务版本鉴别请求将提取出的请求服务名称及服务參数发送给服务版本自动鉴别模块,以使服务版本自动鉴别模块进行版本自动鉴别;步骤603,服务版本自动鉴别模块接收到服务版本鉴别请求后,到版本库中查询出服务名称“Rental Query”的所有版本,如“月租费查询服务vl. 0”、“月租费查询服务v2. O” 等;步骤604,版本库返回服务名称为“Rental Query”的服务的所有版本给服务版本自动鉴别模块;步骤605,服务版本自动鉴别模块调用匹配规则处理模块进行规则匹配处理,具体地,将服务名称为“Rental Query”的所有版本的服务及A系统CRM客户端请求调用的服务參数发送到匹配规则处理模块;步骤606,匹配规则处理模块根据收到的信息从规则库中读取与服务名称“RentalQuery”对应的匹配规则;
步骤607,规则库返回与服务名称“Rental Query”对应的匹配规则;步骤608,匹配规则处理模块根据规则库返回的匹配规则及A系统CRM客户端请求调用的服务參数对收到的服务名称为“Rental Query”的所有版本进行规则匹配处理,得到匹配結果,即最佳匹配服务版本“月租费查询服务vl. O” ;需要说明的是,上述规则可以预先设定,比如服务參数个数为5个,最后ー个服务參数的数据类型为number型。这样就能够很容易地判断出A系统CRM客户端所需调用的服务为“月租费查询服务vl. O”。 当然,这只是上述规则的ー个简单举例,在实际应用中,可以根据不同的服务,设定不同的匹配规则,对此本发明实施例不做限定。步骤609,匹配规则处理模块将匹配结果返回给服务版本自动鉴别模块;步骤610,服务版本自动鉴别模块将匹配結果“月租费查询服务vl. O”返回给服务提供1吴块;步骤611,服务提供模块将服务版本自动鉴别模块返回的匹配结果,即“月租费查询服务vl. O”给A系统的CRM客户端使用服务提供模块使用“月租费查询服务vl. O”到B系统的CBS后台进行相关用户的月租费用的查询;步骤612,服务提供模块从B系统的CBS后台获取相关用户的月租费用查询结果;步骤613,服务提供模块将获取的月租费用查询结果反馈给A系统的CRM客户端。由此可见,利用本发明实施例SOA服务提供系统,由系统中的服务版本自动鉴别模块根据外部系统的服务调用请求中的服务名称从版本库中获取与所述服务名称相匹配的服务的所有版本,然后通过调用匹配规则处理模块,由匹配规则处理模块根据外部系统的服务调用请求中的服务參数及对应所述服务名称的匹配规则,对相关服务的所有版本进行匹配,得到最佳匹配服务版本供外部系统的客户端调用。由于对服务版本的选择实现了自动化,从而避免了客户端侧的人工干预。本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相參见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述得比较简单,相关之处參见方法实施例的部分说明即可。以上所描述的系统实施例仅仅是示意性的,其中所述作为分离部件说明的単元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理単元,即可以位于ー个地方,或者也可以分布到多个网络単元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。以上对本发明实施例进行了详细介绍,本文中应用了具体实施方式
对本发明进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及设备;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式
及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。
权利要求
1.ー种SOA服务提供方法,其特征在于,包括 接收外部系统的服务调用请求,在所述服务调用请求中包含服务名称及服务參数; 从版本库中获取与所述服务名称相匹配的服务的所有版本; 根据匹配规则和所述服务參数从所述服务的所有版本中选出最佳匹配服务版本; 利用所述最佳匹配服务版本为所述外部系统提供服务。
2.根据权利要求I所述的方法,其特征在于,所述接收外部系统的服务调用请求包括 通过UDDI接ロ接收所述外部系统的服务调用请求。
3.根据权利要求I所述的方法,其特征在于,所述匹配规则包括以下任意ー项或多项服务參数个数,服务參数类型。
4.根据权利要求I所述的方法,其特征在于,所述方法还包括 向用户提供规则匹配接ロ; 根据所述用户从所述规则匹配接ロ输入的匹配规则參数生成所述匹配规则,并保存所述匹配规则。
5.根据权利要求I至4任一项所述的方法,其特征在于,所述方法还包括 接收服务发布请求,所述服务发布请求中包含需要发布的服务的服务名称; 如果所述版本库中没有与所述服务名称相同的服务,则将所述服务加载到所述版本库中; 如果所述版本库中有与所述服务名称相同的服务,则先将所述服务的服务名称増加版本号后綴,然后再将所述服务加载到所述版本库中。
6.ー种SOA服务提供系统,其特征在于,包括 服务提供模块,用于接收外部系统的服务调用请求,在所述服务调用请求中包含服务名称及服务參数; 版本库,用于保存在用的各版本的服务; 服务版本自动鉴别模块,用于从所述版本库中获取与所述服务名称相匹配的服务的所有版本,并根据匹配规则和所述服务參数从所述服务的所有版本中选出最佳匹配服务版本; 所述服务提供模块,还用于利用所述服务版本自动鉴别模块选出的最佳匹配服务版本为所述外部系统提供服务。
7.根据权利要求6所述的系统,其特征在于,所述服务提供模块,具体用于通过UDDI接ロ接收所述外部系统的服务调用请求。
8.根据权利要求6所述的系统,其特征在于,所述系统还包括 规则库,用于保存对应不同服务的规则; 匹配规则处理模块,用于从所述规则库中获取对应所述服务名称的匹配规则,井根据所述匹配规则和所述服务參数从所述服务的所有版本中选出最佳匹配服务版本; 所述服务版本自动鉴别模块通过调用所述匹配规则处理模块获取所述最佳匹配服务版本。
9.根据权利要求6至8任一项所述的系统,其特征在于,所述系统还包括 版本管理模块,用于对所述版本库中的服务进行升级、加载和管理。
10.根据权利要求9所述的系统,其特征在于,所述版本管理模块包括请求接收单元,用于接收服务发布请求,所述服务发布请求中包含需要发布的服务的服务名称; 查询单元,用于查询所述版本库中是否有与所述服务名称相同的服务; 加载单元,用于 在所述查询単元查询到所述版本库中没有与所述服务名称相同的服务吋,将所述服务加载到所述版本库中;在所述查询単元查询到所述版本库中有与所述服务名称相同的服务时,先将所述服务的服务名称増加版本号后缀,然后再将所述服务加载到所述版本库中。
全文摘要
本发明涉及企业服务总线技术领域,公开了一种面向服务的体系架构服务提供方法及系统。该方法包括接收外部系统的服务调用请求,在所述服务调用请求中包含服务名称及服务参数;从版本库中获取与所述服务名称相匹配的服务的所有版本;根据匹配规则和所述服务参数从所述服务的所有版本中选出最佳匹配服务版本;利用所述最佳匹配服务版本为所述外部系统提供服务。本发明能够根据外部系统所请求的服务自动选择相匹配的服务版本,避免人工干预。
文档编号H04L29/06GK102694803SQ20121016852
公开日2012年9月26日 申请日期2012年5月25日 优先权日2012年5月25日
发明者党铁鹏 申请人:华为软件技术有限公司