首页> 中国专利> 提供镜像SAAS应用程序会话的计算机系统

提供镜像SAAS应用程序会话的计算机系统

摘要

一种计算机系统可以包括被配置为在第一浏览器内允许来自SaaS服务器的第一软件即服务(SaaS)应用程序会话的客户端计算设备。服务器可以与至少一个客户端计算设备协作,以在第二浏览器内运行镜像第一SaaS应用程序会话的状态的第二SaaS应用程序会话,并将由第一SaaS应用程序会话生成的数据流量转发到SaaS服务器,同时阻止由第二SaaS应用程序会话生成的流量传递到SaaS服务器。

著录项

  • 公开/公告号CN112789598A

    专利类型发明专利

  • 公开/公告日2021-05-11

    原文格式PDF

  • 申请/专利权人 茨特里克斯系统公司;

    申请/专利号CN201980066724.7

  • 发明设计人 G·莫姆基洛夫;J·范洛特丹;

    申请日2019-08-06

  • 分类号G06F9/48(20060101);H04L29/08(20060101);

  • 代理机构72001 中国专利代理(香港)有限公司;

  • 代理人陈晓;吕传奇

  • 地址 美国佛罗里达州

  • 入库时间 2023-06-19 10:55:46

说明书

背景技术

传统上,个人计算机包括操作系统、应用和用户设置的组合,其每个都由所有者或管理员在持续的基础上单独管理。然而,许多组织现在正在使用桌面虚拟化来提供更灵活的选项,以解决其用户的不同需求。在桌面虚拟化中,用户的计算环境(例如,操作系统、应用和/或用户设置)可以与用户的物理计算设备(例如,智能电话、膝上型计算机、台式计算机)分离。使用客户端-服务器技术,“虚拟化桌面”和/或虚拟应用可以存储在远程服务器中并由远程服务器管理,而不是存储在客户端计算设备的本地存储装置中。

网络应用是用于远程供应和提供应用的另一种方法。用于软件许可和交付的一个示例网络应用方法是软件即服务(SaaS)。这是一种软件交付的云计算方法,通过该方法,软件应用被集中托管在云中,并在订阅的基础上提供给用户。SaaS应用程序通常经由浏览器程序在具有瘦客户端的客户端设备上访问,并且在一些情况下可以通过虚拟计算会话来提供。

发明内容

一种计算机系统可以包括被配置为在第一浏览器内运行来自SaaS服务器的第一软件即服务(SaaS)应用程序会话的客户端计算设备。服务器可以与至少一个客户端计算设备协作,以在第二浏览器内运行镜像第一SaaS应用程序会话的状态的第二SaaS应用程序会话,并将由第一SaaS应用程序会话生成的数据流量转发到SaaS服务器,同时阻止由第二SaaS应用程序会话生成的流量传递到SaaS服务器。

在示例实施例中,客户端计算设备可以是在第一浏览器内运行第一SaaS应用程序会话的第一客户端计算设备。此外,该系统还可以包括不同于第一客户端计算设备的第二客户端计算设备,该第二客户端计算设备与服务器协作以在第二浏览器内运行第二SaaS应用程序。

根据示例实现,服务器可以进一步被配置为存储由第一浏览器在第一SaaS应用程序会话中执行的一系列浏览器命令,并且基于所存储的一系列浏览器命令在第二浏览器内发起第二SaaS应用程序会话,以复制第一SaaS应用程序会话的状态。此外,服务器可以进一步被配置为,例如,一旦第二SaaS应用程序会话已经被发起,就停止存储由第一浏览器执行的浏览器命令,并且开始在第二SaaS应用程序会话中并行执行与第一SaaS应用程序会话相同的浏览器命令,以在第二SaaS应用程序会话中维持与第一SaaS应用程序会话相同的状态。此外,在示例实现中,服务器可以使得第二浏览器顺序重复一系列存储的浏览器命令的执行,以发起第二SaaS应用程序会话。

在一个示例实现中,服务器可以被配置为用联合会话标识符(ID)来指定来自第一和第二浏览器的网络流量。举例来说,第一和第二浏览器中的至少一个可以包括嵌入式浏览器或托管浏览器。

