公开/公告号CN101997851A
专利类型发明专利
公开/公告日2011-03-30
原文格式PDF
申请/专利权人 中兴通讯股份有限公司;
申请/专利号CN200910166139.2
申请日2009-08-17
分类号H04L29/06;G06F17/30;
代理机构北京康信知识产权代理有限责任公司;
代理人余刚
地址 518057 广东省深圳市南山区科技南路55号
入库时间 2023-12-18 01:52:15
法律状态公告日
法律状态信息
法律状态
2020-07-31
未缴年费专利权终止 IPC(主分类):H04L29/06 授权公告日:20140409 终止日期:20190817 申请日:20090817
专利权的终止
2014-04-09
授权
授权
2012-02-01
实质审查的生效 IPC(主分类):H04L29/06 申请日:20090817
实质审查的生效
2011-03-30
公开
公开
技术领域
本发明涉及目录服务领域,尤其涉及一种访问服务端的目录的方法、客户端、服务端及系统。
背景技术
轻量级目录访问协议(LDAP,Lightweight Directory AccessProtocol)是一种访问目录的协议,图1为LDAP目录服务实现的简化示意图。描述了一个LDAP目录服务的简单模型。包括客户端和服务端,客户端和服务端。
在RF2251中,定义了LDAP V3协议的基本模型和基本操作,提供了基本的访问目录的方法,包括查询,增加,删除,修改,比较等访问操作。之间通过LDAP协议进行交互。
LDPA适用于查询访问操作占主要部分的系统,提供了方便的大批量查询的接口,可以提供对条目的整个子树属性的查询。但是对于增加,删除和修改的访问操作,都只是针对一个条目,使得增加子树等批量操作不得不发送多条LDAP请求,而且原本相关的一系列LDAP写请求可能会被其他LDAP写请求打断,从而可能引起数据冲突。
在专利号为US6877026的专利“Bulk import in a directoryserver”中,提供一种向目录中大批量导入数据的方法,利用LDAP的扩展消息,增加了一对“start bulk import”请求/响应消息,一对“bulk import done”请求/响应消息。在LDAP客户端向LDAP服务端发送“start bulk import”请求,并且LDAP服务端向LDAP客户端返回“start bulk import”响应后,开始BULK Import流程,在此过程中,LDAP客户端向LDAP服务端发送一系列的ADD(增加)请求,LDAP服务端根据每一条请求进行处理,并且返回ADD响应。在结束bulk import时,客户端发送“bulk import done”请求到服务端,等待服务端发送“bulk import done”响应后,流程结束。
该专利虽然保证了一系列ADD操作的完整性,但是增加一个条目就有一条ADD请求,访问效率不高,通讯浪费严重。另一方面,该专利仅仅提供了批量增加的方法,没有实现批量进行修改,删除,增加以及混合操作。
发明内容
有鉴于此,本发明提供了一种客户端批量访问服务端目录的方案,用以解决现有技术中批量处理过程中存在的客户端与服务端交互次数多、效率不高的问题。
根据本发明的一个方面,提供了一种请求访问目录的方法,用于客户端请求访问服务端的目录。
根据本发明的请求访问目录的方法包括:客户端向服务端发送复合请求消息,其中,所述复合请求消息中包含访问所述服务端的目录的多个操作的请求。
根据本发明的另一个方面,提供了一种响应访问目录请求的方法,用于响应客户端请求访问服务端的目录。
根据本发明的响应访问目录请求的方法,包括:
服务端接收来自客户端的复合请求消息,其中,复合请求消息中包含访问服务端的目录的多个操作的请求;服务端根据复合请求消息,执行多个操作,得到与复合请求消息对应的操作结果;服务端将携带操作结果的复合请求响应消息发送给客户端,该复合请求响应消息与上述复合请求消息相对应。
根据本发明的另一个方面,提供了一种访问服务端的目录的方法。
根据本发明的访问服务端的目录的方法,包括:
客户端发送复合请求消息至服务端,其中,复合请求消息中包含访问服务端的目录的多个操作;服务端接收来自客户端的复合请求消息,服务端根据所述复合请求消息,执行多个操作,得到与复合请求消息对应的操作结果;服务端将携带操作结果的复合请求响应消息发送给客户端。
根据本发明的另一个方面,提供了一种客户端,用于请求访问服务端的目录。
根据本发明的客户端,包括:封装模块、发送模块,其中,封装模块,用于在复合请求消息中封装复合请求消息的标识、请求的多个操作的数据、多个操作之间的关系、指示是否容忍操作错误的容错标识;发送模块,用于向服务端发送复合请求消息,其中,复合请求消息中包含访问服务端的目录的多个操作的请求。
根据本发明的另一个方面,提供了一种务端,用于响应客户端访问服务端的目录。
根据本发明的服务端,包括:接收模块、解析模块、执行模块以及发送模块,其中,接收模块,用于接收客户端发送的复合请求消息,其中,复合请求消息中包含访问服务端的目录的多个操作的请求;解析模块,用于解析出复合请求消息中携带的多个操作的数据、多个操作之间的关系以及指示是否容忍操作错误的标识;执行模块,用于根据复合请求消息中携带的多个操作的数据、多个操作之间的关系以及指示是否容忍操作错误的标识,分别执行多个操作,并根据执行多个操作的结果设置复合请求消息对应的操作结果;发送模块,用于将携带操作结果的复合请求响应消息发送给客户端。
根据本发明的再一个方面,提供了一种访问目录的系统。
根据本发明的访问目录的系统,包括:客户端、服务端,其中,客户端,用于向服务端发送复合请求消息,其中,复合请求消息中包含访问服务端的目录的多个操作的请求;服务端,用于接收来自客户端的复合请求消息,根据复合请求消息,执行多个操作,得到与复合请求消息对应的操作结果,并将携带操作结果的复合请求响应消息发送给客户端。
通过本发明的上述至少一个方案,通过定义了一种复合请求消息,将多个基本子操作封装在同一个请求中,从而使得客户端可以批量访问服务端的目录,减少了客户端与服务端的消息交互次数和消息数量,提高了目录服务的效率。
本发明的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本发明而了解。本发明的目的和其他优点可通过在所写的说明书、权利要求书、以及附图中所特别指出的结构来实现和获得。
附图说明
附图用来提供对本发明的进一步理解,并且构成说明书的一部分,与本发明的实施例一起用于解释本发明,并不构成对本发明的限制。在附图中:
图1为根据现有技术的LDAP目录服务实现的简化示意图;
图2为根据本发明实施例的复合请求消息的结构图;
图3为根据本发明实施例的客户端定义并发送复合请求的流程图;
图4为根据本发明实施例的响应访问目录请求的方法的流程图;
图5为根据本发明实施例的复合请求响应消息的结构图;
图6为根据本发明实施例的服务端执行复合请求中多个操作的流程图;
图7为根据本发明实施例一的服务端执行复合请求中多个具有并发关系的操作的详细流程图;
图8为根据本发明实施例二的服务端执行复合请求中多个具有顺序关系的操作的详细流程图;
图9为根据本发明实施例三的服务端执行复合请求中多个具有顺序关系的操作的详细流程图;
图10为根据本发明实施例四的服务端执行复合请求中多个具有事务性关系的操作的详细流程图;
图11为根据本发明实施例五的服务端执行复合请求中多个具有事务性关系的操作的详细流程图;
图12为根据本发明实施例的复合请求响应消息的发送流程图;
图13为根据本发明实施例的访问服务端的目录的方法流程图;
图14为根据本发明实施例的客户端的结构示意图;
图15为根据本发明实施例的服务端的结构示意图;
图16为根据本发明实施例的访问目录的系统的结构示意图。
具体实施方式
功能概述
本发明实施例中,通过定义一种复合请求消息,将多个访问目录的基本子操作组合到一个复合请求中,由客户端向服务端发送该复合请求消息请求访问目录,服务端根据接收到的复合请求消息,解析出其中的多个基本子操作,并执行上述基本子操作,根据子操作的执行结果、基本子操作之间的关系以及错误处理模式,向客户端返回复合请求响应消息,从而实现了客户端批量访问服务端目录,大大提高了访问目录的效率。
在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。
以下结合附图对本发明的优选实施例进行说明,应当理解,此处所描述的优选实施例仅用于说明和解释本发明,并不用于限定本发明。
根据本发明实施例,首先提供了一种请求访问目录的方法,用于客户端请求访问服务端的目录。
根据本发明实施例的请求访问目录的方法包括:客户端向服务端发送复合请求消息,其中,该复合请求消息中包含访问服务端的目录的多个操作的请求。
上述复合请求消息中携带的信息包括:复合请求消息的标识、请求的多个操作的数据、多个操作之间的关系、指示是否容忍操作错误的容错标识。在本发明实施例中,为了方便区分,将一个复合请求消息中包括的各个操作称作为一个子操作。
图2示出了本发明实施例的复合请求消息的结构图,如图1所示,在复合请求消息中定义了复合请求的标识(复合请求的OID),封装了复合请求数据。其中,复合请求数据包括子操作间关系,容忍子操作错误标记和多个子操作请求。在具体实施过程中,上述复合请求消息可以根据LDAP协议的扩展操作为基础定义,封装的每个子操作都可以按照LDAP协议进行封装编码。
具体地,子操作可以包括:增加,删除,修改,查询等,并且可以同是多种子操作复合,由实现上述增加,删除,修改,查询等操作的命令构成子操作的数据;容忍子操作错误的标记包括:容忍子操作失败(当出现子操作失败时,复合请求继续执行),不容忍子操作失败(当子操作失败,则回滚所有的已经执行的子操作,复合请求失败结束);子操作间的关系包括:并发关系、顺序执行和事务关系,并发关系表示多个子操作间没有必然联系,先后顺序不影响本次复合操作;顺序关系,表示子操作逐条顺序执行;事务关系,表示本次复合请求中的多个子操作为一个事务,不允许被打断。
图3是根据本发明实施例的客户端定义并发送复合请求的流程图,如图3所示,客户端将需要执行的子请求进行格式化,一种实现方式就是对子请求按照LDAP的定义进行编码,然后将格式化的请求附加到复合请求中,将所有的需要执行的子请求都按照上述方式进行处理,直到所有的子操作都附加完成,然后填写多个操作之间的关系以及容忍错误的标记,然后按照LDAP的扩展请求定义进行编码,然后将复合请求发送到客户端。
根据本发明实施例,还提供了一种响应访问目录请求的方法,用于响应客户端请求访问服务端的目录。
图4是根据本发明实施例的响应访问目录请求的方法的流程图,如图4所示,根据本发明实施例的响应访问目录请求的方法的流程如下(步骤S402-步骤S406):
步骤S402、服务端接收来自客户端的复合请求消息,其中,该复合请求消息中包含访问服务端的目录的多个操作的请求;
步骤S404、服务端根据复合请求消息,执行上述多个操作,得到与复合请求消息对应的操作结果;
步骤S406、服务端将携带操作结果的复合请求响应消息发送给客户端。
该复合请求响应消息中携带的信息包括:上述复合请求消息的操作结果、复合请求消息的标识、请求的所述多个操作的执行结果、所述多个操作之间的关系、指示是否容忍操作错误的容错标识。
具体地,上述的操作结果包括:复合请求消息成功标识、复合请求消息失败标识、复合请求消息部分失败标识。
图5示出了本发明实施例的复合请求响应消息的结构图,如图5所示,复合请求响应消息的定义方式与复合请求消息大致相同,不同之处在于复合请求响应消息定义了对应的复合请求消息的操作结果;定义了多个子操作的执行结果。在具体实施过程中,上述复合请求响应消息可以根据LDAP协议的扩展操作为基础定义。
以下进一步描述响应访问目录请求的方法流程的各个细节。
如图6所示,在具体实施过程中,服务端根据复合请求消息,执行所述多个操作,得到与所述复合请求消息对应的操作结果,具体分为以下步骤(步骤S602-步骤S606):
步骤S602、服务端根据复合请求消息中携带的复合请求消息的标识确定接收到包括多个操作的请求的复合请求消息;
步骤S604、服务端解析出复合请求消息中携带的多个操作的数据、多个操作之间的关系以及指示是否容忍操作错误的标识;
步骤S606、服务端根据复合请求消息中携带的多个操作的数据、多个操作之间的关系以及指示是否容忍操作错误的标识,分别执行多个操作,并根据执行多个操作的结果设置复合请求消息对应的操作结果。
针对上述步骤S606,在具体实施过程中,会根据多个操作之间的关系和容错标识的不同,采取不同的处理流程,下面以具体的实施例对各种情况进行详细描述。
实施例一
如图7所示,如果多个操作之间的关系为并发关系,则上述步骤S606可以细化成以下步骤(步骤S702-步骤S706):
步骤S702、并发执行多个操作,等待执行结果;
步骤S704、获取所有操作的执行结果,判断执行结果是否正确;
步骤S706、如果执行结果全部不正确,则设置操作结果为复合请求失败标识,如果部分不正确,则设置操作结果为复合请求部分失败标识,如果全部正确,则设置操作结果为复合请求成功标识。
实施例二
如图8所示,如果多个操作之间的关系为顺序关系,且容错标识指示容忍操作错误,则上述步骤S606可以细化成以下步骤(步骤S802-步骤S806):
步骤S802、如果多个操作中存在未执行的操作,则读取一条未执行的操作并执行,等待执行结果;否则执行步骤S806;
步骤S804、获取执行结果,返回执行步骤S802;
步骤S806、如果多个操作的执行结果均为失败,则设置操作结果为复合请求失败标识;如果多个操作的执行结果均为成功,则设置操作结果复合请求成功标识;否则设置操作结果复合请求部分失败标识。
实施例三
如图9所示,如果多个操作之间的关系为顺序关系,且容错标识指示不容忍操作错误,则上述步骤S606可以细化成以下步骤(步骤S902-步骤S904):
步骤S902、如果多个操作中存在未执行的操作,则读取一条未执行的操作并执行,等待执行结果;否则,设置所述操作结果为复合请求成功标识;
步骤S904、获取当前执行的操作的执行结果,如果该执行结果为正确,则执行步骤S902;否则,设置操作结果为复合请求失败标识,结束所述多个操作的执行。
实施例四
如图10所示,如果多个操作之间的关系为事务性关系,且容错标识指示容忍操作错误,则上述步骤S606可以细化成以下步骤(步骤S1002-步骤S1008):
步骤S1002、遍历复合请求消息中的所有操作,计算需要锁定的述服务端目录中的条目和子树,并申请复合请求消息的至少一个锁;
步骤S1004、如果复合请求消息中还有未执行的基本操作,则读取一条操作并执行,等待执行结果;否则,执行步骤S1008;
步骤S1006、获取操作的执行结果,返回执行步骤S1004;
步骤S1008、释放复合请求消息的至少一个锁,如果多个操作的执行结果均为失败,则设置操作结果为复合请求失败标识;如果多个操作的执行结果均为成功,则设置操作结果为复合请求成功标识;否则设置所述操作结果为复合请求部分失败标识。
实施例五
如图11所示,如果多个操作之间的关系为事务性关系,且容错标识指示不容忍操作错误,则上述步骤S606可以细化成以下步骤(步骤S1102-步骤S1106):
步骤S1102、遍历复合请求消息中的所有操作,计算需要锁定的服务端目录中的条目和子树,并申请复合请求消息的至少一个锁;
步骤S1104、如果复合请求消息中还有未执行的操作,则读取一条基本操作并执行,等待执行结果;否则,释放复合请求消息的至少一个锁,设置操作结果为复合请求成功标识;
步骤S1106、获取当前执行的操作的执行结果,如果该执行结果为正确,则执行S1104;否则,释放复合请求消息的至少一个锁,设置操作结果为复合请求失败标识,并结束多个操作的执行。
图12是根据本发明实施例的复合请求响应消息的发送流程图。如图12所示,在服务端将携带操作结果的复合请求响应消息发送给客户端之前,如果相应复合请求的操作结果为复合请求部分失败标识或者复合请求成功标识,则还需要在复合请求响应消息中封装多个子操作的执行结果。
根据本发明实施例,还提供了一种访问服务端的目录的方法。
图13是根据本发明实施例的访问服务端的目录的方法流程图,如图13所示,上述方法的具体流程如下(步骤S1302-步骤S1306):
步骤S1302、客户端发送复合请求消息至服务端,其中,复合请求消息中包含访问服务端的目录的多个操作;
步骤S1304、服务端接收来自客户端的复合请求消息,服务端根据复合请求消息,执行多个操作,得到与复合请求消息对应的操作结果;
步骤S1306、服务端将携带操作结果的复合请求响应消息发送给客户端。
根据本发明的实施例,还提供了一种客户端,用于请求访问服务端的目录。
图14是根据本发明实施例的客户端的结构示意图,如图14所示,上述客户端包括封装模块141和发送模块142,其中,封装模块141,用于在复合请求消息中封装复合请求消息的标识、请求的多个操作的数据、多个操作之间的关系、指示是否容忍操作错误的容错标识;发送模块142,用于向述服务端发送复合请求消息,其中,复合请求消息中包含访问所述服务端的目录的多个操作的请求。
根据本发明的实施例,还提供了一种服务端,用于响应客户端访问服务端的目录。
图15是根据本发明实施例的服务端的结构示意图,如图15所示,上述服务端包括:接收模块151、解析模块152、执行模块153以及发送模块154。其中,接收模块151,用于接收客户端发送的复合请求消息,其中,复合请求消息中包含访问服务端的目录的多个操作的请求;解析模块152,用于解析出复合请求消息中携带的多个操作的数据、多个操作之间的关系以及指示是否容忍操作错误的标识;执行模块153,用于根据复合请求消息中携带的多个操作的数据、多个操作之间的关系以及指示是否容忍操作错误的标识,分别执行上述多个操作,并根据执行多个操作的执行结果设置复合请求消息对应的操作结果;发送模块154,用于将携带操作结果的复合请求响应消息发送给客户端。
根据本发明的实施例,还提供了一种访问目录的系统。
图16是根据本发明实施例的访问目录的系统的结构示意图。如图16所示,上述系统包括客户端161和服务端162,其中,客户端161,用于向服务端发送复合请求消息,其中,复合请求消息中包含访问服务端的目录的多个操作的请求;服务端162,用于接收来自客户端的复合请求消息,根据复合请求消息,执行多个操作,得到与复合请求消息对应的操作结果,并将携带操作结果的复合请求响应消息发送给客户端。
如上所述,借助本发明实施例提供的技术方案,客户端将多个基本子操作封装在同一个复合请求消息中,发送至服务端,服务端根据多种子操作的组合方式和容错标识执行解析出的基本子操作,并向客户端返回携带操作结果的复合请求相应消息,从而实现了批量操作的实现了简单、灵活的批量访问目录的方法,并且减少了客户端与服务端的消息交互次数和消息数量,大大提高了效率。
以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
机译: 电子邮件收发方法,电子邮件客户端,服务端和系统
机译: 页面显示,服务端设备,客户端设备和存储介质的方法和系统
机译: 用于轻量级目录访问协议客户端应用程序接口的方法,系统和计算机程序产品