推迟对远程对象的调用请求制造技术

技术编号:22174495 阅读:64 留言:0更新日期:2019-09-21 15:09
提供了一种用于在客户端处执行的应用向服务器的远程对象发送调用请求的系统。当应用调用与远程对象类的远程对象相对应的应用的代理类的代理时,生成每个调用请求。对于每个调用请求,当调用请求可推迟时,系统存储调用请求。当调用请求不可推迟时,系统向服务器发送包括先前未发送的每个存储的调用请求和当前调用请求的调用请求消息。系统从服务器接收调用响应消息。对于所接收的调用响应消息的每个调用响应,系统向应用提供调用响应已经被接收到的指示。

Delaying call requests to remote objects

【技术实现步骤摘要】
【国外来华专利技术】推迟对远程对象的调用请求
技术介绍
基于云的服务通常通过经由web浏览器执行的应用来提供。为了开发这样的应用,程序员可以开发应用,该应用将由客户端的web浏览器执行并且访问云数据中心的服务器的服务。应用(或客户端代码)通常提供用户接口,用户可以通过该用户接口访问应用的特征。例如,如果应用是文字处理器,则应用显示正在编辑的文档的内容、用于访问文字处理器的特征的菜单栏(例如,打开文档和插入脚注)等。正在编辑的文档存储在服务器上。因此,当用户请求打开文档时,应用向服务器发送打开请求并且接收文档的至少一部分的副本。应用显示文档的内容。当用户对文档进行改变时,应用可以更新所显示的内容并且向服务器发送消息。然后,服务器改变文档。客户端与服务器之间的通信通常基于表述性状态转移(“REST”)或RESTful模型,诸如超文本传输协议(“HTTP”)请求消息(例如,GET方法)和响应消息。这样的应用通常用JavaScript编写,因为大多数浏览器都支持JavaScript应用的执行。相反,出于提高效率的原因,服务器代码通常用除了JavaScript之外的编程语言编写,例如C#或C++,因为JavaScript是一种解释型语言,而C#和C++是用可执行文件编译的。JavaScript以及C#和C++是面向对象的编程语言。面向对象的编程语言支持其中程序指定定义可以实例化的对象类型的类的编程模型。类定义该类的对象的数据成员和方法(也称为成员函数)。每个方法具有指定方法的名称的签名、要传递给方法的输入参数的类型、以及由方法返回的输出参数的类型。例如,文档类可以被定义为包括用于打开文档、修改文档和保存文档的方法。在应用的执行期间,在实例化某个类的对象之后,应用可以通过指定对对象的引用、调用方法的指示、以及要传递给方法的输入参数(如果有)来调用对象的方法。在方法完成时,该方法返回输出参数(如果有)。这样的应用历来使用由Web服务描述语言(“WSDL”)定义的web服务接口或使用某种其他类型的远程过程调用(“RPC”)机制来访问服务器的服务。不幸的是,从这样的应用到服务器,对面向对象的RPC(也称为远程方法调用(“RMI”))的支持很少。因此,在访问由服务器托管的对象时,这样的应用通常不使用面向对象的方法。
技术实现思路
提供了一种用于由客户端执行的应用调用由服务器托管的远程对象类的远程对象的远程对象方法的系统。应用实例化包括代理成员函数的代理类的代理,该代理成员函数的签名与远程对象成员函数相同。应用将对象标识符与代理相关联。应用调用代理的代理成员函数。在所调用的代理成员函数的控制下,应用向服务器发送调用请求消息,调用请求消息包括与代理相关联的对象标识符和远程对象成员函数的标识符。应用依赖于由浏览器提供的功能,而无需浏览器在执行应用时访问附加功能。提供了一种用于在客户端的应用的代理与服务器的对应远程对象之间同步属性值的系统。应用实例化与远程对象类的远程对象相对应的代理类的代理,其中代理类指定具有代理获取器的属性。应用向服务器发送用于调用远程对象的远程对象成员函数的调用请求消息,并且接收调用响应消息。当调用响应消息包括属性更新时,应用从调用响应消息中提取来自属性更新的属性的值,并且将所提取的值存储在代理中。当调用属性的代理获取器时,可以从代理检索属性的值,而不必向服务器发送调用请求消息。提供了一种用于在客户端处执行的应用向服务器的远程对象发送调用请求的系统。当应用调用与远程对象类的远程对象相对应的应用的代理类的代理时,生成每个调用请求。对于每个调用请求,当调用请求可推迟时,系统存储调用请求。当调用请求不可推迟时,系统向服务器发送包括先前未发送的每个存储的调用请求和当前调用请求的调用请求消息。系统从服务器接收调用响应消息。对于所接收的调用响应消息的每个调用响应,系统向应用提供调用响应已经被接收到的指示。提供本“
技术实现思路
”是为了以简化的形式介绍一些概念,这些概念将在下面的“具体实施方式”中进一步描述。本“
技术实现思路
”不旨在标识所要求保护的主题的关键特征或必要特征,也不旨在用于限制所要求保护的主题的范围。附图说明图1是示出一些实施例中的应用和服务器组件的数据结构的框图。图2是示出一些实施例中的同步调用的代理的方法的处理的流程图。图3是示出一些实施例中的服务器组件的接收请求组件的处理的流程图。图4是示出一些实施例中的用于客户端组件的响应对象的响应对象类的提取参数方法的处理的流程图。图5是示出一些实施例中的用于服务器组件的响应对象的响应对象类的存储参数方法的处理的流程图。图6是示出一些实施例中的ID表对象类的检索ID方法的处理的流程图。图7是示出一些实施例中的ID表对象的检索引用方法的处理的流程图。图8是示出一些实施例中的传递引用的ID表对象的添加条目方法的处理的流程图。图9是示出一些实施例中的传递条目的ID表对象的添加条目方法的处理的流程图。图10是示出一些实施例中的支持远程对象的对等托管的OORPC系统的实现的框图。图11是示出一些实施例中的支持OORPC系统对属性值的同步的数据结构的框图。图12是示出一些实施例中的服务器组件的获取属性值组件的处理的流程图。图13是示出一些实施例中的客户端组件的存储属性值组件的处理的流程图。图14是示出一些实施例中的用于为代理类自动生成代码的OORPC系统的代码生成器的流程图。图15是示出一些实施例中的代码生成器的进程代理属性组件的处理的流程图。图16是示出一些实施例中的客户端组件的发送请求组件的处理的流程图。图17是示出一些实施例中的服务器组件的接收请求组件的处理的流程图。具体实施方式提供了一种用于为由客户端执行的应用自动生成代码以访问由服务器或其他远程设备以面向对象的方式远程托管的对象的方法和系统。术语“客户端”指的是计算设备,并且术语“服务器”指的是计算设备。在一些实施例中,面向对象的远程过程调用(“OORPC”)系统输入用于由服务器远程托管的对象(“远程对象”)的远程对象类的接口的定义。对于每个远程对象类,OORPC系统自动生成用作远程对象类的代理的代理类。“代理”是一种对象,其方法主要向托管对应的远程对象的服务器发送调用请求消息。代理与远程对象之间通常存在一对一的对应关系。代理类具有与对应的远程对象类相同的接口(例如,相同的方法和方法签名),但是具有与远程对象类的代码不同的代码。对于代理类的每个方法,OORPC系统为该方法生成代码,该代码在被调用时向托管与代理类的代理相对应的远程对象的服务器发送调用请求消息。调用请求消息标识远程对象、方法以及传递给方法的任何输入参数。OORPC系统还为该方法生成代码,在从远程设备接收到调用响应消息之后,该代码使用在调用响应消息中标识的任何输出参数从方法的调用返回。替代地,如果方法的调用是异步调用,则OORPC系统包括客户端组件,该客户端组件用于处理可能不是该方法的一部分而是回调方法的一部分的调用响应消息,该回调方法将被调用以向应用发信号通知方法的执行已经完成。在一些实施例中,OORPC系统为应用提供将每个代理映射到其对应的远程对象的客户端组件。应用可以具有与用于实例化远程对象的创建远程对象相对应的创建代理。可以调用创建代理的每个方法以实例化某个远程对象类的远程对本文档来自技高网
...