一种相关方法可以包括在客户端计算设备处的第一浏览器内运行来自SaaS服务器的第一SaaS应用程序会话。该方法可以进一步包括使用服务器在第二浏览器内运行镜像第一SaaS应用程序会话的状态的第二SaaS应用程序会话;以及将由第一SaaS应用程序会话生成的数据流量转发到SaaS服务器,同时阻止由第二SaaS应用程序会话生成的流量传递到SaaS服务器。

一种相关的非暂时性计算机可读介质可以具有用于使得服务器执行包括以下各项的步骤的计算机可执行步骤:与客户端计算设备协作以在客户端计算设备处的第一浏览器内运行来自SaaS服务器的第一SaaS应用程序会话,以及在第二浏览器内运行镜像第一SaaS应用程序会话的状态的第二SaaS应用程序会话。所述步骤可以进一步包括将由第一SaaS应用程序会话生成的数据流量转发到SaaS服务器,同时阻止由第二SaaS应用程序会话生成的流量传递到SaaS服务器。

附图说明

图1是其中可以实现本公开的各个方面的计算设备的网络环境的框图。

图2是对于实践图1中图示的客户端机器或远程机器的实施例有用的计算设备的框图。

图3是根据示例实现的计算系统的框图,该计算系统提供在不同客户端计算设备上的浏览器之间漫游的软件即服务(SaaS)应用程序会话。

图4是图3的计算系统的另一示例实现的框图,该计算系统在相同客户端计算设备上的不同浏览器之间提供SaaS应用程序漫游特征。

图5和图6A-6B是图示了与图3和图4的系统相关联的方法方面的流程图。

图7是根据另一示例实施例的计算系统的示意性框图,其中第二SaaS应用程序会话与第一SaaS应用程序会话并行运行,并镜像第一SaaS应用程序会话的状态。

图8和图9是图示了图7的系统的示例实现的一系列示意框图,其中并行SaaS应用程序会话用于从第一客户端计算设备漫游到第二客户端计算设备。

图10和图11是图示与图7-9的系统相关联的示例方法方面的流程图。

具体实施方式

参考其中示出了示例实施例的附图进行本描述。然而,可以使用许多不同的实施例,并且因此该描述不应被解释为限于本文阐述的特定实施例。贯穿全文,相同的数字指代相同的元件,并且在不同的实施例中,可以使用撇号(prime)符号来指示相似的元件。

如本领域技术人员在阅读以下公开内容时将领会的,本文描述的各个方面可以体现为设备、方法或计算机程序产品(例如,具有用于执行所指出的操作或步骤的计算机可执行指令的非暂时性计算机可读介质)。因此,那些方面可以采取完全硬件实施例、完全软件实施例或组合软件和硬件方面的实施例的形式。

此外,这样的方面可以采取由一个或多个计算机可读存储介质存储的计算机程序产品的形式,该一个或多个计算机可读存储介质具有体现在存储介质中或其上的计算机可读程序代码或指令。可以利用任何合适的计算机可读存储介质,包括硬盘、CD-ROM、光存储设备、磁存储设备和/或其任何组合。

首先参考图1,其中可以实现本公开的各个方面的非限制性网络环境101包括安装在计算环境101内的一个或多个客户端机器102A-102N、一个或多个远程机器106A-106N、一个或多个网络104、104’以及一个或多个器具108。客户端机器102A-102N经由网络104、104’与远程机器106A-106N通信。

在一些实施例中,客户端机器102A-102N经由中间器具108与远程机器106A-106N通信。图示的器具108定位在网络104、104’之间,并且也可以称为网络接口或网关。在一些实施例中,器具108可以作为应用交付控制器(ADC)来操作,以向客户端提供对部署在数据中心、云中或者作为软件即服务(SaaS)跨一定范围的客户端设备交付的业务应用和其他数据的访问,和/或提供诸如负载平衡等其他功能。在一些实施例中,可以使用多个器具108,并且(一个或多个)器具108可以被部署为网络104和/或104’的部分。

客户端机器102A-102N通常可以被称为客户端机器102、本地机器102、客户端102、客户端节点102、客户端计算机102、客户端设备102、计算设备102、端点102或端点节点102。远程机器106A-106N通常可以被称为服务器106或服务器群106。在一些实施例中,客户端设备102可以具有既用作寻求对由服务器106提供的资源的访问的客户端节点又用作为其他客户端设备102A-102N提供对托管资源的访问的服务器106的能力。网络104、104’通常可以被称为网络104。网络104可以以有线和无线网络的任何组合被配置。

