用于在受信任客户端组件中的服务器处理之后的客户端侧节流的系统和方法与流程

文档序号:18667520发布日期:2019-09-13 20:23阅读:212来源:国知局
用于在受信任客户端组件中的服务器处理之后的客户端侧节流的系统和方法与流程

本公开涉及客户端-服务器网络,并且更特别地涉及客户端-服务器网络中的完成侧节流。



背景技术:

在此所提供的背景描述用于通常呈现用于本公开的上下文的目的。在该背景部分中描述工作的程度上,目前命名的发明人的工作以及在提交时可以不以其他方式限制为现有技术的描述的各方面既不明确地也不隐含地承认为针对本公开的现有技术。

现在参考图1,在客户端-服务器网络100中,多个客户端计算设备110-1、110-2、……和110-c(共同地,客户端计算设备或者客户端)经由分布式通信系统(dsc)108(诸如因特网)或者经由设备、本地网络等的组合总线与服务器计算设备或服务器120通信。在服务器120(作为资源或服务的提供者)与客户端110(作为服务请求者)划分任务或工作负荷。服务器120通常具有与客户端110的一对多关系。

客户端/服务器网络可以使用节流机制以基于销售给客户的服务水平协议(sla)来限制性能。节流机制还可以用于防止客户端110利用太多工作使服务器120过载。传统地,在客户端-服务器网络100的请求侧完成该节流。如果客户端110试图完成比节流将允许更多工作,则阻止客户端110发送新请求。

当使用请求侧节流时,客户端之一(例如110-1)不知道其他客户端(例如110-1、……、110-v)在做什么。如此,请求可能不必要地冲突,并且客户端-服务器网络100的整体效率被降低。在另一示例中,客户端中的两个(例如110-1和110-2)将取消请求以便实施其相应的节流。然而,服务器120空闲。然后,两个客户端110-1和110-2同时向服务器120发送请求。服务器120同时接收这两个请求。如此,必须延迟一个请求,同时处理另一请求。

在一些示例中,客户端110使用其中客户端110请求许可发送请求的更高级协议。客户端110然后在许可由服务器120授予时发送请求。然而,该方法要求与请求有关的额外开销以及许可的授予或者拒绝。



技术实现要素:

计算设备包括处理器和存储器。节流应用被存储在存储器中并且由处理器执行。节流应用从第一应用接收服务器请求。节流应用位于相对于第一应用的不可访问位置中。节流应用被配置为响应于服务器请求,估计当服务器请求将完成时的完成时间;将具有完成时间的服务器请求发送给服务器;在完成时间之前接收来自服务器的对服务器请求的响应;当用于服务器请求的完成时间在将来时,等待直到完成时间是现在;并且当完成时间是现在时,向第一应用指示完成。

在其他特征中,服务器请求通过被安装在远程于计算设备的第二计算设备上的第一应用被发送给计算设备。第一应用被存储在存储器中并且由处理器执行并且被配置为生成服务器请求。节流应用位于计算设备的操作系统的内核部分中。

在其他特征中,估计当服务器请求将完成时的完成时间包括以下各项之一:如果请求队列中的最后完成请求的先前完成时间在过去,则将先前完成时间更新到当前时间,并且将用于服务器请求的完成时间添加到先前完成时间;或者如果最后完成请求的先前完成时间在将来,则将用于服务器请求的完成时间添加到先前完成时间。

在估计完成时间之前,节流应用被配置为确定未完成请求的数目是否大于预定请求限制;并且当未完成请求的数目小于预定请求限制时,执行对完成时间的估计。

在其他特征中,节流应用被配置为将服务器请求和完成时间插入在请求队列中。节流应用被配置为选择性地将请求队列中的服务器请求和对应的生存时间字段发送给服务器。对应的生存时间字段等于请求队列中的请求的完成时间减去请求队列中的请求被发送的当前时间。

在其他特征中,当服务器请求准备从请求队列发送时,节流应用发送具有偏移字段和长度字段的报头分组并且不发送写数据有效载荷。当服务器请求是服务器写请求时,计算设备的存储器由服务器使用远程直接存储器访问基于报头分组来读取。当服务器请求是服务器读请求时,计算设备的存储器由服务器使用远程直接存储器访问基于报头分组来写入。

在其他特征中,估计用于服务器请求的完成时间基于响应于服务器请求和每单位时间数据限制涉及的数据的估计来确定,并且每单位时间数据限制包括恒定数据限制和预定突发时段期间的突发限制中的至少一个。

