客户端-服务器模型中的高性能运行时解析和编辑的制作方法

文档序号:34993163发布日期:2023-08-03 22:04阅读:24来源:国知局
客户端-服务器模型中的高性能运行时解析和编辑的制作方法

1.本公开总体涉及数据管理领域。更具体地,本公开涉及用于促进客户端-服务器模型中的高性能运行时解析和编辑的方法和系统。
附图说明
2.图1图示了根据本技术的方面的具有促进客户端-服务器模型中的高性能运行时解析和编辑的实体和通信的图解。
3.图2a图示了根据本技术的方面的促进客户端-服务器模型中的高性能运行时解析和编辑(包括加载和滚动操作)的通信。
4.图2b图示了根据本技术的方面的促进客户端-服务器模型中的高性能运行时解析和编辑(包括搜索、跳转、编辑和基于差异的响应操作)的通信。
5.图2c图示了根据本技术的方面的促进客户端-服务器模型中的高性能运行时解析和编辑(包括撤销、延迟同步和复制文件操作)的通信。
6.图3图示了根据本技术的方面的具有所请求的配置文件的可视编辑器窗口。
7.图4a呈现图示了根据本技术的方面的促进客户端-服务器模型中的高性能运行时解析和编辑的方法(包括客户端的操作)的流程图。
8.图4b呈现图示了根据本技术的方面的促进客户端-服务器模型中的高性能运行时解析和编辑的方法(包括服务器的操作)的流程图。
9.图5图示了根据本技术的方面的促进客户端-服务器模型中的高性能运行时解析和编辑的计算机系统。
10.图6图示了根据本技术的方面的促进客户端-服务器模型中的高性能运行时解析和编辑的装置。
11.在图中,相同附图标记指示相同附图元件。
具体实施方式
12.以下描述的呈现是为了使得本领域的任何技术人员可以制作和使用方面和示例,并且是在特定应用及其要求的上下文中提供的。对所公开的方面的各种修改对于本领域的技术人员而言将是明显的,并且可以在不脱离本公开的精神和范围的情况下将本文中所定义的一般原理应用于其他方面和应用。因此,本文中所描述的方面不限于所示出的方面,而是应被赋予根据本文中所公开的原理和特征的最广范围。
13.用户(例如网络管理员)可以经由基于客户端-服务器架构的交互式编辑器来查看和编辑针对多个网络设备的网络配置文件。在这样的架构中,用户可以经由客户端显示器上的图形用户界面提交请求以查看针对多个网络设备的网络配置文件,并且服务器可以基于预定句法来解析网络配置文件。用户还可以生成与网络配置文件中的一个或多个行相关联的编辑(例如添加、修改、删除)并且将该编辑传输给服务器。例如,编辑可以与多行操作相关联,诸如一次添加(粘贴)二十个行、或者通过选择块并且删除该块来删除多个行。服务
器可以通过使用句法合并、处理和解析(在下文中被称为“解析”)所请求的网络配置文件来获取已完全解析的版本,以对查看请求作出响应。服务器可以通过基于编辑来解析网络配置文件以获取更新的已完全解析的版本,以类似地对编辑请求作出响应。然而,在这样的客户端-服务器模型中,可能存在一些挑战。例如,大型网络配置文件(例如每文件10000行)可能导致服务器花费大量时间来解析网络配置文件,以便获取类似地大型已解析的网络配置文件。此外,在客户端与服务器之间传递这样的大型已完全解析的网络配置文件可能产生延迟。
14.本技术的所描述的方面提供了一种系统,该系统可以提供对查看和编辑多个大型基于文本的网络配置文件的用户体验的改进。所描述的方面可以使用技术(诸如加窗、延迟同步和基于差异的响应)来更高效地经由图形用户界面将已解析的视图提供给用户。该系统可以引起响应时间的改进、计算成本的降低和网络带宽消耗的减少。下面结合图1描述了具有促进客户端-服务器模型中的高性能运行时解析和编辑的实体和通信的图解。
15.术语“网络配置文件”和“配置文件”在本公开中可互换地使用并且可以指存储、包括(comprises/includes)或指示与配置相关或用于配置一个或多个网络设备的设置的文档或文件。术语“网络设备”可以指在网络上操作或与网络相关联的任何计算设备或实体。在本公开中,网络设备可以与网络配置文件相关联。此外,虽然本技术中的一些方面描述了“网络配置文件”,但所描述的方面可以应用于由句法支配或基于句法的任何文档、文件、文档集或文件集。也就是说,术语“网络配置文件”和“配置文件”用作基于句法而被解析的文档或文件的示例。可以使用其他文档。例如,底层解析文档可以包括在集成开发环境(ide)中被编辑的java源代码文件,其中文件符合特定句法,并且其中用户或系统可能希望以交错格式解析和查看文件以标识文件之间的差异。
16.促进客户端-服务器模型中的高性能运行时解析和编辑的通信
17.图1图示了根据本技术的方面的具有促进客户端-服务器模型中的高性能运行时解析和编辑的实体和通信的图解100。图解100可以指示环境,该环境包括:设备102、相关联的用户112和相关联的显示屏114;设备104和相关联的或所包括的存储设备105;以及设备106、107和108(例如,交换机)。设备102、104和106至108可以经由网络110彼此通信。设备102可以是客户端计算设备,例如膝上型计算机、移动电话、智能手机、平板、台式计算机和手持式设备。设备102、104和106-108可以是计算设备,例如服务器、联网实体和通信设备。设备106-108可以是与配置文件相关联的任何网络设备,诸如服务器或交换机。在一些方面中,设备102和104(及其相关联的操作)可以在相同设备上或在交换机106-108内运行。显示器114可以在编辑器的可视窗口中包括、向用户112指示或显示各种信息,该可视窗口包括可动作的小部件和编辑元件),这些看可动作的小部件或编辑元件可以被激活或起作用以将命令发送给设备104。也就是说,用户112可以执行用于激活显示器114中所指示的元素中的任何元素的动作113。用户112可以包括人类用户或“自动化用户”,例如与应用编程接口(api)交互的程序。
18.例如,用户112可能希望查看针对一个或多个设备的配置文件。用户112可以选择设备(元素160)并且执行动作113,例如用于加载针对交换机106的配置(“config”)文件(元素162)。设备102可以向设备104发送加载配置文件命令126。设备104可以接收命令126(作为请求或加载配置文件命令128)。设备104可以在(经由通信120、122和124)接收到请求128
之前或之后获取针对一个或多个设备(诸如交换机106-108)的配置文件(操作130)。设备104可以处理、解析和合并(若需要)配置文件的“初始”行(操作132)。初始行可以是最初呈现或显示给用户的已解析和合并的配置的行,例如用户在经由元素162执行动作113之后并且在与所显示得行交互之前会预期最初在显示器114上看到的行,如下面所描述。设备104可以向设备102发送已解析的初始行134,同时例如作为后台作业并发地开始处理、解析和合并配置文件的其余行(操作138)。设备102可以接收已解析的初始行134(作为已解析的初始行136)并且(经由元素176)执行用于在可视窗口中显示已解析的初始行的动作111。因此,用户112可以更快地获取已解析的初始行的显示视图,这是因为其余行可以在用户112正在查看初始行时由设备104解析和返回。
19.在设备104开始操作138(并发地解析配置文件的其余行)之后的某个点,一旦设备104已经成功完成了操作138,设备104就可以存储配置文件的已完全解析的版本(操作140)以响应于来自设备102的后续请求或命令而被访问。设备104可以向设备102返回已完全解析的版本142。设备102可以接收已完全解析的版本142(作为已完全解析的版本144),这允许设备102执行用于显示后续由用户112请求(例如导航到)的已完全解析的配置文件的任何部分的动作111,并且还允许用户112在可视窗口中查看对应的已解析行(元素176)。
20.用户112可能希望例如通过添加、修改或删除一个或多个行来编辑配置文件,并且可以生成编辑(元素170)。设备102可以经由编辑配置文件命令146向设备104发送编辑。设备104可以确定和接收编辑命令146(作为请求或编辑配置文件命令148)。设备104可以基于编辑来解析配置文件并且返回已更新的解析配置文件(例如配置文件的全新已解析副本)或者以更新的已解析行(例如与由客户端诸如经由按需解析操作150接收到的先前副本的增量或差异)。设备104可以向设备102返回已解析的对应行152。设备102可以接收已解析的对应行152(作为已解析的对应行154),这允许设备102执行用于显示已解析的对应行(经由元素176)的动作111。
21.用户112还可能希望例如通过(分别经由元素164、166和168)执行滚动动作、搜索动作或跳转动作来在配置文件中导航。例如,用户112可以导航到配置文件的一部分(无论是经由滚动、搜索还是跳转动作)。设备102可以向设备104发送具有可视窗口标识符的对应命令(例如导航配置文件命令156)。设备104可以(经由请求或导航配置文件命令158)接收导航命令,基于可视窗口标识符来确定对应的已解析行,并且直接从所存储的已完全的解析版本返回对应的已解析行(如果成功被存储)或执行对应行的按需解析(操作150)并且返回对应的已解析行。因此,如上所述,设备104可以向设备102返回已解析的对应行152。设备102可以接收已解析的对应行152(作为已解析的对应行154),这允许设备102执行用于显示已解析的对应行(元素176)的动作111。下面关于图2a和图2b描述了特定导航动作(即,滚动、搜索和跳转)中的每个导航动作。
22.用户112还可以执行撤销动作(元素172)并且接收配置文件的已完全解析的副本、与先前副本的差异、或者配置文件的某个部分。用户112还可以请求配置文件的副本(元素174)。下面关于图2c描述了这些操作。
23.图2a到图2c描绘了根据本技术的方面的客户端206与服务器208之间的促进高性能运行时解析和编辑的通信。图2a图示了根据本技术的方面的促进客户端-服务器模型中的高性能运行时解析和编辑(包括加载210操作和滚动220操作)的通信200。图2b图示了根
据本技术的方面的促进客户端-服务器模型中的高性能运行时解析和编辑(包括搜索230操作、跳转240操作、编辑250操作和基于差异的(“diff-based”)响应操作260)的通信201。图2c图示了根据本技术的方面的促进客户端-服务器模型中的高性能运行时解析和编辑(包括撤销270操作、延迟同步(“sync”)280操作和复制文件290操作)的通信202。
24.加窗
25.在给定10000行配置文件的情况下,与客户端206相关联的用户可能希望编辑配置文件,但可能仅在客户端设备的显示器的可视窗口中查看配置文件的50行。代替一次性解析整个10000行,客户端206可以向服务器208发送可视窗口标识符,这允许服务器208仅解析和返回与可视窗口标识符对应的行。例如,如果用户仅在可视窗口中查看第40行到第90行,那么客户端206可以从配置文件生成并且传输针对对应的已解析行的请求,例如《开始=40,结束=90》。系统可以在至少两个场景中使用可视窗口标识符:初始加载和实况编辑。
[0026]-初始加载
[0027]
如图2a的加载210操作中所描绘,用户可以例如通过在显示器的编辑器窗口中执行用户动作(诸如点击图形用户界面上的“查看”或“加载”按钮)来请求查看单个配置文件,这可以引起客户端206执行加载配置文件操作211。10000行配置文件的初始加载可以导致昂贵的计算操作。服务器208可以取回全部的10000行,解析这些行,基于预定句法来匹配每个行(例如将每个行与适合的行规范匹配)并且将已解析的结果返回给客户端206。预定句法可以是基于行规范的,该行规范可以与配置文件中的特定命令变体相关。行规范可以使用某种句法或语法来表示配置文件的行,并且可以指定针对给定配置命令可以出现的关键字、项和值。
[0028]
如果用户请求查看针对多个设备的多个配置文件(例如通过在显示器上执行用户动作),则服务器208可能需要针对每个配置文件执行该相同的取回和解析过程,并且在将解析结果返回给客户端206之前附加地合并已解析的配置文件。客户端206可以接收已解析的结果作为响应,并且可以针对响应中的每个行构建修饰。当这些客户端和服务器操作发生时,用户必须等待对用户动作的响应(例如按钮点击)。响应时间的任何改进都可以引起整体用户体验的改进。
[0029]
当客户端206接收已解析的结果作为响应时,客户端206可以加载已解析的结果并且将其显示在显示器的可视编辑器窗口中。在初始加载后,用户将仅查看配置文件的所有行的子集,例如通常仅查看配置文件的前n行,其中n与被显示在可视窗口中的平均行数相关联。因此,所描述的方面可以使用两阶段加载过程。客户端可以向服务器208发送加载针对至少一个设备的配置文件的请求212。在第一阶段,服务器208可以接收请求212并且仅取回、解析和合并每个所请求的配置文件的前n行(解析和合并初始行操作213)并且后续将已解析的前n行返回给客户端206(已解析的初始行215)以在可视窗口中显示。服务器208还可以存储已解析的初始行(操作214)。因为一些行可以在客户端编辑器的可视窗口中被过滤或折叠,所以系统可以加载n+m行,其中m是预期被过滤/被折叠的行而加载的附加行数。在这种情况下,n可以是被显示在可视窗口中的实际行数(并且还与被显示在可视窗口中的平均行数相关联)。客户端206可以存储和显示已解析的初始行(操作216和217)。在一些方面中,服务器208可以返回未解析的配置文件296,并且客户端206可以存储未解析的配置文件(操作297)。未解析的配置文件可以与单个交换机相关联,并且在多个配置文件的情况下,
可以随机被选择或基于多个配置文件的特性(例如最长的配置文件)被选择。未解析的配置文件可以作为单独响应被发送(如296中所示出)或可以作为已解析的初始行215的一部分被发送。
[0030]
在可以与第一阶段并行执行的第二阶段,服务器208可以发起后台作业,该后台作业针对配置文件的其余行(或针对整个配置文件)执行相同过程(解析和合并其余行操作218)。服务器208还可以存储已完全解析的版本(操作219)并且向客户端206返回已完全解析的版本267。在存储配置文件的已完全解析的版本(操作219)之后,服务器208还可以创建和存储锚链接表(操作266),该锚链接表可以在后续跳转动作中使用,如下文关于图2b的跳转240操作所描述。
[0031]
客户端206可以接收和存储已完全解析的版本(操作268)。虽然该后台作业(218)可以比前n行的初始解析(213)花费更长的时间来完成,但系统可以用来自第二阶段的完整结果(已完全解析的版本)替换来自第一阶段的不完整的初始结果(已解析的前n行的初始响应)。这允许客户端206在比接收第二响应的已完全解析的版本(267)更短的时间量内接收初始响应(215),这可以引起用户体验的改善。当用户开始与第一响应交互(例如通过点击、导航、滚动、搜索等)时,客户端206很可能已经接收到第二响应。在一些方面中,系统可以提供第二阶段省略被包括在第一阶段中的前n行的优化。
[0032]
在实践中,第一阶段与第二阶段的响应时间之间的差异可以大约为几秒。在该时段期间,用户可能希望向下滚动并且查看文档的其他部分。在一些方面中,系统可以将两阶段加载过程扩展到三阶段、四阶段或y阶段加载过程,其中每个阶段都可以加载和解析文档中的成比例地更大百分比的行。系统可以基于文档的大小、默认设置或用户配置的设置来确定阶段数目。例如,大于20000行的文档可以使用4阶段加载过程,而小于5000行的文档可以使用2阶段加载过程。
[0033]