服务器106可以是任何服务器类型,诸如例如:文件服务器;应用服务器;网络服务器;代理服务器;器具;网络器具;网关;应用网关;网关服务器;虚拟化服务器;部署服务器;安全套接层虚拟专用网络(SSL VPN)服务器;防火墙;网络服务器;执行活动目录的服务器;云服务器;或者执行提供防火墙功能、应用功能或负载平衡功能的应用加速程序的服务器。

服务器106可以执行、操作或以其他方式提供可以是以下任何一个的应用:软件;程序;可执行指令;虚拟机;管理程序;网络浏览器;基于网络的客户端;客户端-服务器应用;瘦客户端计算客户端;ActiveX控件;Java小程序;与互联网协议语音(VoIP)通信相关的软件,比如软IP电话;用于流式传输视频和/或音频的应用;用于促进实时数据通信的应用;HTTP客户端;FTP客户端;奥斯卡客户端;远程登录客户端;或任何其他可执行指令集。

在一些实施例中,服务器106可以执行远程呈现服务程序或使用瘦客户端或远程显示协议来捕获由在服务器106上执行的应用生成的显示输出并将应用显示输出传输到客户端设备102的其他程序。

在又其他实施例中,服务器106可以执行向客户端设备102的用户提供对计算环境的访问的虚拟机。客户端设备102可以是虚拟机。虚拟机可以由例如管理程序、虚拟机管理器(VMM)或服务器106内的任何其他硬件虚拟化技术来管理。

在一些实施例中,网络104可以是:局域网(LAN);城域网(MAN);广域网(WAN);主要公共网络104;和主要专用网络104。附加实施例可以包括移动电话网络的网络104,其使用各种协议在移动设备之间通信。对于无线局域网(WLAN)内的短程通信,协议可以包括802.11、蓝牙和近场通信(NFC)。

图2描绘了对于实践客户端设备102、器具108和/或服务器106的实施例有用的计算设备100的框图。计算设备100包括一个或多个处理器103、易失性存储器122(例如,随机存取存储器(RAM))、非易失性存储器128、用户界面(UI)123、一个或多个通信接口118和通信总线150。

非易失性存储器128可以包括:一个或多个硬盘驱动器(HDD)或其他磁或光存储介质;一个或多个固态驱动器(SSD),诸如闪存驱动器或其他固态存储介质;一个或多个混合磁性和固态驱动器;和/或一个或多个虚拟存储卷,诸如云存储装置,或者这样的物理存储卷和虚拟存储卷的组合或其阵列。

用户界面123可以包括图形用户界面(GUI)124(例如,触摸屏、显示器等)和一个或多个输入/输出(I/O)设备126(例如,鼠标、键盘、麦克风、一个或多个扬声器、一个或多个相机、一个或多个生物扫描仪、一个或多个环境传感器以及一个或多个加速度计等)。

非易失性存储器128存储操作系统115、一个或多个应用116和数据117,使得例如操作系统115和/或应用116的计算机指令由易失性存储器122之外的(一个或多个)处理器103执行。在一些实施例中,易失性存储器122可以包括一种或多种类型的RAM和/或高速缓冲存储器,其可以提供比主存储器更快的响应时间。可以使用GUI 124的输入设备录入数据,或者从(一个或多个)I/O设备126接收数据。计算机100的各种元件可以经由通信总线150进行通信。

图示的计算设备100仅被示为示例客户端设备或服务器,并且可以由具有任何类型的机器或机器集的任何计算或处理环境来实现,所述任何类型的机器或机器集可以具有能够如本文所述进行操作的合适硬件和/或软件。

(一个或多个)处理器103可以由一个或多个可编程处理器实现,以执行诸如计算机程序的一个或多个可执行指令,来执行系统的功能。如本文使用的,术语“处理器”描述了执行功能、操作或操作序列的电路。功能、操作或操作序列可以硬编码到电路中,或者通过保存在存储器设备中并由电路执行的指令进行软编码。处理器可以使用数字值和/或使用模拟信号来执行功能、操作或操作序列。

