IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ シトリックス・システムズ・インコーポレイテッドの特許一覧

特表2022-504708ミラーリングされたSAASアプリケーションセッションを提供するコンピュータシステム
<>
  • 特表-ミラーリングされたSAASアプリケーションセッションを提供するコンピュータシステム 図1
  • 特表-ミラーリングされたSAASアプリケーションセッションを提供するコンピュータシステム 図2
  • 特表-ミラーリングされたSAASアプリケーションセッションを提供するコンピュータシステム 図3
  • 特表-ミラーリングされたSAASアプリケーションセッションを提供するコンピュータシステム 図4
  • 特表-ミラーリングされたSAASアプリケーションセッションを提供するコンピュータシステム 図5
  • 特表-ミラーリングされたSAASアプリケーションセッションを提供するコンピュータシステム 図6A
  • 特表-ミラーリングされたSAASアプリケーションセッションを提供するコンピュータシステム 図6B
  • 特表-ミラーリングされたSAASアプリケーションセッションを提供するコンピュータシステム 図7
  • 特表-ミラーリングされたSAASアプリケーションセッションを提供するコンピュータシステム 図8
  • 特表-ミラーリングされたSAASアプリケーションセッションを提供するコンピュータシステム 図9
  • 特表-ミラーリングされたSAASアプリケーションセッションを提供するコンピュータシステム 図10
  • 特表-ミラーリングされたSAASアプリケーションセッションを提供するコンピュータシステム 図11
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2022-01-13
(54)【発明の名称】ミラーリングされたSAASアプリケーションセッションを提供するコンピュータシステム
(51)【国際特許分類】
   G06F 9/50 20060101AFI20220105BHJP
   G06F 8/60 20180101ALI20220105BHJP