在其他特征中,计算设备包括主机操作系统。虚拟机或容器之一包括第一应用。节流应用位于主机操作系统的内核部分中。服务器包括服务器应用,该服务器应用由处理器和存储器执行并且被配置为基于服务器请求来执行以下至少一项:从硬盘驱动系统读数据和向硬盘驱动系统写数据。

计算设备包括处理器和存储器。被存储在存储器中并且由处理器执行的服务器应用被配置为从第一应用接收服务器请求,经由被安装在相对于第一应用的不可访问位置中的节流应用而经受节流限制。服务器请求包括偏移字段、长度字段和生存时间字段。生存时间字段指定节流限制允许第一应用完成服务器请求的将来的时间段。服务器应用被配置为在由生存时间字段指定的时间之前,选择性地完成并且将对于服务器请求的响应发送给节流应用。

在其他特征中,当服务器请求是服务器读请求时,服务器应用被配置为使用远程直接存储器访问基于偏移字段和长度字段来写入由第一应用可访问的存储器。当服务器请求是服务器写请求时,服务器应用被配置为使用远程直接存储器访问基于偏移字段和长度字段来读取由第一应用可访问的存储器。当服务器请求是服务器读请求时,由第一应用可访问的存储器由服务器使用远程直接存储器访问基于偏移字段和长度字段来写入。

一种用于客户端侧节流的方法,包括:从第一应用接收服务器请求,其位于相对于第一应用的不可访问位置中。响应于服务器请求,方法包括:估计当服务器请求将完成时的完成时间;将具有完成时间的服务器请求发送给服务器;在完成时间之前接收来自服务器的对服务器请求的响应;当用于服务器请求的完成时间在将来时,等待直到完成时间是现在;并且当完成时间是现在时,向第一应用指示请求完成。

在其他特征中,估计当服务器请求将完成时的完成时间包括以下各项之一:如果请求队列中的最后完成请求的先前完成时间在过去,则将先前完成时间更新到当前时间,并且将用于服务器请求的完成时间添加到先前完成时间;或者如果最后完成请求的先前完成时间在将来,则将用于服务器请求的完成时间添加到先前完成时间。

在其他特征中,在估计完成时间之前:确定未完成请求的数目是否大于预定请求限制;并且当未完成请求的数目小于预定请求限制时,执行对完成时间的估计。

在其他特征中,方法包括:将服务器请求和完成时间插入在请求队列中;并且选择性地将请求队列中的服务器请求和对应的生存时间字段发送给服务器。对应的生存时间字段等于请求队列中的请求的完成时间减去请求队列中的请求被发送的当前时间。

在其他特征中,方法包括将服务器请求和完成时间插入在请求队列中。当服务器请求准备从请求队列发送时,发送具有偏移字段和长度字段的报头分组并且不发送写数据有效载荷。当服务器请求是服务器写请求时,使用远程直接存储器基于报头分组来访问读取由第一应用可访问的存储器。当服务器请求是服务器读请求时,使用远程直接存储器访问基于报头分组来写入由第一应用可访问的存储器。

本公开的适用性的进一步领域将从具体实施方式、权利要求和附图变得明显。具体实施方式和特定示例旨在仅出于说明的目的并且不旨在限制本公开的范围。

附图说明

图1是根据现有技术的客户端-服务器网络的功能块图。

图2是根据本公开的包括完成侧节流的客户端-服务器网络的功能块图。

图3是包括完成侧节流应用的客户端侧的客户端计算设备的示例的功能块图。

图4是包括完成侧节流应用的服务器侧的服务器计算设备的示例的功能块图。

图5是包括充当客户端计算设备和节流应用的虚拟机或容器的服务器的示例的功能块图。

图6是根据本公开的包括客户端计算设备、受信任的服务器计算设备和服务器计算设备的系统的功能块图。

图7是根据本公开的图示完成侧节流应用的第一部分的示例的流程图。

图8是根据本公开的图示完成侧节流应用的第二部分的示例的流程图。

图9是根据本公开的图示服务器侧节流应用的流程图。

在附图中,附图标记可以被重用以标识类似和/或相同元件。

具体实施方式

根据本公开的对于客户端侧节流的系统和方法在完成侧执行大多数节流工作。客户端计算设备或者客户端被允许发送超过节流允许的请求。然而,请求在节流的限制内完成。