在一些实施例中,处理器可以在一个或多个专用集成电路(ASIC)、微处理器、数字信号处理器(DSP)、图形处理单元(GPU)、微控制器、现场可编程门阵列(FPGA)、可编程逻辑阵列(PLA)、多核处理器或具有相关联存储器的通用计算机中体现。

处理器103可以是模拟、数字或混合信号。在一些实施例中,处理器103可以是一个或多个物理处理器,或者一个或多个虚拟(例如,远程定位或云)处理器。包括多个处理器核的处理器和/或多个处理器可以提供在多于一件数据上并行、同时执行多指令或者并行、同时执行一个指令的功能。

通信接口118可以包括一个或多个接口,以使得计算设备100能够通过包括蜂窝连接的多种有线和/或无线连接来访问诸如局域网(LAN)、广域网(WAN)、个域网(PAN)或因特网的计算机网络。

在所描述的实施例中,计算设备100可以代表客户端设备的用户执行应用。例如,计算设备100可以执行由管理程序管理的一个或多个虚拟机。每个虚拟机可以提供代表用户或客户端设备在其中执行应用的执行会话,诸如托管桌面会话。计算设备100还可以执行终端服务会话来提供托管桌面环境。计算设备100可以提供对远程计算环境的访问,该远程计算环境包括一个或多个应用、一个或多个桌面应用以及一个或多个应用可以在其中执行的一个或多个桌面会话。

被配置成客户端设备102或服务器106、或者被配置成在客户端设备102和服务器106中间的器具的计算设备100及其操作的附加描述可以在美国专利号9,176,744和9,538,345中找到,所述美国专利通过引用以其整体并入本文。‘744和‘345专利两者都转让给本公开的当前受让人。

现在转到图3和图5的流程图50,首先描述有利地提供不同浏览器之间的软件即服务(SaaS)迁移特征和相关联方法方面的计算机系统30。作为背景,当前用户每次打开新的SaaS应用程序会话时,他们都需要执行重复的步骤来重建上下文。例如,在Citrix WorkdaySaaS应用程序中,用户可以从主屏幕开始,然后转换到特定的任务屏幕,并且开始处理任务。举例来说,用户可以从主屏幕开始,然后转到我的表现、添加/更改优先级、个人优先级、浏览现有优先级的长列表、选择特定优先级、编辑、开始修改一些文本或输入字段等。

如果用户暂停他或她的工作并漫游到新设备,则用户不仅必须认证并启动SaaS应用程序会话,而且还要执行相同的潜在长的步骤序列,以将上下文重建到他们先前停止的地方。此外,用户必须记住他们停止的地方,如果漫游发生在很长时间段内,则这有时可能是一个挑战。

系统30可以在各种形式的会话漫游或迁移期间自动保存和重新创建SaaS应用程序的上下文或状态,以有利地改进关于SaaS应用程序的生产力和用户体验(UX)。更特别地,从框51开始,在框52,第一客户端计算设备31(诸如上面讨论的那些)被配置为在第一浏览器33内运行第一SaaS应用程序会话32。浏览器33可以是各种类型之一,例如包括本地浏览器、受管或嵌入式浏览器或托管浏览器。

一般来说,嵌入式浏览器是嵌入在本机应用或代理内的浏览器。例如,Citrix接收器和Citrix工作区应用程序是安装在客户端设备上并提供嵌入式浏览器的程序。在一些情况下,嵌入式浏览器可能是受管浏览器,它根据某些规则和权限(DLP)级别提供对因特网和/或企业资源的访问。例如,Citrix XenMobile是提供MDM和MAM能力的软件,包括允许基于每个应用进行VPN访问的微VPN技术。托管浏览器在云或网络服务器上(诸如在虚拟计算会话中)远程运行,并且在客户端计算设备处本地显示。例如,这样的托管浏览器是通过Citrix安全浏览器服务提供的。

此外,在框53,服务器34(诸如上述的那些)与客户端计算设备31协作,以存储在第一SaaS应用程序会话32期间由第一浏览器33执行的一系列浏览器命令。在这点上,服务器34可以是网络服务器、为第一客户端计算设备31提供虚拟计算会话的虚拟化服务器和/或基于云的服务器。在一个示例实现中,服务器34可以是安全文件共享系统的一部分,诸如来自Citrix系统的ShareFile(共享文件),尽管也可以使用其他文件共享系统。当到了用户漫游或迁移到第二客户端计算设备35的时间时,在框54,第二SaaS应用程序会话36可以基于由服务器34维护的一系列存储的浏览器命令在第二客户端计算设备上的第二浏览器37内运行,其复制第一SaaS应用程序会话的状态,这结束了图5中图示的方法(框55)。