【FI】
G06F9/50 150Z
G06F8/60
【審査請求】有
【予備審査請求】未請求
(21)【出願番号】P 2021519841
(86)(22)【出願日】2019-08-06
(85)【翻訳文提出日】2021-05-28
(86)【国際出願番号】 US2019045196
(87)【国際公開番号】W WO2020076406
(87)【国際公開日】2020-04-16
(31)【優先権主張番号】16/156,267
(32)【優先日】2018-10-10
(33)【優先権主張国・地域又は機関】US
(81)【指定国・地域】
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
1.JAVA
2.BLUETOOTH
3.JAVASCRIPT
(71)【出願人】
【識別番号】508045099
【氏名又は名称】シトリックス・システムズ・インコーポレイテッド
【氏名又は名称原語表記】Citrix Systems,Inc.
(74)【代理人】
【識別番号】110001243
【氏名又は名称】特許業務法人 谷・阿部特許事務所
(72)【発明者】
【氏名】ゲオルギー モンチロフ
(72)【発明者】
【氏名】ジェローン ヴァン ロッテルダム
【テーマコード(参考)】
5B376
【Fターム(参考)】
5B376BC25
(57)【要約】
コンピュータシステムは、第1のブラウザ内のSaaSサーバからのサービス(SaaG)アプリケーションセッションとしての第1のソフトウェアを実行するように構成されたクライアントコンピューティングデバイスを含む。サーバは、少なくとも1つのクライアントコンピューティングデバイスと協同して、第1のSaaSアプリケーションセッションの状態をミラーリングする第2のブラウザ内の第2のSaaSアプリケーションセッションを実行し、および、第1のSaaSアプリケーションセッションによって生成されたデータトラフィックをSaaSサーバに転送する一方で、第2のSaaSアプリケーションセッションによって生成されたトラフィックがSaaSサーバに渡されるのをブロックする。
【特許請求の範囲】
【請求項1】
コンピュータシステムであって、
第1のブラウザ内のSaaSサーバからのサービス(SaaG)アプリケーションセッションとしての第1のソフトウェアを実行するように構成されたクライアントコンピューティングデバイスと、
前記少なくとも1つのクライアントコンピューティングデバイスと協同し、前記第1のSaaSアプリケーションセッションの状態をミラーリングする第2のブラウザ内の第2のSaaSアプリケーションセッションを実行し、および、前記第1のSaaSアプリケーションセッションによって生成されたデータトラフィックを前記SaaSサーバに転送する一方で、前記第2のSaaSアプリケーションセッションによって生成されたトラフィックが前記SaaSサーバに渡されるのをブロックする、サーバと
を備えたことを特徴とするコンピュータシステム。
【請求項2】
前記クライアントコンピューティングデバイスは、前記第1のブラウザ内の前記第1のSaaGアプリケーションセッションを実行する第1のクライアントコンピューティングデバイスを含み、および、前記第2のブラウザ内の前記第2のSaaGアプリケーションを実行するために、前記サーバと協同する前記第1のクライアントコンピューティングデバイスとは異なる第2のクライアントコンピューティングデバイスをさらに含むことを特徴とする請求項1記載のコンピュータシステム。
【請求項3】
前記サーバは、前記第1のブラウザによって実行された一連のブラウザコマンドを前記第1のSaaSアプリケーションセッションに記憶し、および、前記第1のSaaSアプリケーションセッションの状態を複製するために、前記記憶された一連のブラウザコマンドに基づいて、前記第2のブラウザ内の前記第2のSaaGアプリケーションセッションを開始するようにさらに構成されたことを特徴とする請求項1記載のコンピュータシステム。
【請求項4】
前記サーバは、前記第2のSaaGアプリケーションセッションが開始されると、前記第1のブラウザによって実行されるブラウザコマンドの記憶を停止し、および、前記第2のSaaSアプリケーションセッション内で前記第1のSaaSアプリケーションセッションと同じ状態を維持するために、前記第2のSaaSアプリケーションセッションと並行して前記第1のSaaSアプリケーションセッションと同じブラウザコマンドの実行を開始するようにさらに構成されたことを特徴とする請求項3記載のコンピュータシステム。
【請求項5】
前記サーバは、前記第2のブラウザに、前記記憶された一連のブラウザコマンドの実行を順次繰り返しさせて、前記第2のSaaSアプリケーションセッションを開始することを特徴とする請求項3記載のコンピュータシステム。
【請求項6】
前記サーバは、前記第1および第2のブラウザからのネットワークトラフィックを、ジョイントセッション識別子(ID)で指定するように構成されたことを特徴とする請求項1記載のコンピュータシステム。
【請求項7】
前記第1および第2のブラウザのうちの少なくとも1つは、埋め込み型ブラウザを含むことを特徴とする請求項1記載のコンピュータシステム。
【請求項8】
前記第1および第2のブラウザのうちの少なくとも1つは、ホスト型ブラウザを含むことを特徴とする請求項1記載のコンピュータシステム。
【請求項9】
クライアントコンピューティングデバイスにおいて、第1のブラウザ内の、SaaSサーバからのサービス(SaaG)アプリケーションセッションとしての第1のソフトウェアを実行するステップと、
サーバを使用して、前記第1のSaaSアプリケーションセッションの状態をミラーリングする第2のブラウザ内の第2のSaaSアプリケーションセッションを実行し、および、前記第1のSaaSアプリケーションセッションによって生成されたデータトラフィックを前記SaaSサーバに転送する一方で、前記第2のSaaSアプリケーションセッションによって生成されたトラフィックが前記SaaSサーバに渡されるのをブロックするステップと、
を含むことを特徴とする方法。
【請求項10】
前記クライアントコンピューティングデバイスは、前記第1のブラウザ内の前記第1のSaaGアプリケーションセッションを実行する第1のクライアントコンピューティングデバイスを含み、および、前記第2のブラウザ内の前記第2のSaaGアプリケーションを実行するために、前記第1のクライアントコンピューティングデバイスとは異なる第2のクライアントコンピューティングデバイスと協同する前記サーバを使用することをさらに含むことを特徴とする請求項9記載の方法。
【請求項11】
前記サーバを使用することは、前記第1のブラウザによって実行された一連のブラウザコマンドを前記第1のSaaSアプリケーションセッションに記憶し、および、前記第1のSaaSアプリケーションセッションの状態を複製するために、前記記憶された一連のブラウザコマンドに基づいて、前記第2のブラウザ内の前記第2のSaaGアプリケーションセッションを開始することをさらに含むことを特徴とする請求項9記載の方法。
【請求項12】
前記サーバを使用することは、前記第2のSaaGアプリケーションセッションが開始されると、前記第1のブラウザによって実行されるブラウザコマンドの記憶を停止し、および、前記第2のSaaSアプリケーションセッション内で前記第1のSaaSアプリケーションセッションと同じ状態を維持するために、前記第2のSaaSアプリケーションセッションと並行して前記第1のSaaSアプリケーションセッションと同じブラウザコマンドの実行を開始することをさらに含むことを特徴とする請求項11記載の方法。
【請求項13】
前記サーバは、前記第2のブラウザに、前記記憶された一連のブラウザコマンドの実行を順次繰り返しさせて、前記第2のSaaSアプリケーションセッションを開始することを特徴とする請求項11記載の方法。
【請求項14】
前記サーバを使用することは、前記第1および第2のブラウザからのネットワークトラフィックを、ジョイントセッション識別子(ID)で指定することをさらに含むことを特徴とする請求項11記載の方法。
【請求項15】
クライアントコンピューティングデバイスにおいて、第1のブラウザ内のSaaSサーバからの第1のSaaSアプリケーションセッションを実行するために、クライアントコンピューティングデバイスと協同させ、
前記第1のSaaSアプリケーションセッションの状態をミラーリングする第2のブラウザ内の第2のSaaSアプリケーションセッションを実行させ、
前記第1のSaaSアプリケーションセッションによって生成されたデータトラフィックを前記SaaSサーバに転送させる一方で、前記第2のSaaSアプリケーションセッションによって生成されたトラフィックが前記SaaSサーバに渡されるのをブロックさせる、
ことを含むステップを、サーバに実行させるためのコンピュータ実行可能ステップを有することを特徴とする非一時的なコンピュータ可読媒体。
【請求項16】
前記クライアントコンピューティングデバイスは、前記第1のブラウザ内の前記第1のSaaGアプリケーションセッションを実行する第1のクライアントコンピューティングデバイスを含み、および、前記サーバに、前記第2のブラウザ内の前記第2のSaaGアプリケーションを実行するために、前記第1のクライアントコンピューティングデバイスとは異なる第2のクライアントコンピューティングデバイスと協同させる、コンピュータ実行可能命令をさらに有することを特徴とする請求項15記載の非一時的なコンピュータ可読媒体。
【請求項17】
前記サーバに、前記第1のブラウザによって実行された一連のブラウザコマンドを前記第1のSaaSアプリケーションセッションに記憶させ、および、前記第1のSaaSアプリケーションセッションの状態を複製するために、前記記憶された一連のブラウザコマンドに基づいて、前記第2のブラウザ内の前記第2のSaaGアプリケーションセッションを開始させる、コンピュータ実行可能命令をさらに有することを特徴とする請求項15記載の非一時的なコンピュータ可読媒体。
【請求項18】
前記サーバに、前記第2のSaaGアプリケーションセッションが開始されると、前記第1のブラウザによって実行されるブラウザコマンドの記憶を停止させ、および、前記第2のSaaSアプリケーションセッション内で前記第1のSaaSアプリケーションセッションと同じ状態を維持するために、前記第2のSaaSアプリケーションセッションと並行して前記第1のSaaSアプリケーションセッションと同じブラウザコマンドの実行を開始させる、コンピュータ実行可能命令をさらに有することを特徴とする請求項16記載の非一時的なコンピュータ可読媒体。
【請求項19】
前記サーバに、前記第2のブラウザに対して、前記記憶された一連のブラウザコマンドの実行を順次繰り返しさせて、前記第2のSaaSアプリケーションセッションを開始させることを共同させる、コンピュータ実行可能命令をさらに有することを特徴とする請求項16記載の非一時的なコンピュータ可読媒体。
【請求項20】
前記サーバに、前記第1および第2のブラウザからのネットワークトラフィックを、ジョイントセッション識別子(ID)で指定させる、コンピュータ実行可能命令をさらに有することを特徴とする請求項15記載の非一時的なコンピュータ可読媒体。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、ミラーリングされたSAASアプリケーションセッションを提供するコンピュータシステムに関する。
【背景技術】
【0002】
従来、パーソナルコンピュータは、オペレーティングシステム、アプリケーション、およびユーザ設定の組み合わせを含み、これらはそれぞれ、所有者または管理者によって継続的に個別に管理される。ただし、多くの組織は現在、デスクトップ仮想化を使用して、ユーザのさまざまなニーズに対応するためのより柔軟なオプションを提供している。デスクトップ仮想において、ユーザのコンピューティング環境(オペレーティングシステム、アプリケーション、ユーザ設定など)は、ユーザの物理コンピューティングデバイス(スマートフォン、ラップトップ、デスクトップコンピュータなど)から分離することができる。クライアントサーバテクノロジーを使用すると、「仮想化デスクトップ」や仮想アプリケーションは、クライアントコンピューティングデバイスのローカルストレージではなく、リモートサーバに記憶および管理できる。
【0003】
Webアプリケーションは、アプリケーションをリモートでプロビジョニングおよび提供するためのもう1つのアプローチである。ソフトウェアのライセンスと配信のためのWebアプリケーションアプローチの1つの例は、Software as a Service(SaaS)である。これは、ソフトウェアアプリケーションがクラウドで一元的にホストされ、サブスクリプションベースでユーザに提供される、ソフトウェア配信へのクラウドコンピューティングアプローチである。SaaSアプリケーションは通常、ブラウザプログラムを介してシンクライアント(thin client)を備えたクライアントデバイスでアクセスされ、場合によっては仮想コンピューティングセッションを通じて提供されることもある。
【先行技術文献】
【特許文献】
【0004】
【特許文献1】米国特許第9,176,744号
【特許文献2】米国特許第9,538,345号
【発明の概要】
【0005】
コンピュータシステムは、第1のブラウザ内のSaaSサーバからのサービス(SaaG)アプリケーションセッションとしての第1のソフトウェアを実行するように構成されたクライアントコンピューティングデバイスを含む。サーバは、少なくとも1つのクライアントコンピューティングデバイスと協同して、第1のSaaSアプリケーションセッションの状態をミラーリングする第2のブラウザ内の第2のSaaSアプリケーションセッションを実行し、および、第1のSaaSアプリケーションセッションによって生成されたデータトラフィックをSaaSサーバに転送する一方で、第2のSaaSアプリケーションセッションによって生成されたトラフィックがSaaSサーバに渡されるのをブロックする。
【0006】
例示的な実施形態では、クライアントコンピューティングデバイスは、第1のブラウザ内の第1のSaaGアプリケーションセッションを実行する第1のクライアントコンピューティングデバイスであってよい。さらに、システムはまた、第2のブラウザ内の第2のSaaGアプリケーションを実行するためにサーバと協同する第1のクライアントコンピューティングデバイスとは異なる第2のクライアントコンピューティングデバイスを含んでよい。
【0007】
例示的な実施によれば、サーバは、第1のブラウザによって実行された一連のブラウザコマンドを第1のSaaSアプリケーションセッションに記憶し、および、第1のSaaSアプリケーションセッションの状態を複製するために、記憶された一連のブラウザコマンドに基づいて、第2のブラウザ内の第2のSaaGアプリケーションセッションを開始するようにさらに構成される。さらに、サーバは、第2のSaaGアプリケーションセッションが開始されると第1のブラウザによって実行されるブラウザコマンドの記憶を停止し、および、たとえば、第2のSaaSアプリケーションセッション内で第1のSaaSアプリケーションセッションと同じ状態を維持するために、第2のSaaSアプリケーションセッションと並行して第1のSaaSアプリケーションセッションと同じブラウザコマンドの実行を開始するようにさらに構成される。さらに、例示的な実装形態では、サーバは、第2のブラウザに、記憶された一連のブラウザコマンドの実行を順次繰り返しさせて、第2のSaaSアプリケーションセッションを開始することができる。
【0008】
一例の実施例では、サーバは、第1および第2のブラウザからのネットワークトラフィックをジョイント(joint)セッション識別子(ID)で指定するように構成される。例として、第1および第2のブラウザのうちの少なくとも1つは、組み込みブラウザまたはホストされたブラウザを含む。
【0009】
関連する方法は、クライアントコンピューティングデバイスにおいて、第1のブラウザ内のSaaSサーバからの第1のSaaSアプリケーションセッションを実行することを含む。この方法はさらに、サーバを使用して、第1のSaaSアプリケーションセッションの状態をミラーリングする第2のブラウザ内の第2のSaaSアプリケーションセッションを実行し、および、第1のSaaSアプリケーションセッションによって生成されたデータトラフィックをSaaSサーバに転送する一方で、第2のSaaSアプリケーションセッションによって生成されたトラフィックがSaaSサーバに渡されるのをブロックする。
【0010】
関連する非一時的なコンピュータ可読媒体は、クライアントコンピューティングデバイスとの共同を含むステップをサーバに実行させて、クライアントコンピューティングデバイスにおいて、第1のブラウザ内のSaaSサーバからの第1のSaaSアプリケーションセッションを実行し、および、第1のSaaSアプリケーションセッションの状態をミラーリングする第2のブラウザ内の第2のSaaSアプリケーションセッションを実行するためのコンピュータ実行可能なステップを有する。このステップはさらに、第1のSaaSアプリケーションセッションによって生成されたデータトラフィックをSaaSサーバに転送する一方で、第2のSaaSアプリケーションセッションによって生成されたトラフィックがSaaSサーバに渡されるのをブロックすることを含む。
【図面の簡単な説明】
【0011】
図1】本開示の様々な態様を実施することができるコンピューティングデバイスのネットワーク環境のブロック図である。
図2図1に示されるクライアントマシンまたはリモートマシンの実施形態を実施するのに有用なコンピューティングデバイスのブロック図である。
図3】例示的な実施に従って、異なるクライアントコンピューティングデバイス上のブラウザ間をローミングするサービスとしてのソフトウェア(SaaG)アプリケーションセッションを提供するコンピューティングシステムのブロック図である。
図4】同じクライアントコンピューティングデバイス上の異なるブラウザ間でSaaSアプリケーションローミング機能を提供する図3のコンピューティングシステムの別の例示的な実施のブロック図である。
図5図3および図4のシステムに関連する方法の態様を示す流れ図である。
図6A図3および図4のシステムに関連する方法の態様を示す流れ図である。
図6B図3および図4のシステムに関連する方法の態様を示す流れ図である。
図7】第2のSaaSアプリケーションセッションが第1のSaaSアプリケーションセッションと並行して実行され、その状態を反映する別の例示的な実施形態によるコンピューティングシステムの概略ブロック図である。
図8】並列SaaSアプリケーションセッションが、第1のクライアントコンピューティングデバイスから第2のクライアントコンピューティングデバイスへのローミングに使用される、図7のシステムの例示的な実施を示す一連の概略ブロック図である。
図9】並列SaaSアプリケーションセッションが、第1のクライアントコンピューティングデバイスから第2のクライアントコンピューティングデバイスへのローミングに使用される、図7のシステムの例示的な実施を示す一連の概略ブロック図である。
図10図7図9のシステムに関連する例示的な方法の態様を示す流れ図である。
図11図7図9のシステムに関連する例示的な方法の態様を示す流れ図である。
【発明を実施するための形態】
【0012】
本説明は、例示的な実施形態が示されている添付の図面を参照して行われる。しかしながら、多くの異なる実施形態が使用されてもよく、したがって、説明は、本明細書に記載の特定の実施形態に限定されると解釈されるべきではない。同様の番号は、全体を通して同様の要素を指し、素数表記は、異なる実施形態において同様の要素を示すために使用される。
【0013】
以下の開示を読むと当業者によって理解されるように、本明細書に記載の様々な態様は、デバイス、方法、またはコンピュータプログラム製品(例えば、記載されている操作または手順を実行するためのコンピュータ実行可能命令を有する非一時的なコンピュータ可読媒体)として具体化される。したがって、これらの態様は、完全にハードウェアの実施形態、完全にソフトウェアの実施形態、またはソフトウェアとハードウェアの態様を組み合わせた実施形態の形をとることができる。
【0014】
さらに、そのような態様は、記憶媒体内または記憶媒体上に具体化された、コンピュータ可読プログラムコードまたは命令を有する1つまたは複数のコンピュータ可読記憶媒体によって記憶されるコンピュータプログラム製品の形態をとることができる。ハードディスク、CD-ROM、光記憶装置、磁気記憶装置、および/またはそれらの任意の組み合わせを含む、任意の適切なコンピュータ可読記憶媒体を利用することができる。
【0015】
最初に図1を参照して、本開示の様々な側面が実施される非限定的なネットワーク環境101は、1つまたは複数のクライアントマシン102A-102N、1つまたは複数のリモートマシン106A-106N、1つまたは複数のネットワーク104、104’、および、コンピューティング環境101内にインストールされた1つまたは複数のアプライアンス108を含む。クライアントマシン102A-102Nは、ネットワーク104、104’経由でリモートマシン106A-106Nと通信する。
【0016】
いくつかの実施形態では、クライアントマシン102A-102Nは、中間アプライアンス108経由でリモートマシン106A-106Nと通信する。図解されたアプライアンス108は、ネットワーク104、104’間に配置され、および、ネットワークインターフェースまたはゲートウェイと呼ばれることもある。いくつかの実施形態では、アプライアンス108は、アプリケーション配信コントローラ(ADC)として動作し、データセンタやクラウドに展開されたビジネスアプリケーションおよびその他のデータへのアクセスをクライアントに提供したり、さまざまなクライアントデバイスにサービスとしてのソフトウェア(SaaS)として配信したりすることができ、および/または、負荷分散などの他の機能を提供する。いくつかの実施形態では、複数のアプライアンス108を使用することができ、および、アプライアンス108は、ネットワーク104、104’の一部として展開される場合がある。
【0017】
クライアントマシン102A-102Nは、一般的にクライアントマシン102、ローカルマシン102、クライアント102、クライアントノード102、クライアントコンピューター102、クライアントデバイス102、コンピューティングデバイス102、エンドポイント102、またはエンドポイントノード102と呼ばれる。リモートマシン106A-106Nは、一般的にサーバ106またはサーバファーム106と呼ばれる。いくつかの実施形態では、クライアントデバイス102は、サーバ106によって提供されるリソースへのアクセスを求めるクライアントノード、および、他のクライアントデバイス102A-102Nにホストされたリソースへのアクセスを提供するサーバ106、の両方として機能する能力を持つ。ネットワーク104、104’は、一般にネットワークと呼ばれる。ネットワーク104は、有線ネットワークと無線ネットワークの任意の組み合わせで構成できる。
【0018】
サーバ106は、たとえば、ファイルサーバ、アプリケーションサーバ、Webサーバ、プロキシサー、アプライアンス、ネットワークアプライアンス、ゲートウェイ、アプリケーションゲートウェイ、ゲートウェイサーバ、仮想化サーバ、デプロイメントサーバ、Secure Sockets Layer仮想プライベートネットワーク(SSL VPN)サーバ、ファイアウォール、Webサーバ、ActiveDirectoryを実行しているサーバ、クラウドサーバ、または、ファイアウォール機能、アプリケーション機能、または負荷分散機能を提供するアプリケーションアクセラレーションプログラムを実行するサーバ、のような任意のサーバタイプにすることができる。
【0019】
サーバ106は、ソフトウェア、プログラム、実行可能命令、仮想マシン、ハイパーバイザ、Webブラウザ、Webベースのクライアント、クライアントサーバプリケーション、シンクライアントコンピューティングクライアント、ActiveXコントロール、Javaアプレット、ソフトIP電話のようなVoiceover Internet Protocol(VoIP)通信に関連するソフトウェア、ビデオおよび/またはオーディオをストリーミングするためのアプリケーション、リアルタイムデータ通信を容易にするためのアプリケーション、HTTPクライアント、FTPクライアント、オスカークライアント、Telnetクライアント、またはその他の実行可能命令のセット、のいずれかであるアプリケーションを実行、操作、またはその他の方法で提供する。
【0020】
いくつかの実施形態では、サーバ106は、シンクライアントまたはリモートディスプレイプロトコルを使用して、サーバ106上で実行されているアプリケーションによって生成されたディスプレイ出力をキャプチャするリモートプレゼンテーションサービスプログラムまたはその他のプログラムを実行し、および、アプリケーションの表示出力をクライアントデバイス102に送信する。
【0021】
さらに他の実施形態では、サーバ106は、クライアントデバイス102のユーザに提供する仮想マシンを実行でき、コンピューティング環境へアクセスできる。クライアントデバイス102は、仮想マシンでよい。仮想マシンは、たとえば、ハイパーバイザ、仮想マシンマネージャ(VMM)、またはサーバ106内の他のハードウェア仮想化技術によって管理できる。
【0022】
いくつかの実施形態では、ネットワーク104は、ローカルエリアネットワーク(LAN)、メトロポリタンエリアネットワーク(MAN)、ワイドエリアネットワーク(WAN)、プライマリパブリックネットワーク104、およびプライマリプライベートネットワーク104でよい。追加の実施形態は、さまざまなプロトコルを使用してモバイルデバイス間で通信する携帯電話ネットワークのネットワークを104を含んでよい。ワイヤレスローカルエリアネットワーク(WLAN)内の短距離通信の場合、プロトコルには、802.11、Bluetooth、および近距離無線通信(NFC)を含んでよい。
【0023】
図2は、クライアントデバイス102、アプライアンス108および/またはサーバ106の実施形態を実施するのに役立つコンピューティングデバイス100のブロック図を示す。コンピューティングデバイス100は、1つまたは複数のプロセッサ103と、揮発性メモリ122(例、ランダムアクセスメモリ(RAM))と、不揮発性メモリ128と、ユーザインターフェース(UI)123と、1つまたは複数の通信インターフェース118、および通信バス150とを含む。
【0024】
不揮発性メモリ128は、1つまたは複数のハードディスクドライブ(HDD)またはその他の磁気または光ストレージメディア、フラッシュドライブやその他のソリッドステートストレージメディアなどの1つまたは複数のソリッドステートドライブ(SSD)、1つまたは複数のハイブリッド磁気ドライブとソリッドステートドライブ、および/または、クラウドストレージなどの1つまたは複数の仮想ストレージボリューム、またはそのような物理ストレージボリュームと仮想ストレージボリュームまたはそのアレイとの組み合わせ、を含む。
【0025】
ユーザインターフェース123は、グラフィカルユーザインターフェース(GUI)124(例:タッチスクリーン、ディスプレイなど)および1つまたは複数の入力/出力(I/O)デバイス126(例えば、マウス、キーボード、マイクロフォン、1つまたは複数のスピーカ、1つまたは複数のカメラ、1つまたは複数の生体認証スキャナ、1つまたは複数の環境センサ、および1つまたは複数の加速度計など)を含んでよい。
【0026】
不揮発性メモリ128は、たとえば、オペレーティングシステムのコンピュータ命令115および/またはアプリケーション116が、揮発性メモリ122からプロセッサ103によって実行されるように、オペレーティングシステム115、1つまたは複数のアプリケーション116、およびデータ117を記憶する。いくつかの実施形態では、揮発性メモリ122は、メインメモリよりも速い応答時間を提供する、1つまたは複数のタイプのRAMおよび/またはキャッシュメモリを含んでよい。データは、GUI124の入力デバイスを使用して入力されてよく、またはI/Oデバイス126から受信されてよい。コンピュータのさまざまな要素100は、通信バス150を介して通信してよい。
【0027】
図解されたコンピューティングデバイス100は、単に例示的なクライアントデバイスまたはサーバとして示され、本明細書に記載されるように動作可能な適切なハードウェアおよび/またはソフトウェアを有する任意のタイプのマシンまたはマシンのセットを備えた、任意のコンピューティングまたは処理環境によって実施される。
【0028】
プロセッサ103は、システムの機能を実行するために、コンピュータプログラムなどの1つまたは複数の実行可能命令を実行するために、1つまたは複数のプログラム可能なプロセッサによって実施される。本明細書で使用される場合、「プロセッサ」という用語は、機能、動作、または動作のシーケンスを実行する回路を説明する。機能、動作、または動作のシーケンスは、回路にハードコードされるか、またはメモリデバイスに保持され、回路によって実行される命令によってソフトコード化される。プロセッサは、デジタル値を使用して、および/またはアナログ信号を使用して、機能、操作、または操作のシーケンスを実行することができる。
【0029】
いくつかの実施形態では、プロセッサは、1つまたは複数の特定用途向け集積回路(ASIC)、マイクロプロセッサ、デジタル信号プロセッサ(DSP)、グラフィックス処理ユニット(GPU)、マイクロコンピュータ、フィールドプログラマブルゲートアレイ(FPGA)、プログラマブルロジックアレイ(PLA)、マルチコアプロセッサ、または関連するメモリを備えた汎用コンピュータで具体化することができる。
【0030】
プロセッサ103は、アナログ、デジタル、またはミックス信号の場合がある。いくつかの実施形態では、プロセッサ103は、1つまたは複数の物理プロセッサ、または1つまたは複数の仮想(例えば、遠隔に位置するまたはクラウド)プロセッサであってよい。複数のプロセッサコアおよび/または複数のプロセッサを含むプロセッサは、命令の並列の同時実行、または複数のデータに対する1つの命令の並列の同時実行のための機能を提供してよい。
【0031】
通信インターフェース118は、コンピューティングデバイス100が、ローカルエリアネットワーク(LAN)、ワイドエリアネットワーク(WAN)、パーソナルエリアネットワーク(PAN)、またはインターネットなどのコンピュータネットワークに、セルラー接続を含むさまざまな有線および/または無線接続を介してアクセスすることができるように、1つまたは複数のインターフェースを含んでよい。
【0032】
説明された実施形態では、コンピューティングデバイス100は、クライアントデバイスのユーザに代わってアプリケーションを実行してよい。たとえば、コンピューティングデバイス100は、ハイパーバイザによって管理される1つまたは複数の仮想マシンを実行してよい。各仮想マシンは、ホストされたデスクトップセッションなど、ユーザまたはクライアントデバイスに代わってアプリケーションが実行される実行セッションを提供してよい。コンピューティングデバイス100は、ターミナルサービスセッションを実行して、ホストされたデスクトップ環境を提供することもできる。コンピューティングデバイス100は、1つまたは複数のアプリケーション、1つまたは複数のデスクトップアプリケーション、および1つまたは複数のアプリケーションが実行する1つまたは複数のデスクトップセッションを含むリモートコンピューティング環境へのアクセスを提供することができる。
【0033】
クライアントデバイス102として、またはサーバ106として、またはクライアントデバイス102およびサーバ106へのアプライアンス仲介として構成されたコンピューティングデバイス100の追加の説明、およびその操作は、参照によりその全体が本明細書に組み込まれる特許文献1および特許文献2に見ることができる。特許文献1および特許文献2は、両方とも本開示の現在の譲受人に譲渡されている。
【0034】
図3図5のフロー図に目を向けると、コンピュータシステム30は、異なるブラウザ間でサービス(SaaS)移動機能(migration features)としてのソフトウェアを有利に提供し、および、関連する方法の側面が最初に説明される。背景として、現在、ユーザは新しいSaaSアプリケーションセッションを開くたびに、コンテキストを再構築(rebild)するための繰り返しのステップを実行する必要がある。たとえば、Citrix Workday SaaSアプリケーションでは、ユーザは、ホーム画面から開始し、特定のタスク画面に移行(transition)してタスクの作業を開始できる。例として、ユーザは、ホーム画面から始めて、マイパフォーマンス、優先度の追加/変更、個別の優先度に行き(go to)、既存の優先度の長いリストを参照し(browse)、特定の優先度を選択し、編集し、テキストまたは入力フィールドなどの変更を開始する。
【0035】
ユーザが作業を一時停止して新しいデバイスにローミングする場合、ユーザはSaaSアプリケーションセッションを認証して起動するだけでなく、以前に中断したところにコンテキストを再構築するために、同じ潜在的に長い一連の手順を実行する必要がある。さらに、ユーザは中断した場所を覚えておく必要がある。これは、ローミングが長期間にわたって発生した場合、困難な場合がある。
【0036】
システム30は、さまざまな形式のセッションローミングまたは移動(migration)中にSaaSアプリケーションのコンテキストまたは状態を自動的に記憶および再作成(recreate)して、SaaSアプリケーションの生産性とユーザエクスペリエンス(UX)を有利に向上させることができる。より具体的には、ブロック51から始まり、第1のクライアントコンピューティングデバイス31(上記で説明したものなど)は、ブロック52で、第1のブラウザ33内の第1のSaaSアプリケーションセッション32を実行するように構成されている。ブラウザ33は、たとえば、ローカルブラウザ、管理型または埋め込み型ブラウザ、ホスト型ブラウザなど、さまざまなタイプの1つであってよい。
【0037】
一般的に、埋め込み型ブラウザは、ネイティブアプリケーションまたはエージェント内に埋め込まれたブラウザである。たとえば、CitrixReceiverとCitrixWorkspace Appは、クライアントデバイスにインストールされ、埋め込み型ブラウザを提供するプログラムである。場合によっては、埋め込み型ブラウザは、特定のルールと許可(DLP)レベルに従って、インターネットおよび/またはエンタープライズリソースへのアクセスを提供する管理型ドブラウザである。たとえば、Citrix XenMobileは、アプリケーションごとにVPNアクセスを可能にするマイクロVPNテクノロジーを含む、MDMおよびMAM機能を提供するソフトウェアである。ホスト型ブラウザは、仮想コンピューティングセッションなど、クラウドまたはネットワークサーバ上においてリモートで実行され、クライアントコンピューティングデバイスにローカルに表示される。たとえば、このようなホスト型ブラウザは、Citrix Secure BrowserServiceを通じて提供される。
【0038】
さらに、サーバ34(上記のような)は、クライアントコンピューティングデバイス31と協同し、ブロック53で、第1のSaaSアプリケーションセッション32中、第1のブラウザ33によって実行された一連のブラウザコマンドを記憶する。この点において、サーバ34は、ネットワークサーバ、第1のクライアントコンピューティングデバイス31に仮想コンピューティングセッションを提供する仮想化サーバ、および/またはクラウドベースのサーバでよい。1例の実施では、サーバ34は、他のファイル共有システムも使用できるが、CitrixSystemsのShareFileなどの安全なファイル共有システムの一部であってよい。ユーザが、ローミングするか、または第2のクライアントコンピューティングデバイス35に移動するとき、ブロック54で、第2のSaaSアプリケーションセッション36は、サーバ34によって維持されている、記憶された一連のブラウザコマンドに基づいて、第1のSaaSアプリケーションセッションの状態を複製する第2のクライアントコンピューティングデバイス上の第2のブラウザ37内で実行される。図5に示される方法で終了する(ブロック55)、
【0039】
ここで図4を参照すると、SaaSローミングの別の形式では、自動移行は、ローカルブラウザのSaaSセッション(たとえば、CitrixReceiverまたはCitrixWorkspaceAppによって埋め込まれたまたは管理されたもの)と、ホスト型ブラウザの新しいセッション(たとえば、Citrix Secure Browser)との間、またはその逆の間で生じる。この移行は、SaaSアプリケーションセッションの開始時に発生するか、UX、パフォーマンス、セキュリティ、またはその他の考慮事項に応じて動的に発生する。この使用ケースでは、システム30’のクライアントコンピューティングデバイス31’が、第1のブラウザ33’内で初めて第1のSaaSアプリケーションセッション32’を実行し、および上記のように第1のブラウザによって実行された収集された一連のブラウザコマンドがサーバ34’に記憶される。第1のブラウザ33’(この例では管理型ブラウザ)から第2のブラウザ37’(この例ではホスト型ブラウザ)への移動の時期であるとき、クライアントコンピューティングデバイス31’およびサーバ34’は、記憶された一連のブラウザコマンドに基づいて新しいセッション36’を実行するために協同するが、上記のように第1のSaaSアプリケーションセッションの同じ状態を保持する。
【0040】
上記は、図6A-6Bのフロー図およびさまざまな使用ケースの例を参照して、さらに理解されるであろう。この議論の目的のために、特に断りのない限り、ユーザは(図3のように)異なるクライアントデバイス間を移動していると想定される。しかしながら、これらの同じアクションまたはステップは、(図4に示されるように)同じクライアントデバイス上でのブラウザ移動に適用されることが理解されるであろう。第1のクライアントデバイス31上の第1のSaaSアプリケーションセッションインスタンス32に関して、ブロック61から開始して、ユーザは、第1のブラウザ33において、目的のSaaSアプリケーションを認証して起動する(ブロック62)。第1のブラウザ33は、この例では、CitrixReceiverのChromiumBrowserEngine又はCitrixWorkspaceAppなどの管理型ブラウザである。第1の管理型ブラウザ33は、たとえば、ブラウザフック、スタブ、またはプロキシ要素を適用して、さまざまなアクションを実行する。これらは、管理型ブラウザおよびロードされたHTMLページでのユーザクションを記録することを含む。より具体的には、他の関連情報に加えて、アクションタイプ、位置、ブラウザ制御またはHTMLタグに対する相対的な方向、ならびにアクションの相対的な時間などの情報が取得される。
【0041】
ブラウザコマンドの取得には、第1の管理型ブラウザ33でのHTTP要求と応答の記録がさらに含まれる。例として、これらは、HTTPメソッド、URI、ホスト、パス、本文、ヘッダのみならず、要求と応答の相対時間を含む。さらに他の例では、これらは、REST API呼び出し、JavaScriptコマンドなどを含む。
【0042】
いくつかの実施形態では、ブラウザコマンドでキャプチャされた記録された状態は、シリアル化されたフォーマットで記憶され、第1のSaaSアプリケーションセッション32と同じ状態を有する第2のSaaSアプリケーションセッション36を作成するときに順次再生される。シリアル化された形式は、ユーザクション、HTTP要求と応答、SaaSアプリケーションIDなどを含む。1例によれば、これは、記録された状態をJSONでシリアル化することによって達成できるが、情報を後で共有して順次再生できるようにする他のアプローチも使用できる。ブロック63で、シリアル化された記録状態は、サーバ34などの安全な共有場所に記憶できる。たとえば、これは、認証されたユーザのコンテキストでCitrix ShareFileを使用して実行できるが、他の適切なアプローチも使用できる。
【0043】
場合によっては、ブロック64で、ユーザは、第1のSaaSアプリケーションセッション32を閉じることがある。たとえば、ユーザは、SaaSアプリケーションをホストしているタブの管理型ブラウザ33を閉じることができ、または管理型ブラウザを実行しているプログラム(CitrixReceiverまたはWorkspaceAppなど)を閉じる。SaaSアプリケーションでの作業を「閉じる」または破棄する他の直感的な形式も存在する。これが発生すると、一連のブラウザコマンドがサーバ34および/またはローカルストレージからクリアまたは消去され(ブロック65)、図解された方法を終了する(ブロック66)。
【0044】
ブロック67で、ユーザが第1のデバイス31から第2のデバイス35にローミングするとき、ユーザは、第2のブラウザ内の同じSaaSアプリケーション37の第2のSaaSアプリセッション36を認証して起動できる。一実施例によれば、管理型ブラウザ37を含むCitrixReceiverまたはCitrixWorkspaceAppの第2のインスタンスを呼び出すことができる。移行は、ローカルブラウザ(たとえば、CitrixReceiverまたはCitrixWorkspace Appによって埋め込まれたまたは管理されたもの)のSaaSセッションと、ホスト型ブラウザ(Citrix Secure Browserなど)の新しいセッションとの間、またはその逆の間でも発生することがある。上記のように、これは異なるデバイス間、または同じクライアントデバイス上の異なるブラウザ間で発生することがある。いくつかの実施形態では、拡張UXを提供するために、認証トークンはまた、クロスデバイスシングルサインオン(SSO)のために共有されるが、これは、すべての実施形態で行われる必要はない。
【0045】
第2のデバイス35上の第2のSaaSアプリケーションセッションインスタンス36に関して、ブロック68で、第2のブラウザ37は、適切なブラウザフック、スタブ、またはプロキシ要素を適用して、第1のSaaSアプリケーションセッション32の状態を再現(recreate)する。より具体的には、これは、SaaSアプリケーションIDに基づいて、シリアル化された記録状態を取得することを含む。一例によれば、この状態データは、認証されたユーザのコンテキストにおいてCitrixShareFileから取得できる。さらに、ネットワークアクティビティは、オプションで、以前のブラウザコマンドが再実行されて、第1のSaaSアプリケーションセッション32の状態が再作成されている間、第2のコンピューティングデバイス35のために中断される。特に、ユーザクションは、順次、再生または実行される。ユーザが、例えば、テキストのスクロールまたはチェックボックスの選択など、ブラウザコントロールまたはローカルHTMLを操作するだけの場合、それ以上のアクションは不要であり、クライアントデバイスのローカルユーザエージェントがそのような更新の実行を処理できる。
【0046】
一方、第1のSaaSアプリケーションセッション32内のユーザクションが、HTTPリクエストなどのより複雑なプロセスをトリガーする場合、ブロック69で、そのような要求を再生するとき、さまざまなオプションが存在する。まず、サーバ34(または、いくつかの実施形態では、Citrix Receiverなどのローカルエージェント)は、記録された状態を見て一致するリクエストを探す。例として、リクエストマッチングは、HTTPメソッド、URI、ホスト、パス、本文、ヘッダなど、またはこれらのアプローチの組み合わせに基づいて実行できる。場合によっては、同じリクエストの複数のバージョンが見つかることがある。その場合、リクエストの相対的なタイミングを使用して適切な応答を選択できる。一致するHTTPリクエストが見つかった場合、ブロック70で、リクエストをターゲットホストに転送する代わりに、記録された状態からの応答が再生される。
【0047】
HTTPリクエストの記録された状態が存在しない場合、ブロック71で、リクエストは、適切なターゲットホストに再送信される。より具体的には、応答が返されるまでネットワークアクティビティを一時的に許可することによって、リクエストがターゲットホストに行くことを許可される。これが適切である可能性がある別の例は、応答の変更が発生した場合である。より具体的には、第1のクライアントコンピューティングデバイス31上のデータ損失防止(DLP)ポリシーがそのアクセスを拒否することになるが、第2のクライアントコンピューティングデバイス上のDLPポリシー35はそのようなアクセスを許可すると、第2のSaaSアプリケーションセッション36を開始するとき、同じリクエストがターゲットホストに行くことが許可される。
【0048】
オプションで、比較的タイミングの近い要求の場合、サービス応答は、ブラウザコマンドの元の相対的なタイミングに基づいてシリアル化できる。これは、特定の一連の応答が予想される場合に、さまざまなユーザエージェントおよびマルチスレッドページレンダリングに関する潜在的な問題を回避するために行うことができる。ただし、これにより、応答の再生が比例して遅延することがある。
【0049】
記録されたすべてのユーザクション(つまり、ブラウザコマンド)が使い果たされると、ターゲットホストへの通常のHTTP処理とともに第2のクライアントコンピューティングデバイス35のネットワークアクティビティが再開される場合がある。第1のSaaSアプリケーションセッション32の状態は、そのとき第2のSaaSアプリケーションセッション36で再作成され、および、SaaSアプリケーションの状態に追加するための、第2のブラウザ37からのブラウザコマンドのさらなる記録は、第1のSaaSセッションインスタンス32と同じように実行される。すなわち、プロセスは、上記のように、同じデバイス上の別のブラウザに、又は異なるクライアントコンピューティングデバイス上の別のブラウザに、移動し続けることができ、必要に応じて無期限に続けることができる。
【0050】
いくつかの実施形態では、ユーザは、彼または彼女が第1のSaaSアプリケーションセッション状態を再生(reproduce)することを望むかどうかに関して選択を与えられる。たとえば、ユーザは、ブロック72-73で、第2のSaaSアプリケーションを起動した直後に次の間で選択肢を与えられ、新しく開始する(ブロック74)、または、ブロック75で、中断したところから(つまり、第1のSaaSアプリケーションセッションの状態から)続行する。前者の場合、サーバ34に記憶された記録状態は、リセットされてよい。
【0051】
いくつかの実施例では、HTMLページを識別するメタデータ、それらのタグ、および特定のフィールドへのユーザ入力(テキストなど)などのデータが、第1のSaaSアプリケーションセッション32中に記録されてよい。次に、第2のSaaSアプリケーションセッションインスタンス36において、およびユーザがそれぞれのコンテキストにいる間(たとえば、同じまたは類似のフォームに記入するなど)、以前に記録されたユーザ入力データは、ブロック76で、自動的にまたはユーザに再生するように提案することによって再生してよい。例えば、このことは、テキストをフィールドに貼り付けること、または、「クリップボードのブロブ」を表示して、ユーザが手動でコピーして貼り付けること、ができるようにすることを含む。そのため、ユーザは、情報を明示的にコピーして貼り付ける必要がなく(完全自動実施の場合)、または、ユーザは、少なくとも、ローミングの前に情報を事前にコピーする必要がない(提案的な実施の場合)。いくつかの実施形態では、そのような入力データは、上記の他のすべてのブラウザコマンド(例えば、HTML/TXP)を記録せずに記録および移動されて、ユーザ入力データの状態をそれ自体で再作成し、それにより、SaaSアプリケーションセッション32からの部分的な状態の移動を提供することができる。別の言い方をすれば、そのような実施形態では、SaaSアプリケーション状態の一部のみが移動され、ユーザは、必要に応じて、残りのコンテキストを「手動で」再構築できる。
【0052】
上記のアプローチは、さまざまな形式のローミングでSaaSアプリケーションのライブ状態の移動を有利に提供する。たとえば、これらは、クライアントエンドポイント間のデバイス間ローミング、およびローカルクライアントデバイスブラウザとホスト型セキュアブラウザサービスとの間のローミングを含む。例えば、1つの使用例では、ローカルUX、パフォーマンス、セキュリティなどのニーズのバランスをとるために、ローカルフォールバックとリモートフォールバックとの間に、CitrixReceiverまたは埋め込み型ブラウザを備えたCitrixWorkspaceAppによって調整できる。したがって、上記のアプローチは、新しい各SaaSアプリケーションセッションにおいてコンテキストを再構築するための反復ステップの実行を回避するのに役立つことによって、SaaSアプリケーションセッションローミングのさまざまな形式でのSaaSアプリケーションを備えた生産性とUXを向上させることができる。
【0053】
ここで、図7図9および図10のフロー図150、160に示されるように、コンピューティングシステムの実施例に戻ると、例えば、異なるフォームファクタ(ネイティブ、埋め込み/ローカル、ホスト/セキュア)へのブラウザ間の高速切り替えを目的として、SaaGアプリケーションセッションを並行して実行するための別のアプローチが提供される。図3-図6Bを参照して上記で説明した状態の再現(recreation)アプローチは、SaaSアプリケーションのローミングケースとローカルでホストされる移行ケースの両方を処理する。ただし、状況によっては、状態の再現に時間がかかることがあり、例えば、記録された状態が時間の経過とともに大きくなる場合など、UXに遅延が生じることがある。次のアプローチでは、ネイティブローカルでホストされる移行を実質的に瞬時に実行できる。
【0054】
ブロック151から開始し、コンピュータシステム130は、例示的に上記と同様に、第1のブラウザ133内(ブロック152)でSaaSサービス(SaaSサーバ139として表される)からの第1のSaaSアプリケーションセッション132を実行するように構成されたクライアントコンピューティングデバイス131を含む。サーバ134は(これは上記で説明したようなサーバ34に似ている)、ブロック153で、第1のSaaSアプリケーションセッションの状態をミラーリングする第2のブラウザ内の第2のSaaSアプリケーションセッションを実行するために、クライアントコンピューティングデバイス131と協同する。上記で説明したように、第1のブラウザ133は、例えば、ローカルブラウザまたは埋め込み型ブラウザでよいが、第2のブラウザは、ホスト型ブラウザ(例えば、サーバ134によって仮想セッションで実行される)でよく、または以下でさらに説明するように、別のクライアントコンピューティングデバイスで実行されるローカルブラウザまたは埋め込み型ブラウザでよい。第2のブラウザは、第2のブラウザが、第1のブラウザと並行して実行され、および、第1のブラウザによって実行されているのと同じブラウザコマンドを実行するという点において、第1のブラウザ133をミラーリングする。すなわち、ブラウザコマンドは、上記のように、第1のブラウザ133によって取得され、そして、第1のブラウザと同じシーケンスでおよび実質的にリアルタイムで実行されるように、サーバ134に対して通信される。
【0055】
ただし、第1のブラウザ133と並行して第2のブラウザを実行する場合に存在する潜在的な問題は、第2のブラウザによって生成される重複したアウトバウンドトラフィックのトラフィックである。例えば、支払いトランザクションが第1のSaaSアプリケーションセッション内で実行されている場合、第2のSaaSアプリケーションセッションで同じ支払いトランザクションをミラーリングすると、ユーザによる二重支払いが望ましくない結果になる。そのため、サーバ134は、ブロック154で、第1のSaaSアプリケーションセッション132によって生成されたデータトラフィックを有利にSaaSサーバ139へ転送する一方で、第2のSaaSアプリケーションによって生成されたトラフィックがSaaSサーバに渡されるのをブロックする。これは、図10の方法を例示的に終了する(ブロック155)。
【0056】
一例の実施によれば、ユーザアクションは、「ジョイントセッション」の一部としてのユーザ入力インジェクションの安全なペアリングを通じて、第1のブラウザおよび第2のブラウザの両方に対して並列および非同期で再生される。より具体的には、第1および第2のブラウザ133,137の両方からのネットワークトラフィックは、ジョイントセッション識別子(ID)に属するものとしてタグ付けされる。プロキシ(例えば、Citrix Secure Gateway)は、通常、第1および第2のブラウザインスタンスの両方からの全てのトラフィックを、バックエンドSaaSアプリケーションサービスに向けて送る(channel)ようにする。ただし、並行して動作する第2のブラウザとのジョイント(joint)セッションの場合、プロキシ(ここではサーバ134)は、第1のブラウザ133からのトラフィックをSaaSサーバ139に渡すようにするが、例えば、トランザクションが2回実行されないように、第2のブラウザ137からのトラフィックをブロックする。ただし、SaaSアプリケーションサーバ139からの応答は、プロキシサーバ134によって多重化/複製され、および、第1および第2のブラウザ133,137の両方に配信される。
【0057】
上記は、図8および図9の例、および、図11のフロー図160を参照して、さらに理解されるであろう。ブロック161から開始し、クライアントコンピューティングデバイス131は、第1のブラウザ133内(ブロック162)の第1のSaaSアプリケーションセッショ132を実行する第1のクライアントコンピューティングデバイスであり、および、第2のクライアントコンピューティングデバイス135は、第2のブラウザ137内の第2のSaaSアプリケーションセッション136を実行するように、サーバ134と協同する。さらに、第1のSaaSアプリケーションセッション132は、図8に示される時間における1次セッションであり、および第2のSaaSアプリケーションセッション136は、2次セッションであり、つまり、上記のように、1次セッションと並行してミラーリングまたはシャドウイングする。また、この例では、第1のクライアントコンピューティングデバイス131のユーザは、例えば、モバイルデバイス(例えば、スマートフォン又はタブレットコンピュータ)からラップトップまたはデスクトップコンピュータに又はそれとは逆に、移行するなどによって、第2のクライアントコンピューティングデバイス135に移行またはローミングする。しかしながら、ローミングは、異なる実施形態におけるクライアントデバイスの他の組み合わせ間において発生する。
【0058】
この例では、ブロック163で、図3図6Aを参照して上記説明したように、データベース140などにおいて、サーバ134は、第1のSaaSアプリケーションセッション132において、第1のブラウザ133によって実行される一連のブラウザコマンドを記憶する。サーバ134は、第1のSaaSアプリケーションセッション132の状態を複製するために、その記憶されている一連のブラウザコマンドに基づいて、第2のブラウザ137内の第2のSaaSアプリケーションセッション136を開始する。従って、このアプローチは、図3を参照して説明したアプローチと、図7を参照して説明したミラーリングされたアプローチとの間のハイブリッドと見なすことができる。すなわち、移動またはローミングが要求されたとき(ブロック164-165)、第2のSaaSアプリケーションセッション136は、第1のSaaSアプリケーションセッション132のブラウザコマンド履歴(例えば、コマンドを順番に実行する)に基づいて、最初に確立される。
【0059】
その後、第2のSaaSアプリケーションセッションで第1のSaaSアプリケーションセッションと同じ状態を維持するように、第2のSaaSアプリケーションセッション136は、第1のSaaSアプリケーションセッション132のブラウザコマンドのミラーリングを開始し、および、必要に応じて(ブロック166-167)、例えば、サーバ134は、オプションで、第1のSaaSアプリケーションセッションからのブラウザコマンドの記憶を中止する。これにより、図11の例示的な方法は終了する(ブロック168)。さらに、第2のSaaSアプリケーションセッション136が実行された後、ユーザが、第2のクライアントコンピューティングデバイス135に移行して第1のクライアントコンピューティングデバイス131を使用しなくなったなどの場合には、第2のSaaSアプリケーションセッション136が1次セッションになり、および第1のSaaSアプリケーションセッションが2次(ミラーリングされた)セッションとなる。
【0060】
そのため、ハイブリッドアプローチは、状態の記録および状態の再現のアプローチから始まり、その後、並列状態アプローチに移行する。一例の使用ケースによれば、ユーザは、第1のクライアントコンピューティングデバイス131(例:タブレットコンピュータ)上の第1のブラウザ133において第1のSaaSアプリケーションセッション132を開始する。サーバ134は、ブラウザコマンドを介してSaaSアプリケーションの状態の記録を開始するために、第1のクライアントコンピューティングデバイス131と協同する。その後、ユーザは、例えば、彼または彼女のデスクトップ、ワークスペースハブ(WSH)、または別の共有/キオスクデバイスの第2のクライアントコンピューティングデバイス135に近づく。例えば、近接検出(ビーコンなど)に基づいて、第1のクライアントコンピューティングデバイス131は、第2のクライアントコンピューティングデバイス135とサイレントペアリングし、および第2のブラウザ137においてSaaSアプリケーションの状態の再現を開始するように指示する。ただし、この時点で、第2のSaaSアプリケーションセッション136は、サイレント/非表示モードで動作しているため、第2のクライアントコンピューティングデバイス135には表示されていない。
【0061】
その状態が再作成されると、第1のクライアントコンピューティングデバイス131は、サーバ134を介して、第2のクライアントコンピューティングデバイス135において並列状態のアプローチを開始する。ユーザがさらに近づく/到着すると、ユーザは、例えばWSHおよびその大型モニタなどの第2のクライアントコンピューティングデバイス135に切り替えるか又はキャストするかを決定する。この時点で、第2のクライアントコンピューティングデバイス135上で、第2のSaaSアプリケーションセッションまたはインスタンス136が提示/公開され、第1のクライアントコンピューティングデバイス131から第2のクライアントコンピューティングデバイス135へ、瞬間的な移行(高速スイッチング)が効果的に行われる。さらに、第2のクライアントコンピューティングデバイス135が1次デバイスになり、その一方で、第1のクライアントコンピューティングデバイス131が2次デバイスになる。その後、第1のクライアントコンピューティングデバイス131上の第1のSaaSアプリケーションセッション132は、非表示になる。
【0062】
並列状態の方法は、第1および第2のクライアントコンピューティングデバイス131,135がペアリングしている限り継続できる。ただし、ある時点で、例えば、第1のクライアントコンピューティングデバイスが距離の増加などのためにペアリングされていない間、第2のクライアントコンピューティングデバイス135が、アクティブに使用されているデスクトップのままでいるなどの場合には、第1のクライアントコンピューティングデバイス131は、シャドウまたは2次SaaSアプリケーションセッションの動作を停止することがある。このハイブリッドアプローチの利点は、第1のSaaSアプリケーションセッション132の最初からペアリングされていない可能性のあるクライアントコンピューティングデバイス間の高速SaaSアプリケーションセッション移行を保証するのに役立つことである。ただし、必要に応じて、ペアリングまたはローミング/キャストされるようにしてよい。言い換えれば、第2のクライアントコンピューティングデバイス135は、事前に「プライミング」をしてから、適切なタイミングで予想される高速スイッチングに備えておくようにしてよい。
【0063】
本発明の多くの修正および他の実施形態は、前述の説明および関連する図面に提示された教示の利益を有する当業者に浮かぶであろう。したがって、本発明は、開示された特定の実施形態に限定されるべきではなく、修正および他の実施形態は、添付の特許請求の範囲内に含まれることを意図されていることが理解される。
図1
図2
図3
図4
図5
図6A
図6B
図7
図8
図9
図10
図11
【国際調査報告】