用于客户机/服务器计算的装置、方法和程序产品的制作方法

文档序号:6416190阅读:145来源:国知局
专利名称:用于客户机/服务器计算的装置、方法和程序产品的制作方法
技术领域
本发明涉及客户机/服务器(也称为分布式)计算领域,其中一个计算设备(“客户机”)请求另一个计算设备(“服务器”)执行一部分客户机的工作。客户机和服务器也可以都位于同一物理计算设备。
过去几年中,客户机/服务器计算在信息技术世界变得越来越重要。这一类型的分布式计算允许一个机器把它的一些工作委托给另一个可能更适合执行这些工作的机器。例如,服务器可能是一个功能很强的计算机,其上运行着管理存储了大量数据的存储器的数据库程序,而客户机只是一个台式个人计算机(PC),它从数据库请求信息,用于它本地的程序中。
通过使用称为面向对象编程(OOP)的公知的计算机编程技术,客户机/服务器计算的好处更进一步加强,OOP技术允许客户机和服务器位于不同(异类)“平台”。平台是特定硬件/软件/操作系统/通信协议的一种组合,其由计算机使用来完成它的工作。OOP允许客户机应用程序和服务器应用程序在其自己的平台上运行而不考虑客户机应用程序的工作请求怎样被通信并由服务器应用程序接收。同样,服务器应用程序不必考虑OOP系统如何接收、变换和发送服务器应用程序的处理结果给请求的客户机应用程序。
在美国专利号码5,440,744和欧洲专利公开申请号码EP0677,943A2中解释了OOP技术是如何集成在异类客户机/服务器系统中的细节。这两篇文献结合在这里作为参考。然而,下面给出该基本结构的一个例子,以便在上下文中更好理解本发明的环境。