根据本公开的对于客户端侧节流的系统和方法适于其中与实际上处理请求消耗的资源相比请求消耗最小资源的系统。换句话说,从客户端发送到服务器的初始请求非常小并且消耗系统中的非常少的资源。其仅当服务器决定实际上完成消耗资源的工作时。

在一些示例中,当大量的数据在机器之间移动的输入/输出类型请求时,在此所描述的系统和方法利用远程直接存储器访问(rdma)的性质。rdma允许服务器直接地将数据推送到客户端的存储器/从客户端的存储器提取数据。在此所描述的系统和方法还可以利用客户端的受信任和不受信任的组件。例如,客户端的受信任组件包括对客户端应用不可访问的操作系统的那些部分。例如,受信任和不受信任的组件可以通过使用虚拟机(vm)来创建。例如,在vm中运行的客户的应用是不受信任组件。然而,诸如在主机操作系统的内核中运行的节流应用的组件是受信任组件。

通过允许客户端向服务器发送直到在时间方面更晚才完成的请求,在此所描述的系统和方法允许服务器更好地优先化其工作。如果服务器在任何时刻具有空闲资源,则服务器可以较早完成请求,知道客户端上的受信任组件将实际上直到由节流允许才释放对于用户应用的请求。这有效地允许服务器洞察未来,并且因此更高效地操作。

在本文所描述的一些示例中,客户端上的不受信任用户应用将请求发送到受信任组件(诸如在客户端或者受信任服务器处的操作系统的内核中运行的节流应用),其与处理请求的服务器通信。客户端具有用于用户应用的节流限制集。节流可以以兆字节数据每秒(mb/s)、输入输出操作每秒(iops)或者其他数据限制每单位时间来表达。客户端还可以具有可以对在任何时间点处未完成的请求的总数的一个或多个限制。例如,第一限制可以与发送到服务器并且由服务器未完成的请求有关。例如,第二限制可以与等待被指示为用户应用的完成的请求的总数有关。

受信任组件确定未完成的请求的总数是否大于进行计数中的总请求。在一些示例中,进行中的总请求包括未完成的被发送到服务器的请求和/或完成但是等待被指示为已完成的请求。如果限制超过,则受信任组件等待进行队列中的请求完成。受信任组件还可以确定服务器处的未完成请求的数目是否大于进行计数中的服务器请求。这时候,受信任组件可以向服务器发送请求,但是受信任组件确定请求应当基于用于应用的允许mb/s节流完成的时间。

为了完成mb/s节流,受信任组件跟踪最后先前发出请求将完成的未来的最远时间。如果由受信任组件存储的时间在过去,则新请求可以相对于当前时间(即“现在”)而完成。如此,由客户端存储的时间被更新为“现在”或者当前时间。如果由受信任组件存储的时间在将来,则新请求将相对于最后完成时间而完成。

基于节流完成请求要求的时间量由受信任组件计算。例如,如果客户端被允许100mb/s并且请求用于1mb,则请求将花费10ms完成。请求时间被添加到以上存储的最后完成时间,并且请求被分配时间(对应于当服务器请求应当完成时的受信任组件上的绝对时间)。请求然后被添加到受信任组件中的进行队列并且被发送到服务器。

当请求被发送到服务器时,从请求应当完成的绝对时间(对应于用于服务器请求的生存时间(ttl)字段)的绝对时间减去客户端的当前时间。注意,对于不使用绝对时间的原因在于,不同的机器上的时钟不能保证同步。虽然当在机器之间通信时使用相对时间,但是也可以使用绝对时间。

当请求被接收时,服务器经由ttl字段知道其必须处理请求多长时间。服务器可以基于服务器请求需要完成的相对时间对来自多个客户端的多个请求进行分类。服务器可以然后以最佳的方式执行工作。服务器在ttl终止之前自由完成请求,由此释放服务器上的资源并且允许服务器处理其他请求。服务器可以信任受信任组件并且依赖于以下事实:受信任组件将实际上直到实际完成时间到达才指示应用的完成。

当用于请求的完成通知被接收时,受信任组件搜索完成队列以定位对应于请求的条目。受信任组件检查服务器请求被调度以完成的绝对时间。如果该时间是“现在”或者在过去,则受信任组件立即指示对于用户应用的完成。如果完成时间在将来,则受信任组件等待直到该时间到达,然后指示对于用户应用的完成。受信任组件递减进行中的请求的计数。