【技术保护点】
1.一种客户端计算系统,包括:计算机可读存储介质,存储计算机可执行指令;以及处理器,被配置为执行所述计算机可执行指令,所述计算机可执行指令在由所述处理器执行时控制所述客户端计算系统:对多个调用请求进行排队,每个调用请求是从所述客户端计算系统的应用的代理类的代理对象接收的,所述代理对象对应于服务器计算系统的远程对象类的远程对象;以及对于每个接收的调用请求,当所述调用请求可推迟时,存储所述调用请求;当所述调用请求不可推迟时,向所述服务器计算系统发送调用请求消息,所述调用请求消息包括先前未发送的每个存储的调用请求和不可推迟的所述调用请求;从所述服务器计算系统接收多个调用响应消息,每个调用响应消息响应于来自所述客户端计算设备的先前发送的调用请求消息,所述调用响应消息中的至少一个调用响应消息包括多个调用响应;以及对于所述多个调用响应中的每个调用响应,当所述调用响应包括输出参数时,从所述调用响应中提取所述输出参数;以及向所述应用提供所述调用响应已经被接收到的指示和任何提取的输出参数。

【技术特征摘要】
【国外来华专利技术】2017.01.30 US 15/419,9641.一种客户端计算系统,包括:计算机可读存储介质,存储计算机可执行指令;以及处理器,被配置为执行所述计算机可执行指令,所述计算机可执行指令在由所述处理器执行时控制所述客户端计算系统:对多个调用请求进行排队,每个调用请求是从所述客户端计算系统的应用的代理类的代理对象接收的,所述代理对象对应于服务器计算系统的远程对象类的远程对象;以及对于每个接收的调用请求,当所述调用请求可推迟时,存储所述调用请求;当所述调用请求不可推迟时,向所述服务器计算系统发送调用请求消息,所述调用请求消息包括先前未发送的每个存储的调用请求和不可推迟的所述调用请求;从所述服务器计算系统接收多个调用响应消息,每个调用响应消息响应于来自所述客户端计算设备的先前发送的调用请求消息,所述调用响应消息中的至少一个调用响应消息包括多个调用响应;以及对于所述多个调用响应中的每个调用响应,当所述调用响应包括输出参数时,从所述调用响应中提取所述输出参数;以及向所述应用提供所述调用响应已经被接收到的指示和任何提取的输出参数。2.根据权利要求1所述的客户端计算系统,所述调用请求消息指示所述调用请求被接收到的顺序。3.根据权利要求1所述的客户端计算系统,所述多个调用响应按照对应的所述调用请求被接收到的顺序被处理。4.根据权利要求1所述的客户端计算系统,当存储的调用请求已经被存储超过指定时间量时,所述计算机可执行指令在由所述处理器执行时控制所述客户端计算系统发送包括所述存储的调用请求的调用请求消息。5.根据权利要求1所述的客户端计算系统,响应于从所述应用接收到发送未发送的调用请求的请求,所述计算机可执行指令在由所述处理器执行时控制所述客户端计算系统发送包括所述调用请求的调用请求消息。6.根据权利要求1所述的客户端计算系统,所述多个调用请求是针对由不同服务器计算系统托管的远程对象被接收的,并且向特定服务器计算系统发送的任何调用请求消息仅包括对由所述服务器计算系...

【专利技术属性】
技术研发人员:A·拉曼Y·沙班M·弗兰萨佐夫A·J·多宾
申请(专利权)人:微软技术许可有限责任公司
类型:发明
国别省市:美国,US

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1