首页 / 专利库 / 软件 / 互操作性 / 用于语言无关调度的代码服务

用于语言无关调度的代码服务

阅读:950发布:2020-05-12

专利汇可以提供用于语言无关调度的代码服务专利检索,专利查询,专利分析的服务。并且本文所公开的是用于增强以不同的编程语言编写的组件的 互操作性 的系统、方法和 软件 。在实施方式中,代码服务接收由 应用组件 经由在目标环境之上层处的应用环境中的消息 接口 传递的 请求 消息。该请求消息包括调用对于目标组件的请求,目标组件在目标环境中可用并且以与应用组件的语言不同的语言编程。响应于该请求,服务标识至少与调用目标环境中的目标组件相关联的服务组件。执行服务组件以经由组件接口调用目标组件。,下面是用于语言无关调度的代码服务专利的具体信息内容。

1.一种操作代码服务的装置,包括:
一个或多个计算机可读存储介质;以及
程序指令,其被存储在所述一个或多个计算机可读存储介质上并且包括代码服务,所述代码服务当由被实现在单个处理设备内的处理系统执行时引导所述处理系统至少:
接收由应用组件经由消息接口传递的请求消息,所述消息接口在目标环境之上的层处的应用环境中,其中所述请求消息包括对于调用目标组件的请求,所述目标组件在所述目标环境中可用并且以与所述应用组件的语言不同的语言被编程;
响应于所述请求,标识至少与调用所述目标环境中的所述目标组件相关联的服务组件;以及
运行所述服务组件以经由组件接口调用所述目标组件。
2.根据权利要求1所述的装置,其中所述代码服务还引导所述代码服务:响应于所述目标组件在已经被调用之后经由所述组件接口返回至少结果,经由所述消息接口向所述应用组件传递答复消息,所述答复消息包括指示至少所述结果的答复。
3.根据权利要求2所述的装置:
其中所述应用环境包括浏览器应用,并且所述应用组件包括在所述浏览器应用中运行的应用代码;
其中所述目标环境包括操作系统
其中所述消息接口包括在所述浏览器应用与所述操作系统之间的通信信道;
其中所述目标组件包括所述操作系统中的对象;并且
其中所述服务组件包括用于调用所述对象的代码。
4.根据权利要求3所述的装置,其中所述浏览器应用与所述操作系统之间的所述通信信道包括以下各项中的一项:网络请求、映射存储器、超文本传输协议请求、加密服务、web服务或web套接字。
5.根据权利要求4所述的装置,还包括所述处理系统,所述处理系统被配置为执行所述程序指令,并且其中所述组件接口包括以下各项中的一项:应用二进制接口和应用编程接口。
6.根据权利要求1所述的装置,其中所述代码服务包括语言无关调度器和多个语言特定适配器,其中每个语言特定适配器当由所述处理系统执行时引导所述处理系统:
接收用于调用多个目标组件的请求消息,所述请求消息由多个应用组件发起,所述多个应用组件以相对于所述目标组件被编程的所述语言不同的语言被编程,并且相对于与所述多个语言特定适配器中的其他语言特定适配器特别地相关联的其他语言,所述语言与所述语言特定适配器特别地相关联;以及
将所述请求消息转译为多个代码请求以供所述语言无关调度器处理。
7.根据权利要求6所述的装置,其中所述语言无关调度器当由所述处理系统执行时引导所述处理系统:接收所述多个代码请求,标识与多个所述目标组件相关联的多个服务组件,并且使用所述多个服务组件来调用多个目标组件。
8.一种操作代码服务的方法,包括:
接收由应用组件经由消息接口传递的请求消息,所述消息接口在目标环境之上的层处的应用环境中,其中处理系统被实现在单个处理设备中,其中所述请求消息包括对于调用目标组件的请求,所述目标组件在所述目标环境中可用并且以与所述应用组件的语言不同的语言被编程;
响应于所述请求,标识至少与调用所述目标环境中的所述目标组件相关联的服务组件;以及
执行所述服务组件以经由组件接口调用所述目标组件。
9.根据权利要求8所述的方法,其中所述方法还包括:响应于所述目标组件在已经被调用之后经由组件接口返回至少结果,经由所述消息接口向所述应用组件传递答复消息,所述答复消息包括指示至少所述结果的答复。
10.根据权利要求9所述的方法:
其中所述应用环境包括浏览器应用,并且所述应用组件包括在所述浏览器应用中运行的应用代码;
其中所述目标环境包括操作系统;
其中所述消息接口包括在所述浏览器应用与所述操作系统之间的通信信道;
其中所述目标组件包括所述操作系统中的对象;并且
其中所述服务组件包括用于调用所述对象的代码。
11.根据权利要求10所述的方法,其中所述浏览器应用与所述操作系统之间的所述通信信道包括以下各项中的一项:网络请求、映射存储器、超文本传输协议请求、或web套接字。
12.根据权利要求11所述的方法,其中所述组件接口包括以下各项中的一项:应用二进制接口和应用编程接口。
13.根据权利要求8所述的方法,其中所述代码服务包括语言无关调度器和多个语言特定适配器,并且其中所述方法还包括:
接收用于调用多个目标组件的请求消息,所述请求消息由多个应用组件发起,所述多个应用组件以相对于所述目标组件被编程的所述语言不同的语言被编程,并且相对于与所述多个语言特定适配器中的其他语言特定适配器特别地相关联的其他语言,所述语言与所述语言特定适配器特别地相关联;以及
将所述请求消息转译为多个代码请求以供所述语言无关调度器处理。
14.根据权利要求13所述的方法,其中方法还包括:所述语言无关调度器接收所述多个代码请求,标识与多个所述目标组件相关联的多个服务组件,并且使用所述多个服务组件来调用多个目标组件。
15.一个或多个计算机可读存储介质,所述计算机可读存储介质在其上已经存储用于在应用环境中的应用组件与目标环境中的目标组件之间对接的程序指令,所述程序指令包括:
多个语言特定适配器,其中所述语言特定适配器中的每个语言特定适配器对应于多个编程语言中的不同的语言,并且当由被实现在单个处理设备内的处理系统执行时至少:
经由在所述应用环境与所述目标环境之间可用的消息接口,来接收由所述应用组件的子集发起以调用所述目标组件的至少子集的请求消息,其中所述应用组件的所述子集还对应于所述不同的语言,并且其中所述请求消息标识所述目标组件的所述子集和要被传送给所述目标组件的所述子集的参数;以及
将所述请求消息转译成标识所述目标组件的所述子集和所述参数的代码请求;以及语言无关调度器,所述语言无关调度器与所述多个语言特定适配器通信,所述语言无关调度器当由所述处理系统执行时标识对应于所述目标组件的所述子集的服务组件,并且使用所述服务组件和所述参数经由组件接口来调用所述目标组件的所述子集。
16.根据权利要求15所述的计算机可读存储介质,其中所述程序指令还包括用于以下的指令:从所述目标组件接收结果,生成指示至少答复的代码答复,以及传递所述代码答复。
17.根据权利要求15所述的计算机可读存储介质,其中所述应用环境包括浏览器应用,并且其中所述应用组件包括在所述浏览器应用中运行的应用的代码。
18.根据权利要求17所述的计算机可读存储介质,其中所述目标环境包括操作系统,并且其中所述目标组件包括操作系统中的对象。
19.根据权利要求18所述的计算机可读存储介质,其中所述消息接口包括在所述浏览器应用与所述操作系统之间的双向通信信道。
20.根据权利要求18所述的计算机可读存储介质,其中所述组件接口中的每个组件接口包括以下各项中的一项:应用编程接口和应用二进制接口。

