面向服务架构中服务的处理方法和装置与流程

文档序号:12063478阅读:325来源:国知局
面向服务架构中服务的处理方法和装置与流程

本申请涉及数据处理领域,具体而言,涉及一种面向服务架构中服务的处理方法和装置。



背景技术:

对于客户端和服务端通过面向服务的框架WCF进行通信的系统,客户端通过服务调用服务端方法,这样的系统中包含很多服务,执行这些服务的方法时可能会抛出多种异常。通常需要在每个方法中捕获异常,对异常进行处理。系统中一般都有统一的异常处理策略,每个方法都需要使用相同的策略处理异常。

由于每个服务的方法都使用同样的处理异常策略,这样当修改异常处理策略时,需要每个服务的方法中都进行修改。即使将这些策略封装到统一的方法中,也需要在每个服务方法中调用这些方法,而这些调用和服务方法本身业务逻辑不相关,导致原服务方法包含不相关调用。

针对上述的问题,目前尚未提出有效的解决方案。



技术实现要素:

本申请实施例提供了一种面向服务架构中服务的处理方法和装置,以至少解决现有技术中服务方法中经常包含不相关调用的技术问题。

根据本申请实施例的一个方面,提供了一种面向服务架构中服务的处理方法,包括:在所述服务被调用时,通过代理执行所述服务;获取所述代理执行所述服务过程中的异常信息;以及根据所述异常信息的类别处理所述异常信息。

进一步地,根据所述异常信息的类别处理所述异常信息包括:判断所述异常信息是否具有第一标识,其中,所述第一标识用于标识所述异常信息的类别;在判断出所述异常信息具有所述第一标识的情况下,从所述面向服务架构的数据库中查询与所述第一标识对应的处理方式,并按照查询到的处理方式处理所述异常信息,其中,所述面向服务架构的数据库中存储有与不同第一标识相对应的处理方式;以及在判断出所述异常信息不具有所述第一标识的情况下,调用预设处理方式处理所述异常信息。

进一步地,在通过代理执行所述服务之前,所述方法还包括:获取所述面向服务架构调用所述服务的历史日志;提取所述历史日志中记录的异常信息;对提取到的异常信息进行分类;以及对每一个分类后的异常信息添加所述第一标识。

进一步地,所述方法还包括:添加第二标识至所述服务,其中,在所述服务被调用时,通过代理执行所述服务包括:在具有所述第二标识的所述服务被调用时,通过代理执行具有所述第二标识的所述服务。

进一步地,添加第二标识至所述服务包括:在所述服务所属的类中创建与所述代理相关联的所述第二标识。

根据本申请实施例的一个方面,提供了一种面向服务架构中服务的处理装置,包括:执行单元,用于在所述服务被调用时,通过代理执行所述服务;第一获取单元,用于获取所述代理执行所述服务过程中的异常信息;以及处理单元,用于根据所述异常信息的类别处理所述异常信息。

进一步地,所述处理单元包括:判断模块,用于判断所述异常信息是否具有第一标识,其中,所述第一标识用于标识所述异常信息的类别;第一处理模块,用于在所述判断模块判断出所述异常信息具有所述第一标识的情况下,从所述面向服务架构的数据库中查询与所述第一标识对应的处理方式,并按照查询到的处理方式处理所述异常信息,其中,所述面向服务架构的数据库中存储有与不同第一标识相对应的处理方式;以及第二处理模块,用于在所述判断模块判断出所述异常信息不具有所述第一标识的情况下,调用预设处理方式处理所述异常信息。

进一步地,所述装置还包括:第二获取单元,用于在所述执行单元通过代理执行所述服务之前,获取所述面向服务架构调用所述服务的历史日志;提取单元,用于提取所述历史日志中记录的异常信息;分类单元,用于对所述提取单元提取到的异常信息进行分类;以及第一添加单元,用于对每一个分类后的异常信息添加所述第一标识。

进一步地,所述装置还包括:第二添加单元,用于添加第二标识至所述服务,其中,所述执行单元包括:执行模块,用于在具有所述第二标识的所述服务被调用时,通过代理执行具有所述第二标识的所述服务。

进一步地,所述第二添加单元包括:创建模块,用于在所述服务所属的类中创建与所述代理相关联的所述第二标识。