现在参考图4,在SaaS漫游的另一种形式中,在本地浏览器中的SaaS会话(例如,Citrix接收器或Citrix工作区应用程序嵌入或管理的会话)与托管浏览器(例如,Citrix安全浏览器)中的新会话之间可能发生自动转换,或者反之亦然。该转换可能在SaaS应用程序会话开始时发生,或者动态地取决于UX、性能、安全或其他考虑因素而发生。在该用例中,系统30’的客户端计算设备31’在第一时间在第一浏览器33’内运行第一SaaS应用程序会话32’,并且由第一浏览器执行的一系列收集的浏览器命令被与服务器34’一起存储,如上所述。当到了从第一浏览器33’(在该示例中是受管浏览器)迁移到第二浏览器37’(在该示例中是托管浏览器)的时间时,客户端计算设备31’和服务器34’协作以基于存储的一系列浏览器命令运行相同SaaS应用程序的新会话36’,同时仍然保持如上指出的第一SaaS应用程序会话的相同状态。

参考图6A-6B的流程图60和各种示例用例,将进一步理解前述内容。为了该讨论的目的,将假设用户正在不同的客户端设备之间迁移(如图3中)除非另有说明。然而,将理解,这些相同的动作或步骤可以应用于相同客户端设备上的浏览器迁移(如图4中图示)。关于第一客户端设备31上的第一SaaS应用程序会话实例32,从框61开始,用户在第一浏览器33中认证并启动期望的SaaS应用程序(框62),在该示例中,第一浏览器33是诸如Citrix接收器或Citrix工作区应用程序中的Chromium浏览器引擎之类的受管浏览器。例如,第一受管浏览器33应用浏览器钩子、存根或代理元素来执行各种动作。这些可能包括在受管浏览器和加载的HTML页面中记录用户动作。更特别地,除了其他相关信息之外,还可以捕获诸如动作类型、相对于浏览器控件或HTML标签的位置、方向以及动作的相对时间的信息。

浏览器命令的捕获可以进一步包括在第一受管浏览器33中记录HTTP请求和响应。举例来说,这些可能包括HTTP方法、URI、主机、路径、主体和标头,以及请求和响应的相对时间。在仍其他示例中,这些可能涉及到REST API调用、JavaScript命令等。

在一些实施例中,在浏览器命令中捕获的记录状态可以以串行化格式存储,以便在创建具有与第一SaaS应用程序会话32相同状态的第二SaaS应用程序会话36时顺序重放。串行化格式可能包含用户动作、HTTP请求和响应、SaaS应用程序ID等。根据一个示例,这可以通过串行化JSON中的记录状态来实现,尽管也可以使用允许信息稍后被共享和顺序重放的其他方法。在框63,串行化的记录状态可以存储在安全共享位置,诸如服务器34。例如,这可以在经认证的用户的上下文中使用Citrix ShareFile(共享文件)来完成,尽管也可以使用其他合适的方法。

在一些情况下,在框64,用户可以关闭第一SaaS应用程序会话32。例如,用户可以关闭托管SaaS应用程序的受管浏览器33标签,或者关闭运行受管浏览器的程序(例如,Citrix接收器或工作区应用程序)。在SaaS应用程序中,也可能存在其他直观的“关闭”或丢弃工作的形式。当这发生时,一系列浏览器命令然后可以从服务器34和/或本地存储装置清除或擦除(框65),从而结束图示方法(框66)。

当到了用户从第一设备31漫游到第二设备35的时间时,在框67,用户可以在第二浏览器37内认证并启动相同SaaS应用程序的第二SaaS应用程序会话36。根据一个示例实现,可以调用Citrix接收器或Citrix工作区应用程序的第二实例,包括受管浏览器37。在本地浏览器(例如,由Citrix接收器或Citrix工作区应用程序嵌入或管理)中的SaaS会话和托管浏览器(诸如Citrix安全浏览器)中的新会话之间也可以发生转换,或者反之亦然。如上指出的,这可能是在不同设备之间,或者在相同客户端设备上的不同浏览器之间。在一些实施例中,为了提供增强的UX,还可以为跨设备单点登录(SSO)共享认证令牌,尽管在所有实施例中不需要这样做。