实况编辑:导航(滚动、搜索和跳转)和撤销操作
[0034]
在加载配置文件之后,用户可能希望例如通过在配置文件中添加、修改或删除一行(“单个编辑”)或多行(“多个编辑”)来编辑配置文件。如图2b的编辑250操作中所描绘,用户可以在可视窗口中生成与行集合中的行相关联的第一编辑,这可以引起客户端206执行生成编辑操作251。系统或客户端206可以基于第一编辑来生成针对来自服务器208的已更新的已解析行(或已更新的已完全解析的配置文件)的请求(基于编辑的针对已更新的已解析行的请求252)。服务器208可以接收请求252,基于第一编辑来解析配置文件(操作253),并且返回已更新的已完全解析的配置文件或者与可视的行集合对应的已更新的已解析行(操作254)。在一些方面中,系统或服务器208可以仅返回与可视的行集合对应的已更新的已解析行,而不是返回已更新的已完全解析的配置文件。这可以引起响应时间的减少,这转而可以引起整体用户体验的改善。客户端206可以接收已更新的解析配置文件或对应的已解析行255,存储已更新的已解析配置文件或对应的已解析行(操作256),并且显示已更新的已解析行(操作257)。
[0035]
用户可能希望例如通过滚动、搜索或点击跳转或锚链接而导航到文档的另一部分。在一些方面中,(例如通过估计可视窗口标识符,)客户端206可以估计可视窗口在文档内的位置,并且向服务器208传输针对已解析配置文件的部分的请求,该部分与可视窗口对应。服务器208可以重新解析配置文件的所请求的部分、或者在配置文件(或所请求的部分)
已经被服务器208完全解析和存储/缓存的情况下,返回所存储/缓存的已解析部分。
[0036]
滚动.如图2a的滚动220操作中所描绘,在查看或导航给定配置文件中,用户可以滚动到配置文件中的新位置。在物理地或主动地滚动到新位置的时间期间,用户通常不查看每个行的细节。代替地,用户可能正在扫描总体文档结构并且查找关键字或占位符,该关键字或占位符指示用户是否已经到达了文档的期望节(section)。例如,当滚动通过配置文件以编辑“接口1/1/22”时,用户可以滚动超过处于接口块之前的行,诸如涉及简单网络管理协议(snmp)或虚拟路由和转发(vrf)的行。用户可以到达跟随接口块的行(诸如涉及路由协议的行),并且确定终止或停止滚动并且开始在文档中反向或向回移动。因此,当系统检测到由用户执行的滚动动作时(即,在用户正在滚动的时间期间)(操作221),所描述的方面可以呈现针对单个交换机的配置文件的未解析副本(例如在操作297中所存储的未解析的配置文件296)或者未解析副本的相关或估计部分(显示未解析的配置文件操作222)。
[0037]
当系统检测到用户终止滚动动作时,即,当用户停止滚动时(操作223),客户端206可以生成针对可视窗口中的已解析节的请求(针对可视窗口中的已解析行的请求224)并且向服务器发送该请求。服务器208可以接收请求224。如果已完全解析的版本被存储或者对服务器可用,则服务器208可以从已完全解析的版本获取并且返回对应的已解析行(操作225和对应的已解析行226)。如果已完全解析的版本未被存储或者对服务器208不可用,则服务器208可以解析配置文件的与可视窗口中的行对应的节(操作225),并且还可以将已解析的节作为对应的已解析行(对应解析行226)返回。客户端206可以存储和显示对应的已解析行(操作227和228)。
[0038]
此外,用户可以在短时间段内滚动大的量,并且系统可以检测在预定时间窗口期间的滚动量。在这样的场景中,客户端206可以生成针对与估计可视窗口对应的已解析行的请求。客户端206可以基于例如以下项来估计可视窗口:基于在预定时间窗口期间的滚动量的滚动速度;以及对文件或文档在预定时间窗口期间被滚动通过的百分比的估计。使用估计可视窗口,客户端206可以向服务器208传输对与估计可视窗口对应的已解析行的请求。
[0039]
搜索.如图2b的搜索230操作中所描绘,在查看或导航给定配置文件时,用户可以针对文档中的项搜索(操作231)。如果客户端206已经接收并且存储/缓存了已完全解析的版本,则客户端206可以简单地搜索所缓存的副本并且显示相关部分(操作236)。如果客户端206尚未接收到和存储/缓存已完全的解析版本,则客户端206可以生成针对已完全解析的版本中的第一匹配的请求并且将向服务器208发送该请求(例如以获取第一搜索结果)(针对项的搜索结果的请求232)。服务器208可以接收请求232。如果已完全的解析版本被存储或者对服务器208可用,则服务器208可以搜索已完全解析的版本并且返回来自已完全解析的版本的与第一次命中对应的已解析行(作为第一搜索结果)(操作233和针对结果的已解析行234)。如果已完全解析的版本未被存储或者对服务器208不可用,则服务器208可以搜索配置文件以查找第一次命中并且执行与第一次命中对应的行的按需解析(操作233),并且还可以返回与第一次命中对应的已解析行(作为第一搜索结果)(针对结果的已解析行234)。客户端206可以接收结果234并且可以存储和显示结果(操作235和236)。
[0040]
在一些方面中,当已完全解析的版本不可用时,客户端206可以缓存第一搜索结果以及后续搜索结果,使得可以比解析整个文档更高效地执行在针对项的命中(即,搜索结果)之间的来回导航。
[0041]
跳转.如图2b的跳转240操作中所描绘的,在查看或导航给定配置文件时,用户可以通过点击链接(例如引用、锚、跳转链接或与一个或多个行相关联的锚链接)来跳转到相同或另一文档中的不同位置。系统可以将一个配置文件中的一个或多个行与另一配置文件中的锚相关(例如作为对另一交换机的互联网协议(ip)地址的引用)。客户端206可以向服务器208发送引用(点击跳转链接操作241)并且请求窗口中与该引用对应的已解析行(针对跳转链接的请求结果242)。服务器208可以接收请求242。服务器208可以使用预先计算的查找表(如在操作266中创建的),该查找表将给定引用映射到最高效地显示锚的窗口或行集合。服务器208可以搜索查找表以查找给定引用(操作243)并且向客户端206返回被映射的窗口(具有已解析行的被映射窗口244)。客户端206可以接收被映射的窗口并且还可以存储和显示具有该相同或另一文档中的不同位置中的已解析行的被映射的窗口(操作245和246)。
[0042]
通常,服务器208必须有权访问已完全解析的版本的可用或所存储/缓存的副本,以便预先计算查找表,如上文关于操作218、219和266所描述。在一些方面中,如果已完全解析的版本不可用或者未被存储/缓存,则服务器208可以使用将跳转链接或引用转译为搜索的预先计算的正则表达式。
[0043]
此外,跳转链接可以类似于内容或“章节条目”特征的表。为了创建内容或章节条目的这种表,系统不需要包括最低层级的行(即,配置文件的行层次结构中缩进最多的行),这是因为期望跳转信息通常出现在更高的层级。服务器208可以经由一个或多个文档的预先解析或过滤解析来执行对锚点的更高效的解析,其中系统可以移除或过滤掉文档的最低层级的行并且仅解析一个或多个文档的其余部分以便标识锚(操作243)。例如,系统可以省略对以一定数目的空格(诸如两个或四个空格)开头的行的解析(或在解析之前过滤掉行)。
[0044]
撤销.如图2c的撤销270操作中所描绘,在执行编辑操作之后,用户可能希望撤销编辑操作。客户端206可以生成并且请求从服务器进行的编辑操作的反向操作,或者请求服务器208执行撤销操作(执行撤销操作271和请求执行反向或撤销操作272)。在一些情况下,客户端206可能不知道建构反向操作所需的所有信息,在这种情况下,客户端206可以向服务器208发送请求以执行撤销操作(请求272)。服务器208可以接收请求272。服务器208可以通过执行反向操作或撤销操作来计算文档的新状态(例如使用基于差异的文件),如下文所描述(操作273)。这可以例如在以下情况时发生:当用户粘贴可以混合到文档的各种节中的多个行时,在这种情况下,客户端206可能尚未看到在可视窗口外部已修改的行;以及当用户插入可以与已有行组合的新行时,在这种情况下,客户端206可能尚未记录组合行的先前状态。服务器208可以将与先前窗口状态(先前窗口状态274)对应的配置文件或可视的已解析行返回给客户端206。客户端206可以将先前窗口状态作为可视的已解析行来存储和显示(操作275和276)。
[0045]
如图2c的复制文件290操作中所描述,在一些方面中,用户可以从编辑窗口复制整个配置文件,这可以引起客户端206执行复制操作291。客户端206可以向服务器发送针对整个文档的平面化版本的请求(针对配置文件的副本的请求292)。服务器208可以接收请求292,取回配置文件的平面化版本(操作293),并且在其响应中返回配置文件的平面化的版本(平面化的版本294)。客户端206可以接收和存储配置文件的平面化的版本(操作295)。
[0046]
延迟同步
[0047]
上述操作可以涉及迭代反馈循环,其中用户/客户端206允许和生成单个编辑,向服务器208传输单个编辑,并且在允许和生成进一步的编辑之前等待服务器208响应。在一些方面中,系统可以提供客户端206与服务器208之间的延迟同步,其中客户端206可以允许和生成多个编辑。客户端206可以将这多个编辑存储在客户端206的队列中,并且后续向服务器208重放该多个编辑。客户端206可以将多个编辑存储在队列中,直到客户端206检测到条件为止(操作281),并且可以在检测到条件后向服务器208重放编辑。该条件可以包括:确定大于预定时间的用户活动延迟(例如基于自经由图形用户界面执行的最新用户动作以来的时间段);检测到用户已经经由图形用户界面生成了特定同步命令(例如基于用户动作,诸如点击“同步”按钮);检测到除了与多个行相关联的多个编辑外,用户正在编辑配置文件的大于预定数目的行的节(例如基于在配置文件的新上下文或区域中经由图形用户界面执行的用户动作或基于配置文件的相对大小);以及确定队列的长度大于预定大小(例如基于用户生成了多少多个编辑)。这些条件中的一些条件可以包括或基于定量值,诸如用户延迟的长度或客户端队列的大小。系统可以基于例如配置文件的长度来动态地调谐定量值。例如,大文档可能需要更长的时间来解析和更新,因此系统可以动态地增加大文档的定量条件值。
[0048]
当客户端206检测到条件(操作282)时,客户端206可以例如基于以下项来确定向服务器传输编辑的次序(操作283):用户录入多个编辑的次序;多个编辑的基于编辑在配置文件中发生的次序的次序;作为单个批量粘贴操作的所有添加动作;以及作为单个批量删除操作的所有删除操作。客户端206可以生成对已更新的已解析行的请求(针对基于有序编辑的已解析行的请求284)并且向服务器208发送该请求。服务器208可以接收请求284,基于有序编辑来解析配置文件,并且返回已更新的已解析配置文件或已更新的已解析行(操作285和已更新的解析配置文件或对应的已解析行286)。客户端206可以接收已更新的已解析配置文件或已更新的已解析行286,存储已更新的已解析配置文件或已更新的已解析行(操作287),并且显示已更新的已解析行(操作288)。
[0049]
因为客户端206已经是语法感知的(例如,知道行规范),所以客户端206可以将键入的行与行规范匹配。客户端206可以将行排序到文档中的位置,该位置紧密接近服务器208将排序该行的位置。客户端206还可以允许用户在将向服务器208发送编辑之前编辑每文档的值。
[0050]
基于差异的响应
[0051]
如本文中所描述,所描述的系统可以向客户端206返回将配置文件的已完全解析的版本(例如267和255),并且客户端206可以接收、存储(例如268)和导航到已完全解析的版本的任何部分(例如滚动220、搜索230和跳转240)。然而,在单个编辑或少数编辑的情况下,配置文件中的大多数行相对于其他行保持不变。当仅单行或少数行已经改变时发送整个文件可能不必要地消耗计算和网络资源。
[0052]
如图2b的编辑250和基于差异的260操作中所描绘,在基于一个或多个编辑来解析配置文件(操作253)之后,服务器208可以计算、返回和存储基于差异的响应(操作261和262),作为操作254的补充或替代。客户端206可以接收并且存储基于差异的响应(基于差异的响应263和操作264)。客户端206还可以根据基于差异的响应来更新显示器(操作265)。
[0053]
代替于解析和返回已更新的已解析行或已完全解析的版本(如在操作253中),服
务器208可以计算配置的编辑前状态与编辑后状态之间的差异并且将所计算的差异返回给客户端206(操作261)。服务器208还可以存储所计算的差异(操作262)。编辑前状态可以是与配置文件在一个或多个编辑之前的状态对应的第一状态,而编辑后状态可以是与配置文件在一个或多个编辑之后的状态对应的第二状态。服务器208可以存储所计算的差异的记录并且使用所计算的差异的所存储的记录来恢复到先前状态,例如如果客户端请求执行撤销操作。
[0054]
在接收到所计算的差异(作为基于差异的响应263)时,客户端206可以基于可视行和所计算的差异或基于差异的响应263来确定已更新的已解析行。因此,客户端206可以通过将所计算的差异用作变化的“配方”来更新其自身的版本和已解析行的显示。这可以引起从服务器208发送给客户端206的数据减少并且还可以减少网络资源的消耗。虽然“所计算的差异”(如由服务器208所计算)和“基于差异的响应”(如返回给客户端206并且由客户端206接收)可以在逻辑上相关,但在一些方面中,不同格式可以用于所计算的差异和基于差异的响应。例如,所计算的差异可以包括可以不存在于基于差异的响应中的实现内部的信息,并且基于差异的响应可以包括请求标识符或可以不存在于所计算的差异中的其他通信或协议相关信息。
[0055]
具有所请求的配置文件的可视编辑器窗口
[0056]
图3图示了根据本技术的方面的具有可视编辑器窗口301的图解300。图解300可以与图1的显示器114对应、并且可以包括用于客户端设备的用户的各种可动作的小部件和编辑元件。图解300可以包括用户可以通过选择一个或多个设备(元素314和316)来加载配置文件(元素310)的区域,并且还可以显示从可用的总设备中选择出的设备的数目(元素312)。针对加载两个所选择的设备的配置文件的用户请求可以引起上文针对图2a的加载210所描述的操作。
[0057]
系统可以将初始行加载到可视窗口编辑器301中(例如可视行1到13)。用户可以编辑和浏览所加载的配置文件以及执行其他动作。例如,用户可以(经由元素320、322和324或其他键盘输入)通过滚动执行导航,这引起上文针对图2a的滚动220所描述的操作。用户还可以通过在搜索框(元素332)中键入项并且点击搜索按钮(元素330)来执行搜索操作,这引起上文针对图2b的搜索230所描述的操作。
[0058]
可以突出显示或显示某些文本以指示可点击的跳转链接。例如,文本340可以包括具有下划线或其他指示符(诸如颜色或鼠标悬停时的改变字体)的项“interface(接口)”(元素340)。用户还可以通过点击元素340来执行导航,并且系统可以更新可视窗口编辑器301以显示先前映射的窗口以供在元素340中引用,如上文针对图2b的跳转240所描述。
[0059]
用户可以例如通过在行9之前插入行8(元素350)来编辑所显示的可视窗口中的一个或多个行。为了在用户已经完成了编辑后将针对已更新的已解析行的请求发送给服务器,用户可以点击提交按钮(元素352)或系统可以基于另一用户动作来自动生成针对已更新的已解析行的请求,诸如在编辑该行之后在键盘上按下“enter(回车)”或“tab(制表键)”,这引起上文针对图2b的编辑250所描述的操作。
[0060]
用户还可以通过选择撤销按钮(元素370)来撤销先前编辑,这引起上文针对图2c的撤销270所描述的操作。用户可以通过选择复制配置文件按钮(元素390)来复制配置文件(并且接收配置文件的平面化副本),这因为上文针对图2c的复制文件290所描述的操作。
[0061]
此外,用户可以执行多个编辑(如在多个行380中)并且系统可以执行延迟同步操作,如上文针对图2c的延迟同步280所描述的操作。在一些方面中,用户可以选择延迟同步条件(元素380),即,触发队列中的多个编辑被传输给服务器的条件。用户还可以选择队列中的多个编辑要被传输给服务器的次序(元素382)。在一些方面中,系统(例如客户端206或在客户端206上运行的软件)可以确定多个列队的编辑被传输的次序。系统还可以基于预定义的用户设置、系统设置或默认设置来确定条件和次序。
[0062]
用于促进客户端-服务器模型中的高性能运行时解析和编辑的方法
[0063]
图4a呈现图示了根据本技术的方面的促进客户端-服务器模型中的高性能运行时解析和编辑(包括客户端的操作)的方法的流程图400。在操作期间,系统通过客户端基于经由客户端的显示器上的图形用户界面的用户动作来生成第一请求,从而允许服务器执行以下操作,该第一请求针对来自服务器的已解析文档:解析文档的初始数目的行;向客户端返回已解析的初始数目的行,同时并发地解析文档的其余行;以及在成功解析其余行之后,存储文档的已完全解析的版本(操作402)。响应于接收到已解析的初始数目的行,系统在显示器的可视窗口中显示已解析的初始数目的行(操作404)。响应于检测到由用户经由图形用户界面进行的滚动动作,系统在可视窗口中显示未解析文档的与第一请求相关联的相关部分(操作406)。如果系统没有检测到滚动动作的终止(决策408),则操作在操作406处继续。
[0064]
如果系统检测到滚动动作的终止(决策408),则系统生成第二请求,该第二请求针对与(例如可视窗口中的)第一行集合对应的已解析行,从而允许服务器返回来自已完全解析的版本的对应的已解析行、或者解析文档的与第一行集合对应的节以返回对应的已解析行(操作410)。响应于接收到对应的已解析行,系统例如在可视窗口中显示对应的已解析行(操作412),并且操作返回。
[0065]
图4b呈现图示了根据本技术的方面的促进客户端-服务器模型中的高性能运行时解析和编辑(包括服务器的操作)的方法的流程图420。在操作期间,系统从客户端接收第一请求,该第一请求针对基于句法而被解析的文档(操作422)。如上文关于图1的用户112所描述,第一请求(和其他用户或客户端请求)可以由人类用户(例如经由客户端或客户端显示器上的编辑器或图形用户界面(gui))发起,或者由自动化用户(例如由程序经由api)发起,这允许人工控制和程序控制两者。此外,该文档可以是网络配置文件,并且编辑器或gui可以在通过编辑网络配置文件来管理网络设备的配置的客户端上运行。系统基于句法来解析文档的初始数目的行(操作424)。系统向客户端返回已解析的初始数目的行,同时并发地解析文档的其余行,从而允许客户端在显示器的可视窗口中显示已解析的初始数目的行(操作426)。在成功解析其余行之后,系统存储文档的已完全解析版本(操作428)。
[0066]
响应于可视窗口中的滚动动作,系统提供未解析文档的与第一请求相关联的相关部分(例如用于在可视窗口中显示)(操作430)。如果系统没有检测到滚动动作的终止(决策432),那么操作在操作430处继续。如果系统确实检测到滚动动作的终止(决策432),则系统接收第二请求,该第二请求针对与(例如可视窗口中的)第一行集合对应的已解析行(操作434)。系统返回来自已完全解析的版本的对应的已解析行、或者解析文档的与第一行集合对应的节以返回对应的已解析行,从而允许客户端在可视窗口中显示对应的已解析行(操作436)。操作返回。虽然在图4a和图4b中未描绘所描绘的实施例,但是所描述的实施例可以包括执行上文关于图1、图2a、图2b和图2c所描述的操作的方法。
[0067]
计算机系统和装置
[0068]
图5图示了根据本技术的方面的促进客户端-服务器模型中的高性能运行时解析和编辑的计算机系统。计算机系统500包括处理器502、网络接口卡(nic)504、易失性存储器506和存储设备508。nic 504可以通过将计算机系统500连接到其他网络来促进与其他系统的通信。易失性存储器506可以包括例如充当受管理存储器的随机存取存储器(ram),并且可以用于存储一个或多个存储器池。存储设备508可以包括可以经由处理器502管理或访问的持久存储装置。此外,计算机系统500可以耦合到外围输入/输出(i/o)用户设备510,例如显示设备511、键盘512和指点设备514。存储设备508可以存储操作系统516、内容处理系统518和数据536。计算机系统500可以包括比图5中所示出的模块更少或更多的模块,并且可以与服务器(诸如图1中的设备104或图2a到图2c中的服务器208)相关联。
[0069]
内容处理系统518可以包括指令,该指令在被计算机系统500执行时可以使计算机系统500或处理器502执行本公开中所描述的方法和/或过程。具体地,内容处理系统518可以包括用于接收和传输数据分组的指令和与配置文件、请求和命令(通信模块520)相关的指令。
[0070]
内容处理系统518还可以包括用于从客户端接收针对已解析文档的第一请求(通信模块520)的指令,该已解析文档基于句法而被解析。内容处理系统518可以包括用于基于句法来解析文档的初始数目的行(配置文件/行解析模块522)的指令。内容处理系统518可以包括用于将已解析的初始数目的行返回给客户端(行返回模块528),同时并发地解析文档的其余行(配置文件/行解析模块522),从而允许客户端在显示器的可视窗口中显示已解析的初始数目的行的指令。内容处理系统518可以包括用于在成功解析其余行(配置文件/行解析模块522)之后,存储文档的已完全解析的版本(文件存储模块524)的指令。内容处理系统518还可以包括用于响应于可视窗口中的滚动动作(文件导航/搜索模块526),提供未解析文档的与第一请求相关联的相关部分(行返回模块528)的指令。内容处理系统518可以包括用于响应于检测到滚动动作的终止(文件导航/搜索模块526),接收针对与第一行集合对应的已解析行的第二请求(通信模块520)的指令。内容处理系统518还可以包括用于返回来自已完全解析的版本的对应的已解析行(行返回模块528)、或者解析文档的与第一行集合对应的节以返回对应的已解析行(配置文件/行解析模块522),从而允许客户端在可视窗口中显示对应的已解析行的指令。
[0071]
内容处理系统518另外可以包括用于响应于如下操作的指令:滚动220、搜索230和跳转240的导航操作(文件导航/搜索模块526);编辑250的操作(文件编辑模块528);撤销270的撤销操作(撤销管理模块530);延迟同步280的延迟同步操作(延迟同步管理模块534);以及复制文件290的复制操作(通信模块520)。
[0072]
数据536可以包括通过本公开中所描述的方法和/或过程作为输入需要或作为输出生成的任何数据。具体地,数据536可以至少存储:句法;行;已修改或未修改的行;行规范;请求;项;值;默认值;关键字;文档;文件;配置;配置文件;文档、文件或配置文件的未解析副本或版本;文档、文件或配置文件的已完全解析副本或版本;已解析的行;文档、文件或配置文件的已解析节;初始数目;阶段的数目;可视窗口标识符;可视窗口的指示符;导航、滚动、搜索、跳转、撤销、编辑、复制或延迟同步操作的指示符;已完全解析的版本是否可用或被存储的指示符;预定时间窗口;滚动速度;在预定时间窗口期间的滚动量;估计;百分
比;对一个或多个行的一个或多个编辑;行集合;队列;多个编辑;条件;经由图形用户界面的用户活动的延迟;预定时间;预定数目的行;队列的长度;预定大小;自经由图形用户界面执行的最新用户动作以来的时间段;文档、文件或配置文件的新上下文或区域;文档、文件或配置文件的大小;多个编辑;编辑的次序;基于多个添加或删除编辑操作的批量粘贴或删除操作;差异;文档、文件或配置文件的状态;编辑前状态;编辑后状态;和两种状态之间的所计算的差异。
[0073]
图6图示了根据本技术的方面的促进客户端-服务器模型中的高性能运行时解析和编辑的装置。装置600可以包括多个单元或装置,这些单元或装置可以经由有线、无线、量子光或电通信信道彼此通信。装置600可以使用一个或多个集成电路来实现,并且可以包括比图6中所示出的单元或装置更少或更多的单元或装置。此外,装置600可以集成在计算机系统中,或实现为可以与其他计算机系统和/或设备通信的单独的一个或多个设备。
[0074]
装置600还可以包括非易失性存储系统或存储器管理单元。装置600可以包括被配置为执行类似于图5的计算机系统500的模块520-534的功能或操作的模块或单元602-616,包括:通信单元602;配置文件/行解析单元604;文件存储单元606;文件导航/搜索单元608;行返回单元610;撤销管理单元612;行编辑单元614;以及延迟同步管理单元616。
[0075]
总体来说,所公开的方面提供了用于促进客户端-服务器模型中的高性能运行时解析和编辑的系统。在一个方面中,在操作期间,该系统从客户端接收第一请求,第一请求针对基于句法而被解析的文档。该系统基于句法来解析文档的初始数目的行。该系统向客户端返回已解析的初始数目的行,从而允许客户端在显示器的可视窗口中显示已解析的初始数目的行。在成功解析文档的其余行之后,该系统存储文档的已完全解析的版本。响应于可视窗口中的滚动动作,该系统提供未解析文档的与第一请求相关联的相关部分。响应于检测到滚动动作的终止,该系统接收针对与(例如可视窗口中的)第一行集合对应的解析行的第二请求。该系统返回来自已完全解析的版本的对应的已解析行、或者解析文档的与第一行集合对应的节以返回对应的已解析行,从而允许客户端在可视窗口中显示对应的已解析行。
[0076]
在该方面的一个变型中,该系统返回已解析的初始数目的行,同时并发地在一个或多个阶段中解析文档的其余行。在成功解析针对相应阶段的行之后,该系统执行以下至少一项:存储已成功解析的针对该相应阶段的行;以及返回已成功解析的针对该相应阶段的行,从而允许客户端执行以下至少一项:接收已成功解析的针对该相应阶段的行;以及存储已成功解析的针对该相应阶段的行。
[0077]
在该方面的另一变型中,响应于确定已完全解析的版本被存储或可用,该系统返回来自已完全解析的版本的对应的已解析行。响应于确定述已完全解析的版本未被存储或不可用,该系统解析文档的与第一行集合对应的节、并且返回已解析的节作为对应的已解析行。
[0078]
在另一变型中,向客户端返沪已解析的初始数目的行还允许客户端响应于接收到已解析的初始数目的行,存储已解析的初始数目的行,其中初始数目的行与显示器的可视窗口相关联。向客户端返沪已解析的初始数目的行还允许客户端响应于接收到对应的已解析行,存储改对应的已解析行。该系统向客户端返回文档的已完全解析的版本,从而允许客户端响应于接收到文档的已完全解析的版本,存储文档的已完全解析的版本。
[0079]
在另一变型中,响应于确定滚动动作在预定时间窗口期间发生,该系统接收第三请求,该第三请求针对与估计可视窗口对应的已解析行,其中估计可视窗口基于以下至少一项:滚动速度,该滚动速度基于在预定时间窗口期间滚动动作的量;以及对文档被滚动通过的百分比的估计,该估计基于在预定时间窗口期间滚动动作的量。预定时间窗口可以指在接收到初始响应(即,已解析的初始数目的行)之后和在接收到已完全解析的版本之前的时间窗口。
[0080]
在另一变型中,该系统确定与(例如可视窗口中的)第二行集合中的行相关联的第一编辑。该系统基于第一编辑来接收第四请求,该第四请求针对与第二行集合对应的已更新的已解析行。该系统基于第一编辑来解析文档。该系统返回已更新的已解析文档或者与第二行集合对应的已更新的已解析行,从而允许客户端响应于接收到已更新的已解析文档和已更新的已解析行而执行以下至少一项:存储已更新的已解析文档和已更新的已解析行;以及在可视窗口中显示已更新的已解析行。
[0081]
在另一变型中,该系统确定与已解析文档的多个行相关联的多个编辑,其中多个编辑被存储在客户端的队列中,直到条件被检测到为止,从而允许客户端响应于该条件被检测到而确定传输编辑的次序。
[0082]
在另一变型中,检测到条件包括以下至少一项:确定经由客户端上的图形用户界面大于预定时间段的用户活动延迟;检测到用户已经经由图形用户界面生成了特定同步命令;检测到除了与多个行相关联的多个编辑外,用户正在编辑文档的大于预定数目的行的节;以及确定队列的长度大于预定大小。
[0083]
在另一变型中,条件基于以下至少一项:自经由图形用户界面发起最新用户动作以来的时间段;经由图形用户界面在文档的区域中被发起的用户动作,该区域不同于与包括多个行的可视窗口相关联的区域;文档的大小;以及多个编辑的数目。
[0084]
在另一变型中,编辑包括以下至少一项:添加操作、修改操作和删除操作。确定传输编辑的次序基于以下至少一项:用户录入多个编辑的次序;多个编辑的基于所述编辑在文档中发生的次序的次序;作为单个批量编辑操作提交的多个编辑;作为单个批量粘贴操作的所有添加动作;以及作为单个批量删除操作的所有删除操作。
[0085]
在另一变型中,该系统确定与(例如可视窗口中的)第三行集合中的行相关联的第二编辑。该系统基于第二编辑来接收第五请求,该第五请求针对与第三行集合对应的已更新的已解析行。该系统计算文档的第一状态与文档的第二状态之间的差异,其中第一状态与文档在一个或多个编辑之前的状态对应,并且第二状态与文档在一个或多个编辑之后的状态对应。该系统存储所计算的差异。该系统向客户端返回所计算的差异,从而允许客户端响应于接收到所计算的差异:基于第三行集合和所计算的差异来确定已更新的已解析行;存储所计算的差异和已更新的已解析行中的至少一项;以及显示已更新的已解析行。
[0086]
在另一变型中,该系统使用所计算的差异来执行后续撤销操作。
[0087]
在另一变型中,该系统确定经由客户端上的图形用户界面的、引用链接的用户激活。该系统基于引用链接的用户激活而接收第六请求,该第六请求针对被映射到引用链接的已解析行。响应于确定已完全解析的版本未被存储或不可用,该系统:通过省略缩进大于预定数目的空格的行来执行文档的过滤解析;基于过滤解析来创建将引用链接映射到已解析行的查找表;以及返回被映射到引用链接的已解析行。响应于确定已完全解析的版本被
存储或可用,该系统:搜索先前基于已完全解析的版本而被创建的查找表;以及返回被映射到引用链接的已解析行,从而允许客户端响应于接收到被映射到引用链接的已解析行而在可视窗口中显示被映射到引用链接的已解析行。
[0088]
在另一变型中,第一请求经由以下至少一项而被接收:客户端上的编辑器;以及经由应用编程接口的自动化程序。文档是针对至少一个网络设备的网络配置文件。未解析文档的相关部分被提供用于以下至少一项:在可视窗口中显示;以及由自动化程序使用。第一行集合基于以下至少一项:可视窗口中的行;以及由自动化程序确定的行。
[0089]
本具体实施方式中所描述的数据结构和代码通常存储在计算机可读存储介质上,该计算机可读存储介质可以是可以存储代码和/或数据以供计算机系统使用的任何设备或介质。计算机可读存储介质包括但不限于,易失性存储器、非易失性存储器、磁和光存储设备,诸如磁盘驱动器、磁带、cd(压缩光盘)、dvd(数字多功能光盘或数字视频光盘)、或者可以存储现在已知或以后开发的计算机可读介质的其他介质。
[0090]
在具体实施方式章节中所描述的方法和过程可以体现为可以被存储在如上文所描述的计算机可读存储介质中的代码和/或数据。当计算机系统读取和执行被存储在计算机可读存储介质上的代码和/或数据时,计算机系统执行体现为数据结构和代码并且被存储在计算机可读存储介质内的方法和过程。
[0091]
此外,上文所描述的方法和过程可以被包括在硬件设备或装置中。例如,硬件设备或装置可以包括但不限于,专用集成电路(asic)芯片、现场可编程门阵列(fpga)、在特定时间执行特定软件程序或代码段的专用或共享处理器、以及现在已知或以后开发的其他可编程逻辑设备。当硬件设备或装置被激活时,硬件模块执行其中所包括的方法和过程。
[0092]
仅出于说明和描述的目的呈现了对各方面的前述描述。这些描述不旨在是详尽的或者将本文中所描述的方面限于所公开的形式。因此,许多修改和变型对于本领域的技术人员而言将是明显的。另外,以上公开内容不旨在限制本文中所描述的方面。本文中所描述的方面的范围由所附权利要求书限定。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1