在本申请实施例中,采用在所述服务被调用时,通过代理执行所述服务;获取所述代理执行所述服务过程中的异常信息;以及根据所述异常信息的类别处理所述异常信息。通过代理执行服务,并进行异常信息的获取和处理,实现了在执行异常信息处 理过程中,不需要在服务方法中调用这些异常处理方法,进而避免服务方法调用与本身业务逻辑不相关的调用,并且通过代理执行服务的方式,将异常信息交由代理处理,达到了统一调用代理来执行异常处理,解决了现有技术中服务方法中经常包含不相关调用的技术问题,实现了通过代理统一执行服务方法,并对执行过程中的异常进行统一处理的效果。

附图说明

此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:

图1是根据本申请实施例的面向服务架构中服务的处理方法的流程图;以及

图2是根据本申请实施例的面向服务架构中服务的处理装置的示意图。

具体实施方式

为了使本技术领域的人员更好地理解本申请方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分的实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本申请保护的范围。

需要说明的是,本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本申请的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。

首先对本申请实施例所涉及的技术术语作如下解释:

WCF:微软开发的支持一些通信协议的矿建,为面相服务构建的一整套框架。

契约:面相服务的概念,包括服务契约、数据契约等,在本申请实施例中特指服务契约,相当于接口,定义包含了哪些操作。

服务:目前比较流行的分布式系统中使用的通信技术,这是一套标准,不依赖于 具体的编程语言和系统,即跨语言边界、跨系统,不同语言和不同系统之间可以通过服务进行交互。

根据本申请实施例,提供了一种面向服务架构中服务的处理方法的实施例,需要说明的是,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。

图1是根据本申请实施例的一种面向服务架构中服务的处理方法的流程图,如图1所示,该方法主要包括如下步骤S102至步骤S106:

S102:在服务被调用时,通过代理执行服务,即,在面向服务架构中的服务被调用时,不直接执行服务方法,而是将调用委托给代理,通过代理来执行服务方法。

S104:获取代理执行服务过程中的异常信息。代理执行服务方法过程中,捕获执行过程中遇到的异常(即错误),当捕获到异常后,可以先将异常记录到日志中。

S106:根据异常信息的类别处理异常信息。由于通过代理执行服务,相当于将服务方法的执行权限转交给代理,因此,在获取到代理执行服务过程中的异常信息后,需要代理进一步根据异常信息的类别来对异常信息进行处理。一般而言,面向服务架构中,通过会出现的异常包括如下类别:网络超时,系统错误,业务逻辑错误,非法参数,实体错误,查询错误,重复配置,配置不存在,实体有依赖,需要登录,用户名或密码错误,权限不足,Profile不存在,帐号不存在和Solution不存在。

本申请实施例所提供的面向服务架构中服务的处理方法,通过代理执行服务,并进行异常信息的获取和处理,实现了在执行异常信息处理过程中,不需要在服务方法中调用这些异常处理方法,进而避免服务方法调用与本身业务逻辑不相关的调用,并且通过代理执行服务的方式,将异常信息交由代理处理,达到了统一调用代理来执行异常处理,解决了现有技术中服务方法中经常包含不相关调用的技术问题,实现了通过代理统一执行服务方法,并对执行过程中的异常进行统一处理的效果。

可选地,在通过代理执行服务之前,本申请实施例所提供的面向服务架构中服务的处理方法还包括:获取面向服务架构调用服务的历史日志;提取历史日志中记录的异常信息;对提取到的异常信息进行分类;以及对每一个分类后的异常信息添加第一标识。

在本申请实施例中,可以对面向服务架构中所出现的异常信息进行标注,比如可以定义ServiceException,ServiceException包括Type属性和Message属性,其中,Type属性表明异常类别,Message属性是异常说明,在执行服务过程中,如果捕获到 异常信息,主要是根据异常信息中的ServiceException来确定异常信息的类别。

可选地,根据异常信息的类别处理异常信息包括:判断异常信息是否具有第一标识,其中,第一标识用于标识异常信息的类别;在判断出异常信息具有第一标识的情况下,从面向服务架构的数据库中查询与第一标识对应的处理方式,并按照查询到的处理方式处理异常信息,其中,面向服务架构的数据库中存储有与不同第一标识相对应的处理方式;在判断出异常信息不具有第一标识的情况下,调用预设处理方式处理异常信息。