说明书全文

用于语言无关调度的代码服务

技术领域

[0001] 本公开的方面涉及计算硬件软件技术,并且特别地涉及用于在组件之间对接的代码服务。

背景技术

[0002] 软件组件通常通过应用编程接口或应用二进制接口直接彼此通信。这样的接口定义其他组件可以调用给定组件并且与给定组件交互的方式。应用编程接口是相对于应用二进制接口不同的类型的接口,虽然这两者是通过其一个组件可以与另一组件交互的途径。当以不同的语言编程组件时,其几乎总是使用不同的编译器和解译器被编译或被解译。这可能导致其中妨碍组件之间的互操作性的情况。
[0003] 例如,可以以C或C++编写库中的组件,而可能已经以JavaScript 或一些其他语言编写调用到库中的组件。库可以具有与其编程语言相关联但是可以当那些组件利用不同的构造与以不同的语言编写的其他组件交互时创建失配的构造的集合(类型、函数、方法等)。在这样的情况下,可能开始运行时间误差和其他不规则性。
[0004] 该问题的一些解决方案包括将适当的应用编程接口或应用二进制接口手动地编码为调用组件的源代码,虽然这可能是冗长的并且易于出错的。而且,维持这样的代码来跟上组件接口的变化是不必要地消耗开发资源的艰巨任务。
[0005] 为了减轻这些和其他挑战,已经开发允许以一种语言编写的组件成功地调用以另一种语言编写的组件的语言特定调度器。例如,以 C#编写的组件可以包括在相同过程中运行并且可以与目标组件交互的C#特定调度器。在与以C++编写的不同的组件相关联的分离的过程中,例如,分离的C++特定调度器可以运行,其还能够针对在其他过程中运行的组件与目标过程交互等。发明内容
[0006] 在本文中提供了用于增强以不同的语言编写的软件组件的互操作性的系统、方法和软件。
[0007] 在实施方式中,代码服务接收由应用组件经由消息接口传递的请求消息,该消息接口在目标环境之上层处的应用环境中。该请求消息包括对于调用目标组件的请求,该目标组件在目标环境中可用并且以与应用组件的语言不同的语言被编程。响应于请求,服务标识至少与调用目标环境中的目标组件相关联的服务组件。执行服务组件以经由组件接口调用目标组件。
[0008] 在一些实施方式中,代码服务包括处理对目标组件的调用的语言无关调度器和在调度器与调用代码服务的应用之间转译的语言无关适配器。
[0009] 提供该概述以引入在技术公开中下文进一步描述的简化形式的概念的选择。可以理解,该概述既不旨在标识所请求保护的主题的关键特征或基本特征,其也不旨在用于限制所请求保护的主题的范围。附图说明
[0010] 可以参考以下附图更好地理解本公开的许多方面。虽然结合这些附图描述一些实施方式,但是本公开不限于本文所公开的实施方式。相反,目的是覆盖所有替换、修改和等价。
[0011] 图1图示了实施方式中的操作架构。
[0012] 图2图示了实施方式中的操作场景。
[0013] 图3图示了实施方式中的接口过程。
[0014] 图4图示了实施方式中的操作架构。
[0015] 图5图示了实施方式中的操作场景。
[0016] 图6图示了实施方式中的操作场景。
[0017] 图7图示了实施方式中的操作架构。
[0018] 图8图示了实施方式中的操作架构。
[0019] 图9图示了适合实现关于图1-图8本文所公开并且下文在具体实施方式中本文所讨论的应用、服务、过程、架构和操作场景中的任一个的计算系统。

