JP2021528766A - ネットワーク化されたコンテンツの仲介検索 - Google Patents

ネットワーク化されたコンテンツの仲介検索 Download PDF

Info

Publication number
JP2021528766A
JP2021528766A JP2020571613A JP2020571613A JP2021528766A JP 2021528766 A JP2021528766 A JP 2021528766A JP 2020571613 A JP2020571613 A JP 2020571613A JP 2020571613 A JP2020571613 A JP 2020571613A JP 2021528766 A JP2021528766 A JP 2021528766A
Authority
JP
Japan
Prior art keywords
computing device
instruction
web page
application
session
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Ceased
Application number
JP2020571613A
Other languages
English (en)
Inventor
コレスニコフ,ユーリー
Original Assignee
サイトリックス システムズ,インコーポレイテッド
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by サイトリックス システムズ,インコーポレイテッド filed Critical サイトリックス システムズ,インコーポレイテッド
Publication of JP2021528766A publication Critical patent/JP2021528766A/ja
Ceased legal-status Critical Current

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/02Protocols based on web technology, e.g. hypertext transfer protocol [HTTP]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/95Retrieval from the web
    • G06F16/954Navigation, e.g. using categorised browsing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/95Retrieval from the web
    • G06F16/957Browsing optimisation, e.g. caching or content distillation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/56Provisioning of proxy services

Landscapes

  • Engineering & Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Radar, Positioning & Navigation (AREA)
  • Remote Sensing (AREA)
  • Information Transfer Between Computers (AREA)

Abstract

【課題】リモートコンピューティングデバイスを介して、タブ付きウェブブラウジングをクライアントコンピューティングデバイスに提供することができる方法、システム、コンピュータ可読媒体及び装置を提供する。
【解決手段】リモートコンピューティングデバイス410は、複数のセッションを含む。セッションは、ウェブブラウザ実行可能形式のインスタンスを含む。クライアントコンピューティングデバイス420は、表示アプリケーションでウェブブラウザ実行可能形式に対応する出力を表示する。リモートコンピューティングデバイス410は、クライアントコンピューティングデバイス420から、表示アプリケーションとは異なるアプリケーションを介して、新規なウェブページの指示を受信する。リモートコンピューティングデバイス410は、ウェブブラウザにウェブブラウザ実行可能形式で新規なタブに新規なウェブページを表示させることができる。
【選択図】図4

Description