具体地,对应以ServiceException进行标注的方式,主要是判断异常信息中是否具有ServiceException,如果判断为ServiceException,可以将该异常信息封装为FaultException<ServiceException>,并查询与该ServiceException对应的处理方式,并按照查询到的处理方式处理异常信息。如果不是,可以说明该异常信息不是服务约定的异常,是不期望发生的异常,这样的异常不能直接暴露给客户。因此这里将异常详细信息进行屏蔽,不让用户看到这些异常详细信息,一方面用户没有必要看到这些信息,另一方面避免因为这些信息泄漏系统内部实现,造成可能的安全隐患。当然,如果异常信息中不具有ServiceException,还可以创建新的ServiceException,Type为系统异常,Message为系统错误,相当于在该异常信息再次出现时,便不再是从未出现过的异常,通过添加的ServiceException则可以调用相应的处理方式。

其中,对于具ServiceException的异常信息,客户端收到该异常信息后,根据异常类别进行有针对性的操作。比如针对需要登录错误,跳转到登录界面。其他大部分错误类别是弹出对话框,显示异常信息。

可选地,本申请实施例所提供的面向服务架构中服务的处理方法还包括:添加第二标识至服务,其中,在服务被调用时,通过代理执行服务包括:在具有第二标识的服务被调用时,通过代理执行具有第二标识的服务。第二标识用于标记需要调用代理的服务。

即,在面向服务架构的服务中注入标记,后续当注入标记的服务被调用时,都会委托给代理,由代理执行服务方法的调用。在本申请实施例中,可以以在服务所属的类中创建与代理相关联的第二标识的方式,来实现添加第二标识至服务。比如:可以在第二标记中为服务实例创建代理,对服务实例的方法调用都被委托给代理。具体的,可以定义继承自ProxyAttribute类,在该类的CreateInstance方法中创建上面定义的代理。

通过以上描述可以看出,本申请实施例所提供的面向服务架构中服务的处理方法, 实现了将服务方法执行都委托给代理,由代理统一执行所有服务方法,并捕获方法执行过程中出现的异常,对异常进行统一处理。

根据本发明实施例,还提供了一种面向服务架构中服务的处理装置。该面向服务架构中服务的处理装置可以执行上述面向服务架构中服务的处理方法,上述面向服务架构中服务的处理方法也可以通过该面向服务架构中服务的处理装置实施。

图2是根据本申请实施例的面向服务架构中服务的处理装置的示意图。如图2所示,该面向服务架构中服务的处理装置主要包括执行单元10、第一获取单元20和处理单元30,其中:

执行单元10用于在服务被调用时,通过代理执行服务,即,在面向服务架构中的服务被调用时,不直接执行服务方法,而是将调用委托给代理,通过代理来执行服务方法。

第一获取单元20用于获取代理执行服务过程中的异常信息。代理执行服务方法过程中,捕获执行过程中遇到的异常(即错误),当捕获到异常后,可以先将异常记录到日志中。

处理单元30用于根据异常信息的类别处理异常信息。由于通过代理执行服务,相当于将服务方法的执行权限转交给代理,因此,在获取到代理执行服务过程中的异常信息后,需要代理进一步根据异常信息的类别来对异常信息进行处理。一般而言,面向服务架构中,通过会出现的异常包括如下类别:网络超时,系统错误,业务逻辑错误,非法参数,实体错误,查询错误,重复配置,配置不存在,实体有依赖,需要登录,用户名或密码错误,权限不足,Profile不存在,帐号不存在和Solution不存在。

本申请实施例所提供的面向服务架构中服务的处理装置,通过代理执行服务,并进行异常信息的获取和处理,实现了在执行异常信息处理过程中,不需要在服务方法中调用这些异常处理方法,进而避免服务方法调用与本身业务逻辑不相关的调用,并且通过代理执行服务的方式,将异常信息交由代理处理,达到了统一调用代理来执行异常处理,解决了现有技术中服务方法中经常包含不相关调用的技术问题,实现了通过代理统一执行服务方法,并对执行过程中的异常进行统一处理的效果。

可选地,本申请实施例所提供的面向服务架构中服务的处理装置还包括第二获取单元、提取单元、分类单元和第一添加单元,在执行单元10通过代理执行服务之前,第二获取单元用于获取面向服务架构调用服务的历史日志;提取单元用于提取历史日志中记录的异常信息;分类单元用于对提取单元提取到的异常信息进行分类;第一添加单元用于对每一个分类后的异常信息添加第一标识。