具体实施方式

[0020] 本文所公开的实施方式实现了应用环境中的应用组件与目标环境中的目标组件之间的增强的互操作性。代码服务辅助与消息接口层处的应用组件和组件接口层处的目标组件的通信。应用组件可以使代码服务的请求调用目标组件,响应于代码服务的请求,代码服务使用服务组件调用组件接口层处的目标组件。
[0021] 在至少一个实施方式中,代码服务接收由应用组件经由消息接口传递的请求消息。该请求消息可以包括对于调用目标组件的请求,该目标组件在目标环境中可用并且以与应用组件的语言不同的语言被编程。响应于请求,该代码服务标识与调用目标环境中的目标组件相关联的服务组件,并且运行或执行服务组件以经由组件接口调用目标组件。
[0022] 在被调用时,目标组件执行并且可以经由组件接口将结果返回给服务组件。代码服务可以经由消息接口将答复消息传递给应用组件,答复消息包括指示由目标组件所提供的结果的答复。
[0023] 在一些实施方式中,应用环境可以是web浏览器应用。应用组件的示例包括在web浏览器应用(诸如JavaScript应用)中运行的应用代码。目标环境可以是操作系统,并且在一些场景中,消息接口可以是web浏览器与操作系统之间的通信信道。目标组件的示例包括操作系统中的对象,并且服务组件可以包括用于调用对象的代码。web浏览器与操作系统之间的通信信道的示例包括网络请求、映射存储器、超文本传输协议请求、加密服务(诸如安全套接层或SSL)、web服务请求或web套接通信。组件接口的示例包括应用二进制接口和应用编程接口。
[0024] 在一些场景中,代码服务可以包括语言无关调度器和各个语言特定适配器。每个语言特定适配器接收请求消息以调用目标组件。以与目标组件不同的语言编写的应用组件可以发起请求消息。编写每个语言特定适配器的语言可以相对于编程目标组件的语言以及相对于特别地与各个语言特定适配器的其他语言特定适配器相关联的其他语言不同。
[0025] 语言特定适配器可以将请求消息转译为用于语言无关调度器处理的请求。语言无关调度器可以然后标识与作为请求消息的对象的目标组件相关联或相对应的各种服务组件。可以通过运行传递或调用组件接口层处的目标组件的服务组件来调用目标组件。
[0026] 在一些实施方式中,可以在建立时自动生成语言特定适配器。例如,当开发新目标组件时,可以在建立新目标组件时自动生成对应于各种编程语言的各种语言特定适配器。目标组件和语言特定适配器可以然后被部署到其中已经存在语言无关调度器的运行环境中。备选地,调度器可以同时被部署为新的目标组件和适配器。
[0027] 现在参考附图,图1图示了其中代码服务可以被用于促进应用组件与目标组件之间的交互的操作架构。图2图示了包含操作架构的操作场景,而图3图示了可以由代码服务采用的接口过程。
[0028] 图4图示了包括语言特定适配器和语言无关调度器的另一操作架构。图5和图6二者图示了包含适配器和调度器的操作场景,而图7 和图8图示了表示各种备选设计的附加操作架构。图9图示了适合实现本文所公开的应用、服务、过程、架构和操作场景中的任一个的计算系统。
[0029] 现在转到图1,操作架构100包括应用环境103中的应用组件101。应用组件101通过消息接口与代码服务111通信。代码服务111包括服务组件113,其通过组件接口与目标环境123中的目标组件121通信。可以理解,操作架构100可以包含其他元件并且不限于仅本文所公开的那些元件。
[0030] 参考图2,在操作中,应用组件101在应用环境103中被调用并且通过消息接口将请求消息传递给代码服务111。代码服务111接收请求消息并且响应地使用服务组件113通过组件接口调用目标组件 121。目标组件121运行并且将执行结果返回给代码服务111。代码服务111通过消息接口将结果提供给应用组件101。
[0031] 可以理解,在应用组件101与代码服务111之间交换的通信背后的填充模式表示消息接口。在代码服务111与目标组件121之间交换的通信背后的不同的填充模式表示组件接口,其可以是与消息接口不同类型的接口。
[0032] 图3图示了在操作场景200的上下文中由代码服务111采用的接口过程300。接口过程300更详细地描述利用应用组件101和目标组件121的代码服务111的功能。
[0033] 在操作中,代码服务111通过消息接口从应用组件101接收代码请求(步骤301)。请求消息可以包括调用目标组件121的、代码服务111的请求。例如,请求消息可以明确或隐含地、直接或间接地或以某种其他方式指定目标组件121。目标组件121的标识可以被包裹在允许请求通过消息接口被传递的其他信息中。
[0034] 代码服务111响应地尝试标识与目标组件121相关联的服务组件 (步骤303),其在该示例中由服务组件113表示。可以以若干方式完成标识服务组件113,包括引用存储与目标组件的名称相关联的服务组件的名称的表或列表。当目标组件121由请求消息中的名称标识时,代码服务111可以咨询表或列表以标识其对应的服务组件。
[0035] 然后,可以运行服务组件113以便调用目标组件121(步骤305)。在一些场景中,应用组件101将其传递的请求消息中的参数传送给代码服务111。服务组件113可以当其被调用时将参数传送到目标组件 121上。在一些场景中,服务组件113可以包括与目标组件121有关并且允许其调用目标组件121的代码。然而,在其他场景中,可以调用服务组件113以定位和取回用于调用目标组件121的相关代码。然而,在其他场景中,在应用组件101调用到代码服务111中时,可能尚未实例化服务组件113。相反,可以调用代码服务111以实例化服务组件113。在任何情况下,目标组件121可以至少部分基于参数而执行并且可以将结果返回到代码服务111。
[0036] 通过这种方式,即使每个组件可能已经以不同的编程语言被编写,应用组件101也可以成功地调用目标组件121。应用组件101能够通过经由消息接口与代码服务111通信而这样做,同时代码服务 111经由底层接口或组件接口与目标组件121通信。这样的技术增强不同的环境中的组件的互操作性。
[0037] 返回参考图1,应用组件101表示在应用环境103的上下文中运行并且能够通过消息接口与代码服务111通信的任何代码、模、应用或其集合。应用组件101可以是在应用环境103的上下文内运行的较大的应用的一部分。应用环境103的示例包括web浏览器应用、操作系统、虚拟机、Java虚拟机或其任何组合或变型。
[0038] 目标组件121表示在目标环境123的上下文中运行并且能够由服务组件113调用的任何代码、模块、应用或其集合。目标组件121的示例包括但不限于组件对象模型(COM)对象、.NET对象、C对象、 C++对象或任何其他类型的组件。目标环境123的示例包括但不限于操作系统、虚拟机、Java虚拟机、其他web浏览器或其任何组合或变型。
[0039] 代码服务111表示能够与应用组件101对接并且发起服务组件 113的任何代码、组件、模块、应用或其集合或任何其他类型的软件。在一些场景中,代码服务111可以被实现在目标环境123中,而且可以被实现在目标环境123外部。
[0040] 操作架构100可以被实现在单个计算设备上或跨越多个计算设备被分布。计算系统901表示一个适合的平台并且下文更详细地讨论。
[0041] 图4图示了实施方式中的操作架构400。操作架构400包括应用环境403中的应用组件401和应用环境413中的应用组件411。应用组件401和应用组件411通过消息接口与目标环境420中的代码服务 421通信。应用组件401可以使用与应用组件411相同或不同的消息接口。代码服务421经由(一个或多个)组件接口与目标组件423对接。
[0042] 代码服务421包括与以一种语言(语言A)编写的应用组件相关联的语言特定适配器425并且还包括与以另一种语言(语言B)编写的应用组件相关联的另一语言特定适配器427。语言特定适配器425 处理由以该一种语言编写的应用组件(诸如应用组件401)发起的请求消息,而语言特定适配器427处理以该另一种语言(诸如应用组件 411)处理的请求消息。
[0043] 语言无关调度器429也被包括在代码服务421中。语言无关调度器429在语言特定适配器425和427与目标组件423之间对接。语言特定适配器425和语言特定适配器427二者作为与语言无关调度器 429相同过程的一部分运行并且因此经由过程接口或与消息接口不同的某种其他过程间方式与语言无关调度器429通信。换句话说,应用组件401和411不作为与语言特定适配器425和427和语言无关调度器429相同过程的一部分运行。在许多情况中,目标组件423还作为存储器中的分离的过程的一部分运行。
[0044] 参考图5,操作场景500包含用于证明实施方式中的代表性数据流的应用组件401。在操作中,应用组件401在应用环境403中被调用并且通过消息接口将请求消息传递给代码服务421中的语言特定适配器425。语言特定适配器425接收并且处理消息,包括将其展开以访问被包括在其中的代码请求。代码请求标识应用组件401将尝试调用的特定目标组件并且还包括调用组件所利用的参数。
[0045] 语言特定适配器425将代码请求转译为由语言无关调度器429理解的格式并且将进程内请求转发给语言无关调度器429。语言无关调度器429接收代码请求并且响应地查找哪个服务组件(未示出)用于到达目标组件423。由语言无关调度器429查询的表、列表或其他这样的数据结构可以定义或以其他方式指定哪些服务组件与哪些目标组件相关联。
[0046] 在标识适当的服务组件时,语言无关调度器429运行服务组件以调用目标组件423。可以以与目标组件423(语言C)相同的语言编写服务组件来确保组件之间的足够的互操作性。利用由应用组件401 所提供的参数对服务组件进行加载以允许目标组件423执行参数。
[0047] 目标组件423将执行结果返回给语言无关调度器429,其将结果传递给语言特定适配器425。语言特定适配器425生成包括执行结果或代码结果的答复消息,并且通过消息接口将答复消息传递给应用组件401。
[0048] 可以理解,在应用组件401与语言特定适配器425之间交换的通信背后的填充模式表示消息接口。在语言特定适配器425与语言无关调度器之间交换的通信背后的不同的填充模式表示过程接口或进程内通信。在语言无关调度器429与目标组件423之间交换的通信背后的又一填充模式表示组件级接口,或者该语言无关调度器429和目标组件423跨越过程通信。
[0049] 图6中所图示的操作场景600涉及用于证明另一实施方式中的表示性数据流的应用组件411。图5和图6一起图示了语言无关调度器 429能够与多个语言特定适配器交互并且因此可以实现以相对于彼此 (语言A和语言B)不同的编程语言编写的应用组件与以又一编程语言(语言C)编写的目标组件之间的互操作性。
[0050] 在操作中,应用组件411在应用环境413中被调用并且通过消息接口将请求消息传递给语言特定适配器427。语言特定适配器427接收并且处理消息,包括将其展开以访问被包括在其中的代码请求。代码请求标识应用组件411将尝试调用的特定目标组件并且还包括调用组件所利用的参数。
[0051] 语言特定适配器427将代码请求转译为由语言无关调度器429理解的格式并且将进程内请求转发给语言无关调度器429。语言无关调度器429接收代码请求并且响应地查找哪个服务组件(未示出)用于到达目标组件423。
[0052] 在标识适当的服务组件时,语言无关调度器429运行服务组件以调用目标组件423。可以以与目标组件423(语言C)相同的语言编写服务组件来确保组件之间的足够的互操作性。利用由应用组件411 所提供的参数对服务组件进行加载以允许目标组件423执行参数。
[0053] 目标组件423将执行结果返回给语言无关调度器429,其将结果传递给语言特定适配器427。语言特定适配器427生成包括执行结果或代码结果的答复消息,并且通过消息接口将答复消息传递给应用组件411。
[0054] 可以理解,在应用组件411与语言特定适配器427之间交换的通信背后的填充模式表示消息接口。在语言特定适配器427与语言无关调度器429之间交换的通信背后的不同的填充模式表示过程接口或进程内通信。在语言无关调度器429与目标组件423之间交换的通信背后的又一填充模式表示组件级接口,或者该语言无关调度器 429和目标组件423跨越过程通信。
[0055] 返回参考图4,应用组件401表示在应用环境403的上下文中运行并且能够通过消息接口与代码服务421通信的任何代码、模块、应用或其集合。应用组件401可以是在应用环境403的上下文内运行的较大的应用的一部分。应用环境403的示例包括web浏览器应用、操作系统、虚拟机、Java虚拟机或其任何组合或变型。
[0056] 应用组件411表示在应用环境413的上下文中运行并且能够通过与应用组件401不同的消息接口与代码服务421通信的任何代码、模块、应用或其集合。应用组件411可以是在应用环境413的上下文内运行的较大的应用的一部分。应用环境413的示例包括web浏览器应用、操作系统、虚拟机、Java虚拟机或其任何组合或变型。在一些场景中,应用环境413可以与应用环境403分离,但是在其他场景中可以组合使得应用组件401和应用组件411在相同应用环境的上下文内执行。
[0057] 目标组件423表示在目标环境420的上下文中运行并且能够由代码服务421调用的任何代码、模块、应用或其集合。目标组件423的示例包括但不限于组件对象模型(COM)对象、.NET对象、C对象、 C++对象或任何其他类型的组件。目标环境420的示例包括但不限于操作系统、虚拟机、Java虚拟机、其他web浏览器或其任何组合或变型。
[0058] 代码服务421表示能够与应用组件401和应用组件411对接并且发起用于调用目标组件423的服务组件的任何代码、组件、模块、应用或其集合或任何其他类型的软件。在一些场景中,代码服务421可以被实现在目标环境420中,但是可以被实现在目标环境420外部。
[0059] 操作架构400可以被实现在单个计算设备上或跨越多个计算设备分布。计算系统901表示一个适合的平台并且下文更详细地讨论。
[0060] 图7图示了表示相对于操作架构400的备选设计的另一操作架构 700。操作架构700包括在应用环境703中托管的应用组件701、在应用环境704中托管的应用组件702以及在应用环境713中托管的应用组件711。
[0061] 应用组件701和应用组件702通过第一消息接口(消息接口X) 与代码服务721通信。应用组件711通过不同的第二消息接口(消息接口Y)与代码服务721通信。
[0062] 不同的消息接口对应于在由语言特定适配器725和语言特定适配器727所表示的代码服务721中可用的不同的语言特定适配器。语言特定适配器725对应于第一编程语言(语言A)并且通常处理由以该语言编程的应用组件发起的请求消息。语言特定适配器727对应于第二编程语言(语言B)并且通常处理由以该语言编程的应用组件发起的请求消息。
[0063] 语言特定适配器725和语言特定适配器727二者与语言无关调度器729在进程内通信。语言无关调度器729通过各种组件接口与目标组件723和目标组件724通信。目标组件723和目标组件724表示可以被加载在目标环境720中的组件。
[0064] 在操作中,当应用组件701被调用时,其可以通过第一消息接口将请求消息传递给语言特定适配器725以便使得目标组件被调用。同样地,应用组件702当其需要调用目标环境720中的目标组件时,还将请求消息传递给语言特定适配器725。这是因为应用组件701和702 二者可以编程地引导以与语言特定适配器725交互。可选地,可以以该方式编程地引导应用环境703或应用环境704中的其他元件。
[0065] 语言特定适配器725接收并且处理请求消息,包括将其展开以访问被包括在其中的代码请求。代码请求标识应用组件可以将尝试调用的特定目标组件并且还包括调用组件所利用的参数。语言特定适配器 725将代码请求转译为由语言无关调度器729理解的格式并且将进程内请求转发给语言无关调度器729。特定语言调度器729接收代码请求并且响应地找到哪个或哪些服务组件(未示出)用于到达由每个请求消息所标识的目标组件。
[0066] 在标识适当的服务组件时,语言无关调度器729运行服务组件以调用目标组件,其可以是该示例中的目标组件723或目标组件724中的一者或二者。可以以与目标组件(语言C)相同的语言编写服务组件来确保组件之间的足够的互操作性。利用由应用组件701和702所提供的参数对服务组件进行加载以允许目标组件执行参数。
[0067] 目标组件将执行结果返回给语言无关调度器729,其将结果传送给语言特定适配器725。语言特定适配器725生成包括结果的答复消息并且通过消息接口将答复消息传递给应用组件701和702。
[0068] 应用组件711与代码服务721稍微不同地交互,这是因为其使用不同的消息接口(消息接口Y)与语言特定适配器727通信。在操作中,应用组件711通过第二消息接口将请求消息传递给语言特定适配器727以便使得目标组件被调用。这是因为应用组件711可以编程地引导以与语言特定适配器727交互。可选地,可以编程地引导应用环境713中的其他元件,以将请求消息发送给代表应用组件711的语言特定适配器727。
[0069] 语言特定适配器727接收并且处理请求消息,包括将其展开以访问包括在其中的代码请求。代码请求标识应用组件可以将尝试调用的特定目标组件并且还可以包括调用组件所利用的参数。语言特定适配器727将代码请求转译为由语言无关调度器729理解的格式并且将进程内请求转发给语言无关调度器729。特定语言调度器729接收代码请求并且响应地找到哪个或哪些服务组件(未示出)用于到达由请求消息所标识的目标组件。
[0070] 在标识适当的服务组件时,语言无关调度器729运行服务组件以调用目标组件,其可以是该示例中的目标组件723或目标组件724中的任一个。可以以与目标组件(语言C)相同的语言编写服务组件来确保组件之间的足够的互操作性。利用由应用组件711所提供的参数对服务组件进行加载以允许目标组件执行参数。
[0071] 目标组件将执行结果返回给语言无关调度器729,其将结果传送给语言特定适配器727。语言特定适配器727生成包括结果的答复消息并且通过第二消息接口将答复消息传递给应用组件711。
[0072] 图8图示了实施方式中的另一操作架构800。操作架构800包括在浏览器803中运行的应用801以及在浏览器803中运行的应用811。可以理解,浏览器803的附加实例是可能的,或者其他应用环境可以用于托管应用801和应用811中的一者或二者。
[0073] 应用801以JavaScript被编程并且因此编程地引导以通过特定消息接口与在操作系统820中运行的代码服务821通信。应用811以 C#编程并且因此编程地引导以通过不同的消息接口与代码服务821 通信。在该示例实施方式中,当应用811通过Web Socket信道通信时,应用801经由超文本传输协议(HTTP)信道与代码服务821通信。其他信道、路径或消息接口也是可能的并且可以被认为是在本公开的范围内,其示例包括TLS、SSL、HTTP、JSON和SOAP通信。
[0074] 代码服务821包括由服务组件833、服务组件835和服务组件837 表示的各种服务组件。每个服务组件对应于由组件823、组件825和组件827表示的操作系统820中的各种目标组件中的特定一个目标组件。可以理解,以相对于编写应用801和应用811的语言不同的语言编写目标组件中的每一个目标组件。服务组件833 、835 和837 向组件接口级处的组件823、825和827提供桥接。例如,服务组件833 和835相应地通过应用二进制接口与组件823和825通信。服务组件 837通过应用编程接口与组件827通信。
[0075] 在简单的操作示例中,浏览器803中的应用801和811之一可以通过消息接口之一将请求消息传递给代码服务821。代码服务821接收消息并且标识用来调用请求消息中所标识的目标组件的适当的服务组件。代码服务821然后启动服务组件以便调用目标组件。被包括在请求消息中的参数可以由服务组件传送以用于目标组件执行。目标组件运行并且在适用的情况下将可以由答复消息中的代码服务821传递的结果返回给发起应用。
[0076] 图9图示了表示可以在其中实现本文所公开的各种操作架构、场景和过程的任何系统或系统的集合的计算系统901。计算系统901的示例包括但不限于智能电话、膝上型计算机、平板计算机、台式计算机、混合计算机、游戏机、虚拟机、智能电视和手表以及可穿戴设备以及其任何变型或组合。其他示例包括服务器计算机、机架式服务器、 web服务器、计算平台和数据中心设备以及任何其他类型的物理或虚拟服务器机和其任何变型或组合。
[0077] 计算系统901可以被实现为单个装置、系统或设备或可以以分布式方式被实现为多个装置、系统或设备。计算系统901包括但不限于处理系统902、存储系统903、软件905、通信接口系统907和用户接口系统909。处理系统902与存储系统903、通信接口系统907和用户接口系统909可操作地耦合。
[0078] 处理系统902加载并且执行来自存储系统903的软件905。软件 905包括至少一个代码服务906,其表示关于前述实施方式所讨论的代码服务111、代码服务421、代码服务721和代码服务821。当由处理系统902执行以增强组件的互操作性时,软件905引导处理系统902 以如本文所描述地操作至少关于代码服务111、代码服务421、代码服务721和代码服务
821、在前述实施方式中所讨论的各种过程、操作场景和顺序。计算系统901可以可选地包括出于简洁的目的未讨论的附加设备、特征或功能性。
[0079] 仍然参考图9,处理系统902可以包括微处理器和其他电路,其取回和执行来自存储系统903的软件905。处理系统902可以被实现在单个处理设备内,而且可以跨在执行的程序指令中协作的多个处理设备或子系统分布。处理系统902的示例包括通用中央处理单元、专用处理器和逻辑设备以及任何其他类型的处理设备、其组合或变型。
[0080] 存储系统903可以包括由处理系统902可读取并且能够存储软件 905的任何计算机可读存储介质。存储系统903可以包括以用于信息 (诸如计算机可读指令、数据结构、程序模块或其他数据)的存储的任何方法或技术实现的易失性和非易失性、可移除和不可移除介质。存储介质的示例包括随机存取存储器只读存储器、磁盘、光盘、闪速存储器、虚拟存储器和非虚拟存储器、磁带盒、磁带、磁盘存储或其他磁性存储设备或任何其他适合的存储介质。计算机可读存储介质绝对不是传播信号
[0081] 在一些实施方式中,除计算机可读存储介质之外,存储 系统903还可以包括可以通过其内部或外部地传递软件的计算机可读通信介质。存储系统903可以被实现为单个存储设备,而且可以跨越相对于彼此共同定位或分布的多个存储设备或子系统实现。存储系统903可以包括能够与处理系统902或可能地其他系统通信的附加元件(诸如控制器)。
[0082] 软件905可以以程序指令被实现,并且除了其他功能,可以当由处理系统902执行时引导处理系统902如关于本文所图示的各种操作场景、序列和过程所描述地进行操作。例如,软件905可以包括用于实现代码服务和其相关联的功能性的程序指令。
[0083] 具体而言,程序指令可以包括协作或以其他方式协作以执行本文所描述的各种过程和操作场景的各种组件或模块。可以以编译或解译指令或以指令的某种其他变型或组合实现各种组件或模块。可以以同步或异步方式、串行或并行、以单线程环境或多线程或根据其任何其他适合的执行范例、变型或组合执行各种组件或模块。软件905可以包括附加过程、程序或组件(诸如操作系统软件或其他应用软件)。软件905还可以包括固件或由处理系统902可执行的某种其他形式的机器可读处理指令。
[0084] 一般而言,软件905可以当加载到处理系统902并且执行时将(该计算系统901表示的)适合的装置、系统或设备总体从通用计算系统转变为定制为促进增强的组件互操作性的专用计算系统。实际上,存储系统903上的编码软件905可以转变存储系统903的物理结构。物理结构的特定转变可以取决于该描述的不同的实施方式中的各种因素。这样的因素的示例可以包括但不限于用于实现存储系统903的存储介质的技术和计算机存储介质是否被表征为主要和次要存储装置以及其他因素。
[0085] 例如,如果计算机可读存储介质被实现为基于半导体的存储器,软件905可以当程序指令被编码在其中时转变半导体存储的物理状态 (诸如通过转变构成半导体存储器的晶体管、电容器或其他分立的电路元件的状态)。类似转变可以关于磁性或光学介质发生。在不脱离本描述的范围的情况下,物理介质的其他变型也是可能的,并且前述示例仅被提供为促进对于本公开的讨论。
[0086] 再参考图1-图3作为示例,通过计算系统901表示的(多个)计算系统的操作,可以特别地关于操作架构100和目标组件121执行转变。作为示例,目标组件121可以处于其中其未被调用的状态。在应用组件101将请求消息提交给代码服务111时,服务组件113被标识和被启动以调用目标组件121,从而将其状态改变到新的调用状态。
[0087] 可以理解,计算系统901一般地旨在表示在其上软件905可以被部署并且执行以便实现增强的组件互操作性的(一个或多个)计算系统。然而,计算系统901还可以适合作为任何计算系统,在其上软件 905可以分级并且从其中一者或二者可以分布、传输、下载或以其他方式提供给用于部署和执行或附加分布的另一计算系统。
[0088] 通信接口系统907可以包括允许通过通信网络(未示出)与其他计算系统(未示出)通信的通信连接和设备。一起考虑系统间通信的连接和设备的示例可以包括:网络接口卡、天线、功率放大器、RF 电路、收发器和其他通信电路。连接和设备可以通过通信介质通信以与其他计算系统或系统网络(诸如金属、玻璃、空气或任何其他适合的通信介质)交换通信。前述介质、连接和设备是众所周知的并且不需要此处详细讨论。
[0089] 用户接口系统909是可选的并且可以包括键盘鼠标、语音输入设备、用于从用户接收触摸手势的触摸输入设备、用于通过用户检测非触摸手势和其他动作的运动输入设备和其他可比较的输入设备和能够从用户接收输入的相关联的处理元件。输出设备(诸如显示器、扬声器、触觉设备以及其他类型的输出设备)还可以被包括在用户接口系统909中。在一些情况下,输入和输出设备可以组合在单个设备中(诸如能够显示图像和接收触摸手势的显示器)。前述用户输入和输出设备是众所周知并且不需要此处详细讨论。
[0090] 用户接口系统909还可以包括由支持上文所讨论的各种用户输入和输出设备的处理系统902可执行的相关联的用户接口软件。单独地或结合彼此和其他硬件和软件元件,用户接口软件和用户接口设备可以支持图形用户接口、自然用户接口或任何其他类型的用户接口。
[0091] 计算系统901与其他计算系统(未示出)之间的通信可以通过(一个或多个)通信网络并且根据其各种通信协议、协议组合或变型发生。示例包括内联网、因特网、Internet、局域网、广域网、无线网络、有线网络、虚拟网络、软件定义网络、数据中心总线、计算基架或任何其他类型的网络、网络组合或其变型。前述通信网络和协议是众所周知的并且不需要此处详细讨论。然而,可以使用的一些通信协议包括但不限于网际协议(IP、IPv4、IPv6等)、传输控制协议(TCP)和用户数据报协议(UDP)以及任何其他适合的通信协议、变型或其组合。
[0092] 在其中交换数据、内容或任何其他类型的信息的前述示例中的任一个示例中,信息的交换可以根据各种协议中的任一个协议发生,包括FTP(文件传送协议)、HTTP(超文本传输协议)、REST(表示性状态转移)、WebSocket、DOM(文档对象模型)、HTML(超文本标记语言)、CSS(级联类型板)、HTML5、XML(可扩展标记语言)、JavaScript、JSON(JavaScript对象表示法)和AJAX(异步 JavaScript和XML)以及任何其他适合的协议、变型或其组合。
[0093] 虽然图1-图9一般地描绘了相对地少的操作场景和顺序,但是可以理解,可以按比例并且常规地应用本文所公开的概念。例如,可以部署本文所公开的代码服务以支持任何数目的应用组件和目标组件。
[0094] 附图中所提供的功能框图、操作场景和顺序和流程图表示用于执行本公开的新颖方面的示例性系统、环境和方法。虽然出于解释的简单性的目的包括在本文中的方法可以以功能图、操作场景或顺序或流程图的形式并且可以被描述为一系列动作,然而,将理解和领会到,该方法不由动作的顺序限制,这是因为一些动作根据其可以与来自本文所示和所描述的那个的其他动作以不同的顺序和/或同时发生。例如,本领域的技术人员将理解和领会到,方法可以备选地被表示为一系列相关状态或事件,诸如在状态图中。此外,并非可以针对新颖的实施方式要求方法中所图示的所有动作。
[0095] 本文中所包括的描述和附图描绘了教导本领域的技术人员如何制造和使用最好选项的特定实施方式。出于教导发明原理的目的,已经简化或省略一些常规方面。本领域的技术人员将理解到,来自这些实施方式的变型落入本发明的范围内。本领域的技术人员还将理解到,可以以各种方式组合上文所描述的特征来形成多个实施方式。因此,本发明不限于上文所描述的特定实施方式而是仅由权利要求和其等同物限定。
高效检索全球专利

专利汇是专利免费检索,专利查询,专利分析-国家发明专利查询检索分析平台,是提供专利分析,专利查询,专利检索等数据服务功能的知识产权数据服务商。

我们的产品包含105个国家的1.26亿组数据,免费查、免费专利分析。

申请试用

分析报告

专利汇分析报告产品可以对行业情报数据进行梳理分析,涉及维度包括行业专利基本状况分析、地域分析、技术分析、发明人分析、申请人分析、专利权人分析、失效分析、核心专利分析、法律分析、研发重点分析、企业专利处境分析、技术处境分析、专利寿命分析、企业定位分析、引证分析等超过60个分析角度,系统通过AI智能系统对图表进行解读,只需1分钟,一键生成行业专利分析报告。

申请试用

QQ群二维码
意见反馈