本発明の態様は、コンピュータのハードウェア及び/またはソフトウェアに関する。特に、本発明の1つ以上の態様は、概して広域ネットワーク上のウェブページなどのコンテンツを検索してアクセスするためのコンピュータハードウェア及びソフトウェアに関する。
インターネットを閲覧するときに、ユーザは頻繁に多数のウェブページにアクセスする。同時に開かれた複数のウェブページは、ウェブブラウザ実行可能形式の同じインスタンスの様々なタブとして表すことができる。これらのタブを用いて、ユーザは、以前のウェブサイトを閉じることなく、現在開いているウェブページから別の現在開いているウェブページに表示を切り替えることができる。
ユーザは、リモートサーバ上の仮想ウェブブラウジングセッションを使用してウェブページを閲覧することがよくある。リモートサーバは、クライアントコンピューティングデバイスで実行することができるものと同一または類似のウェブブラウジングアプリケーションを実行することができる。リモートサーバは、コンピューティングデバイスにウェブブラウジングアプリケーションのビデオとオーディオフィードを送信して、コンピューティングデバイスを介してユーザから入力コマンドを受信することができる。ユーザは、このことにより、クライアントコンピューティングデバイス上で、リモートサーバを介して、自分が直接クライアントコンピューティングデバイス上のウェブページを閲覧することができるのと同様の方法でウェブページを閲覧することができる。これによって、より高速で、より安全なブラウジングサービスをユーザに提供することができ、例えば、認証証明書などのプライベートコンテンツは、比較的安全性の低いクライアントコンピューティングデバイスではなく、安全なリモートサーバに保持することができる。
しかし、リモートサーバのリモート性によって、例えば、一度に多数のウェブサイトを閲覧することが困難になるという面もある。多くのリモートサーバ実装において、異なるウェブページはリモートサーバ上の異なるセッションに開かれる可能性があり、それは計算機的に無駄が多く、ユーザが管理するのが困難な場合がある。
以下は、本明細書で説明される様々な態様の簡略化された概要を提示する。この概要は、広範囲な概説ではなく、主要な要素もしくは重要な要素を識別すること、または特許請求の範囲を記述することを意図していない。以下の概要は、以下で提供される更なる詳細な説明への導入的な前置きとして簡略化された形式において一部の概念を提示するにすぎない。
本開示の態様は、リモートウェブブラウジングセッションで複数のウェブブラウザタブを受信及び処理する方法を提供する。
リモートコンピューティングデバイスは、クライアントコンピューティングデバイスに、セッションを提供することができる。リモートコンピューティングデバイスは、セッションを使用して、ウェブブラウザプログラムを実行し、ネットワークを介してクライアントコンピューティングデバイスから入力を受信し、及び/またはネットワークを介してクライアントコンピューティングデバイスにウェブブラウザプログラムに対応する出力を提供することができる。リモートコンピューティングデバイスは、命令を受信して新規なウェブページを開くように構成することができる。命令は、クライアントコンピューティングデバイス、リモートコンピューティングデバイスの別のセッション、またはプロキシなどの別のコンピューティングデバイスからのものであり得る。命令は、新規なウェブページがウェブブラウザプログラムの新規なタブ及び/またはリモートコンピューティングデバイス上の新規なセッションで開かれることを指示することができる。命令は、リモートコンピューティングデバイス上で実行されているヘルパーアプリケーションによって受信することができ、ヘルパーアプリケーションは、命令に対応するセッションを決定することができる。リモートコンピューティングデバイスは、命令に基づいて、セッションのウェブブラウザプログラムで新規なウェブページを開くように構成することができる。
これらの詳細及び他の特徴は、添付図面及び下記の説明において記載される。他の特徴及び利点は、説明及び図面、ならびに請求項から明らかになる。
本開示のこれら及び他の特徴、態様及び利点は、以下の説明、請求項及び図面を参照してよりよく理解されるであろう。本開示は、例証として例示されており、同様の数字が同様の要素を示す添付の図面に限定はされない。
本明細書で説明される1つ以上の例示的な態様に従って使用することができる例示的なコンピュータシステムアーキテクチャを示す。 本明細書で説明される1つ以上の例示的な態様に従って使用することができる例示的なリモートアクセスシステムアーキテクチャを示す。 本明細書で説明される1つ以上の例示的な態様に従って使用することができる例示的な仮想化(ハイパーバイザ)システムアーキテクチャを示す。 リモートコンピューティングデバイス及びクライアントコンピューティングデバイスを含む例示的なブロック図を示す。 リモートコンピューティングデバイスによって実行することができるフローチャートである。 クライアントコンピューティングデバイスによって実行することができる例示的なメニューアプリケーションを示す。
様々な実施形態の以下の説明では、上記で特定され、本明細書の一部を形成する添付図面が参照され、添付図面では、本明細書で説明される態様を実施することができる様々な実施形態を例として示している。本明細書で説明される範囲を逸脱することなく、他の実施形態が利用されてもよく、構造的及び機能的な修正が行われてもよいことを理解されたい。様々な態様は、他の実施形態を行うことができ、様々な異なる方法で実践または実行が可能である。
本明細書で使用されている表現及び用語は、説明を目的としており、限定的なものと見なすべきでないことも理解されたい。むしろ、本明細書で使用される語句及び用語は、それらの最も広い解釈及び意味を与えられるべきである。「including(含む)」、「comprising(含む)」、及びこれらの変形の使用は、その後に列挙される項目及びそれらの等価物、並びに、追加の項目及びそれらの等価物を包含することを意味する。「取り付けられた」、「接続された」、「結合された」、「配置された」、「係合された」という用語及び同様の用語の使用は、直接的な及び間接的な取り付け、接続、結合、配置、及び係合の両方を含むことを意味する。
図1は、本明細書で説明される1つ以上の例示的な態様をスタンドアロン及び/またはネットワーク環境において実装するために使用することができるシステムアーキテクチャ及びデータ処理デバイスの一例を示す。コンピュータソフトウェア、ハードウェア、及びネットワークは、スタンドアロン、ネットワーク、リモートアクセス(リモートデスクトップの別名でも知られる)、仮想、及び/または、クラウドベースの環境等を含む、様々な異なるシステム環境で利用されてもよい。データサーバ103、ウェブサーバ105、及びクライアントコンピュータ107を含むデバイスは、インターネットなどの広域ネットワーク(WAN)101を介して相互接続することができる。プライベートイントラネット、企業ネットワーク、ローカルエリアネットワーク(LAN)、メトロポリタンエリアネットワーク(MAN)、ワイヤレスネットワーク、パーソナルエリアネットワーク(PAN)等、他のネットワークも追加または代替として使用されてもよい。WAN101は、例示を目的としたものであり、より少ないまたは追加のコンピュータネットワークで置き換えられてもよい。ローカルエリアネットワーク143は、任意の既知のLANトポロジの1つ以上を有してもよく、イーサネット等の様々な異なるプロトコルの1つ以上を使用してもよい。データサーバ103、ウェブサーバ105及びクライアントコンピュータ107を含むデバイスは、ツイストペア線、同軸ケーブル、光ファイバ、電波、または他の通信媒体を介してネットワークの1つ以上に接続されてもよい。
本明細書で使用され、図面に示される用語「ネットワーク」は、リモートストレージデバイスが1つ以上の通信パスを介して共に結合されるシステムだけでなく、記憶機能を有するそのようなシステムに随時結合することができるスタンドアロンデバイスも指す。したがって、用語「ネットワーク」は、「物理ネットワーク」だけでなく、全ての物理ネットワークにわたって存在する(単一のエンティティに起因する)データから構成される「コンテンツネットワーク」も含む。
コンポーネントは、データサーバ103、ウェブサーバ105、及びクライアントコンピュータ107、109を含み得る。データサーバ103は、本明細書で説明される1つ以上の例示的な態様を実行するためのデータベース及び制御ソフトウェアの全体的なアクセス、制御、及び管理を提供することができる。データサーバ103は、ウェブサーバ105に接続されてもよく、ウェブサーバ105を通じて、ユーザは要求に応じてデータと対話し、データを取得することができる。加えて、または、代わりに、データサーバ103は、それ自体がウェブサーバとして機能し、インターネットに直接接続されてもよい。データサーバ103は、ローカルエリアネットワーク143、WAN101(例えば、インターネット)を介して、直接もしくは間接接続を介して、または他の何らかのネットワークを介して、ウェブサーバ105に接続されてもよい。ユーザは、クライアントコンピュータ107、109を使用して、例えば、ウェブサーバ105によってホストされる1つ以上の外部に公開されたウェブサイトを介してデータサーバ103に接続するウェブブラウザを使用して、データサーバ103と対話してもよい。クライアントコンピュータ107、109は、データサーバ103に記憶されたデータにアクセスするためにデータサーバ103と協力して使用されてもよく、または、他の目的のために使用されてもよい。例えば、ユーザは、クライアントコンピューティングデバイス107を介して、当技術分野で知られているように、インターネットブラウザを使用して、または、(インターネット等の)コンピュータネットワークを介してウェブサーバ105及び/またはデータサーバ103と通信するソフトウェアアプリケーションを実行することによって、ウェブサーバ105にアクセスしてもよい。
サーバ及びアプリケーションは、同一の物理マシン上で組み合わされてもよく、別個の仮想アドレスもしくは論理アドレスを保持してもよく、または別個の物理マシン上に常駐してもよい。図1は、使用することができるネットワークアーキテクチャの一例を示しているにすぎず、当業者は、本明細書で更に説明されるように、使用される特定のネットワークアーキテクチャ及びデータ処理デバイスは変わってもよく、それらが提供する機能に依存することを理解されよう。例えば、ウェブサーバ105及びデータサーバ103によって提供されるサービスは、単一のサーバ上で組み合わされてもよい。
各データサーバ103、ウェブサーバ105及びクライアントコンピュータ107、109は、任意のタイプの既知のコンピュータ、サーバ、またはデータ処理デバイスであってもよい。データサーバ103は、例えば、データサーバ103の全体的な動作を制御するプロセッサ111を含んでもよい。データサーバ103は更に、ランダムアクセスメモリ(RAM)113、リードオンリメモリ(ROM)115、ネットワークインタフェース117、入力/出力インタフェース119(例えば、キーボード、マウス、ディスプレイ、プリンタ等)、及びメモリ121を含んでもよい。入力/出力(I/O)119は、データまたはファイルの読み出し、書き込み、表示、及び/または印刷のための様々なインタフェースユニット及びドライブを含んでもよい。メモリ121は、データサーバ103の全体的な動作を制御するオペレーティングシステムソフトウェア123、データサーバ103に本明細書で説明される態様を実行するように命令する制御ロジック125、並びに二次的な機能性、サポート機能性、及び/または本明細書で説明される態様と併せて使用されてもよく、もしくは使用されなくてもよい他の機能性を提供する他のアプリケーションソフトウェア127を更に記憶してもよい。制御ロジック125は、本明細書ではデータサーバソフトウェアと呼ぶこともある。データサーバソフトウェアの機能性は、制御ロジックにコード化されたルールに基づいて自動的に行われた操作もしくは決定、システムに入力を提供するユーザによって手動で行われた操作もしくは決定、及び/またはユーザ入力に基づく自動処理の組み合わせ(クエリ、データ更新等)を指してもよい。
メモリ121はまた、第1のデータベース129及び第2のデータベース141を含む、本明細書で説明される1つ以上の態様の実行において使用されるデータを記憶してもよい。第1のデータベースは、(例えば、別個のテーブル、レポート等として)第2のデータベースを含んでもよい。つまり、情報は、システム設計に応じて、単一のデータベースに記憶でき、または、異なる論理データベース、仮想データベース、もしくは物理データベースに分離できる。データサーバ103、ウェブサーバ105及び/またはクライアントコンピュータ107、109は、データサーバ103について説明したものと同様であるかまたは異なるアーキテクチャを有してもよい。当業者は、本明細書で説明されるデータサーバ103(または、デバイス105、107及び/または109)の機能性が、例えば、複数のコンピュータにわたって処理負荷を分散し、地理的位置、ユーザアクセスレベル、サービス品質(QoS)などに基づいてトランザクションを分けるよう、複数のデータ処理デバイスにわたって展開されてもよいことを理解されよう。
1つ以上の態様は、本明細書で説明される1つ以上のコンピュータまたは他のデバイスによって実行される、1つ以上のプログラムモジュール等、コンピュータ使用可能もしくは可読データ、及び/またはコンピュータ実行可能命令において具体化されてもよい。一般に、プログラムモジュールは、コンピュータまたは他のデバイスのプロセッサで実行されると、特定のタスクを実行する、または、特定の抽象的なデータタイプを実装する、ルーチン、プログラム、オブジェクト、コンポーネント、データ構造等を含む。モジュールは、実行のために後にコンパイルされるソースコードプログラミング言語において記述されてもよく、またはハイパーテキストマークアップ言語(HTML)もしくは拡張マークアップ言語(XML)など(それらに限定されない)のスクリプト言語において記述されてもよい。コンピュータ実行可能命令は、不揮発性記憶装置等のコンピュータ可読媒体に記憶されてもよい。ハードディスク、コンパクトディスク、光学記憶装置、磁気記憶装置、及び/またはそれらの任意の組み合わせを含む、任意の適切なコンピュータ可読記憶媒体が利用されてもよい。加えて、本明細書で説明されるデータまたはイベントを表す様々な伝送(非記憶)媒体は、金属線、光ファイバ、及び/または無線伝送媒体(例えば、空気及び/または空間)等、信号伝播媒体を通じて移動する電磁波の形式において、送信元と宛先の間で伝達されてもよい。本明細書に記載する様々な態様は、方法、データ処理システム、またはコンピュータプログラム製品として具体化されてもよい。したがって、様々な機能が、ソフトウェア、ファームウェア、及び/または、集積回路、フィールドプログラマブルゲートアレイ(FPGA)等のハードウェアもしくはハードウェア同等物の形で全体的または部分的に具体化されてもよい。特定のデータ構造を使用して、本明細書に記載する1つ以上の態様をより効果的に実装してもよく、そのようなデータ構造は、本明細書に記載するコンピュータ実行可能命令及びコンピュータ使用可能データの範囲内で企図される。
更に図2を参照して、本明細書で説明される1つ以上の態様は、リモートアクセス環境において実装されてもよい。図2は、本明細書に記載する1つ以上の例示的な態様に従って使用され得るコンピューティング環境200内のコンピューティングデバイス201を含む例示的なシステムアーキテクチャを示す。コンピューティングデバイス201は、クライアントアクセスデバイスに仮想マシンを提供するように構成された単一サーバまたはマルチサーバのデスクトップ仮想化システム(例えば、リモートアクセスまたはクラウドシステム)のサーバ(例えば、サーバ206a)として使用されてもよい。コンピューティングデバイス201は、RAM205、ROM207、入力/出力(I/O)モジュール209、及びメモリ215を含む、サーバ及びその関連コンポーネントの全体的な動作を制御するためのプロセッサ203を有してもよい。
I/Oモジュール209は、コンピューティングデバイス201のユーザが入力を提供し得るマウス、キーパッド、タッチスクリーン、スキャナ、光学式リーダ、及び/またはスタイラス(または他の入力デバイス(複数可))を含んでもよく、また、音声出力を提供するためのスピーカの1つ以上と、テキスト、オーディオビジュアル、及び/またはグラフィカル出力を提供するためのビデオディスプレイデバイスの1つ以上も含んでもよい。本明細書に記載する様々な機能を実行するために、コンピューティングデバイス201を専用コンピューティングデバイスに構成する命令をプロセッサ203に提供するソフトウェアがメモリ215及び/または他のストレージ内に記憶されてもよい。例えば、メモリ215は、オペレーティングシステム217、アプリケーションプログラム219、及び関連するデータベース221等、コンピューティングデバイス201によって使用されるソフトウェアを記憶してもよい。
コンピューティングデバイス201は、端末240(クライアントコンピューティングデバイスとも呼ばれる)等の1つ以上のリモートコンピュータへの接続をサポートするネットワーク環境において動作してもよい。端末240は、前述した要素の多くまたは全てを含むパーソナルコンピュータ、モバイルデバイス、ラップトップコンピュータ、タブレット、またはサーバであってもよい。図2に示すネットワーク接続は、ローカルエリアネットワーク(LAN)225及び広域ネットワーク(WAN)229を含むが、他のネットワークも含んでもよい。LANネットワーキング環境で使用される場合、コンピューティングデバイス201は、ネットワークインタフェースまたはアダプタ223を介してLAN225に接続されてもよい。WANネットワーキング環境で使用される場合、コンピューティングデバイス201は、コンピュータネットワーク230(例えば、インターネット)等のWAN229を介して通信を確立するためのモデム227または他の広域ネットワークインタフェースを含んでもよい。示されているネットワーク接続は例示的なものであり、コンピュータ間の通信リンクを確立する他の手段を使用してもよいことは理解されよう。コンピューティングデバイス201及び/または端末240は、バッテリ、スピーカ、及びアンテナ(図示せず)等の他の様々なコンポーネントを含むモバイル端末(例えば、携帯電話、スマートフォン、パーソナルデジタルアシスタント(PDA)、ノートブック等)であってもよい。
本明細書で説明される態様は、他の多くの汎用または特殊目的コンピューティングシステム環境または構成により動作してもよい。本明細書で説明される態様による使用に適切であることができる他のコンピューティングシステム、環境、及び/または構成の例には、パーソナルコンピュータ、サーバコンピュータ、ハンドヘルドもしくはラップトップデバイス、マルチプロセッサシステム、マイクロプロセッサベースのシステム、セットトップボックス、プログラム可能な家電、ネットワークパーソナルコンピュータ、ミニコンピュータ、メインフレームコンピュータ、上記のシステムもしくはデバイスの任意のものを含む分散コンピューティング環境等が含まれるが、これらに限定されない。
図2に示すように、1つ以上のクライアントコンピューティングデバイス240は、1つ以上のサーバ206a〜206n(本明細書では一般に「サーバ(複数可)206」と呼ばれる)と通信してもよい。一実施形態では、コンピューティング環境200は、サーバ(複数可)206とクライアントコンピューティングデバイス240の間にインストールされたネットワークアプライアンスを含んでもよい。ネットワークアプライアンスは、クライアント/サーバ接続を管理してもよく、場合によっては、複数のサーバ206間でクライアント接続の負荷を分散できる。
クライアントコンピューティングデバイス240は、単一のクライアントコンピューティングデバイス240またはクライアントコンピューティングデバイス240の単一グループと呼ばれる場合があり、一方、サーバ(複数可)206は、単一のサーバ206またはサーバ206の単一のグループと呼ばれる場合がある。一実施形態では、単一のクライアントコンピューティングデバイス240は複数のサーバ206と通信し、別の実施形態では、単一のサーバ206は複数のクライアントコンピューティングデバイス240と通信する。更に別の実施形態では、単一のクライアントコンピューティングデバイス240は、単一のサーバ206と通信する。
クライアントコンピューティングデバイス240は、クライアントマシン(複数可)、クライアント(複数可)、クライアントコンピュータ(複数可)、クライアントコンピューティングデバイス(複数可)、クライアントコンピューティングデバイス(複数可)、ローカルマシン(複数可)、リモートマシン(複数可)、クライアントノード(複数可)、エンドポイント(複数可)、及び/またはエンドポイントノード(複数可)のいずれかによって言及できるが、これらの用語が全てではない。サーバ206は、サーバ(複数可)、リモートコンピューティングデバイス(複数可)、ローカルマシン(複数可)、リモートマシン(複数可)、サーバファーム(複数可)、及び/またはホストコンピューティングデバイス(複数可)のいずれかによって言及されてもよいが、これらの用語が全てではない。
一実施形態では、クライアントコンピューティングデバイス240は、仮想マシンであってもよい。仮想マシンは、任意の仮想マシンであってもよく、仮想マシンは、タイプ1またはタイプ2のハイパーバイザ、例えば、Citrix Systems、IBM、Vmwareによって開発されたハイパーバイザ、または任意の他のハイパーバイザによって管理される任意の仮想マシンであってもよい。一部の態様では、仮想マシンはハイパーバイザによって管理されてもよく、他の態様では、仮想マシンは、サーバ206上で実行されるハイパーバイザまたはクライアントコンピューティングデバイス240上で実行されるハイパーバイザによって管理されてもよい。
クライアントコンピューティングデバイス240は、サーバ206または他のリモートに配置されたマシン上で、リモートで実行されるアプリケーションによって生成されたアプリケーション出力を表示してもよい。クライアントコンピューティングデバイス240は、仮想マシン受信機プログラムまたはアプリケーションを実行して、アプリケーションウィンドウ、ブラウザ、または他の出力ウィンドウに出力を表示してもよい。一例では、アプリケーションはデスクトップであるが、他の例では、アプリケーションはデスクトップを生成または提示するアプリケーションである。デスクトップは、ローカル及び/またはリモートのアプリケーションを統合できるオペレーティングシステムのインスタンスにユーザインタフェースを提供するグラフィカルシェルを含んでもよい。アプリケーションは、本明細書では、オペレーティングシステムのインスタンス(及びオプションでデスクトップも)がロードされた後に実行されるプログラムである。
サーバ206は、リモートプレゼンテーションプロトコルまたは他のプログラムを使用して、クライアント上で実行されるシンクライアントまたはリモート表示アプリケーションにデータを送信して、サーバ206上で実行されるアプリケーションによって生成される表示出力を提示してもよい。シンクライアントまたはリモートディスプレイプロトコルは、以下のプロトコルのいずれかであってもよいが、これらが全てではない。すなわち、フロリダ州フォートローダーデールのCitrix Systems社が開発した独立コンピューティングアーキテクチャ(ICA)プロトコル、または、ワシントン州レドモンドのMicrosoft Corporationによって製造されたリモートデスクトッププロトコル(RDP)である。
リモートコンピューティング環境は、例えば、クラウドコンピューティング環境において、サーバ206a〜206nがサーバファームに論理的に共にグループ化されるように、2つ以上のサーバ206a〜206nを含み得る。サーバファームは、論理的に共にグループ化されながら地理的に分散しているサーバ206、または論理的に共にグループ化され、互いに近接して配置されたサーバ206を含んでもよい。サーバファーム内の地理的に分散したサーバ206a〜206nは、WAN(広域)、MAN(メトロポリタン)、またはLAN(ローカル)を使用して通信でき、異なる地理的領域は、異なる大陸、ある大陸の異なる地域、異なる国、異なる州、異なる都市、異なるキャンパス、異なる部屋、または前述の地理的位置の任意の組み合わせとして特徴付けることができる。サーバファームは、単一エンティティとして管理されてもよく、及び/または複数サーバファームを含んでもよい。
サーバファームは、類似のタイプのオペレーティングシステムプラットフォーム(例えば、WINDOWS(登録商標)、UNIX(登録商標)、LINUX、iOS、ANDROID(登録商標)、SYMBIAN等)を実行するサーバ206を含んでもよい。サーバファームは、第1のタイプのオペレーティングシステムプラットフォームを実行する1つ以上のサーバの第1のグループと、第2のタイプのオペレーティングシステムプラットフォームを実行する1つ以上のサーバの第2のグループとを含んでもよい。
サーバ206は、必要に応じて、任意のタイプのサーバとして構成されてもよく、例えば、ファイルサーバ、アプリケーションサーバ、ウェブサーバ、プロキシサーバ、アプライアンス、ネットワークアプライアンス、ゲートウェイ、アプリケーションゲートウェイ、ゲートウェイサーバ、仮想化サーバ、展開サーバ、セキュアソケット層(SSL)VPNサーバ、ファイアウォール、ウェブサーバ、アプリケーションサーバ、または、マスタアプリケーションサーバとしてのサーバ、アクティブディレクトリを実行するサーバ、または、ファイアウォール機能、アプリケーション機能、もしくは負荷分散機能を提供するアプリケーション加速プログラムを実行するサーバとして構成されてもよい。他の種類のサーバも使用されてもよい。
第1のサーバ206aは、クライアントコンピューティングデバイス240から要求を受信し、要求を第2のサーバ206b(図示せず)に転送し、クライアントコンピューティングデバイス240によって生成された要求に対して第2のサーバ206b(図示せず)からの応答により応答することができる。第1のサーバ206aは、クライアントコンピューティングデバイス240に対して利用可能なアプリケーションの列挙、並びにアプリケーションの列挙内で識別されたアプリケーションをホストするサーバ206と関連付けられたアドレス情報を取得することができる。次いで、第1のサーバ206aは、ウェブインタフェースを使用してクライアントの要求に対する応答を提示し、クライアントコンピューティングデバイス240と直接通信して、識別されたアプリケーションへのアクセスをクライアントコンピューティングデバイス240に提供することができる。1つ以上のクライアントコンピューティングデバイス240及び/または1つ以上のサーバ206は、コンピュータネットワーク230、例えばWAN101を介してデータを送信してもよい。
図3は、例示的なデスクトップ仮想化システムの高レベルのアーキテクチャを示す。デスクトップ仮想化システムは、仮想デスクトップ及び/または仮想アプリケーションを1つ以上のクライアントコンピューティングデバイス240に提供するように構成された1つ以上の仮想化サーバ301を含む、単一サーバシステム、マルチサーバシステム、またはクラウドシステムであってもよい。本明細書で使用されるとき、デスクトップは、1つ以上のアプリケーションをホストすることができ、及び/または実行することができるグラフィカル環境または空間を指す。デスクトップは、ローカル及び/またはリモートのアプリケーションを統合できるオペレーティングシステムのインスタンスにユーザインタフェースを提供するグラフィカルシェルを含んでもよい。アプリケーションは、オペレーティングシステム(及びオプションでデスクトップ)のインスタンスがロードされた後に実行されるプログラムを含んでもよい。オペレーティングシステムの各インスタンスは、物理的(例えば、デバイスごとに1つのオペレーティングシステム)または仮想的(例えば、単一のデバイスで実行されているOSの多くのインスタンス)であってもよい。各アプリケーションはローカルデバイス上で実行されてもよく、リモート配置されたデバイス上で実行(例えば、リモート化)されてもよい。
仮想化サーバ301は、仮想化環境、例えば、単一サーバ、マルチサーバまたはクラウドコンピューティング環境におけるコンピューティングデバイスでもよい。図3に図示される仮想化サーバ301は、図2で例示されるサーバ206及び/または他の既知のコンピューティングデバイスとして展開され、及び/またはそれらによって実装され得る。仮想化サーバ301には、1つ以上の物理ディスク304、1つ以上の物理デバイス306、1つ以上の物理プロセッサ308、及び1つ以上の物理メモリ316を含むことができるハードウェア層が含まれる。ファームウェア312は、物理メモリ316のメモリ素子内に記憶されてもよく、物理プロセッサ308の1つ以上によって実行されてもよい。仮想化サーバ301は、オペレーティングシステム314を更に含んでもよく、オペレーティングシステム314は、物理メモリ316内のメモリ素子に記憶されてもよく、物理プロセッサ308の1つ以上によって実行されてもよい。ハイパーバイザ302は、物理メモリ316内のメモリ素子に記憶されてもよく、物理プロセッサ308のうちの1つ以上によって実行されてもよい。
物理プロセッサ308のうちの1つ以上で実行するのは、1つ以上の仮想マシン332A〜332C(全体的に、332)であってもよい。各仮想マシン332は、仮想ディスク326A〜326C及び/または仮想プロセッサ328A〜328Cを有してもよい。例えば、第1の仮想マシン332Aは、仮想プロセッサ328Aを使用して、ツールスタック324を含む制御プログラム320を実行してもよい。制御プログラム320は、制御仮想マシン、Dom0、ドメイン0、またはシステム管理及び/または制御に使用される他の仮想マシンを指してもよい。1つ以上の仮想マシン332B〜332Cは、仮想プロセッサ328B〜328Cを使用して、オペレーティングシステム330A〜330B(ゲストオペレーティングシステムとしても知られる)を実行することができる。
仮想化サーバ301は、仮想化サーバ301と通信するハードウェアのうちの1つ以上の部分を有するハードウェア層310を含んでもよい。ハードウェア層310は、1つ以上の物理ディスク304、1つ以上の物理デバイス306、1つ以上の物理プロセッサ308、及び1つ以上の物理メモリ316を含むことができる。物理コンポーネント、例えば、1つ以上の物理ディスク304、1つ以上の物理デバイス306、1つ以上の物理プロセッサ308、及び/または1つ以上の物理メモリ316は、例えば、上記のコンポーネントのいずれかを含むことができる。物理デバイス306は、例えば、ネットワークインタフェースカード、ビデオカード、キーボード、マウス、入力デバイス、モニタ、ディスプレイデバイス、スピーカ、光学ドライブ、ストレージデバイス、ユニバーサルシリアルバス接続、プリンタ、スキャナ、ネットワーク要素(例えば、ルータ、ファイアウォール、ネットワークアドレストランスレータ、ロードバランサ、仮想プライベートネットワーク(VPN)ゲートウェイ、動的ホスト構成プロトコル(DHCP)ルータ等)、または、仮想化サーバ301に接続または通信する任意のデバイスを含んでもよい。ハードウェア層310内の物理メモリ316は、任意のタイプのメモリを含んでもよい。物理メモリ316は、データを記憶してもよく、1つ以上のプログラム、または実行可能命令のセットを記憶してもよい。ファームウェア312は、仮想化サーバ301の物理メモリ316の中に記憶されてもよい。物理メモリ316に記憶されたプログラムまたは実行可能命令は、仮想化サーバ301の1つ以上のプロセッサによって実行されてもよい。
仮想化サーバ301は、ハイパーバイザ302を含むこともできる。ハイパーバイザ302は、任意の数の仮想マシン332を作成及び管理するために仮想化サーバ301上の物理プロセッサ308によって実行されるプログラムであってもよい。ハイパーバイザ302は、仮想マシンモニタまたはプラットフォーム仮想化ソフトウェアと呼ばれる場合がある。ハイパーバイザ302は、実行可能命令と、コンピューティングマシン上で実行されている仮想マシンを監視するハードウェアとの任意の組み合わせであってもよい。ハイパーバイザ302は、タイプ2ハイパーバイザであってもよく、この場合、ハイパーバイザは、仮想化サーバ301上で実行されるオペレーティングシステム314内で実行される。その後、仮想マシンはハイパーバイザより上のレベルで実行してもよい。タイプ2ハイパーバイザは、タイプ2ハイパーバイザがユーザのオペレーティングシステムと対話するように、ユーザのオペレーティングシステムのコンテキスト内で実行されてもよい。加えて、または、代わりに、仮想化環境内の1つ以上の仮想化サーバ301は代わりに、タイプ1ハイパーバイザ(図示せず)を含んでもよい。タイプ1ハイパーバイザは、ハードウェア層310内のハードウェア及びリソースに直接アクセスすることにより、仮想化サーバ301上で実行されてもよい。すなわち、図に示すように、タイプ2ハイパーバイザ302は、オペレーティングシステム314を介してシステムリソースにアクセスするが、タイプ1ハイパーバイザは、オペレーティングシステム314無しで全てのシステムリソースに直接アクセスしてもよい。タイプ1ハイパーバイザは、仮想化サーバ301の1つ以上の物理プロセッサ308で直接実行されてもよく、物理メモリ316に記憶されたプログラムデータを含んでもよい。
ハイパーバイザ302は、システムリソースに直接アクセスするオペレーティングシステム330または制御プログラム320をシミュレーションする任意の方法で、仮想マシン332上で実行されるオペレーティングシステム330または制御プログラム320に仮想リソースを提供できる。システムリソースは、仮想化サーバ301及び/またはハードウェア層310に含まれる物理デバイス306、物理ディスク304、物理プロセッサ308、物理メモリ316、及び任意の他のコンポーネントを含むことができるが、これらに限定されない。ハイパーバイザ302を使用して、仮想ハードウェアのエミュレート、物理ハードウェアの分割、物理ハードウェアの仮想化、及び/またはコンピューティング環境へのアクセスを提供する仮想マシンの実行を行ってもよい。加えて、または、代わりに、ハイパーバイザ302は、仮想化サーバ301上で実行される仮想マシン332のプロセッサスケジューリング及びメモリ分割を制御してもよい。ハイパーバイザ302は、カリフォルニア州パロアルトのVMWare社によって製造されるハイパーバイザ、オープンソースのXenProject.orgコミュニティによって開発が監督されているオープンソース製品であるXENPROJECTハイパーバイザ、Microsoft社によって提供されるHyperV、VirtualServer、または仮想PCハイパーバイザ等を含んでもよい。仮想化サーバ301は、ゲストオペレーティングシステムが実行し得る仮想マシンプラットフォームを作成するハイパーバイザ302を実行してもよい。仮想化サーバ301は、ホストサーバと呼ばれてもよい。そのような仮想化サーバの例は、フロリダ州フォートローダーデールのCitrix Systems社が提供するXENSERVERである。
ハイパーバイザ302は、ゲストオペレーティングシステム330が実行される1つ以上の仮想マシン332B〜332C(全体的に332)を作成してもよい。ハイパーバイザ302は、仮想マシンイメージをロードして、仮想マシン332を作成してもよい。加えて、または、代わりに、ハイパーバイザ302は、仮想マシン332内でゲストオペレーティングシステム330を実行してもよい。加えて、または、代わりに仮想マシン332は、ゲストオペレーティングシステム330を実行してもよい。
仮想マシン332を作成することに加えて、ハイパーバイザ302は、1つ以上の仮想マシン332の実行を制御してもよい。ハイパーバイザ302は、仮想化サーバ301によって提供される1つ以上のハードウェアリソース(例えば、ハードウェア層310内で利用可能な任意のハードウェアリソース)の抽象化を1つ以上の仮想マシン332に提示してもよい。ハイパーバイザ302は、仮想マシン332が仮想化サーバ301において利用可能な物理プロセッサ308にアクセスする方法を制御してもよい。物理プロセッサ308へのアクセスの制御は、仮想マシン332がプロセッサ308にアクセスを有すべきか否か、及び物理プロセッサ機能が仮想マシン332にどのように提示されるかを決定することを含んでもよい。
図3に示すように、仮想化サーバ301は、1つ以上の仮想マシン332をホストするかまたは実行してもよい。仮想マシン332は、実行可能命令のセットであり、実行可能命令のセットは、プロセッサによって実行されると、物理コンピュータの動作を模倣して、仮想マシン332が物理コンピューティングデバイスのようにプログラム及びプロセスを実行できるようにする。図3は、仮想化サーバ301が3つの仮想マシン332をホストする実施形態を示す。仮想化サーバ301は、任意の数の仮想マシン332をホストすることができる。ハイパーバイザ302は、各仮想マシン332に、その仮想マシン332が利用可能な物理ハードウェア、メモリ、プロセッサ、及び他のシステムリソースの一意の仮想ビューを提供してもよい。一意の仮想ビューは、仮想マシンのパーミッション、1つ以上の仮想マシン識別子へのポリシーエンジンの適用、仮想マシンにアクセスするユーザ、仮想マシンで実行するアプリケーション、仮想マシンによってアクセスされるネットワーク、または任意の他の所望の基準のうちの1つ以上に基づくことができる。例えば、ハイパーバイザ302は、1つ以上の安全でない仮想マシン及び1つ以上の安全な仮想マシンを作成してもよい。安全な仮想マシンがアクセスすることを許可され得るリソース、ハードウェア、メモリ位置、及びプログラムに、安全でない仮想マシンがアクセスすることを防止してもよい。加えて、または、代わりに、ハイパーバイザ302は、仮想マシン332に対して利用可能な物理ハードウェア、メモリ、プロセッサ、及び他のシステムリソースの同様の仮想ビューを各仮想マシン332に提供してもよい。
各仮想マシン332は、仮想ディスク326A〜326C(全体的に326)及び仮想プロセッサ328A〜328C(全体的に328)を含んでもよい。仮想ディスク326は、仮想化サーバ301の1つ以上の物理ディスク304の仮想化ビュー、または仮想化サーバ301の1つ以上の物理ディスク304の一部の仮想化ビューであってもよい。物理ディスク304の仮想化ビューは、ハイパーバイザ302によって生成、提供、及び管理することができる。ハイパーバイザ302は、各仮想マシン332に物理ディスク304の一意のビューを提供してもよい。したがって、各仮想マシン332に含まれる仮想ディスク326は、他の仮想ディスク326と比較されるときに一意であってもよい。
仮想プロセッサ328は、仮想化サーバ301の1つ以上の物理プロセッサ308の仮想化ビューであってもよい。物理プロセッサ308の仮想化ビューは、ハイパーバイザ302によって生成、提供、及び管理することができる。仮想プロセッサ328は、1つ以上の物理プロセッサ308と同じ特性のいくつかまたはすべてを有することができる。加えて、または、代わりに、仮想プロセッサ328は、仮想プロセッサ328の特性の少なくとも一部が対応する物理プロセッサ308の特性とは異なるように、物理プロセッサ308の修正されたビューを提供する。
図4は、リモートコンピューティングデバイス及び複数のクライアントコンピューティングデバイスの簡略ブロック図を示す。リモートコンピューティングデバイス410は、1つ以上のセッション411.1〜n及び/またはヘルパーアプリケーション440を含むことができる。各セッションは、1つ以上のウェブブラウザアプリケーション412.1〜nを含むことができる。リモートコンピューティングデバイス410は、例えば、ネットワーク430を介して、1つ以上のクライアントコンピューティングデバイス420.1〜nに、通信可能に結合することができる。各クライアントコンピューティングデバイスは、1つ以上の出力デバイス421.1〜n及び1つ以上の入力デバイス422.1〜nに関連付けることができる。リモートコンピューティングデバイス410は、仮想化サーバ310、データサーバ103、ウェブサーバ105、及び/またはサーバ206のすべて、複数、または一部であってもよい。セッションは、仮想マシン332A〜332Cのすべて、複数、または一部であってもよい。クライアントコンピューティングデバイス420.1〜nは、クライアントコンピュータ107、109、及び/またはクライアントコンピューティングデバイス240のすべて、複数、または一部であってもよい。リモートコンピューティングデバイス410及びクライアントコンピューティングデバイス420.1〜nは、ネットワーク430を介して接続することができ、ネットワーク430は、WAN101、LAN225、WAN229、コンピュータネットワーク230等のすべて、複数、または一部であってもよい。セッション411.1〜n、ウェブブラウザアプリケーション412.1〜n、クライアントコンピューティングデバイス420.1〜n、ディスプレイ421.1〜n及び入力デバイス422.1〜nは複数として示されているが、図3において示されているいずれの要素も、単数でも複数でもよい。
リモートコンピューティングデバイス410は、1つ以上のセッション411.1〜nを管理するように構成され得る。セッションは、仮想マシン332A〜332Cと同じであっても類似していてもよい。セッションは、ウェブブラウザアプリケーション412.1〜nなどの1つ以上のアプリケーションを含むことができる。アプリケーションは、セッションに実行することができる。各セッションは、同じサーバまたは複数のサーバによって実行されるなどによって論理的に分離することができ、任意の所与のセッションに対応するデータは、別のセッションとは分離されたメモリ、または同じメモリに格納される。セッションは、同じであるかまたは類似のアプリケーションを実行してもよい。リモートコンピューティングデバイス410上の各セッションは、1人以上のユーザに関連付けられてもよく、その結果、1人のユーザは、セッションの第1のセットにアクセスでき、別のユーザは、セッションの第2の異なるセットにアクセスでき得る。セッション411.1〜nは、保護されたものであってもよい。例えば、特にセキュリティの高いアプリケーションの場合、セッションを暗号化して、復号のためにクライアントコンピューティングデバイスに送信されてもよい。セッションは、リモートコンピューティングデバイス410によって作成または破棄されてもよい。例えば、リモートコンピューティングデバイスに接続及び/またはリモートコンピューティングデバイスによって認証されつつある新規なクライアントコンピューティングデバイスに応答して、新規なセッションがインスタンス化されてもよい。別の例として、特定のセッションに関連付けられたログオフイベントに応答して、特定のセッションが破棄されてもよい。
ウェブブラウザアプリケーション412.1〜nなどのアプリケーションは、リモートコンピューティングデバイス410上で実行するように構成された任意のコンピュータアプリケーションであってもよい。例えば、ウェブブラウザアプリケーション412.1〜nは、従来のパーソナルコンピュータ(クライアントコンピューティングデバイス420.1〜nを含む)上で実行するように構成された従来のウェブブラウザアプリケーションであってもよく、及び/またはリモートコンピューティングデバイス410上のセッションで実行するように特別に設計されていてもよい。アプリケーションは、例えば、アプリケーションをセッションで実行するように構成するように変更されてもよい。例えば、ウェブブラウザアプリケーション412.1−nは、セッションのユーザのプライバシーを保護するために、閲覧履歴を保持しないように構成されてもよい。各セッションは、グラフィカルユーザインタフェースに関連付けられてもよい。例えば、各セッションは、ユーザがアプリケーションを起動及び/または管理することを可能にし得るデスクトップ環境を含んでもよい。
ウェブブラウザアプリケーション412.1〜nは、ウェブページなどのコンテンツを検索して表示するように構成されてもよい。ウェブページは、ハイパーテキストマークアップ言語(HTML)、カスケードスタイルシート(CSS)、1つ以上の画像、オーディオ、またはビデオファイルなどの様々なフォーマットのコンテンツを含み得る。ウェブページは、ウェブサーバ105などのウェブサーバから取得することができる。ウェブブラウザアプリケーション412.1〜nは、そのようなコンテンツを検索し、コンテンツを処理するように構成することができ、例えば、表示のためにコンテンツを処理し、及び/または望ましくないコンテンツ(例えば、広告、安全でない要素)を削除する。次に、ウェブブラウザは、ウェブページのコンテンツの表示など、コンテンツに関連する出力を提供するように構成されてもよい。例えば、ウェブページは、HTML及びCSSコンテンツを含むことができ、その結果、リモートコンピューティングデバイス410は、最初に、CSS設計設定を考慮してHTMLを処理し、次に、ウェブブラウザアプリケーションに出力を表示し得る。表示されるコンテンツには、異なるコンテンツに関連付けられている可能性のある1つ以上のリンクが含まれている場合がある。例えば、ウェブページ内のリンクは、異なるウェブページ、ビデオファイルなどに関連付けられてもよい。リンクは、第2のコンテンツにアクセスする方法の指示であってもよい。例えば、リンクは、第2のコンテンツが新規なタブで開かれること、特定のアプリケーションまたはセッションで開かれることなどを示してもよい。
リモートコンピューティングデバイス410は、セッションで実行されるアプリケーションに関連する出力をキャプチャするように構成されてもよい。出力は、グラフィカル出力(例えば、アプリケーションウィンドウ及び/または関連するグラフィカルユーザインタフェース(GUI))、テキスト出力(例えば、テキストコンソール出力)、オーディオ出力(例えば、音声アシスタントフィードバック)等を含む、アプリケーションに関連する任意の出力を含み得る。単一のセッションで複数のアプリケーションが単一の出力を生成するように、出力をキャプチャしてもよい。例えば、出力は、同時に実行される複数のアプリケーションを含むビデオストリームを含んでもよい。別の例として、出力は、リモートコンピューティングデバイス410上のセッションにおいてウェブブラウザアプリケーション上で実行されているウェブページを表している画像を含んでもよい。
クライアントコンピューティングデバイス420.1〜nは、リモートコンピューティングデバイス410との間で入力を送信し出力を受信するように構成することができる。出力は、出力デバイス421.1〜nに提示することができ、リモートコンピューティングデバイス410に送信された入力は、入力デバイス422.1〜nから取得することができる。出力デバイス421.1〜nは、例えば、コンピュータモニタなどのディスプレイデバイス、スピーカなどのオーディオデバイスなどを含むことができる。入力デバイス422.1〜nは、例えば、キーボード、コンピュータマウス、タッチセンシティブスクリーンなどを含むことができる。新規なウェブページまたは他のコマンドの要求と同様に、入力及び出力は、プロキシなどの1つ以上の第2のコンピューティングデバイスを介して送信され得る。出力及び入力は、ネットワークの異なる部分(例えば、ネットワーク430)を使用して、及び/または異なるプロトコルを使用して送信されてもよい。例えば、URL要求は、ハイパーテキスト転送プロトコル(HTTP)及び/またはWebsocketプロトコルを介して送信されてもよいが、マウスの動きのデータは、独自のプロトコルを使用して送信されてもよい。
リモートコンピューティングデバイス410は、ネットワーク430を介してクライアントコンピューティングデバイス420.1〜nと通信することができる。リモートコンピューティングデバイス410及びクライアントコンピューティングデバイス420.1〜nが通信する方法は、例えば、セッション411.1〜n、セッション411.1〜nで実行されるアプリケーション、及び/またはクライアントコンピューティングデバイス420.1〜nの性質に依存し得る。例えば、第1のフォーマットでコマンドを受信し、コマンドを第2のフォーマットに変換するように構成された1つ以上のプロキシデバイスなどの、1つ以上の第2のコンピューティングデバイスを使用することができる。リモートコンピューティングデバイス410及びクライアントコンピューティングデバイス420.1〜nは、HTTPなどの1つ以上のプロトコルを介して通信してもよい。例えば、ウェブページのコンテンツは、ビデオストリームとして、及び/または静止画像として、クライアントコンピューティングデバイスに送信することができる。別の例として、オーディオコンテンツはパケット化され、個別のオーディオファイルとして送信されてもよい。
リモートコンピューティングデバイス410及びクライアントコンピューティングデバイス420.1〜nは、WebSocketプロトコルまたはHTTPなどの同様の通信プロトコルを使用して通信してもよい。例えば、クライアントコンピューティングデバイス420.1〜nは、リモートコンピューティングデバイス410に、セッションの指示を含むURLに対するHTTP及び/またはWebSocketの要求(例えば、「www.website.com/?remotesession=2」)を送信することによって、既存のセッションの新規なタブの要求を送信してもよい。したがって、クライアントコンピューティングデバイス420.1〜nは、タブが新規なセッションまたは既存のセッションで要求されていること、あるいはセッションがまったく開かれていることさえも知るように構成する必要はない。同様に、URLまたは他の通信方法を使用して、ウェブサイトをローカルに(例えば、クライアントコンピューティングデバイス420.1で実行されるソフトウェアにおいて)ではなく、リモートセッションで(例えば、セッション411.1で)で開く必要があることを示してもよい。例えば、クライアントコンピューティングデバイス420.2のユーザは、ヘルパーアプリケーション440によって傍受されることができるURL(例えば、「www.remotecomputingdevice.com/www.website.com/newtab/session2/」)にアクセスすることができて、リモートコンピューティングデバイス410に特定のセッション(例えばセッション411.2)の新規なタブにウェブサイト(例えば、「www.website.com」)を開かせることができる。
ヘルパーアプリケーション440は、クライアントコンピューティングデバイス4201〜nから通信のすべてまたは一部を受信して、セッション411.1〜nに関して通信を実行するように構成されたリモートコンピューティングデバイス410のすべてまたは一部上で実行しているプログラムであってもよい。一例として、ヘルパーアプリケーション440は、仮想化サーバ301、ハイパーバイザ302、オペレーティングシステム314、リモートコンピューティングデバイス410などのすべてまたは一部に関連付けられたアプリケーションプログラミングインタフェース(API)であってもよい。ヘルパーアプリケーション440は、それぞれがセッション411.1〜nの1つに関連付けられ、及び/またはその中で実行される複数のアプリケーションであってもよい。例えば、各セッションは、命令を受信するためのそれぞれのWebSocketチャネルを備えたそれぞれのヘルパーアプリケーションを有してもよい。ヘルパーアプリケーション440は、チャネル(例えば、WebSocketチャネル)を開いてクライアントコンピューティングデバイス420.1〜nから命令(例えば、新規なタブを開くための命令)を受信するように構成されてもよい。このような命令に基づいて、ヘルパーアプリケーション440は、ウェブブラウザアプリケーション412.1〜nにおいて、新規なタブを開くことができる。通信の実施は、セッション411.1〜nの1つのセッションの指示を受信することを含んでもよい。例えば、ヘルパーアプリケーション440は、クライアントコンピューティングデバイス420.1から、ウェブサイトの指示及びクライアントコンピューティングデバイス420.1からのセッションIDの指示(例えば、「www.website.com/newtab/session/1」)を含む通信を受信し、セッションの指示に対応する通信の一部(例えば、「/session/1」)を決定し、指示に対応する特定のセッション(例えば、セッション411.1)を決定し、ウェブサイト(例えば、「www.website.com」)をそのセッションの新規なタブで開くようにさせることができる。
ヘルパーアプリケーション440は、クライアントコンピューティングデバイス420.1〜n、リモートコンピューティングデバイス410、及び/またはセッション411.1〜nのいずれかによって使用される複数のプロトコルを処理するように構成されてもよい。例えば、ヘルパーアプリケーション440は、HTTPを介してクライアントコンピューティングデバイス420.1〜nからコマンドを受信し、それらのコマンドが特定のセッションの新規なタブでウェブサイトを要求することを判断し、WebSocketプロトコルを使用して、特定のセッションに新規なタブのウェブサイトを開くように指示してもよい。1つ以上の追加のコンピューティングデバイス及び/またはサービスがヘルパーアプリケーション440に関与してもよい。例えば、クライアントコンピューティングデバイス420.1〜nからすべての入力を受信するためのサービスは、入力を受信し、新規なタブの要求を示すHTTP要求のみをヘルパーアプリケーション440に送信してもよい。
ヘルパーアプリケーション440は、リモートコンピューティングデバイス410とは異なる1つ以上の第2のリモートコンピューティングデバイス上で実行されてもよい。ヘルパーアプリケーション440は、セッション(例えば、リモートコンピューティングデバイス410上で実行されるセッション)に関する情報を維持し、クライアントコンピューティングデバイス420.1〜nからの通信の全部または一部を受信し、セッション411.1〜nに関する通信を実装するように構成された外部サービスを含んでもよい。ヘルパーアプリケーション440は、プロキシを含んでもよい。例えば、1つ以上の第2のリモートコンピューティングデバイスは、第1のプロトコルを介して(例えば、HTTPまたはWebSocketを介して)、任意の他のコンピューティングデバイスからコマンドを受信し、コマンドが対応するリモートコンピューティングデバイス410上で実行している1つ以上のセッションを決定して、同一または異なるプロトコルを介して、決定された1つ以上のセッションによってコマンドを実行させることができる。したがって、本明細書において説明するように、クライアントコンピューティングデバイス420.1〜nから、及び、リモートコンピューティングデバイス410に対して送信される要求は、1つ以上の第2のリモートコンピューティングデバイスを介して送信されることができ、それは要求を解釈してリモートコンピューティングデバイスに関してそれを実行させるように構成され得る。例えば、クライアントコンピューティングデバイス420.1〜nは、第1のプロトコル(例えば、HTTP)を介して新規なウェブページに対する要求を1つ以上の第2のコンピューティングデバイスに発信するように構成されてもよく、1つ以上の第2のコンピューティングデバイスは、新規なウェブページが既存のセッションの新規なタブにおいて開かれなければならないと決定して、第2のプロトコル(例えば、WebSocket)を介して新規なタブに新規なウェブページを開く命令をセッション411.1〜nの1つに発信してもよい。
図5は、リモートコンピューティングデバイス410によって取られ得るステップを示しているフローチャートである。ステップ501において、リモートコンピューティングデバイス410は、クライアントコンピューティングデバイスから、セッションの要求を受信することができる。要求は、ウェブページの指示及び/またはウェブページが新規なタブで開かれることを望むことを含むことができるが、そうである必要はない。要求は、デフォルトセッションを開始する要求、特定のセッションで1つ以上の特定のアプリケーションを開く要求、リモートコンピューティングデバイス410上の既存のセッションにアクセスする要求などを含んでもよい。例えば、セッションに対する要求は、クライアントコンピューティングデバイスからの特定のウェブアプリケーションへのアクセスの要求を含んでもよく、リモートコンピューティングデバイス410は、ウェブアプリケーションがセッションで開かれるべきであると決定してもよい。クライアントコンピューティングデバイスのユーザは、特定のアクションがセッションの要求を含むことを知る必要はない。例えば、ローカルプログラム(例えば、クライアントコンピューティングデバイス上で実行されるもの)とリモートプログラム(例えば、リモートコンピューティングデバイス410上で実行されるもの)との間の区別は、ユーザに隠されてもよく、及び/または同じまたは類似のインタフェースを介して利用可能であってもよい。
ステップ502において、リモートコンピューティングデバイス410は、要求に対応するセッションが存在するかどうかを決定することができる。要求が既存のセッションと関連付けられている場合、要求に対応するセッションが存在する可能性がある。例えば、ラップトップコンピュータのユーザは、それらが以前デスクトップコンピュータ上でアクセスしたセッションへのアクセスを要求することがある。別の例として、リモートコンピューティングデバイス410は、多くの永続的なセッションを維持することができ、要求は永続的なセッションにおいて実行しているアプリケーションと関連付けられている場合がある。セッションのリストはデータベースに(例えば、ヘルパーアプリケーション440の全体または一部に)維持されることができ、データベースには要求に対応するセッションが存在するかどうか判定するために問い合わせることができる。要求は新規なセッションに対する要求を含んでいてもよく、及び/または既存のセッションと関連していなくてもよく、リモートコンピューティングデバイス410に新規なセッションがインスタンス化されなければならないと決定させることになる。例えば、ユーザは既存のセッションを要求することができるが、セッションは期限切れになっている場合があり、その結果、リモートコンピューティングデバイス410はユーザのための新規なセッションをインスタンス化すると決定してもよい。要求に対応するセッションが存在する場合、既存のセッションに対するアクセスはステップ503で提供することができる。そうでない場合は、新規なセッションが、ステップ504でインスタンス化され得る。ステップ504でセッションをインスタンス化することは、例えばハイパーバイザ(例えばハイパーバイザ302)を用いて新規なセッションを作成して仮想マシンを作成することができる任意のステップを含み得る。既存であるにせよ新規であるにせよ、本明細書において用いる場合、このセッションは現行セッションと呼ぶことができる。
ステップ505において、リモートコンピューティングデバイス410は、現行セッションと関連した出力を提供することができる。出力は、セッションの要求がステップ501で受信された同じクライアントコンピューティングデバイスに対するものでもよく、または、異なるクライアントコンピューティングデバイスに対するものでもよい。例えば、セッションの要求は、スマートフォンからなされてもよいが、現行セッションからの出力はパーソナルコンピュータに送信されてもよい。
ステップ506において、リモートコンピューティングデバイス410は、クライアントコンピューティングデバイスからの入力を待つことができる。入力は、リンクをクリックする、マウスを移動する、マイクロフォンから音声データを送信する等の、表示されたウェブページと関連したコマンドを含むことができる。入力は、入力デバイス422.1〜nから受信することができる。入力は、現行セッションのウェブブラウザで現在表示されているウェブサイトとのインタラクション等の、セッションを介したものであってもよい。加えて、または、代わりに、入力は、セッション外のクライアントコンピューティングデバイスで実行しているソフトウェアを介したもの、または、別のコンピューティングデバイスを介したものであってもよい。入力は、ウェブページから受信したコマンド、例えばウェブページのJavaScriptアプリケーションから促される新規なウェブページにアクセスするコマンドを含んでもよい。入力は、新規なウェブページに対する要求を含んでもよい。要求は、ウェブページのUniform Resource Locator(URL)などの新規なウェブページの指示を含む場合がある。入力は、新規なウェブページを開くことに必ずしも関連しないが、現行セッションの現在表示されているウェブページと対話する場合がある。入力が受信されない場合、リモートコンピューティングデバイスは入力を待ち続けることができる。入力は、現行セッションにアクセスしている同じクライアントコンピューティングデバイスから、異なるコンピューティングデバイスから、または、異なるセッションから受信することができる。例えば、1つのセッションでの入力は、別のセッションに、それが新規なタブの新規なウェブページを開くことを要求させる場合がある。入力が受信されると、フローチャートはステップ507に進む。
クライアントコンピューティングデバイスは、複数のアプリケーションのうちの1つを介して要求を送信することができる。要求は、リモートコンピューティングデバイス410からの出力を表示するために用いられる表示アプリケーションとは異なるアプリケーションから発信されてもよい。例えば、クライアントコンピューティングデバイスは、メニューアプリケーション及び表示アプリケーションを含むことができる。メニューアプリケーションは、ウェブページに対する要求をリモートコンピューティングデバイス410に送信するように構成することができて、リモートコンピューティングデバイス410の出力に関係なくそうすることができる。メニューアプリケーションは、例えば、興味があるウェブページへの複数のアイコンを含むことができ、メニューアプリケーションは、複数のアイコンのうちの1つのユーザ選択を受信するように構成することができる。表示アプリケーションは、リモートコンピューティングデバイス410からの出力を表示し、クライアントコンピューティングデバイスからの入力を受信するように構成することができる。このように、表示アプリケーションによってユーザが従来方式でウェブページと対話することができることができる一方で、メニューアプリケーションは、表示アプリケーションと対話することなく、表示アプリケーションの新規なタブに新規なウェブページを容易に開く能力をユーザに提供することができる。メニューアプリケーションは、表示アプリケーションとは異なるクライアントコンピューティングデバイスで実行してもよい。例えば、表示アプリケーションは、パーソナルコンピュータで実行することができるが、メニューアプリケーションはスマートフォンで実行してもよい。
要求はプロキシを介して受信することができ、プロキシは要求がリモートコンピューティングデバイス410上のセッションで実行されるとことを決定することができる。クライアントコンピューティングデバイスのユーザは、第1のウェブページを(例えば、クライアントコンピューティングデバイス上で実行されるウェブブラウザ及び/またはリモートコンピューティングデバイス410のセッションで実行されるウェブブラウザを介して)閲覧し、第2のウェブページを要求することができる。プロキシは、第2のウェブページに対する要求を受信し、要求に基づいて、その要求を、リモートコンピューティングデバイス410上の新規または既存のセッションの新規なタブの第2のウェブページに対する要求に変換することができる。一例として、クライアントコンピューティングデバイスのユーザは、クライアントコンピューティングデバイス上で直接実行されるブラウザ上の信頼できるウェブページ(例えば、信頼できる企業内イントラネットと関連付けられたウェブページ)を閲覧することができ、信頼できないウェブページ(例えば、信頼できる企業内イントラネットの外側のウェブページ)に至る信頼できるウェブページ上のリンクをクリックすることができる。プロキシ(例えば、HTTPプロキシ)は、信頼できないウェブページに対する要求を受信して、新規または既存のセッションの新規なタブにおいて開かれる要求を送信することができる。このようにして、信頼できないウェブページは新規なセッションで開かれることができて、セキュリティがよりよく制御され得る。プロキシは、リモートコンピューティングデバイス410及び/または上記の1つ以上の第2のコンピューティングデバイスの全部または一部であってもよい。プロキシは、ウェブページ(例えば、信頼できるか信頼できないウェブページ)のリストを格納するように構成することができ、受信した要求をリストと比較して、ウェブページが現行または既存のセッションの新規なタブにおいて開かれなければならないかどうかを判定することができる。
ステップ507において、リモートコンピューティングデバイス410は、入力が新規なウェブページに対する要求と関連付けられているかどうかを判定することができる。新規なウェブページは、ウェブブラウザアプリケーションで現在開いているウェブページと異なる必要はない。例えば、ユーザはまったく同じウェブページの複数のコピーを開くことを望む場合があるので、新規なウェブページに対する要求は、ウェブブラウザアプリケーションの既存のタブにおいてすでに開かれている同じページに対するものであってもよい。要求は、別のウェブサイト上のリンクをクリックすること、クライアントコンピューティングデバイス上で実行されるアプリケーションを介する要求(例えば、アプリケーションメニューの「説明のページ(Open About Page)を開く」オプション)などを含んでもよい。要求が新規なウェブページに関連付けられていない場合、フローチャートはステップ508に進むことができ、そこでコンテンツ(例えば、入力への応答)を表示することができる。要求が新規なウェブページに関連付けられている場合、フローチャートはステップ509に進むことができる。
ステップ507のものなどの入力は、1つ以上のコンピューティングデバイス及び/またはプロセスによって処理され得る。例えば、サービスは、アクティブなセッションに関連付けられた情報を格納することができ、クライアントコンピューティングデバイスから適切なセッションに入力を送信することができる。サービスは、セッション及び/またはセッションで実行されているアプリケーションが使用するコマンドを変換するように構成してもよい。例えば、ユーザは、URLのみをサービスに送信することにより、URLがセッションの新規なタブで開くように要求してもよく、サービスは、URLを処理し、それを使用して、セッションのウェブブラウザに、新規なタブを開いてそのURLをロードするように指示してもよい。
ステップ509において、リモートコンピューティングデバイス410は、要求が現行セッションの新規なタブの新規なウェブページに対するものであるかどうかを判定することができる。要求は、新規なウェブページが新規なタブにおいて開かれなければならないことを示す場合がある。例えば、ウェブページの設計者は、特定のページが新しいウェブブラウザアプリケーションウィンドウではなく新規なタブを開くことを好む場合があり、リンクは特定のウェブページが新規なタブで開かれることを示している場合がある。クライアントコンピューティングデバイスから送信された要求は、新規なウェブページが新規なタブで開かれることを示していない場合があるが、プロキシが要求を受信し、ウェブページを新規なタブで開く必要があるという指示を要求に追加してもよい。新規なタブのウェブページの要求は、セッションに現在表示されているウェブページから発信される必要はない。例えば、ユーザは、クライアントコンピューティングデバイスで実行されているメニューアプリケーションのメニューオプションを選択することができ、これにより、既存のウェブブラウザインスタンスの新規なタブのウェブページに対する要求がトリガーされてもよい。要求が新規なタブに対するものである場合、フローチャートはステップ510に進むことができる。そうでない場合は、ステップ511に進むことができる。
ステップ510において、リモートコンピューティングデバイス410は、要求されたウェブページを表示する新規なタブを、ステップ503または504からのセッションで表示させることができる。リモートコンピューティングデバイス410は、セッション内のアプリケーションに、ウェブブラウザアプリケーションを介して新規なタブを開かせてもよく、または命令をウェブブラウザアプリケーションに直接送信してもよい。セッション内のアプリケーションに新規なタブを開かせることは、例えば、セッション内のヘルパーアプリケーション(例えば、ヘルパーアプリケーション440)の全部または一部を実行することを含み得る。例えば、セッション内のタブ機能を備えた特定のウェブブラウザは、新規なタブを開くように直接指示されない場合があるため、セッション内のヘルパーアプリケーションが特定のキーストロークを実行して、ウェブブラウザに新規なタブを開かせてもよい。
ステップ511において、リモートコンピューティングデバイス410は、要求が新規なセッションに対するものであるかどうかを判定することができる。要求は、現行セッションではなく、新規なセッションでウェブページを開く必要があることを示していてもよい。新規なセッションでウェブページを開くことは、例えば、個人のウェブサイトをビジネスのウェブサイトから分離するように、特定のウェブサイトを隔離するために望ましい場合がある。要求が新規なセッションに対するものである場合、ステップ512において、リモートコンピューティングデバイス410は、新規なセッションをインスタンス化し、ウェブページが新規なセッションで開かれるようにさせることができる。
要求が新規なタブに対するものでも新規なセッションに対するものでもない場合、ステップ513で、リモートコンピューティングデバイス410は、現行セッションの既存のタブに新規なウェブページを表示することができる。新規なウェブページに対する要求は、新規なウェブページを開くための特定のタブの指示を含んでもよい。例えば、要求は、以前第3のウェブサイトを表示していた第3のタブが、現在は第4のウェブサイトを表示する必要があることを示していてもよい。
図6は、例示的なメニューアプリケーションを示す。メニューアプリケーション601は、ウェブページに対する要求をリモートコンピューティングデバイス410に送信するように構成することができ、リモートコンピューティングデバイス410の出力に関係なくそうすることができる。メニューアプリケーション601は、ウェブページリンク602a〜602dなどの複数のウェブページリンクを含むことができる。メニューアプリケーションは、例えば、スマートフォン、ウェブページなどで実行されるアプリケーションであってもよい。メニューアプリケーションは、新規または既存のセッションで新規なタブを開くプロセスを簡素化することができる。例えば、ユーザは、現在、クライアントコンピューティングデバイス上で表示アプリケーションとメニューアプリケーション601の両方を実行することができる。表示アプリケーションは第1のディスプレイ上にあってもよく、メニューアプリケーション601は第2のディスプレイ上にあってもよい。ユーザは、リモートコンピューティングデバイス410を使用して第1のウェブページを閲覧するために表示アプリケーションを使用していてもよいが、第2のウェブページで第2のタブを開くことに決めてもよい。ユーザは、メニューアプリケーション601上のウェブページリンク(例えば、ウェブページリンク602b)をクリックすることができ、メニューアプリケーション601は、リモートコンピューティングデバイス410に、新規なタブを開き、新規なタブに第2のウェブページをロードする要求を送信することができる。
ウェブページリンク(例えば、ウェブページリンク602b)は、セッション情報及び/または所与のセッションで新規なタブが要求されることの指示を送信するようにフォーマットすることができる。例えば、現行セッション(例えば、IDが42のセッション)の新規なタブでウェブブラウザのURL(例えば、「www.website.com/page/」)を開くために、メニューアプリケーション601において表されるウェブページのリンクは、URLと、URL内部のセッションIDの指示の両方を送信するようにフォーマットすることができる(例えば、「www.website.com/page/newtab/session42」)。このようなURLは、リモートコンピューティングデバイス410に、またヘルパーアプリケーション440への送信も含んで、送信することができ、それがセッションに対応するURLの一部を抽出することができる。このように、クライアントコンピューティングデバイス420.1〜nは、従来のプロトコル(例えば、HTTP、WebSocket)を使用して既存のセッションに新規なタブを要求するように構成されてもよい。
本開示の1つ以上の態様は、1つ以上のプログラムモジュール内などの、1つ以上のコンピュータまたは他のデバイスによって実行される、コンピュータ使用可能な媒体及び/またはコンピュータ実行可能命令で具体化されてもよい。一般に、プログラムモジュールは、コンピュータまたは他のデータ処理デバイスのプロセッサで実行されると、特定のタスクを実行する、または、特定の抽象的なデータタイプを実装する、ルーチン、プログラム、オブジェクト、コンポーネント、データ構造等を含む。コンピュータ実行可能命令は、ハードディスク、光ディスク、取外し可能な記憶媒体、ソリッドステートメモリ、RAMその他等の、1つ以上のコンピュータ可読媒体に記憶することができる。当業者によって理解されるように、プログラムモジュールの機能性は、様々な実施形態において必要に応じて組み合わせるかまたは分散することができる。加えて、機能性は、ファームウェアまたは、集積回路、フィールドプログラマブルゲートアレイ(「FPGA」)等のハードウェア等価物において全体的または部分的に具体化されてもよい。特定のデータ構造を使用して、本開示の1つ以上の態様をより効果的に実装してもよく、そのようなデータ構造は、本明細書に記載するコンピュータ実行可能命令及びコンピュータ使用可能データの範囲内で企図される。
本開示の態様は、例示の観点から説明されている。本開示の様々な態様を具体化する本明細書に記載の例示的なシステム及び方法が示されているが、本開示がこれらの実施形態に限定されないことは当業者によって理解されるであろう。特に前述の教示に照らして、当業者は修正を行うことができる。例えば、前述の例の特徴のそれぞれは、単独で、または他の実施例の要素と組み合わせて、またはサブコンビネーションで利用することができる。例えば、上記のシステム及び方法またはその一部のいずれかを、上記の他の方法及びシステムまたはその一部と組み合わせることができる。例えば、図に示されるステップは、記載された順序以外で実行されてもよく、そして示される1つ以上のステップは、本開示の態様に従って任意選択であり得る。また、本開示の真の精神及び範囲から逸脱することなく修正を行うことができることも認められ、理解されるであろう。したがって、この説明は、本開示を限定するのではなく、例示するものと見なされるべきである。
関連出願の相互参照
本出願は、2018年6月25日に出願された米国非仮特許出願第16/016,848号の優先権を主張し、その内容は参照によりその全体が本願明細書に明示的に援用される。