关于第二设备35上的第二SaaS应用程序会话实例36,在框68,第二浏览器37应用适当的浏览器钩子、存根或代理元素来重新创建第一SaaS应用程序会话32的状态。更特别地,这可以包括基于SaaS应用程序ID来检索串行化的记录状态。根据一个示例,该状态数据可以在经认证的用户的上下文中从Citrix ShareFile(共享文件)检索。此外,可以可选地挂起第二计算设备35的网络活动,同时重新执行在先的浏览器命令来重新创建第一SaaS应用程序会话32的状态。特别地,用户动作可以被顺序重放或执行。其中用户简单地与浏览器控件或本地HTML交互,例如滚动文本或选择复选框,不需要进一步的动作,并且在客户端设备处的本地用户代理可以处理这样的更新的执行。

另一方面,如果在框69,第一SaaS应用程序会话32内的用户动作触发了更复杂的过程,诸如HTTP请求,则当重放这样的请求时,存在各种选项。首先,服务器34(或者在一些实施例中是本地代理,诸如Citrix接收器)可以搜索记录状态以用于匹配的请求。举例来说,可以基于HTTP方法、URI、主机、路径、主体和标头等或者这些方法的组合来执行请求匹配。在一些情况下,可能的是可以发现相同请求的多个版本,在这种情况下,可以使用请求的相对定时来选择适当的响应。如果发现匹配的HTTP请求,则在框70,可以播放来自记录状态的响应,而不是将请求转发给目标主机。

如果不存在HTTP请求的记录状态,则在框71,该请求可以被重新发送到适当的目标主机。更特别地,通过暂时允许网络活动直到响应回来,可以允许请求到达目标主机。这可以是适当的另一个的实例是其中已经发生了响应改变。更特别地,如果第一客户端计算设备31上的数据丢失预防(DLP)策略导致拒绝访问,但是第二客户端计算设备35上的DLP策略将允许这样的访问,则当发起第二SaaS应用程序会话36时,可以然后准许相同的请求去往目标主机。

可选地,对于相对接近定时的请求,服务响应可以基于浏览器命令的原始相对定时被串行化。可以这样做以避免关于不同用户代理和多线程页面呈现的潜在问题,在不同用户代理和多线程页面呈现中,某些响应序列是可以预期。然而,这可能导致响应的重放中的成比例的定时延迟。

一旦所有记录的用户动作(即,浏览器命令)都耗尽,就可以恢复第二客户端计算设备35的网络活动,其中对目标主机进行正常的HTTP处理。第一SaaS应用程序会话32的状态然后在第二SaaS应用程序会话36中被重新创建,并且要添加到SaaS应用程序状态的来自第二浏览器37的浏览器命令的进一步记录可以就像在第一SaaS会话实例32中一样被执行。也就是说,该过程可以继续迁移到相同设备上的另一个浏览器,或者迁移到不同客户端计算设备上的另一个浏览器,如上所述,并且如果期望,则可以无限期地继续。

在一些实施例中,可以给予用户关于他或她是否希望再现第一SaaS应用程序会话状态的选择。例如,在启动第二SaaS应用程序之后,在框72-73,可以给予用户在开始刷新(框74)或在框75在他们停止的地方(即,从第一SaaS应用程序会话状态)继续之间的选择权限。在前一种情况下,存储在服务器34处的记录状态可以被重置。

在一些示例实现中,诸如标识HTML页面的元数据、它们的标签和到特定字段中的用户输入(例如文本)的数据可以在第一SaaS应用程序会话32期间被记录。然后,在第二SaaS应用程序会话实例36中,并且当用户在相应的上下文中时(例如,填写相同或相似的表格等),在框76,可以自动地或者通过建议用户重放它来重放先前记录的用户输入数据。例如,这可以包括将文本粘贴到字段中,或者呈现“剪贴板二进制大对象”,并允许用户手动从其拷贝和粘贴。照此,不需要用户要求明确地拷贝和粘贴信息(在全自动实现中),或者至少不需要用户要求在漫游之前主动拷贝信息(在建议实现中)。在一些实施例中,可以记录和迁移这样的输入数据,而不记录上面指出的所有其他浏览器命令(例如,HTML/HTTP)以通过自身重新创建用户输入数据的状态,从而提供从第一SaaS应用程序会话32的部分状态迁移。换句话说,在这样的实施例中,仅SaaS应用程序状态的一部分将被迁移,而如果期望,则用户将“手动”重建上下文的其余部分。