在本申请实施例中,可以对面向服务架构中所出现的异常信息进行标注,比如可以定义ServiceException,ServiceException包括Type属性和Message属性,其中,Type属性表明异常类别,Message属性是异常说明,在执行服务过程中,如果捕获到异常信息,主要是根据异常信息中的ServiceException来确定异常信息的类别。

可选地,处理单元30主要包括判断模块、第一处理模块和第二处理模块,其中,判断模块用于判断异常信息是否具有第一标识,其中,第一标识用于标识异常信息的类别;第一处理模块用于在判断模块判断出异常信息具有第一标识的情况下,从面向服务架构的数据库中查询与第一标识对应的处理方式,并按照查询到的处理方式处理异常信息,其中,面向服务架构的数据库中存储有与不同第一标识相对应的处理方式;第二处理模块用于在判断模块判断出异常信息不具有第一标识的情况下,调用预设处理方式处理异常信息。

具体地,对应以ServiceException进行标注的方式,主要是判断异常信息中是否具有ServiceException,如果判断为ServiceException,可以将该异常信息封装为FaultException<ServiceException>,并查询与该ServiceException对应的处理方式,并按照查询到的处理方式处理异常信息。如果不是,可以说明该异常信息不是服务约定的异常,是不期望发生的异常,这样的异常不能直接暴露给客户。因此这里将异常详细信息进行屏蔽,不让用户看到这些异常详细信息,一方面用户没有必要看到这些信息,另一方面避免因为这些信息泄漏系统内部实现,造成可能的安全隐患。当然,如果异常信息中不具有ServiceException,还可以创建新的ServiceException,Type为系统异常,Message为系统错误,相当于在该异常信息再次出现时,便不再是从未出现过的异常,通过添加的ServiceException则可以调用相应的处理方式。

其中,对于具ServiceException的异常信息,客户端收到该异常信息后,根据异常类别进行有针对性的操作。比如针对需要登录错误,跳转到登录界面。其他大部分错误类别是弹出对话框,显示异常信息。

可选地,本申请实施例所提供的面向服务架构中服务的处理装置还包括第二添加单元,该第二添加单元用于添加第二标识至服务,其中,执行单元包括执行模块,该执行模块用于在具有第二标识的服务被调用时,通过代理执行具有第二标识的服务。第二标识用于标记需要调用代理的服务。

即,在面向服务架构的服务中注入标记,后续当注入标记的服务被调用时,都会委托给代理,由代理执行服务方法的调用。在本申请实施例中,第二添加单元主要包括创建模块,该创建模块用于在服务所属的类中创建与代理相关联的第二标识,来实现添加第二标识至服务。比如:可以在第二标记中为服务实例创建代理,对服务实例 的方法调用都被委托给代理。具体的,可以定义继承自ProxyAttribute类,在该类的CreateInstance方法中创建上面定义的代理。

通过以上描述可以看出,本申请实施例所提供的面向服务架构中服务的处理装置,实现了将服务方法执行都委托给代理,由代理统一执行所有服务方法,并捕获方法执行过程中出现的异常,对异常进行统一处理。

所述面向服务架构中服务的处理装置包括处理器和存储器,上述执行单元10、第一获取单元20和处理单元30等均作为程序单元存储在存储器中,由处理器执行存储在存储器中的上述程序单元来实现相应的功能。

处理器中包含内核,由内核去存储器中调取相应的程序单元。内核可以设置一个或以上,通过调整内核参数来统一处理异常。

存储器可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM),存储器包括至少一个存储芯片。

本申请还提供了一种计算机程序产品,当在数据处理设备上执行时,适于执行初始化有如下方法步骤的程序代码:在服务被调用时,通过代理执行服务;获取代理执行服务过程中的异常信息;以及根据异常信息的类别处理异常信息。

上述本申请实施例序号仅仅为了描述,不代表实施例的优劣。

在本申请的上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。

在本申请所提供的几个实施例中,应该理解到,所揭露的技术内容,可通过其它的方式实现。其中,以上所描述的装置实施例仅仅是示意性的,例如所述单元的划分,可以为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,单元或模块的间接耦合或通信连接,可以是电性或其它的形式。

所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。

另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以 是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。

所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可为个人计算机、服务器或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。

以上所述仅是本申请的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本申请原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本申请的保护范围。

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