客户/服务器计算机系统中 处理不同协议方法调用的方法和装置 本发明通常涉及客户/服务器计算机网络。更详细地说,本发明涉及一服务器计算机,该服务器计算机可一般地处理来自使用各种通讯协议的对象请求代理的方法调用。
在一客户/服务器计算机网络中,一客户计算机的用户请求一对象的执行。特别是,该用户请求与该对象相关的一方法的执行。常常是,该对象没有本地地存贮在该客户计算机中。因此,对于在其中驻留有对象的服务器计算机必须进行远程过程调用(RPC)。该RPC规定了该对象及其相关的方法。该服务器计算机识别该将被执行的方法、执行这种方法并将所产生的结果和/或异常送回到该客户计算机。用来处理远程过程调用的分布式机构通常被称之为一对象请求代理(ORB)。与一ORB相关的软件意义上的分布式机构是在该客户计算机和该服务器计算机中。
存在有大量的一客户计算机可用来向一服务器计算机传送一远程过程调用的“在线”数据格式。相同的在线数据格式还被用来将结果从该服务器计算机传送到该客户计算机。更广泛的是,这些在线数据格式规定所有与远程过程调用相关的信息的格式。
在这里通常称之为协议的这些在线数据格式确定了例如变元如何被传送和数据类型如何被处理这样的因子。不同厂家用不同地协议实施ORB。近来,由Object Management Group颁布了一种称之为Universal NetworkedObject(UNO)协议的工艺标准。这种协议主要被看作为用于连接来自不同厂家的对象系统的一种网关协议。至少在一短期限内,不同厂家有可能想要继续使用它们现有的协议,以便在它们各自的对象系统内保持更高性能,同时在它们的ORB中支持较低性能UNO网关。因此,将继续使用多种协议来传送涉及RPC的信息。因此,最好是提供一种能够容易地和迅速地识别使用在涉及RPC信息中的多个协议的一服务器计算机。
本发明的一实施例是一带有大量与一传送通道相连的客户计算机的分布式客户/服务器计算机系统。这些客户计算机产生被加到该传送通道的方法调用(也称之为方法远程过程调用)。每个方法调用可由一不同的通信协议来编码。利用最初设置在该方法调用中的由一协议相关格式所规定的一方法描述符,一服务器计算机处理通过该传送通道所接收的每个方法调用。然后将该方法描述符与在该服务器计算机的存贮器中所存贮的一协议相关值表相比较。
当该方法描述符与一在该协议相关值表中所选择的协议相关值相匹配时,则被赋予一索引值。该索引值被传送到该服务器计算机的一协议独立部分。然后该服务器的协议独立部分执行相应于该索引值的方法以产生一应答。随后通过该传送通道将该应答传送到该客户计算机。
本发明的另一实施例包括在一服务器计算机中接收一由一客户计算机所产生的一方法调用的步骤。之后,将以一协议相关格式所规定的方法描述设置在该方法调用中。然后当该方法描述符与在一协议相关值表中所选择的协议相关值相匹配时,赋予一索引值。随后该索引值被传送到该服务器的一协议独立处理模块。接着该服务器执行相应于该索引值的该方法并且随后将这样的执行的结果通过传送通道送到该客户计算机。
该服务器的协议独立部分构成一可用来处理所有方法调用的单一的对象特定代码组,而不管通过该客户计算机将该方法调用传送给该服务器的协议。因此,不同的对象特定计算机代码组不需要用来处理在该传送通道上使用的不同的协议。本发明因而简化了在这些对象中以一与语言和厂家无关方式对这些方法的远程过程调用的处理。其结果,网络服务器可从不同的客户环境条件下进行显而易见地存取。因此,例如,以从前不可得到的方式,Internet(国际互联)中的网络服务器可处理客户计算机的请求,并且客户计算机可访问网络服务器。
为了更好的了解本发明的属性和目的,结合附图将作如下详细的说明。
图1示出了一客户/服务器计算机的拓普结构。
图2示出了与图1的装置相关的处理。
图3示出了与本发明的协议识别方法的一实施例相关的处理步骤。
图4示出了在实践所披露的技术中可以使用的一数据结构的一个例子。
图5示出了在实践所披露的技术中可使用的一数据结构的一般表示。
在所有的附图中相类似的标号表示相应部分。
图1示出了包括本发明技术的一客户/服务器计算机装置20。该装置20包括有一组客户计算机22A-22N,这些计算机的每一个均与一传送通道23相连接。该传送通道23通常是指任何在计算机之间的有线或无线连接。该客户计算机22A-22N利用该传送通道23与服务器计算机24通信。
每个客户计算机22具有标准计算机配置,包括:一连接到一存贮器32的中央处理单元(CPU)30,该存贮器32存贮有一组可执行程序。在该典型系统中该可执行程序包括有至少一个客户应用程序34、客户存根38、客户子合同40、和一操作系统42。
该客户应用程序34是任何应用层程序,例如是与一客户计算机22的用户互相配合的应用程序。该客户存根38通过请求特定对象的特定方法的执行的应用程序34而接收过程调用。该客户存根38的目的是存取在另外地址空间,例如服务器计算机24被实施的对象。
该客户子合同程序40和服务器子合同程序58控制对象调用和变元通过的基本机理。它们控制对象调用如何被实施、在地址空间之间对象基准如何被传送、对象基准如何被解除,以及类似的对象运行时间操作。例如,当一客户调用一所给子合同的对象时,通过将该请求传送给相关对象被装入的地址空间、一般为服务器计算机24,该子合同实施该对象调用。
该客户子合同程序40执行一引导操作,以将一对象调用(即,远程过程调用)传送给另一地址空间。在服务器计算机24中通过一服务器子合同58执行相应的未引导操作。当从另一计算机,即所说的服务计算机24,接收一应答(诸如从一方法调用产生的结果)时,该客户子合同程序40还执行未引导操作。一操作系统42,诸如Sun Microsystem的SOLARIS操作系统,构成客户应用程序34、客户存根38、和客户子合同40的操作的基础。
服务器24具有一类似于客户计算机22的构型。该服务器24包括一CPU50和一相关存贮器52。存贮器52存贮有服务器应用程序54、服务器存根56、服务器子合同程序58、和一操作系统60。如上所指出的,服务器存根56处理在一对象上输入的方法调用并调用所指定的方法以执行该操作。如上面还指出的,服务器子合同58执行数据引导和其它操作,以支持方法调用的传送并且在服务器24和客户计算机22之间产生返回信息。
参考图2对图1的装置的操作作更全面的说明。图2示出了图1的客户计算机22A、传送通道23、和服务器24。如上面所述,客户应用程序34利用远程过程调用在一不同的地址空间调用一对象的一指定方法。为了在该传送通道23上传送,该远程过程调用通过客户存根38被送到组装该远程过程调用的客户子合同40。服务器24的服务器子合同58接收该信息并且不组装它。服务器子合同58随后将该信息送到服务器存根56。该服务器存根56对上面所描述的对象方法的服务器应用程序54进行存取。更详细地说,特定的服务器存根56形成一过程调用以执行一指定的被调用对象的方法。该方法的执行产生一组结果,这里称之为应答,该应答随后返回到服务器子合同58并且该传送通道被反向,如同图2箭头所指那样。
图2的方框70示出了有关本发明的一对象请求代理(ORB)组成部分。如上面所指出的,在ORSs上使用了各种的通信协议。当一服务器试图识别输入的对象请求时,在不同的ORBs上使用不同的协议是困难的。
现在来说明与本发明相关的一般的结构格式和处理。现在更为详细的考虑本发明的结构格式、本发明的处理、这些要素和现有技术中的相应要素之间的区别、以及相关的所披露技术的优点。
如图2所示,客户子合同40使用一协议相关方法描述符去请求与一被调用对象有关的方法。更详细地说,该客户子合同40使用了一服从于一被选择的在线数据格式的排列缓冲器。例如,为了识别一所给方法“X”,一协议可使用一值“XXX”,另一协议可使用一值“@@@∷123∷XXX”,以及另一协议可使用一整数值“123456”,这里该值是在该方法名上的一散列函数的输出。客户存根38向客户子合同40传送一列协议相关值,客户子合同40根据这些值计算协议相关方法描述符。
因此,当一组客户计算机22A-22N被连接到服务器24时,服务器24必须处理每一个协议。单独的服务器子合同58(未示出)必须适应于这些协议的每一个。在现有技术中,每一服务器子合同58带有一组相应的服务器存根56,为了支持带有多个协议的ORBs,对于每个协议服务器24应具有不同的服务器存根56,其结果将具有大量的服务器存根56。因此,很容易了解不同ORB协议的使用对于服务器24将产生非常多的要求。
根据本发明,当服务器子合同58接收一输入的方法调用时,它以对该子合同协议的特定的方式不排列该方法描述符。然后试着将该方法描述符与协议相关值表中的每一个入口相匹配。协议相关值可以是字符串、数值、以及其它类型参数值。不同协议可以使用不同的匹配函数以使该方法描述符与协议相关值的表进行比较。该匹配函数可以是一字符串比较、一散列函数、或由服务器子合同58所指定的其它技术。当一匹配协议相关的值被识别时,该服务器子合同58可以将它与索引值相联系。
如图2所示,该索引值被送到可以请求相应于该索引值的方法的协议独立服务器存根56。在这种方式中,各自对象基准的协议相关性与协议独立服务器存根56相隔离。因此,协议独立的服务器存根56可使用任何类型的对象请求代理70。另外,一单个的编译程序可以用来产生该协议独立服务器存根56。
因此,不同于现有技术,本发明提供了识别各种ORB协议的一服务器24。此外,通过使用一组协议独立服务器存根56,本发明以高效的方式执行这种功能。应注意的是为了支持这种技术,通过利用本发明的客户子合同40和服务器子合同58执行通常由现有技术存根使用的引导和未引导操作。这种处理的传送和使用索引值以提供协议独立服务器存根构成了现有技术和本发明之间的差别。因此,一旦这些处理差别被调整,本发明可以被成功的实施在现存的结构格式和过程中。
图3是对前面部分所描述的该处理步骤的一详细说明。图3的初始处理步骤是该服务器子合同识别在一方法调用中的一方法描述符(框80)。如上面所指出的,该客户计算机产生一方法调用,该方法调用作为一组信息最终被组装在一引导缓冲器中。该信息的内容随已引导的该信息的客户子合同而定。在该服务器处相应的子合同不引导该信息并在该信息之内识别该方法描述符。
接下来的处理步骤是对于该服务器子合同去选择一匹配该方法描述符的协议相关值(框82)。这种操作可参照图4来说明。图4示出了协议相关值的一描述符-表。该表包括N个子集合表。每一子集合表识别一组可被用来识别单个方法的一组协议相关值。每个子集合表具有j个入口。在图4中,这些入口如Descriptor-List-1-1到Descriptor-List-1-j所示。在图4中,Descriptor-List-1-1是与一接口定义语言(IDL)短名有关。IDL是一工业标准。也就是,在该表中的一入口是被调用方法的IDL短名。该IDL短名是一在该技术中使用的ORB协议名。该表还示出了Descriptor-List-1-2与一IDL长名相关。也就是说,在该表中这个入口是该被调用方法的IDL长名。该IDL长名是在该技术中使用的另外的ORB协议名。在该子集合表中的第三个入口是Descriptor-List-1-3,它具有一贮存库ID。该贮存库ID是一用于该技术的另一ORB协议中的名称。例如这些不同的协议的例子包括如下的语句:
这些语句被用于调用该操作:
get_weak_comparator.
如图4所指出的,另外的指定还可用于该协议相关值的表中。此外,无须使用由这里例子所示的指定。无论如何,使用由IDL标准和其它工业标准以及实践所建立的格式,可以预言在该方式中大多数方法描述符将由任何适当的协议来实施。
作为一个简单的例子,用下面的伪代码来说明该描述符是如何被检索的。(1)i=0(2)match=false(3)repeat(4) i=i+1(5) if Match_p(Method_Descriptor,Descriptor_List_i_j)(6) Then Match=True(7)until Match(8)call operation_Table(i)
行(1)和(2)进行初始化。行(3)进入一处理循环。行(4)在该处理循环中进行初始化。行(5)用于一条件样验。即,该代码校验是否该方法调用的未引导的“Method-Descriptor”(方法-描述符)与协议相关表的“第i个”子集合表(Descriptor-List-i_j)的“第j个”入口匹配。“第j个”入口,即所说的IDL短名,由服务器子合同58可知是用于这个协议比较的一个入口。该“第i个”值是允许的每个子集合描述符表(Descriptor-List_1到Descriptor-List_N)被校验的一被增量值。该“match_P”项代表用来将方法描述符与该表入口相比较的匹配函数。例如,“Match_P”可规定为在两值之间的一简单字符串比较,或可规定为散列值的比较。由服务器子合同58提供“Match_P”的定义。
如果该条件满足,则寻求一匹配,反之,则存取下一个子集合表“i”。当求出一匹配时,则行(8)提供一对服务器存根(56)的操作表的调用。应注意的是,当求得一匹配时,值“i”是送到服务器存根的值。这个值相应于被检索表的一子集合,并且这个子集合与已被调用的单个方法关联。因此,在行(8)中的代码表示图3的下一个处理步骤,即该服务器子合同将一索引值送到该服务器存根(框86)。
一旦该服务器存根接收该索引值,则它们根据如图4中所示的一操作表100,以调用由该索引值指定的方法。该操作表最好是作为一种具有一组与每种情况值“i”相关的处理步骤的情况表而被实施。当该值“i”被接收时,由该值所规定的方法被执行(框88)。图4示出了为完成这种结果的一组简单的处理步骤。第一步是执行方法i,第二步是将所有的结果信息(应答)装入该引导缓冲器中。由图3示出的最后的处理步骤是使该服务器存根将由执行该方法产生的应答送到服务器子合同(框90)。
到此本发明已全部被披露。图5示出了该技术的另外方面。即,图5示出了本发明支持的方法调用以及它们的相关的异常。图5示出了图4的操作表l00。如上所指出的,该操作表被存贮在服务器存根56中。该图示出了操作表的索引值“i”被连接到该表的一特定子集合(Descriptor-List-i)。如上所指出的,该Descriptor-List-i被用于该服务器子合同58。该子集合表包括有“j”个入口,每个入口包括一IDL短名、一IDL长名、一贮存库识别、一交替识别等。如图4所示,该服务器从操作表100调用操作i并向该客户返回一应答。该应答可包括一异常描述符。例如,当是上述的“get_weak_Comparator Operation Descriptor Instance”例子时,该异常描述符可以是字符串“_get_weak_Comparator Exception Descriptor Instance。
该客户子合同40具有包括一异常表的操作描述符。在该应答中该异常描述符被客户子合同40用以确定哪个异常被返回。这种匹配操作可使用上述用来匹配该操作描述符的技术而被执行。
该异常描述符指向具有N个异常子集合表的一异常表。图5示出了Exception_List_X。每个子集合规定对于方法调用中的一种异常和用于该异常的IDL短名、IDL长名、一贮存库识别和选择识别。应注意的是,协议相应值表的每个子集合表的第“j”个入口对应于所说的IDL短名协议这样一个特定协议。
在图4中已进一步示出了该异常描述符的概念。应注意的是,在该子集合描述符表“Descriptor-List-l”中该最后的入口是一指向一异常表的异常描述符。如果需要的话,由该服务器计算机所产生并传送给该客户计算机的应答包括该异常的指示。该异常可与在该异常表中的一异常相匹配。
该客户子合同40存贮有相应于一异常描述符的该异常表的一拷贝。因此,当该异常描述符从该服务器计算机24被接收时,该客户计算机22可处理该异常描述符。
该异常符通过调用该异常表中的每个入口的异常代码来处理。应注意的是在图5中类似于所有其它异常子集合表的Exception-List-x包括指向在一本地对象贮存库104中的一对象的一异常对象识别。该异常对象识别可以是一与在该本地对象贮存库104中的一对象相连的字符串名。在该本地对象贮存库104中的每个对象提供被编码的指令或信息以允许该客户计算机22去处理该异常。如果该对象不驻留在该本地对象贮存库104中,通过下装来自该网络中的另外一个计算机的代码,该操作系统42例示该对象进入本地对象贮存库104。
为了说明和描述的目的而对所存在的本发明的特定实施例作了如上所述的说明。上述说明并不意味着包括了本发明的全部或将本发明限于所披露的精确的形式,很明显地,根据如上描述作若干改进和变型也是可能的。为了更好的说明本发明的原理和它的实际应用而选择和描述了这些实施例,以使本技术领域的其它普通技术人员能更好的利用本发明,具有各种变型的各种实施例适用于不同的使用目的,下面的权利要求和其它的等效物将确定本发明的范围。