上述方法有利地提供在不同形式的漫游中SaaS应用程序的实时状态迁移。例如,这些包括客户端端点之间的设备到设备漫游,以及本地客户端设备浏览器和托管的安全浏览器服务之间的漫游。例如,在一个示例用例中,这可能是由Citrix接收器或Citrix工作区应用程序在本地相对于远程回退期间利用嵌入式浏览器精心安排的,以帮助平衡本地UX、性能、安全性等需求。通过帮助避免在每个新的SaaS应用程序会话中执行重复的步骤来重建上下文,上述方法可以相应地改进在各种形式的SaaS应用程序会话漫游中的SaaS应用程序的生产力和UX。

现在转向图7-9中所示的计算系统130的示例实现和图10的流程图150、160,提供了另一种并行运行SaaS应用程序会话的方法,以用于在浏览器之间快速切换例如到不同的形状因子(本机、嵌入式/本地、托管/安全)的目的。上面参考图3-6B描述的状态重新创建方法处理SaaS应用程序漫游情况和本地托管的转换情况二者。然而,在一些情况下,状态重新创建可能花费一些时间,例如,当记录状态随时间变大时,并且因此可能在UX引入延迟。以下方法允许本机本地托管的转换基本上即时发生。

从框151开始,计算机系统130说明性地包括客户端计算设备131,其被配置为在第一浏览器133内运行来自SaaS服务(表示为SaaS服务器139)的第一SaaS应用程序会话132(框152),如类似于以上描述的。在框153,服务器134(其可以类似于上面讨论的服务器34)可以与客户端计算设备131协作,以在第二浏览器内运行镜像第一SaaS应用程序会话的状态的第二SaaS应用程序会话。如上面讨论的,例如,第一浏览器133可以是本地或嵌入式浏览器,而第二浏览器可以是托管浏览器(例如,由服务器134在虚拟会话中运行),或者它可以是运行在另一个客户端计算设备上的本地或嵌入式浏览器,其如将在下面进一步讨论。第二浏览器镜像第一浏览器133在于第二浏览器与第一浏览器并行运行,并且执行与第一浏览器正在执行的相同的浏览器命令。也就是说,如上面讨论的,浏览器命令由第一浏览器133捕获,然后传送到服务器134,以与第一浏览器相同的顺序并与第一浏览器基本上实时地执行。

然而,与第一浏览器133并行运行第二浏览器存在的潜在问题是由第二浏览器生成的复制的出站流量。例如,如果在第一SaaS应用程序会话内执行支付交易,则在第二SaaS应用程序会话中镜像该相同的支付交易可能不合期望地导致用户的双重支付。照此,在框154,服务器134有利地将由第一SaaS应用程序会话132生成的数据流量转发到SaaS服务器139,同时阻止由第二SaaS应用程序生成的流量传递到SaaS服务器,这说明性地结束了图10的方法(框155)。

根据一个示例实现,通过作为“联合会话”的一部分的用户输入注入的安全配对,用户动作被并行且异步地播放给第一和第二浏览器二者。更特别地,来自第一和第二浏览器133、137二者的网络流量被标记为属于联合会话标识符(ID)。代理(例如,Citrix安全网关)通常将把来自第一和第二浏览器实例二者的所有流量引导至后端SaaS应用程序服务。然而,在与并行操作的第二浏览器的联合会话的情况下,代理(这里是服务器134)让来自第一浏览器133的流量传递到SaaS服务器139,但是阻止来自第二浏览器137的流量,例如,使得事务将不被执行两次,等等。然而,来自SaaS应用程序服务器139的响应被代理服务器134多路复用/复制,并被递送到第一和第二浏览器133、137二者。