注意,在此所描述的系统和方法也可以利用完全不受信任的客户端来实现。在该情况下,在正常服务器侧逻辑之前,在服务器上实现上文被描述为受信任组件的一部分的客户端侧部分。

现在参考图2,示出了包括完成侧节流的客户端-服务器网络122。在过去,在请求侧的124-a或124-b处执行客户端节流。相反,在完成侧的126-a或126-b处执行根据本公开的客户端节流。

现在参考图3,示出了包括完成侧节流应用的客户端侧部分的客户端计算设备130。客户端计算设备130包括一个或多个处理器170和存储器172。存储器172包括主机操作系统176,其包括用户部分178和内核部分180。生成用于服务器的请求的用户应用184位于主机操作系统176的用户部分178中。完成侧客户端节流应用186的客户端侧部分位于主机操作系统176的内核部分180中。客户端计算设备130还包括有线或无线接口188和大容量存储设备190,诸如硬盘驱动器或者其他大容量存储设备。

现在参考图4,示出了包括完成侧节流应用的服务器侧部分的服务器计算设备200。服务器计算设备200包括一个或多个处理器204和存储器206。存储器206包括主机操作系统208,其包括处理客户端请求的服务器应用214和完成侧客户端节流应用216的服务器侧部分。在一些示例中,节流应用216的服务器侧部分与服务器应用214集成或被提供为服务器应用214的插件。服务器计算设备200还包括有线或无线接口218和大容量存储设备220,诸如硬盘驱动器或者其他大容量存储设备。

现在参考图5,服务器计算设备或者服务器250包括充当生成请求并且包括完成侧节流应用的客户端计算设备的虚拟机(vm)或者容器。服务器计算设备250包括一个或多个处理器254和存储器258。主机操作系统260包括用户部分264和内核部分266。用户部分264包括一个或多个客户操作系统268-1、268-2、……和268-v(共同地,客户操作系统268),其中v是大于零的整数。一个或多个客户操作系统268-1、268-2、……和268-v(共同地,客户操作系统268)中的每一个托管虚拟机或容器270-1、270-2、……和270-v(共同地,虚拟机(vm)或容器270)。vm或容器270中的每一个包括或者与用户部分272和内核部分274相关联。

vm或容器270中的每一个包括位于用户部分272或者内核部分274中的用户应用276,其生成输出到服务器的服务器请求。服务器250的内核部分266包括控制或者虚拟化系统资源(诸如处理器、硬盘驱动器、存储器等)的共享使用的管理程序280。服务器250的主机操作系统的内核部分266包括节流应用282的客户端侧和服务器侧部分。备选地,节流应用282的服务器侧部分可以位于管理程序280中。服务器250还包括有线或无线接口284和大容量存储设备286。

现在参考图6,节流应用可以位于远程于客户端计算设备130的计算机和/或包括处理服务器请求的服务器应用214的服务器289上。在一个示例中,节流应用290的客户端侧部分位于远程于服务器289的受信任服务器计算设备294上。服务器请求由客户端计算设备130生成并且发送到受信任服务器计算设备294。节流应用290的客户端侧部分如上文所描述地操作以向服务器298发送服务器请求并且从服务器289接收完成通知。在另一示例中,包括客户端侧和服务器侧部分二者的节流应用297位于服务器289上,并且省略服务器294。

现在参考图7,示出了用于在发送服务器请求时执行完成侧节流的方法350。在354处,完成侧节流应用确定是否从客户端用户应用接收到请求。当354是真时,在356处完成侧节流应用确定进行计数中的请求的总数(包括服务器上的进行中的请求和等待被指示为对于用户应用完成的完成队列中的未完成请求)是否低于预定请求限制。如果356是假,则完成侧节流应用在358处继续并且等待请求中的至少一个完成并且然后返回356。

当356是真时,则在359处完成侧节流应用递增进行计数中的总请求。在360处,方法确定服务器处的进行计数中的总请求是否低于第二预定限制。如果360是假时,方法继续362并且等待服务器完成请求并且在360处继续。当360是真时,方法递增进行计数中的服务器请求。

在368处,完成侧节流应用确定最后请求完成时间是否在过去。如果368是真,则在372处完成侧节流应用计算基于节流完成请求的时间。如果368是假,则在374处最后完成时间被设置等于“现在”并且然后在372处继续。在376处,完成侧节流应用将完成请求的时间添加到最后完成时间。在378处,完成侧节流应用将请求完成时间设置到最后完成时间。在382处,完成侧节流应用将请求插入到请求队列中。在386处,完成侧节流应用的客户端侧部分向服务器发送请求并且设置生存时间等于完成时间减去“现在”。

