本发明专利技术提供了一种系统(20),其中在没有对这些组件做请求的客户端(12)组件没有被通知由他们的请求启动的升级的情况下,当需要新功能时,作为服务器(14)的软件组件可以被升级或被安装。然后,服务器(14)可以对否则会在客户端(12)组件中造成错误的请求做响应。(*该技术在2019年保护过期,可自由使用*)
【技术实现步骤摘要】
专利技术的背景本专利技术涉及软件系统结构设计,尤其是一种提供软件组件的动态扩展的方法,如对象类(object classes)。在传统的计算环境中,可执行组件需要向其它的可执行组件做请求。我们知道在一些情况下,组件所支持的那些请求被直接地建立到可能对它做请求的所有的组件中。在其它情况下,组件可以具有回答关于它支持的请求的查询的能力。后面的情况的优点是不需要所有潜在的客户端拥有所有其它的组件所支持的操作的全部知识。这是众所周知的技术。传统上,当一个组件收到一个它不能识别的请求时,它通过对请求的组件发送回一个错误(error)来响应。这经常会导致请求的组件在请求链上的错误层叠直到应用失败。一些系统,诸如Common Lisp,SmallTalk和Forth提供了软件组件的动态绑定。但是,在组件实际上被请求之前,这些系统在安装或类定义时间时进行这种动态绑定。因此,需要巨大的资源覆盖区(large resource footprint)。域名服务器(DNS)具有请求将一个解决域名的请求传递到知识更丰富的服务器中的能力。但是,如果DNS收到它们不能处理的格式的请求,它们不具有升级它们的功能的能力,如果域名不在它已存储的列表中时,就只是简单地传递域名。CORBA动态调用接口Dynamic Invocation Interface(DII)和动态构架接口Dynamic Skeleton Interface(DSI)允许对软件组件请求的动态调度,从而对其它组件的改变可以在运行时被利用;但是,它们没有包括在服务器组件中的可执行内容的动态扩展性。服务器组件如果收到它不能处理的请求就返回一个错误。专利技术的评述本专利技术提供了一种软件组件,其可以动态更新它所支持的请求的方法和装置,而不是在请求不被理解时发送一个错误。从请求的组件(calling component)的角度来看,请求是以标准的方式填充,不返回错误。这就有减少不必要的应用失败的重大意义。本专利技术还提供了一种方法和装置,当来自客户端的请求不被理解时,软件组件在远程服务器上检索可能发现的合适的升级软件,从而满足请求而不返回错误。附图的简要说明附图说明图1表示设置用于应用本专利技术的第一实施例的系统的装置;图2是说明第一实施例的控制流程的交互流程图;图3A表示根据本专利技术的第二实施例的装置;图3B表示图3A所示的装置的功能;图4表示根据本专利技术的第三实施例的装置;图5表示根据本专利技术的第四实施例的装置。详细说明本专利技术的几个实施例参见此后的图1-5的介绍。这些实施例全都是在请求可以由客户端在运行时动态构成并被发送给服务器处理的环境下操作的。这与请求是在编译时静态地建立的语言编译系统相反,通常被确认为与静态定义接口不同。而是,它被认为是在任何时侯相互独立情况下,服务器可以改变它的接口,客户端可以改变它的请求。在这种情况下,客户端必须为服务器拒绝任何请求做准备,即使请求预先成功地被处理。每个实施例增加了一个机构以定位和加载应用程序以处理客户端对前述的未知的命令的请求。这使得否则就会失败的请求成功地完成。如图1和2所示的本专利技术的第一实施例。本专利技术的这一特殊实施例在一基于对象的操作环境下操作,虽然本专利技术的其它实施例可能在其它的组件可能是在应用客户端组件的软件环境下操作,例如采用参数、限量或方法。基于对象的软件环境是众所周知的,许多的软件环境是基于对象模型的。在这种环境下,对象类被定义,每个对象类有一组方法(method)。对象类的分级会经常被提供,子类具有它们的父类的所有方法和特性以及进一步的方法和特性。软件组件可以产生定义的类的对象实例,其可以独立地起作用。相同对象的许多实例可能同时存在并且每个单独起作用。调用其它对象的方法的对象起到客户端对象的作用,被调用的含有方法的对象起到服务器对象的作用。如图1所示,对象12、14、18通过接口20相互通讯。接口的特性根据系统的结构设计而变化。例如,它允许在采用适当的协议的网络中,在对象间相互通讯。与每个对象结合的服务器请求阻止器server request interceptor(SRI)16阻止对该结合的对象做出的请求,如图1的点划线所示。图2是描述动态请求装置的总体设计的统一建模语言Unified ModelingLanguage(UML)交互流程图并用一例子说明控制流。在如图2所示的流程图中,客户端12做了调用服务器组件14上的“foo( )”的请求。此请求可能包括各种可能是不同的数据类型的参数。客户端未知,在图1所示的SRI 16阻止了请求。SRI查询它所知道的服务器组件当前支持的请求列表162(称为一个know( )请求)。如果“know(foo)”返回false,服务器请求阻止器SRI就对主请求档案服务器Request Archive Server(RAS)18做一个“get(foo)”请求,其包含对于在系统中支持的所有请求的可执行组件。如果此请求具有与请求不相容的语句,在此情况下,对于组件可以处理的foo( ),对请求档案服务器RAS 18做一个请求,看是否存在可以处理此请求的新版foo( )存在。请求档案服务器找到带有foo( )的可执行组件(如果它存在)并用“hereis(foo)”请求把它发送到服务器组件14。请求档案服务器还把对get(foo)命令的成功响应发送到服务器请求阻止器16,还应该把更新的foo( )支持的请求的副本发送到服务器上以便服务器请求阻止器可以将它们增加到所支持的请求的列表162中。然后,服务器请求阻止器16代表客户端组件12通过invoke(foo)请求来调用在服务器组件上的foo( )请求(知道服务器现在支持foo( ))。在invoke(foo)请求返回后,服务器请求阻止器16返回任何合适的值给客户端组件12。从客户端来看,可执行内容的动态检索是隐藏的。请求档案服务器18不需要是一个单一实体;它可以是一个资源分布网络。为简化起见,在此实施例中,它被表示为一单一实体。例如,服务器组件可能提供对动态链接库文件中的对象的访问。动态链接库文件提供可以在运行时被连接到程序的功能,因此,当它们被使用时,它们不浪费内存。如果类的对象实例文件运行时不能连接到运行的程序,或者如果被访问的动态链接库文件不能提供满足请求的合适的功能,就对动态链接库文件或其升级版做检索。例如,所做的检索可能发现定位网络上的其它位置的服务器上的文件。本专利技术的其它实施例,以与图1的实施例的相似的方式操作,可以包括相同的组件和结构,参见此后的图3-5。如图3A所示,本专利技术的第二实施例在命令解释程序环境下执行。在存储在计算机21的内存22中的传统的命令行解释程序24中(例如UNIX Bourne命令解释程序或在MS-DOS中的COMMAND.COM,请求被客户端编写成文本行,直接由用户发出,从脚本读取或者由可能产生解释程序实例的系统上的可执行组件发出。在此实例中,解释程序命令解释器26起服务器的作用。典型的请求是应用带有命令行参数的随机存储在长期存储器29中的程序。命令解释器具有它理解的某种请求词库。该词库包括一组内部执行命令,和外部可用程序,通常存储在一组指定的目录内。词库可以通过增加外部程序被扩展到适当的词典中。对于本专利技术以前的命令解释器,本文档来自技高网...
【技术保护点】
一种计算机系统,包括:客户端组件服务器组件,所述的客户端组件安排用来对所述的服务器组件做请求;维持可以被所述的服务器满足的请求的表达的装置;一请求阻止组件,安排用于阻止来自所述的客户端组件到所述的服务器组件的请求,如果该请求 被服务器支持,从所述的表达建立;其中如果所述的请求不被支持,如果要求所述的服务器支持所述的请求,所述的请求阻止组件被安排检索外部资源以便定位,并对所述的服务器提供额外的功能以支持所述的请求;所述的请求阻止组件此后将请求传送给所述的服 务器以执行。
【技术特征摘要】
...
【专利技术属性】
技术研发人员:阿龙阿博特,戴尔舒马赫,布雷特彼得森,
申请(专利权)人:计算机合伙思维公司,
类型:发明
国别省市:US[美国]
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。