参考图8和9的示例,并参考图11的流程图160,将进一步理解前述内容。从框161开始,客户端计算设备131是在第一浏览器133内运行第一SaaS应用程序会话132的第一客户端计算设备(框162),并且第二客户端计算设备135与服务器134协作以在第二浏览器137内运行第二SaaS应用程序会话136。此外,第一SaaS应用程序会话132是在图8中所示时间的初级会话,并且第二SaaS应用程序会话136是次级会话,这意味着它将如上指出并行镜像或投影初级会话。同样在该示例中,例如,诸如通过从移动设备(例如,智能电话或平板计算机)转换到膝上型计算机或台式计算机,第一客户端计算设备131的用户想要转换或漫游到第二客户端计算设备135,或者反之亦然。然而,在不同的实施例中,漫游可以发生在客户端设备的其他组合之间。

在该示例中,在框163,如以上参考图3-6A所述,服务器134将由第一浏览器133在第一SaaS应用程序会话132中执行的一系列浏览器命令存储在诸如数据库140中。服务器134基于存储的一系列浏览器命令在第二浏览器137内发起第二SaaS应用程序会话136,以复制第一SaaS应用程序会话132的状态。因此,该方法可以被认为是以上关于图3讨论的方法与参考图7讨论的镜像方法之间的混合。也就是说,第二SaaS应用程序会话136最初是当需要迁移或漫游时基于第一SaaS应用程序会话132的浏览器命令历史(例如,按顺序次序执行命令)建立的(框164-165)。

此后,第二SaaS应用程序会话136开始镜像第一SaaS应用程序会话132的浏览器命令,以在第二SaaS应用程序会话中维持与第一SaaS应用程序会话相同的状态,并且如果期望,则服务器134可以可选地停止存储来自第一SaaS应用程序会话的浏览器命令(框166-167),例如,这说明性地结束了图11的方法(框168)。此外,在第二SaaS应用程序会话136运行之后,它可以变成初级会话,诸如如果用户转换到第二客户端计算设备135并且不再使用第一客户端计算设备131的话,并且第一SaaS应用程序会话然后变成次要(镜像)会话。

照此,混合方法从状态记录和状态重新创建方法开始,然后转换到并行状态方法。根据一个示例用例,用户在第一客户端计算设备131(例如,平板计算机)上启动第一SaaS应用程序会话132。服务器134与第一客户端计算设备131协作,以经由浏览器命令开始SaaS应用程序状态记录。用户随后接近第二客户端计算设备135,例如,他或她的桌面、工作区中心(WSH)或另一共享/信息站设备。基于接近检测(例如,信标),例如,第一客户端计算设备131静默地与第二客户端计算设备135配对,并指令它在第二浏览器137中开始SaaS应用程序状态重新创建。然而,在该时刻,第二SaaS应用程序会话136未在第二客户端计算设备135上示出,因为它在静默/不可见模式下操作。

一旦状态被重新创建,第一客户端计算设备131就经由服务器134开始与第二客户端计算设备135的并行状态方法。当用户进一步接近/到达时,用户决定切换或转换到第二客户端计算设备135,例如WSH及其更大的监视器。在该时刻,呈现/揭示第二客户端计算设备135上的第二SaaS应用程序会话或实例136,导致从第一客户端计算设备131到第二客户端计算设备135的有效瞬时转换(快速切换)。此外,第二客户端计算设备135变成初级设备,而第一客户端计算设备131变成次级设备。然后,可以隐藏第一客户端计算设备131上的第一SaaS应用程序会话132。

只要第一和第二客户端计算设备131、135配对,并行状态方法就可以继续。然而,在某时刻,第一客户端计算设备131可以停止操作影子或次级SaaS应用程序会话,例如,如果第二客户端计算设备135仍然是活跃使用的桌面,而第一客户端计算设备由于距离增加而不成对,等等。该混合方法的益处在于,它有助于确保客户端计算设备之间的快速SaaS应用程序会话转换,所述客户端计算设备可能从第一SaaS应用程序会话132的一开始就没有配对,但是可以根据需要变得配对或漫游/转换。换句话说,第二客户端计算设备135可以预先“准备好”,然后保持准备在适当的时间进行预期的快速切换。

受益于前述描述和相关联附图中呈现的教导,本领域技术人员将想到许多修改和其他实施例。因此,应当理解,前述内容不限于示例实施例,并且修改和其他实施例旨在包括在所附权利要求的范围内。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号