图1所示,客户计算机10(其可以例如是一个个人计算机,其上安装有IBM OS/2操作系统)具有在其操作系统上运行的应用程序40(“IBM”和“OS/2”是国际商业机器公司的商标)。应用程序40周期地请求工作在服务器20上执行,和/或数据从服务器20返回,以便由应用程序40后来使用。服务器计算机20例如可以是一个功能强大的主机,运行在IBM的MVS操作系统上(“MVS”也是IBM公司的一个商标)。对于本发明来说,要由服务器执行的通信服务的请求是由用户与第一应用程序40相互反应而激发的,还是应用程序40独立于用户反应操作,自动在程序运行期间作出该请求,这一点无关紧要。
当客户计算机10希望请求服务器计算机20的服务,第一应用程序40通知请求服务的第一逻辑设备50。这一点例如可以通过给第一逻辑设备发送一个远程过程名和一列输入和输出参数实现。然后第一逻辑设备50参考存储在存储设备60中的可用通信服务的定义,处理建立与第二计算机20必要的通信的任务。所有可能的服务定义为对象类内聚框架(cohesive framework of object classes),这些类是由一个单一对象类所导出。以这种方式定义的服务对于性能和可重用性来说有许多好处。
为建立与服务器20必需的通信,第一逻辑设备50确定在内聚框架中的哪一个对象需要被使用,然后在服务器上产生该对象的一个范例(instance),给该对象发送一个消息,以便使该对象调用它的一个子程序。这将导致建立通过连接设备80与服务器20的连接,随之给第二逻辑设备90发送一个请求。
然后,第二逻辑设备90把该请求传递给运行在服务器计算机20上的第二应用程序100(下称服务应用程序),以便服务应用程序100可以执行由该请求需要的特定任务,诸如运行一个数据检索程序。一旦该项任务被完成,则服务应用程序可能需要发送结果返回第一计算机10。服务应用程序100在执行请求的任务期间和当结果要被送回到第一计算机10时与第二逻辑设备90反应。第二逻辑设备90建立对象的范例,当服务器应用程序100需要时调用这些对象合适的子程序,其中,从存储设备110中存储的对象类的内聚框架中建立对象范例。
使用上述技术,客户机应用程序40不暴露在通信结构前。另外,服务应用程序100通过与其环境相称的标准机构调用,它不知道它自己被远程调用。
对象管理组织(OMG)是一个国际性组织,涉及如图1所示的具有分布式对象的在异类平台上客户机/服务器计算的各方面。OMG已经公布一些标准,其中有客户计算机(例如10)与服务器计算机(例如20)通信(以OOP形式)的标准。作为这些标准的一部分,定义了对象请求代理程序(称为CORBA-公共对象请求代理程序结构)它提供在客户机和服务器之间面向对象的桥路。CORBA从面向对象的实现细节中断开客户机和服务器应用程序,至少执行第一和第二逻辑设备50和90以及连接设备80的一部分工作。
作为CORBA软件结构的一部分,OMG已经建立了涉及“事务处理”的一些标准,这些标准称为OTS,即对象事务处理服务。例如参见CORBA对象事务处理服务性能说明1.0,OMG文件,94年8月4日。计算机实现的事务处理系统用于一些工业中的关键性商业任务。事务处理定义为单一工作单元,它要么全部执行,要么全部清除不做任何动作。例如,在银行自动柜员机的场合,一个客户从中取钱,付款、减去机器中的存款余额、减去该客户银行的存款余额,这些动作必须全部发生或者全部不发生。其中任一动作的失败将导致在记录和实际事件之间的不一致。
分布式事务处理涉及影响位于多于一个物理或逻辑场所处资源的事务处理。在上述例子中,一个事务处理影响位于自动柜员机设备处管理的资源以及由银行主计算机管理的银行余额。这样的事务处理涉及一个特定的客户计算机(例如10),其通过一系列由服务器处理的客户请求与一个特别的服务器计算机(例如20)通信。OMG的OTS负责协调这些分布式事务处理。
通常,运行在一个客户机进程中的一个应用程序开始一个事务处理,它可能涉及调用多个不同的服务器,每一个服务器启动一个服务器进程,根据在该事务处理中包含的指令改变其本地数据库。该事务处理要么通过执行这些事务(从而所有服务器完成对其本地数据库的改变)、要么通过放弃这些事务(从而所有服务器“回退”或忽略对其本地数据库的改变)而结束。为在执行事务处理期间与服务器通信(例如指示它们要么执行要么放弃它所承担的事务),所涉及的进程必须维持为该事务处理的状态数据。这通常包括建立一系列事务对象的进程,这些事务对象之一是一个协调进程,其协调该事务处理与各个服务器。
OTS的常规实现方法示于图2,其由IBM公司开发,并包括在其于1997年5月发布的部件代理程序系列(IBM公司的一个商标)产品中。希望开始一个事务处理(例如从银行帐户上取钱)的客户机进程21需要定位能产生和保持维持该事务处理的状态的事务处理对象的一个进程。随着现代建立“瘦”(从而只有少量功能)客户机的趋势,客户机进程21通常不能在本地维持该事务处理对象,而必须为此寻求一个服务器进程以实现此目的。
根据这一现有技术方法,OTS(或者另外的服务,诸如CORBA生命周期服务)寻找一个服务器进程,目的是在其上建立事务处理对象221(它包括协调者、控制和结束者对象)。根据这一现有技术,总是寻找同一服务器进程(图2中的服务器A进程22)。在定位该服务器A进程22后,客户机进程21给服务器A进程22发送(圈以号码1的箭头)一个消息,指示服务器A进程22建立事务处理对象221。然后服务器A进程22建立事务处理对象221并给客户机21发送包含该事务处理描述表的一个回答(圈以号码2的箭头)。然后客户机21给服务器B进程23(包含客户机进程希望从其取钱的银行帐户对象231的进程)发送一个借方银行帐户命令(圈以号码3的箭头)。后一命令携带有由服务器A进程22提供给客户机21的事务处理描述表。以这种方式,进程23中的银行帐户对象231可以用事务处理221中的事务处理对象登记自己(圈以号码4的箭头),以便可以命令银行帐户对象221(圈以号码5的箭头)在该事务处理结束时由事务处理对象221执行或者回退。
系统设计者也许希望在存在众多可能涉及事务处理的资源的服务器上保存该事务处理对象,以便减少交叉进程调用的数目。在其它情况下,另外可选择的方案为,设计者也许希望在无本地资源的服务器上建立和保存该事务处理对象,以便不需要下载具有本地资源的另一服务器。然而现有技术的实现不允许设计者选择用于建立和保存该事务处理对象的服务器。
根据第一方面,本发明提供在执行事务处理的客户机/服务器计算系统中使用的一个服务器处理装置,该装置具有从一个客户机进程接收一个命令、指示一事务处理开始的设备;确定本地事务处理发生器是否存在的设备;在本地事务处理发生器不存在的情况下把所述命令传送给另一服务器、在本地事务处理发生器存在的情况下在本地产生事务处理状态数据的设备。
根据第二方面,本发明提供执行在上述第一方面功能的一种方法。
根据第三方面,本发明提供一种计算机程序产品,用于在计算机上运行时执行第一方面的功能。
根据第四方面,本发明提供在执行分布式事务处理的客户机/服务器计算系统中使用的一个服务器,该服务器具有一个本地分布式对象事务处理服务实现,它不能在本地产生事务处理状态数据。
根据第五方面,本发明提供在执行分布式事务处理的客户机/服务器计算系统中使用的两个服务器,每一服务器具有一个本地分布式对象事务处理服务实现,其中一个服务器能在本地产生事务处理状态数据,而另一个服务器不能在本地产生事务处理状态数据。
由于系统设计者可以选择哪一个服务器能产生和保持一事务处理的状态数据,而哪一个不能,所以通过本发明可以获得事务处理极大的灵活性。
例如,在一种场合,可以把具有本地资源的一个服务器指定为能产生和保持事务处理状态数据,以便该事务处理对象和资源对象位于同一进程,从而减少该事务处理需要的交叉进程调用次数目。
在另一种场合,可以把同一服务器指定为不能产生和保持事务处理状态数据,以便使具有本地资源的该服务器将其所有处理能力用于更新和保持本地资源而不必转向考虑该事务处理状态对象。
参考下面的附图,阅读下面关于本发明的优选实施例的说明,可以更好理解本发明。
图1是一个公知的使用对象技术的异类客户机/服务器结构的方框图,在该类结构的概念上本发明的优选实施例适用;图2是表示常规OTS实现的方框图;图3是表示本发明的一个优选实施例的第一实现的方框图;图4是图3的第一实现的一个服务器进程的方框图;图5是表示在事务处理执行期间图3的第一实现的方框图;图6是表示本发明的一个优选实施例的第二实现的方框图;图7是图6的第二实现的一个服务器进程的方框图;图8是表示根据本发明的优选实施例执行的操作步骤的流程图。
在一个服务器中实现的公共对象请求代理程序(CORBA)对象事务处理服务(OTS)提供一个称为“CosTransaction::Transaction Factory(事务处理工厂)”的接口对象,它可以由客户机应用程序调用,通过在OTS服务器中创建事务处理状态对象而产生一个事务处理。
在本发明的该优选实施例中,运行在客户机进程31内的应用程序(参见图3)开始一个事务处理。在图示的这一例子中,假定正被执行的事务处理是客户使用一个自动柜员机(ATM)从一家银行帐户取钱,这是一种世界范围内日常进行的普通事务处理操作。
然后,当该客户机开始一个事务处理时,客户机进程31确定一个服务器进程。这和图2的现有技术实现类似。然而,当服务器进程32具有另外的全功能OTS实现321时,服务器进程32不具有事务处理工厂对象,从而不能产生事务处理状态对象,这在下面解释。
当服务器进程从客户机进程31接收命令开始事务处理时,服务器进程32把该命令传送给另一服务器进程,例如服务器进程33,因为服务器进程32在其OTS321中不具有事务处理工厂对象。服务器进程33在其OTS331中确实具有事务处理工厂对象3311,于是开始在本地产生(参见图4)事务处理状态对象3312(它通常包括控制、协调者和终止者对象,分别称为Costransactions::Control(控制),Costransactions::Coordinator(协调者),Costransactions::Terminator(终止者))。这些类似于上面对于图2的现有技术实现讨论的事务处理对象221。
如图5所示,运行在客户机进程31中的应用程序然后给服务器进程33中的银行帐户对象332发布一个记入借方的命令,作为取钱事务处理的第一实质部分。在这一阶段,银行帐户对象332与事务处理对象3312以平常的方式通信,不同的是所有这样的通信发生在同一进程之内,从而这种通信不需要交叉进程流。在该例中,所发生的通信包括银行帐户对象332在事务处理对象3312登记,以及当该事务处理结束时事务处理对象3312发送一个执行或回退命令给银行帐户对象332。
这样,通过配置服务器进程32,使其在其OTS321中不具有事务处理工厂对象,可以大大减少交叉进程流,因为事务处理对象代之以在包含作为本地资源的银行帐户对象332中的服务器进程33中产生。
在另一种场合,系统设计者可能希望这样来配置该服务器系统,使事务处理对象在一个不具有在该事务处理中涉及的本地资源对象的服务器进程中产生,现在参考图6和图7说明这一情况。
客户机进程61(图6)开始一个事务处理,并发送一个请求给服务器进程62,命令它产生一个事务处理对象。因为服务器进程62在其OTS621中具有一个事务处理工厂6211,因此服务器进程62能够产生事务处理对象6212,从而如图7产生它们。然后,该事务处理以类似于图2的实现方式处理,其中涉及多个交叉进程调用,因为事务处理对象6212和银行帐户对象632位于分开的进程中。
在某些结构中,客户机进程61在其发布命令开始一个事务处理时也许并不总是与同一服务器接触。相反,该客户机可能接触一个随机服务器。如果,例如在本发明中它打算首先接触服务器进程63,而不是进程62的话,因为进程63不具有事务处理工厂对象,因此进程63将传送该客户机请求到具有一个工厂的另一进程(例如进程62)。
虽然后一例子同样有图2具有的多个交叉进程流的缺点,但是它的优点是,具有本地资源的进程63不必消耗其处理能力来产生和保持事务处理对象。这允许进程63具有更大处理能力处理其本地资源。
在一些情况下,最好遵循第一种情况,节省交叉进程流。在另一些情况下,最好遵循第二种情况,节省处理能力用于负担资源的服务器进程。得益于本发明,允许系统设计者根据希望的情况设计系统。
图8示出根据该优选实施例一个服务器执行的步骤。在步骤81,服务器(例如服务器进程62)接收一个客户机命令,为一个客户机启动的一个特定事务处理产生该事务处理对象。然后该服务器在步骤82检验,它是否具有一个本地事务处理工厂。如果是,则该服务器在步骤83在服务器内本地产生该事务处理对象。然而,如果该服务器不具有本地事务处理工厂的话,那么该服务器把客户机命令传送到另一服务器(步骤84)。
系统设计者使用一个系统管理接口,用以指定哪一个服务器在其OTS中具有一个工厂,哪一个没有。然后,当服务器起动时,只有被指定为包含事务处理工厂的进程的服务器进程将使一个事务处理工厂对象具体化。
否则,如上所述,被指定为不能产生本地事务处理(“无本地事务处理的服务器”)的服务器提供一个完整的OTS实现。它能够接收事务处理请求并可能包含可恢复OTS数据。从而,任何为在一个OTS编程模型中执行编写的应用程序可以不加任何修改地在“无本地事务处理”的服务器执行。
权利要求
1.一个在执行事务处理的客户机/服务器计算系统中使用的服务器处理装置,所述装置的特征为包括从一个客户机进程接收一个指示一事务处理开始的命令的设备;确定是否存在一个本地事务处理发生器的设备;在本地事务处理发生器不存在的情况下把所述命令传送给另一服务器、在本地事务处理发生器存在的情况下在本地产生事务处理状态数据的设备。
2.权利要求1的装置,其特征在于,所述事务处理发生器是一个事务处理工厂对象。
3.权利要求1的装置,其特征在于,所述装置在一个对象事务处理服务(OTS)环境中操作。
4.一种在执行事务处理的客户机/服务器计算系统中使用的服务器处理方法,其特征为包括步骤从一个客户机进程接收一个指示一事务处理开始的命令;确定本地事务处理发生器是否存在;如果本地事务处理发生器不存在,则把所述命令传送给另一服务器,如果本地事务处理发生器存在,则在本地产生事务处理状态数据。
5.一种存储在一种计算机可读存储介质上的计算机程序产品,当其在一个计算机上运行时,执行一种在执行事务处理的客户机/服务器计算系统中使用的服务器处理方法,其特征在于包括步骤从一个客户机进程接收一个指示一事务处理开始的命令;确定本地事务处理发生器是否存在;如果本地事务处理发生器不存在,则把所述命令传送给另一服务器,如果本地事务处理发生器存在,则在本地产生事务处理状态数据。
6.一个在执行分布式事务处理的客户机/服务器计算系统中使用的服务器,该服务器的特征在于具有一个本地分布式对象事务处理服务实现,它不能在本地产生事务处理状态数据。
7.权利要求6的服务器,其特征在于,所述本地分布式对象事务处理服务符合公共对象请求代理程序的对象事务处理服务标准。
8.在执行分布式事务处理的客户机/服务器计算系统中使用的两个服务器,其特征在于,每一服务器具有一个本地分布式对象事务处理服务实现,其中一个服务器能在本地产生事务处理状态数据,而另一个服务器不能在本地产生事务处理状态数据。
全文摘要
一种在执行事务处理的客户机/服务器计算系统中使用的服务器处理方法,包括步骤:从一个客户机进程接收一个命令,指示一事务处理开始;确定是否存在一个本地事务处理发生器;如果不存在一个本地事务处理发生器,则把该命令传送给另一个服务器,如果存在本地事务处理发生器,则在本地产生事务处理状态数据。
文档编号G06F9/44GK1226698SQ9910095
公开日1999年8月25日 申请日期1999年1月11日 优先权日1998年2月12日
发明者A·E·切塞尔, M·马尔霍兰, K·S·沃尔 申请人:国际商业机器公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1