现在参考图8,示出了用于在服务器完成服务器请求之后执行完成侧节流的方法450。在454处,完成侧节流应用在454处确定其是否已接收到完成通知。当454是真时,在456处完成侧节流应用在完成队列中找到请求。在460处,完成侧节流应用确定请求完成时间是否在将来。如果460是假,则在462处完成侧节流应用递减进行队列中的计数。如果460是假,则在468处完成侧节流应用等待直到请求完成时间是现在并且然后在462处继续。在464处,完成侧节流应用在464处指示用户应用的请求完成。

现在参考图9,示出了用于通过服务器侧节流应用执行读和写请求的方法500。服务器侧节流应用的操作可以归因于以下事实来调节:发送请求和接收完成通知的受信任组件是受信任的。因此,服务器侧可以完成服务器请求,并且如果那对于服务器是高效的,则较早发送完成通知。当客户端具有如在504处所确定的写请求时,在508处客户端将包括写偏移字段、写长度字段和生存时间字段的报头分组(但非数据有效载荷)发送给服务器。在512处,服务器确定完成时间是否是现在。在一些示例中,服务器可以空闲并且可以决定比完成时间更早地处理写请求(换句话说,完成时间在将来)。在让客户端中的用户应用知道服务器写请求完成之前,受信任组件等待直到完成时间是现在。

如果512是真,则在516处服务器基于由客户端提供的报头信息,来读取被存储在客户端存储器中的写数据。在一些示例中,服务器使用远程直接存储器访问(rdma)从客户端存储器读取客户端将基于报头分组想要写入的有效载荷数据。

如果客户端需要执行如在520处所确定的读请求,则客户端将包括读取偏移、读取长度和生存时间字段的报头分组发送给服务器。在528处,当服务器准备好或完成时间是现在时,服务器基于报头中的读取偏移和读取长度字段,直接地将数据写入到客户端存储器。在一些示例中,服务器可以空闲并且可以决定比完成时间更早地处理读请求(换句话说,完成时间在将来)。在让客户端中的用户应用知道服务器读请求完成之前,受信任组件等待直到完成时间是现在。

在一些示例中,系统和方法在完成侧而不是在请求侧执行大多数节流实施。请求完成的延迟可以用于将反压力放在请求者上并且阻止新请求发出直到现有请求完成。服务器提前知道直到在时间方面更晚才需要处理的请求并且因此可以进行计划。

前述描述实际上仅是说明性的并且决不旨在限制本公开、其应用或者用途。本公开的宽泛的教导可以以各种形式实现。因此,虽然本公开包括特定示例,但是本公开的真实范围不应当是这样有限的,因为其他修改将在研究附图、说明书和权利要求书时变得明显。应当理解,在不改变本公开的原理的情况下,方法内的一个或多个步骤可以以不同的次序(或者并行地)执行。此外,虽然各实施例在上文被描述为具有某些特征,但是相对于本公开的任何实施例所描述的那些特征中的任何一个或多个可以在其他实施例中的任一个的特征中实现和/或组合实现,即使该组合未明确地描述。换句话说,所描述的实施例不是互相排斥的,并且一个或多个实施例彼此的排列保持在本公开的范围内。

元件之间(例如,模块、电路元件、半导体层等之间)的空间和功能关系使用各种术语描述,包括“被连接”、“被接合”、“被耦合”、“邻近”、“靠近”、“在…之上”、“上面”、“下面”和“被布置”。除非明确地被描述为“直接的”,否则当在以上公开中描述第一元件与第二元件之间的关系时,该关系可以是其中没有其他中间元件存在于第一元件与第二元件之间的直接关系,而且可以是其中一个或多个中间元件存在于第一元件与第二元件之间(或者空间地或者功能地)的间接关系。如在此所使用的,短语a、b和c中的至少一个应当被解释为使用非专有逻辑or的逻辑(aorborc),并且不应当被解释为意味着“a中的至少一个、b中的至少一个和c中的至少一个”。

在附图中,如由箭头所指示的箭头的方向通常证明对图示感兴趣的信息(诸如数据或者指令)的流动。例如,当元件a和元件b交换各种信息但是从元件a被传送到元件b的信息与图示有关时,箭头可以从元件a指向元件b。该单向箭头不隐含没有其他信息从元件b被传送到元件a。进一步地,对于从元件a被发送到元件b的信息而言,元件b可以向元件a发送信息请求或者接收信息确认。