Claims (20)

  1. 方法であって、
    リモートコンピューティングデバイスによって、クライアントコンピューティングデバイスから、第1のウェブページの第1の指示を受信することと、
    前記リモートコンピューティングデバイス上のセッションをインスタンス化することであって、前記セッションはウェブブラウザのインスタンスを含み、前記ウェブブラウザの前記インスタンスは第1のタブに前記第1のウェブページを表示するように構成されている、前記インスタンス化することと、
    前記クライアントコンピューティングデバイスに、前記第1のタブと関連付けられた第1の出力を送信することであって、前記第1の出力は表示アプリケーションによって表示されるように構成されている、前記送信することと、
    前記表示アプリケーションとは異なる第2のアプリケーションから、第2のウェブページの第2の指示を受信することと、
    前記セッションにおいて、そして、前記第2の指示を受信することに基づいて、前記ウェブブラウザの第2のタブに前記第2のウェブページを表示させることと、
    前記クライアントコンピューティングデバイスに、前記第2のタブと関連付けられた第2の出力を送信することと
    を含む方法。
  2. 前記クライアントコンピューティングデバイスから、そして、前記第2のアプリケーションを介して、第3のウェブページの第3の指示を受信することであって、前記第3の指示は新規なセッションに対する要求を含む、前記受信することと、
    前記第3の指示に基づいて、前記新規なセッションをインスタンス化することであって、前記新規なセッションが前記ウェブブラウザの第2のインスタンスを含み、前記ウェブブラウザの前記第2のインスタンスは前記第3のウェブページを表示するように構成されている、前記インスタンス化することと
    を更に含む、請求項1に記載の方法。
  3. 前記クライアントコンピューティングデバイスから、そして、前記第2のアプリケーションを介して、第3のウェブページの第3の指示を受信することであって、前記第3の指示は前記ウェブブラウザの特定のタブの第4の指示を含む、前記受信することと、
    前記特定のタブに前記第3のウェブページを表示させることと
    を更に含む、請求項1に記載の方法。
  4. 第2のアプリケーションが第2のクライアントコンピューティングデバイスまたは前記リモートコンピューティングデバイス上の第2のセッション上で実行される、請求項1に記載の方法。
  5. 前記第2のウェブページの前記第2の指示がプロキシを介して受信され、前記プロキシは前記第2のアプリケーションから前記第2の指示を受信して、前記第2のウェブページの前記第2の指示を前記リモートコンピューティングデバイスに送信するように構成されている、請求項1に記載の方法。
  6. 前記第2のアプリケーションが複数のウェブページの複数の指示を含み、前記第1のウェブページの前記第1の指示を受信することは前記複数の指示からの前記第1の指示のユーザ選択に応答するものである、請求項1に記載の方法。
  7. 前記クライアントコンピューティングデバイスから、前記第1のタブの指示を受信することと、
    前記クライアントコンピューティングデバイスに、前記第1のタブと関連付けられた出力を送信することと
    を更に含む、請求項1に記載の方法。
  8. 前記セッションが前記第2のウェブページに対する前記第2の指示を受信するように構成されているヘルパーアプリケーションを含み、前記ヘルパーアプリケーションは前記ウェブブラウザに、前記第2のタブに前記第2のウェブページを開かせる、請求項1に記載の方法。
  9. 前記第1の指示及び前記第2の指示がハイパーテキストトランスファープロトコル(HTTP)を介して受信される、請求項1に記載の方法。
  10. 装置であって、
    1つ以上のプロセッサと、
    前記1つ以上のプロセッサによって実行されると、前記装置に、
    クライアントコンピューティングデバイスから第1のウェブページの第1の指示を受信することと、
    セッションをインスタンス化することであって、前記セッションはウェブブラウザのインスタンスを含み、前記ウェブブラウザの前記インスタンスは第1のタブに前記第1のウェブページを表示するように構成されている、前記インスタンス化することと、
    前記クライアントコンピューティングデバイスに、前記第1のタブと関連付けられた第1の出力を送信することであって、前記第1の出力は表示アプリケーションによって表示されるように構成されている、前記送信することと、
    前記表示アプリケーションとは異なる第2のアプリケーションから、第2のウェブページの第2の指示を受信することと、
    前記セッションにおいて、かつ、前記第2の指示を受信することに基づいて、前記ウェブブラウザの第2のタブに前記第2のウェブページを表示させることと、
    前記クライアントコンピューティングデバイスに、前記第2のタブと関連付けられた第2の出力を送信することと
    を行わせる各命令を格納しているメモリと
    を含む、前記装置。
  11. 前記命令が、前記1つ以上のプロセッサによって実行されると、前記装置に、
    前記クライアントコンピューティングデバイスから、そして、前記第2のアプリケーションを介して、第3のウェブページの第3の指示を受信することであって、前記第3の指示は新規なセッションに対する要求を含む、前記受信することと、
    前記第3の指示に基づいて、前記新規なセッションをインスタンス化することであって、前記新規なセッションが前記ウェブブラウザの第2のインスタンスを含み、前記ウェブブラウザの前記第2のインスタンスは前記第3のウェブページを表示するように構成されている、前記インスタンス化することと
    を更に行わせる、請求項10に記載の装置。
  12. 前記命令が、前記1つ以上のプロセッサによって実行されると、前記装置に、
    前記クライアントコンピューティングデバイスから、そして、前記第2のアプリケーションを介して、第3のウェブページの第3の指示を受信することであって、前記第3の指示は前記ウェブブラウザの特定のタブの第4の指示を含む、前記受信することと、
    前記特定のタブに前記第3のウェブページを表示させることと
    を更に行わせる、請求項10に記載の装置。
  13. 前記第2のアプリケーションが第2のクライアントコンピューティングデバイス上で実行される、請求項10に記載の装置。
  14. 前記第2のアプリケーションが前記装置上の第2のセッションで実行される、請求項10に記載の装置。
  15. 前記第2のアプリケーションが複数のウェブページの複数の指示を含み、前記第1のウェブページの前記第1の指示を受信することは前記複数の指示からの前記第1の指示のユーザ選択に応答するものである、請求項10に記載の装置。
  16. リモートコンピューティングデバイスと、
    クライアントコンピューティングデバイスと
    を含むシステムであって、
    前記クライアントコンピューティングデバイスは、
    前記リモートコンピューティングデバイスに、かつ、メニューアプリケーションを介して、第1のウェブページの第1の指示を送信することと、
    前記リモートコンピューティングデバイスに、かつ、前記メニューアプリケーションを介して、第2のウェブページの第2の指示を送信することと
    を行うように構成されており、
    前記リモートコンピューティングデバイスは、
    前記第1の指示を受信することと、
    セッションをインスタンス化することであって、前記セッションはウェブブラウザのインスタンスを含み、前記ウェブブラウザの前記インスタンスは第1のタブに前記第1のウェブページを表示するように構成されている、前記インスタンス化することと、
    前記クライアントコンピューティングデバイスに、前記第1のタブと関連付けられた第1の出力を送信することであって、前記第1の出力は前記メニューアプリケーションとは異なる表示アプリケーションによって表示されるように構成されている、前記送信することと、
    前記第2の指示を受信することと、
    前記セッションにおいて、かつ、前記第2の指示を受信することに基づいて、前記ウェブブラウザの第2のタブに前記第2のウェブページを表示させることと、
    前記クライアントコンピューティングデバイスに、前記第2のタブと関連付けられた第2の出力を送信することと
    を行うように構成されている、
    前記システム。
  17. 前記リモートコンピューティングデバイスが、
    前記クライアントコンピューティングデバイスから、そして、前記メニューアプリケーションを介して、第3のウェブページの第3の指示を受信することであって、前記第3の指示は新規なセッションに対する要求を含む、前記受信することと、
    前記第3の指示に基づいて、前記新規なセッションをインスタンス化することであって、前記新規なセッションが前記ウェブブラウザの第2のインスタンスを含み、前記ウェブブラウザの前記第2のインスタンスは前記第3のウェブページを表示するように構成されている、前記インスタンス化することと
    を行うように更に構成されている、請求項16に記載のシステム。
  18. 前記リモートコンピューティングデバイスが、
    前記クライアントコンピューティングデバイスから、かつ、前記メニューアプリケーションを介して、第3のウェブページの第3の指示を受信することであって、前記第3の指示は前記ウェブブラウザの特定のタブの第4の指示を含む、前記受信することと、
    前記特定のタブに前記第3のウェブページを表示させることと
    を行うように更に構成されている、請求項16に記載のシステム。
  19. 前記メニューアプリケーションが第2のクライアントコンピューティングデバイス上で実行される、請求項16に記載のシステム。
  20. 前記メニューアプリケーションが前記リモートコンピューティングデバイス上の第2のセッションで実行される、請求項16に記載のシステム。