在包括以下定义的本申请中,术语“模块”或者术语“控制器”可以利用术语“电路”替换。术语“模块”可以指代以下各项的一部分或者包括:专用集成电路(asic);数字、模拟或者混合模拟/数字分立电路;数字、模拟或者混合模拟/数字集成电路;组合逻辑电路;现场可编程门阵列(fpga);执行代码的处理器电路(共享、专用或者分组);存储由处理器电路执行的代码的存储器电路(共享、专用或者分组);提供所描述的功能的其他适合的硬件部件;或者以上中的一些或全部的组合,诸如在片上系统中。

模块可以包括一个或多个接口电路。在一些示例中,接口电路可以包括被连接到局域网(lan)、因特网、广域网(wan)或其组合的有线或无线接口。本公开的任何给定模块的功能可以被分布在经由接口电路连接的多个模块中间。例如,多个模块可以允许负载平衡。在另一示例中,服务器(还被称为远程或者云)模块可以代表客户模块完成一些功能。

如上文所使用的,术语代码可以包括软件、固件和/或微代码,并且可以指代程序、例程、函数、类、数据结构和/或对象。术语共享处理器电路涵盖执行来自多个模块的一些或全部代码的单个处理器电路。术语分组处理器电路涵盖组合附加的处理器电路执行来自一个或多个模块的一些或全部代码的处理器电路。对多个处理器电路的引用涵盖分立芯片上的多个处理器电路、单个芯片上的多个处理器电路、单个处理器电路的多个核心、单个处理器电路的多个线程、或者以上内容的组合。术语共享存储器电路涵盖存储来自多个模块的一些或全部代码的单个存储器电路。术语分组处理器电路涵盖组合附加的存储器存储来自一个或多个模块的一些或全部代码的存储器电路。

术语存储器电路是术语计算机可读介质的子集。如在此所使用的,术语计算机可读介质不涵盖传播通过介质(诸如在载波上)的暂态电或者电磁信号;术语计算机可读介质可以因此被认为是有形并且非暂态的。非暂态有形计算机可读介质的非限制性示例是非易失性存储器电路(诸如闪存电路、可擦可编程只读存储器电路或者掩模只读存储器电路)、易失性存储器电路(诸如静态随机存取存储器电路或者动态随机存取存储器电路)、磁性存储介质(诸如模拟或者数字磁带或者硬盘驱动器)和光存储介质(诸如cd、dvd或者蓝光光盘)。

在本申请中,被描述为具有特定属性或者执行特定操作的装置元件特别地被配置为具有那些特定属性并且执行那些特定操作。特别地,执行动作的元件的描述意味着元件被配置为执行动作。元件的配置可以包括元件的编程,诸如通过将指令编码在与元件相关联的非暂态有形计算机可读介质上。

本申请中所描述的装置和方法可以由通过将通用计算机配置为执行计算机程序中实现的一个或多个特定函数创建的专用计算机部分地或完全地实现。上文所描述的功能块、流程图部件和其他元件用作软件规格,其可以通过技术人员或者程序员的日常工作被转换为计算机程序。

计算机程序包括被存储在至少一个非暂态有形计算机可读介质上的处理器可执行指令。计算机程序还可以包括或者依赖于存储的数据。计算机程序可以涵盖:基本输入/输出系统(bios),其与专用计算机的硬件交互;设备驱动程序,其与专用计算机的特定设备交互、一个或多个操作系统、用户应用、后台服务、后台应用,等等。

计算机程序可以包括:(i)待解析的描述文本,诸如javascript对象注释(json)、超文本标记语言(html)或可扩展标记语言(xml),(ii)汇编代码,(iii)通过编译器根据源代码生成的目标代码,(iv)用于由解译器执行的源代码,(v)用于由即时编译器编译和执行的源代码等。仅作为示例,源代码可以使用来自语言的语法编写,包括c、c++、c#、objectivec、haskell、go、sql、r、lisp、fortran、perl、pascal、curl、ocaml、html5、ada、asp(动态服务器页面)、php、scala、eiffel、smalltalk、erlang、ruby、visuallua和

除非元件使用短语“用于…的装置”明确记载或者在使用短语“用于…的操作”或者“用于…的步骤”的方法权利要求的情况下,否则权利要求中记载的没有一个元件旨在是35u.s.c.§112(f)的意义内的功能模块装置元件。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1