JP2020571613A 2018-06-25 2019-06-24 ネットワーク化されたコンテンツの仲介検索 Ceased JP2021528766A (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US16/016,848 2018-06-25
US16/016,848 US20190394255A1 (en) 2018-06-25 2018-06-25 Intermediated retrieval of networked content
PCT/US2019/038647 WO2020005794A1 (en) 2018-06-25 2019-06-24 Intermediated retrieval of networked content

Publications (1)

Publication Number Publication Date
JP2021528766A true JP2021528766A (ja) 2021-10-21

Family

ID=67470623

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2020571613A Ceased JP2021528766A (ja) 2018-06-25 2019-06-24 ネットワーク化されたコンテンツの仲介検索

Country Status (7)

Country Link
US (1) US20190394255A1 (ja)
EP (1) EP3811240A1 (ja)
JP (1) JP2021528766A (ja)
CN (1) CN112334893A (ja)
AU (1) AU2019294343B2 (ja)
CA (1) CA3104125A1 (ja)
WO (1) WO2020005794A1 (ja)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11838299B2 (en) * 2019-03-25 2023-12-05 Zscaler, Inc. Cloud-based web content processing system providing client threat isolation and data integrity
US11968179B2 (en) * 2016-05-18 2024-04-23 Zscaler, Inc. Private application access with browser isolation
US11368373B2 (en) * 2020-06-16 2022-06-21 Citrix Systems, Inc. Invoking microapp actions from user applications
US11405433B1 (en) * 2021-06-29 2022-08-02 Microsoft Technology Licensing, Llc Collaborative browsing
US12040977B1 (en) 2023-06-13 2024-07-16 Zscaler, Inc. Systems and methods for providing secure software-as-a-service (SaaS) access from unmanaged devices

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2015506522A (ja) * 2012-02-05 2015-03-02 アップル インコーポレイテッド アレイモードを使用したブラウザ内でのコンテンツアイテム間のナビゲート方法
JP2016146206A (ja) * 2011-08-26 2016-08-12 アマゾン テクノロジーズ インコーポレイテッド 遠隔ブラウジングセッション管理
WO2017205239A1 (en) * 2016-05-23 2017-11-30 Citrix Systems, Inc. Virtual browser integration

Family Cites Families (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6981041B2 (en) * 2000-04-13 2005-12-27 Aep Networks, Inc. Apparatus and accompanying methods for providing, through a centralized server site, an integrated virtual office environment, remotely accessible via a network-connected web browser, with remote network monitoring and management capabilities
US7673233B2 (en) * 2005-09-08 2010-03-02 Microsoft Corporation Browser tab management
US8650494B1 (en) * 2010-03-31 2014-02-11 Google Inc. Remote control of a computing device
US8866701B2 (en) * 2011-03-03 2014-10-21 Citrix Systems, Inc. Transparent user interface integration between local and remote computing environments
CN103748583B (zh) * 2011-06-30 2017-07-07 亚马逊技术有限公司 远程浏览会话管理
US8577963B2 (en) * 2011-06-30 2013-11-05 Amazon Technologies, Inc. Remote browsing session between client browser and network based browser
US9009334B1 (en) * 2011-12-09 2015-04-14 Amazon Technologies, Inc. Remote browsing session management
US8627195B1 (en) * 2012-01-26 2014-01-07 Amazon Technologies, Inc. Remote browsing and searching
US9183258B1 (en) * 2012-02-10 2015-11-10 Amazon Technologies, Inc. Behavior based processing of content
US9137210B1 (en) * 2012-02-21 2015-09-15 Amazon Technologies, Inc. Remote browsing session management
US9197505B1 (en) * 2012-02-22 2015-11-24 Amazon Technologies, Inc. Managing network connections for processing network resources
KR20180080338A (ko) * 2012-07-19 2018-07-11 글랜스 네트웍스, 인크 다른 형태의 정보 공유를 통한 코브라우징의 통합
WO2014033554A2 (en) * 2012-08-15 2014-03-06 Calgary Scientific Inc. Methods and systems for collaborative browsing
US20140108496A1 (en) * 2012-10-11 2014-04-17 Browsium, Inc. Systems and methods for browser redirection and navigation control
US11048858B2 (en) * 2012-11-21 2021-06-29 Roofoveryourhead Marketing Ltd. Browser extension for the collection and distribution of data and methods of use thereof
US9569004B2 (en) * 2013-08-22 2017-02-14 Google Inc. Swipe toolbar to switch tabs
US9658747B2 (en) * 2013-10-01 2017-05-23 Microsoft Technology Licensing, Llc Virtual tabs supporting web content suspension
US9749202B1 (en) * 2014-02-13 2017-08-29 Amazon Technologies, Inc. Remote session preview management
RU2637882C2 (ru) * 2015-03-31 2017-12-07 Общество С Ограниченной Ответственностью "Яндекс" Способ управления отображением веб-ресурсов в браузерном окне, способ помещения вкладок в стек в браузерном окне, электронное устройство и сервер
US11082499B2 (en) * 2015-10-19 2021-08-03 Citrix Systems, Inc. Browser server session transfer
US10333975B2 (en) * 2016-12-06 2019-06-25 Vmware, Inc. Enhanced computing system security using a secure browser
US10409634B2 (en) * 2017-04-19 2019-09-10 Microsoft Technology Licensing, Llc Surfacing task-related applications in a heterogeneous tab environment

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2016146206A (ja) * 2011-08-26 2016-08-12 アマゾン テクノロジーズ インコーポレイテッド 遠隔ブラウジングセッション管理
JP2015506522A (ja) * 2012-02-05 2015-03-02 アップル インコーポレイテッド アレイモードを使用したブラウザ内でのコンテンツアイテム間のナビゲート方法
WO2017205239A1 (en) * 2016-05-23 2017-11-30 Citrix Systems, Inc. Virtual browser integration

Also Published As

Publication number Publication date
US20190394255A1 (en) 2019-12-26
WO2020005794A1 (en) 2020-01-02
CA3104125A1 (en) 2020-01-02
AU2019294343B2 (en) 2022-08-11
EP3811240A1 (en) 2021-04-28
AU2019294343A1 (en) 2021-02-11
CN112334893A (zh) 2021-02-05

Similar Documents

Publication Publication Date Title
CN107925685B (zh) 用于安全网页浏览的重定向器
US11108845B2 (en) Rendering a web application in a cloud service
JP2021528766A (ja) ネットワーク化されたコンテンツの仲介検索
US20210072868A1 (en) Content Redirection via Remote Session
US20180373568A1 (en) Automatic Workflow-Based Device Switching
US20230328147A1 (en) Smart notification system
US11675964B2 (en) Management of remote access user application layouts
US11892931B2 (en) Change delivery and performance of applications based on displayed image quality
US20240004685A1 (en) Virtual Machine Managing System Using Snapshot
US20230275954A1 (en) Remote browser session presentation with local browser tabs
US11770436B2 (en) Web client with response latency awareness
WO2022261830A1 (en) Mechanisms for secure user input
US20220035933A1 (en) Enhanced Security Mechanism for File Access
JP2023027733A (ja) リモートアプリケーションのためのテキスト入力の同期
US11997156B2 (en) Scan functionality for virtual sessions
WO2024060133A1 (en) Dynamic sharing of web-content
US12124418B2 (en) Systems and methods for application access
EP4303744A1 (en) User interface activation in a secure network system
US20220083517A1 (en) Systems and Methods for Application Access
WO2024045000A1 (en) Application-based clipboard isolation and sharing
WO2024065315A1 (en) History synchronization service and protection extension
US20230055406A1 (en) Input method editor for remote applications
US11226850B2 (en) Scenario based multiple applications on-screen

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20210119

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20220317

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20220602

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20221006

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20221216

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20230209

A045 Written measure of dismissal of application [lapsed due to lack of payment]

Free format text: JAPANESE INTERMEDIATE CODE: A045

Effective date: 20230629