JP2015520436A - ウェブクライアントがウェブサービスを提供するのを可能にすること - Google Patents

ウェブクライアントがウェブサービスを提供するのを可能にすること Download PDF

Info

Publication number
JP2015520436A
JP2015520436A JP2015505889A JP2015505889A JP2015520436A JP 2015520436 A JP2015520436 A JP 2015520436A JP 2015505889 A JP2015505889 A JP 2015505889A JP 2015505889 A JP2015505889 A JP 2015505889A JP 2015520436 A JP2015520436 A JP 2015520436A
Authority
JP
Japan
Prior art keywords
web
client
service
browser
http
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.)
Pending
Application number
JP2015505889A
Other languages
English (en)
Other versions
JP2015520436A5 (ja
Inventor
ティー. カウフマン,マシュー
ティー. カウフマン,マシュー
エー. コルィツキー,ヤツェク
エー. コルィツキー,ヤツェク
ラマヌジャム,ラヴィプラカシュ
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Microsoft Corp
Original Assignee
Microsoft Corp
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 Microsoft Corp filed Critical Microsoft Corp
Publication of JP2015520436A publication Critical patent/JP2015520436A/ja
Publication of JP2015520436A5 publication Critical patent/JP2015520436A5/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/02Network architectures or network communication protocols for network security for separating internal from external traffic, e.g. firewalls
    • H04L63/029Firewall traversal, e.g. tunnelling or, creating pinholes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/547Remote procedure calls [RPC]; Web services
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • 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]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/14Session management
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/14Session management
    • H04L67/146Markers for unambiguous identification of a particular session, e.g. session cookie or URL-encoding
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/541Interprogram communication via adapters, e.g. between incompatible applications

Landscapes

  • Engineering & Computer Science (AREA)
  • Signal Processing (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Computing Systems (AREA)
  • Computer Security & Cryptography (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Information Transfer Between Computers (AREA)
  • Telephonic Communication Services (AREA)
  • Computer And Data Communications (AREA)

Abstract

様々な実施形態は、ウェブクライアントがウェブサービスを提供できるようにする。1つ又は複数の実施形態において、ウェブクライアントは、サーバとして動作するように構成され、他の目的の中でも特に、ウェブクライアントによってサポートされるウェブサービスへの呼び出し及びそのウェブサービスからの呼び出しに使用され得る。そのような使用は、限定ではなく例として、ウェブクライアントへ及びウェブクライアントからメッセージをプッシュすることを含むことができる。様々な技術が標準のプロトコル及びライブライを用いることができ、いずれのカスタムコード又はカスタムプラグインも必要としない。

Description

本発明は、ウェブクライアントがウェブサービスを提供できるようにすることに関する。
ウェブサーバが互いに対するトランザクションを実行するとき、非常に一般的なプログラミングパターンは、HTTPをトランスポートとして使用することである。例えば第1のサーバが、HTTP GET要求を出して、第2のサーバに特定のリソースの表現を要求することがある。第2のサーバは次いで、リソース表現で応答することができる。サーバ間のトランザクションは、より非同期的な手法で行われる可能性もある。例えば第1のサーバは、HTTP GET要求を出して、第2のサーバが応答時に使用するリターンURLを提供することがある。しばらくして、第2のサーバは、第1のサーバによって提供されたURLを使用して、非同期的に第1のサーバへ応答を返すことができる。この処理は、サーバ間で逆に動作することも容易である。
この同じモデルを使用して、ウェブブラウザのようなクライアント側アプリケーションとサーバとの間のトランザクションは、クライアント側アプリケーションがHTTP GET要求を出して、サーバからの応答を受信することで動作することができる。しかしながら、同じことが逆の処理には当てはまらない可能性がある。特に、サーバは典型的に、HTTP GET要求やPOST要求をクライアント側アプリ―ケーション又はウェブブラウザに出すことができない。というのも、多くの理由の中でも特に、ウェブブラウザが、典型的にウェブサーバを実行しないからである。もしウェブブラウザが実行したとしても、ファイヤウォール又はネットワークアドレストランスレーション(NAT)デバイスのような他の機構は、実際に、そのようなトランザクションが行われるのを不可能にするであろう。
この「発明の概要」の記載は、以下の「発明を実施するための形態」において更に説明される概念の選択を簡略化した形で紹介するのに提供される。この「発明の概要」の記載は、特許請求される主題の主要な特徴又は本質的な特徴を特定するようには意図されていない。
様々な実施形態は、ウェブクライアントがウェブサービスを提供するのを可能にする。1つ又は複数の実施形態において、ウェブクライアントは、サーバとして動作し、他の目的の中でも特に、ウェブクライアントによってサポートされるウェブサービスへの呼び出し及びそのウェブサービスからの呼び出しに使用することができる。そのような使用は、限定ではなく例として、ウェブクライアントへ及びウェブクライアントからメッセージをプッシュすることを含むことができる。様々な技術は、標準のプロトコル及びライブラリを用いることができ、いずれのカスタムコード又はカスタムプラグインも必要としない。
1つ又は複数の実施形態において、中間サーバが、ウェブクライアントとの持続接続が確立されるインターミディアリとして機能する。インターミディアリサーバは、ウェブクライアントを、例えばウェブサービスURLのようなウェブクライアントのプレゼンス又はアドレスを使用して、世界に公開することができる。メッセージを第1のウェブクライアントに送信しようとする他のウェブクライアント(例えばブラウザベースのクライアント)は、公開されたウェブサービスURLを使用して、予め定義されたウェブサービスを呼び出すことができる。呼び出しを行うウェブクライアントは、同じインターミディアリサーバ又は異なるインターミディアリサーバのいずれかに登録して、そのウェブサービスURLを公開することもできる。第1のウェブクライアントはその後、このURLを使用して、メッセージを第2のウェブクライアントにプッシュすることができる。
発明の詳細な説明は、添付の図面を参照しながら説明される。図面において、参照符号の最も左の桁は、その参照符号か最初に現れる図面を特定する。説明及び図面の異なる例における同じ参照符号の使用は、類似又は同一のアイテムを示すことがある。図面に現れるエンティティは、1つ又は複数のエンティティを示すことがあり、したがって、議論において、単数形又は複数形のエンティティへの参照は区別せずに行われることがある。
1つ又は複数の実施形態に係る例示の実装の環境を示す図である。 1つ又は複数の実施形態に係る例示の実装の別の環境を示す図である。 1つ又は複数の実施形態に係る2つのウェブクライアントの間の通信フローを示す図である。 1つ又は複数の実施形態に係る呼び出し元と、トンネルサービスと、ウェブクライアントとの間の例示のシーケンスフローを示す図である。 1つ又は複数の実施形態に係る例示の実装のプロシージャを示すフロー図である。 本明細書で説明される技術の諸実施形態を実装するように、図1及び図2を参照して説明されるような任意のタイプのコンピューティングデバイスとして実装され得る、例示デバイスの様々なコンポーネントを含む例示のシステムを示す図である。
<概要>
様々な実施形態は、ウェブクライアントがウェブサービスを提供するのを可能にする。ウェブサービスは、指定のURLにアドレスされるHTTP要求を送信し、URL、ヘッダ及び本文を含め、HTTP要求の様々なフィールド内に入力パラメータを保持することによって、起動することができるプログラムである。次いでプログラムの計算の結果である出力パラメータが、ステータスコード、ヘッダ及び本文を含め、HTTP応答の様々なフィールド内で返される。1つ又は複数の実施形態において、ウェブクライアントは、サーバとして動作し、他の目的の中でも特に、ウェブクライアントによってサポートされるウェブサービスへの呼び出し及びそのウェブサービスからの呼び出しに使用することができる。そのような使用は、限定ではなく例として、ウェブクライアントへ及びウェブクライアントからメッセージをプッシュすることを含むことができる。様々な技術は、標準のプロトコル及びライブラリを用いることができ、カスタムコード又はカスタムプラグインを必要としない。様々な技術を、例えば標準のプロトコル及びライブラリを使用して、ブラウザへのカスタムコード又はプラグインのインストールを必要とせずに、ブラウザベースのチャットクライアントを実装するのに使用することができる。少なくとも一部の実施形態において、行われるHTTP通信の構造を修正する必要なく、標準のHTTP技術を使用することができる。
1つ又は複数の実施形態において、中間サーバが、ウェブクライアントとの持続接続が確立されるインターミディアリとして機能する。持続接続は、認定の適切な技法又は技術を使用して確立され得る。限定ではなく例として、そのような技法又は技術は、COMET、WebSocket(ウェブソケット)等を含む可能性がある。インターミディアリサーバは、ウェブクライアントを、例えばウェブサービスURLのようなウェブクライアントのプレゼンス又はアドレスを使用して、世界に公開することができる。メッセージを第1のウェブクライアントに送信しようとする他のウェブクライアント(例えばブラウザベースのクライアント)は、公開されたウェブサービスURLを使用して、予め定義されたウェブサービスを呼び出すことができる。呼び出しを行うウェブクライアントは、同じインターミディアリサーバ又は異なるインターミディアリサーバのいずれかに登録して、そのウェブサービスURLを公開することもできる。第1のウェブクライアントはその後、このURLを使用して、メッセージを第2のウェブクライアントにプッシュすることができる。
本明細書で説明される技術を、多数の実質的な使用に用いることができる。例えば様々な実施形態は、標準のウェブサービス技術を使用してブラウザベースのクライアントの実装を可能にすることができる。ブラウザは、いずれのプラグインのインストールも要さずに、ウェブサービスを呼び出すことができるので、ブラウザクライアントは、非常に軽量になるように設計されることが可能であり、ウェブブラウザを有する任意のデバイス上で動作することが可能である。したがって、様々な柔軟な使用シナリオを提供することができる。加えて、本明細書で説明される技術は、ブラウザベースでないシナリオに対しても幅広く適用可能であり得る。例えば本技術を、限定ではなく例として組み込みデバイスを含む、任意の適切に構成されるデバイスによって用いることができる。例えばそのような組み込みデバイスは、「スマートホーム」や「スマートオフィス」シナリオのような様々なシナリオで用いることが可能な形式をとることができ、上記のような「スマートホーム」又は「スマートオフィス」シナリオでは、例えばライトのスイッチのようなデバイスを組み込みデバイスとして構成し、本明細書で説明されるようにウェブサービスを提示して使用することができる。
以下の議論では、最初に、本明細書で説明される技術を用いることができる例示の環境を説明する。次いで、例示のプロシージャを説明するが、この例示のプロシージャは、例示の環境だけでなく他の環境において実行されてもよい。したがって、例示のプロシージャの実行は例示の環境に限定されず、例示の環境は例示のプロシージャの実行に限定されない。
<例示の環境>
図1は、1つ又は複数の実施形態に係る例示の環境100を示す図である。環境100は、呼び出し元102、クライアント104及びインターミディアリサーバ106を含む。
呼び出し元102は、限定ではなく例として、インターミディアリサーバ106を呼び出すように構成されるクライアントコンピューティングデバイス、サーバ又は任意の他のエンティティのような、任意の適切に構成された呼び出し元を備えることができる。1つ又は複数の実施形態において、呼び出し元及びクライアントは、下記に例を提供する任意の適切なコンピューティングデバイス上で実行される、任意の適切なソフトウェアエージェントを備えることができる。このエージェントは、通信するのに本明細書で説明されるメソッド、例えばHTTPメソッド並びにクライアントのための様々な持続接続のタイプを使用するように構成される。図示及び説明される実施形態において、クライアント104は、インターミディアリサーバ106との持続接続を含む。任意の適切な技術を使用して、持続接続が確立されるのを可能にすることができる。インターミディアリサーバ106は、トンネルエンドポイントによって識別されるトンネルサービスを実装する。上記したように、クライアント104は、任意の適切なタイプのクライアントを備えることができる。本明細書で使用される様々な例において、クライアント104は、ウェブクライアントを備えており、このウェブクライアントは、必須ではないが、ウェブブラウザとして又はブラウザベースの技術を用いて通信するエージェントとして存在することができる。クライアント104は、しかしながら、ブラウザベースの技術を用いて通信する必要はない。例えばクライアント104は、当業者に認識されるように、インターミディアリサーバ106とのトンネリングにネイティブのライブラリを用いる、モバイルクライアント又は組み込みライブラリの形で存在してもよい。ウェブクライアント104は、トンネルIDを使用してインターミディアリサーバ106に登録する。
動作において、呼び出し元102は、HTTP又はHTTPSのような標準のウェブプロトコルを用いて、標準の動詞を使用してインターミディアリサーバ106を呼び出す。これは、通信するのに用いられる標準のHTTP技術に対する修正を全く必要とせずに行うことができる。呼び出し元102によって提示される呼び出しには、インターミディアリサーバ106に関連付けられるトンネルエンドポイントと、ウェブクライアント104に関連付けられるトンネルIDと、ウェブクライアント104によって実装されるウェブサービスを識別し、及びウェブクライアントによって実装されるウェブサービスにより処理すべきデータ若しくは情報を識別するペイロードとを含む。インターミディアリサーバ106は、この呼び出しを、ウェブクライアントが処理することができる標準のウェブ構造に変換することによって処理する。例えばインターミディアリサーバ106は、呼び出しをシリアル化し、これを標準にウェブ構造内にカプセル化することができる。その後、カプセル化された構造は、インターミディアリサーバ106によって、持続接続を介して、処理のためにウェブクライアント104に通信される。ウェブクライアント104は、カプセル化された構造を受信すると、ライブラリを用いて、カプセル化された構造により受信したデータ及び情報を含むイベントを、処理のためにウェブサービスに対して発火することができる。データ又は情報がウェブサービスによって処理されると、ウェブクライアント104は、ペイロードを有するカプセル化された構造を含む応答を形成する。形成された応答は、インターミディアリサーバ106に送信される。形成された応答は、TCP接続のような標準の接続を使用してインターミディアリサーバ106に送信され得る。インターミディアリサーバ106は次いで、この応答を処理してHTTP応答を形成し、このHTTP応答はその後呼び出し元102へ通信される。
このアプローチを使用して、ウェブクライアント104によってサポートされる、ファイヤウォールの後ろに存在するウェブサービスは、完全に機能するHTTPエンドポイントとして使用され、現れることができる。さらに、標準のプロトコルを用いることによって、呼び出し元102及びウェブクライアント104は、NATを通じて、あるいは他の方法ではそのような通信を行うことができないであろう他のデバイスを通じて通信することができる。さらに、当業者には認識されるように、説明されるアプローチは標準のプロトコルを用いるので、効果的な通信に追加のプラグイン又は特別な技術は使用されない。
一般に、本明細書で説明される機能のうちのいずれかは、ソフトウェア、ファームウェア、ハードウェア(例えば固定の論理回路)又はこれらの実装の組み合わせを使用して実装され得る。本明細書で使用されるとき、「モジュール」、「機能性」及び「ロジック(論理)」という用語は一般的に、ソフトウェア、ファームウェア、ハードウェア又はこれらの組み合わせを表す。ソフトウェア実装の場合、モジュール、機能性又はロジックは、プロセッサ(例えば1つ又は複数のCPU)上で実行されると、指定のタスクを実行するプログラムコードを表す。プログラムコードを、1つ又は複数のコンピュータ読取可能メモリデバイスに格納することができる。以下で説明される技術の特徴はプラットフォーム独立であり、これは、これらの技術が、様々なプロセッサを有する様々な市販のコンピューティングプラットフォームにおいて実装され得ることを意味する。
例えば呼び出し元102及びウェブクライアント104は、呼び出し元102又はウェブクライアント104のハードウェア、例えばプロセッサ、機能ブロック等に動作を実行させるエンティティ(例えばソフトウェア)も含み得る。例えば呼び出し元102及びウェブクライアント104は、関連するコンピューティングデバイス、より具体的にはコンピューティングデバイスのハードウェアに動作を実行させる命令を保持するように構成され得るコンピュータ読取可能媒体を含むことがある。したがって、命令は、動作を実行するようにハードウェアを構成するよう機能し、このようにして、機能を実行するようにハードウェアの変換が行われることになる。命令は、コンピュータ読取可能媒体によって、様々な異なる構成を通じてコンピューティングデバイスに提供され得る。
コンピュータ読取可能媒体のそのような構成の1つは、信号担持媒体であり、したがって命令を(例えば搬送波として)コンピューティングデバイスのハードウェアに、ネットワーク経由等により伝送するように構成される。コンピュータ読取可能媒体は、コンピュータ読取可能記憶媒体として構成されることもあり、この場合は信号担持媒体ではない。コンピュータ読取可能記憶媒体の例には、ランダムアクセスメモリ(RAM)、読取専用メモリ(ROM)、光ディスク、フラッシュメモリ、ハードディスクメモリ並びに磁気、光及び他の技術を使用して命令及び他のデータを格納し得る他のメモリデバイスが含まれる。
プロセッサは、該プロセッサが形成される材料及びプロセッサで用いられる処理機構によって制限されない。例えばプロセッサは、半導体及び/又はトランジスタ(例えば電子集積回路(IC))で構成されてもよい。そのようなコンテキストにおいて、プロセッサ実行可能な命令は、電気的に実行可能な命令とすることができる。あるいは、プロセッサの機構又はプロセッサ用の機構、したがってコンピューティングデバイスの機構又はコンピューティングデバイス用の機構には、これらに限られないが、量子演算、光演算、機械演算(例えばナノテクノロジを使用するもの)等が含まれ得る。
例示の動作環境について検討したので、次に、呼び出し元及びウェブクライアントが、ウェブブラウザを用いて通信するコンピューティングデバイスの形式で存在する、具体的な例について検討する。
図2は、本明細書で説明される技術を用いるように動作可能な例示的実装の環境200の図である。図示される環境200は、コンピューティングデバイス202、220と、インターミディアリサーバ230、240と、インターミディアリサーバ230、240を通信可能にリンクするインターネントのようなネットワーク250とを含む。コンピューティングデバイス202、220は、上述のようなウェブサービスを実装するように構成される。
コンピューティングデバイス202は、コンピュータ読取可能記憶媒体204を含み、コンピュータ読取可能記憶媒体204は、オペレーティングシステム206と、1つ又は複数のアプリケーション208と、ウェブブラウザ210を含む。コンピューティングデバイス220は、コンピュータ読取可能記憶媒体222を含み、コンピュータ読取可能記憶媒体222は、オペレーティングシステム224と、1つ又は複数のアプリケーション226と、ウェブブラウザ228を含む。コンピューティングデバイスの様々なリソース、例えばオペレーティングシステム、オペレーティングシステムリソース、アプリケーション及び/ウェブブラウザは、以下で明らかになるように、ウェブURLによって表されることが可能である。このようにして、ウェブサービスは様々なレベルの粒度で公開され得る。その例は以下で提供される。
オペレーティングシステム206、224は、基礎となるそれぞれのコンピューティングデバイスを、該コンピューティングデバイス上で実行可能なそれぞれアプリケーション又はウェブブラウザに抽象化するように構成される。例えばオペレーティングシステム206、224は、それぞれのコンピューティングデバイスの処理メモリ、ネットワーク及び/又はディスプレイ機能を抽象化してもよく、その結果、この基礎となる機能性がどのように実装されるかを知らずに、アプリケーションを書くことができる。例えばアプリケーションは、レンダリングがどのように行われるかを理解することなく、コンピューティングデバイスに関連付けられたディスプレイデバイスによってレンダリングされて表示されるべきデータを、オペレーティングシステムに提供することがある。
オペレーティングシステムは、コンピューティングデバイスのユーザによりナビゲート可能なファイルシステム及びユーザインタフェースを管理するのに用いられるような、様々な他の機能性を表すこともある。
インターミディアリサーバ230は、他のコンポーネントの中でも特に、トンネルサービス232を含む。同様に、インターミディアリサーバ240もトンネルサービス242を含む。任意の適切な数のコンピューティングデバイス及び/又はインターミディアリサーバを用いることができる。図示及び説明される実施形態において、コンピューティングデバイス202、220は、以下で例が提供されるクライアントコンピューティングデバイスを表す。
コンピューティングデバイス202、220は、ネットワーク250を介して通信することができる、デスクトップコンピュータ、モバイルステーション、娯楽用機器、ディスプレイデバイスに通信可能に結合されるセットトップボックス、ワイヤレスフォン、ゲームコンソール等のようなコンピュータとして構成され得る。したがって、コンピューティングデバイス202、220は、十分なメモリとプロセッサリソースを有する完全なリソースデバイス(例えばパーソナルコンピュータ、ゲームコンソール)から、限られたメモリ及び/又は処理リソースを有する低リソースデバイス(例えば従来的なセットトップボックス、ハンドヘルドゲームコンソール)にまで及ぶことがある。
ネットワーク250はインターネットとして説明されるが、ネットワークは多様な構成を想定してもよい。例えばネットワーク250は、ワイドエリアネットワーク(WAN)、ローカルエリアネットワーク(LAN)、無線ネットワーク、公衆電話網、イントラネット等を含むか、そうでなくとも使用することができる。さらに、単一のネットワーク250が示されているが、ネットワーク250は複数のネットワークを含むように構成されてもよい。
動作に際して、以下でより詳細に説明されるように、様々な実施形態は、ブラウザ210、228のようなブラウザベースのクライアント(並びに他の非ブラウザベースのクライアント)等のウェブクライアントがウェブサービスを提供するのを可能にする。ブラウザ210、228は、サーバとして動作するように構成され、他の目的の中でも特に、ブラウザベースのクライアントによってサポートされるウェブサービスへの呼び出し及びそのウェブサービスからの呼び出しに使用され得る。そのような使用は、限定ではなく例として、あるブラウザから別のブラウザへメッセージをプッシュすることを含むことができる。様々な技術を用いて、標準のプロトコル及びライブラリを使用し、上記のようにブラウザ内へのいずれのカスタムコード又はプラグインのインストールも必要とせずに、例えばブラウザベースのチャットクライアントを実装することができる。
インターミディアリサーバ230、240は、インターミディアリとして機能し、ブラウザベースのクライアントが、それぞれのインターミディアリサーバとの持続接続を確立するのを可能にする。持続接続は、ここではそれぞれ260、262で表されている。上記のように、持続接続は、任意の適切な技法又は技術を使用して確立され得る。限定ではなく例として、そのような技法又は技術は、COMET、WebSocket(ウェブソケット)等を含む可能性がある。インターミディアリサーバは、ブラウザベースのクライアントを、例えばウェブサービスURLのようなウェブクライアントのプレゼンス又はアドレスを使用して、世界に公開することができる。メッセージを第1のブラウザベースのクライアントに送信しようとする他のウェブサービスクライアント(例えば別のブラウザベースのクライアント)は、公開されたウェブサービスURLを使用して、予め定義されたウェブサービスを呼び出すことができる。呼び出しを行うブラウザベースのクライアントは、同じインターミディアリサーバ又は異なるインターミディアリサーバのいずれかに登録して、そのウェブサービスURLを公開することもできる。第1のブラウザベースのクライアントは、その後、このURLを使用して、メッセージを第2のブラウザベースのクライアントにプッシュすることができる。
動作において、持続接続260、262は、それぞれのトンネルサービス232、242を使用して、ウェブブラウザ210、228のようなウェブクライアントからそれぞれのインターミディアリサーバへのトンネルを作成するために用いられる。持続接続を用いて、様々なエンティティからの要求を受信することができる。例えば持続接続を用いて、ブラウザベースのクライアントだけでなく、非ブラウザベースのクライアントが、他のブラウザ及び非ブラウザベースのクライアントを含む、他の呼び出し元からのウェブサービス要求を受信できるようにする。これはその後、ブラウザがソケットを開けて、サーバからの同期的要求を受信するか、非同期的要求に対する応答を処理するためにローカルでウェブブラウザを開始する場合に、何が起こるのかについてのエミュレーションを可能にする。
例として、以下を検討する。コンピューティングデバイス202は、インターミディアリサーバ230との持続接続260を確立することができる。ウェブブラウザ210は、持続接続260を介してインターミディアリサーバ230に登録することができる。同様に、コンピューティングデバイス220は、インターミディアリサーバ240との持続接続262を確立することができる。ウェブブラウザ228も同様に、持続接続262を介してインターミディアリサーバ240に登録することができる。ウェブブラウザ210がウェブブラウザ228と通信したいとき、ウェブブラウザ210は、ウェブブラウザ228に関連付けられたウェブサービスURLを取得する。これは、例えばインターミディアリサーバ240によって管理されるレジストリを通じて行うことができる。ブラウザ210は次いで、ウェブブラウザ228によって公開されるウェブサービスURLを使用してウェブサービスを呼び出して、データ又は他の情報をウェブブラウザ228に配信することができる。配信されるデータとともに、ウェブブラウザ210は、ウェブブラウザ210のウェブサービスURLもウェブブラウザ228に提供することができる。ウェブブラウザ228は次いで、ウェブブラウザ210のウェブサービスURLを使用して、データ及び他の情報をウェブブラウザ210に配信することができる。1つ又は複数の実施形態において、ウェブサービスURLは、それぞれインターミディアリサーバ230、240に関連付けられたアドレスである。ウェブサービスURLは、関連するブラウザの識別情報を含み、インターミディアリサーバが、それぞれのトンネルサービス232、242を通じて、ウェブサービス呼び出しの対象である、データを配信すべき場所を確定できるように構成される。トンネルサービスに対して行われる要求は、インターミディアリサーバとの標準のTCP接続を使用して行われることが可能である。インターミディアリサーバは、意図された受信者との持続接続を使用して、要求を、その受信者に配信することができる。意図された受信者からの応答は、通常のTCP接続を使用してインターミディアリサーバに返される。
図3は、1つ又は複数の実施形態に係る例示の環境300を示す図である。環境300は、ライブラリ304を有するウェブブラウザ302と、ライブラリ308を有するウェブブラウザ306と、トンネルサービス312を実装するインターミディアリサーバ310とを含む。この例において、2つのウェブブラウザ(すなわち、ウェブクライアント)はそれぞれ、1つ又は複数のウェブサービスを実装し、相互に通信することを望む。
図示及び説明される実施形態において、ウェブブラウザ302、306はそれぞれ、矢印で示されるようにインターミディアリサーバ310との持続接続を含む。持続接続を用いて、呼び出し元からのウェブサービス要求を、インターミディアリサーバを経由して受信することができる。任意の適切な技術を用いて持続接続を確立させることができる。加えて、ウェブブラウザの各々は、それぞれのトンネルIDを使用してインターミディアリサーバ310に登録される。
動作において、ウェブブラウザ302(及びウェブブラウザ306)は、標準のウェブプロトコルを用いて、HTTP要求の形式で呼び出しを発行する。この具体的な例において、HTTP要求は、以下の形式をとる。
http://tunnel-endpoint/<tunnel-ID>/service/message
ウェブブラウザ302によって発行される呼び出しは、インターミディアリサーバ310に関連付けられており、かつインターミディアリサーバ310を識別するトンネルエンドポイント(「tunnel-endpoint」)と、ウェブブラウザ306に関連付けられるトンネルID(「tunnel-ID」)と、ウェブブラウザ306によって実装されるウェブサービス、及びウェブブラウザによって実装されるウェブサービスにより処理されるべきデータ若しくは情報を識別するペイロード(service/message)とを含む。
インターミディアリサーバ310及び該インターミディアリサーバのトンネルサービス312は次いで、呼び出しを、ウェブブラウザによって処理することができる標準のウェブ構造へ変換することによって、この呼び出しを処理する。例えばHTTP要求は、メソッド、URL、本文及びヘッダを含む。これらを用いてJavaScript(登録商標)構造を構築する。このJavaScript構造は本質的に、キーと、上記のメソッド、URL、本文及びヘッダに対応するコンテンツとを有するディクショナリである。JavaScript構造は次いで、シリアル化され、JSON(JavaScript Object Notation)使用してカプセル化されて、カプセル化された要求構造を提供する。カプセル化された要求構造は次いで、インターミディアリサーバ310によって、処理のためにウェブブラウザ306へ持続接続を使用して通信される。ウェブブラウザ306は、カプセル化された要求構造を受信すると、ライブラリ308を使用して、カプセル化された要求構造内で受信したデータ又は情報(すなわち「/service/message」)を含むイベントを、処理のためにウェブサービスに対して発火する。データ又は情報がウェブサービスによって処理されると、ウェブブラウザ306は、ペイロードを有するカプセル化された応答構造を含む応答を形成する。例えば応答構造は、JASONを使用してカプセル化される。カプセル化された応答構造は、インターミディアリサーバ310に送信される。カプセル化された応答構造は、標準のTCP接続を使用してインターミディアリサーバに送信され得る。インターミディアリサーバ310は次いで、カプセル化された応答構造を処理してHTTP応答を形成し、該HTTP応答は、ウェブブラウザ302に通信される。HTTP応答は、ウェブブラウザ302によって通常の方法で処理され得る。
さらに、2つのウェブブラウザ302、306は、以下のフォーマットを使用して相互にHTTP要求を行うことによって、互いに直接通信してもよい。
http://tunnel-endpoint/<respective-tunnel-ID>
さらに、少なくとも一部の実施形態において、ウェブサービスが、サーバサイドのJavaScriptプログラミング言語及び実行環境であるNode.JSを使用して実装される場合は、当業者には認識されるように、単にトンネルエンドポイントのライブラリをサーバのインスタンス化ライブラリと置き換えることによって、同じコードが、サーバからいずれかのブラウザクライアントへ移動され得る。したがって、入来するウェブ要求の受け取りを登録する代わりに、Node.JS環境においてソフトウェアを実行させるイベントが生成されたように同じイベントを生成するトンネリングソフトウェアのクライアントサイドのJavaScript実装について登録を行うことができる。
図4は、全体的に400として例示のシーケンスを図示しており、これは、外部のHTTP要求が、どのようにJSONへカプセル化されて、持続接続を介して、例えばウェブブラウザ等のクライアントへ送信されるかを示している。この例では、図示されていないが、認証が行われる。特に、認証は、トンネルサービスにおいてメッセージを送信するのを認証済みの呼び出し元に制限することによって実施されるか、又はクライアント(例えばブラウザ)自体において実施されることがあり、あるいはその双方で実施してもよい。
この例では、複数の動作が、呼び出し元、トンネルサービス及びクライアントを含むエンティティによって実行されるように図示されている。これらの動作はそれぞれ、丸で囲まれた数字で列挙されており、この数字は、下に条件付けされている。上記のように、呼び出し元は、限定ではなく例として、エンドユーザのコンピューティングデバイス、サーバ、該コンピューティングデバイス又はサーバ上で動作する適切に構成されたアプリケーション、ウェブブラウザ等を含め、任意の適切なエンティティを備えることができる。最初に、呼び出し元は“1”においてHTTP要求を作成する。これは、必ずではないが、持続接続を介して行われる可能性がある。例えばHTTP要求は、トンネルサービスとの通信を可能にするTCP接続で行われることも可能である。この例において、HTTP要求はPOSTであり、図面の下部に示される形式を有する。「connID」は、クライアントに登録されたトンネルIDに対応する。「myURL」は、ペイロードの一部である「service/message」に対応する。
トンネルサービスは、HTTP要求を受け取り、“2”において「connID」に合致する接続を選択する。トンネルサービスは、“3”において、HTTP要求をシリアル化して、これをJSON内にカプセル化する。シリアル化されてカプセル化された要求構造は、図面の下部に示されている。クライアントは、カプセル化された要求構造を持続接続により受信し、適切に構成されたライブラリを使用して、そのカプセル化された要求構造を処理し、そして情報及びデータを含む適切なイベントを発火して、クライアントによりサポートされるウェブサービスが、その情報及びデータを処理できるようにする。クライアントは、次いで、JSON内にカプセル化した応答構造を準備して、“4”において、このカプセル化された応答構造をトンネルサービスへと返す。カプセル化された応答構造は、図面の下部に示されている。この応答は、標準のTCP接続を使用してトンネルサービスに送信され得る。
トンネルサービスは、その後、カプセル化された応答構造を処理してHTTP応答を準備し、このHTTP応答は、“5”において呼び出し元に送信される。HTTP応答の構造は、図面の下部に示されている。応答は、要求が満たされたことを示すHTTPステータスコード200を、ウェブサービスにより呼び出し元の要求を処理した結果から得られる情報及びデータを含むペイロードとともに含む。応答は、呼び出し元によって、典型的なHTTP要求として処理され得る。
上記の議論に加えて、追加の検討事項も考慮することができる。例として以下の事項を検討する。
<他の検討事項>
セキュリティの検討事項に関して、以下を検討する。1つ又は複数の実施形態において、機密性を促進させるため、呼び出し元とインターミディアリサーバの間及びインターミディアリサーバとクライアントの間の通信は、限定ではなく例として、トランスポートレイヤセキュリティ(TLS)又はセキュアソケットレイヤ(SSL)を用いるようなセキュアなトランスポート上で行われる。HTTP通信の場合はHTTPSを用いることができる。さらに、確実にサービス要求が認証済みシステムに限定されるように、サービスアカウントを用いることができる。サービスアカウントはアカウントキーを用いることができる。この手法では、サービスの呼び出し元は、このキーを用いてHTTP要求に署名をすることができ、したがって、その呼び出し元が実際にキーを所持していて、アカウントに関連付けられているという証明を容易にすることができる。この署名は、任意の適切な暗号化方法、例えばHMAC(ハッシュベースのメッセージ認証コード:Hash-based Message Authentication Code)を使用して実装され得る。そのような署名を、追加の認証ヘッダでHTTP要求に添付することができる。この署名は、要求が受信されるとサービスによってチェックされ、チェックが成功すると、サービス要求が満たされ得る。
さらに、サービスの呼び出し元が、サーバではなくクライアントの場合、アカウントキーのセキュリティを保証するために、追加のプロビジョニングを用いることができる。クライアントでは典型的に、キーが、サーバ上で格納されるときのように安全に格納されるとは想定できない可能性がある。このために、一時的なアカウントキーを用いて、他のセキュリティ認証情報との交換でこれらのキーを取得するプロシージャと組み合わせることができる。そのようなキーは、例えば1日後又は所定の期間内に失効することより、限定的な有効性を有する可能性がある。さらに、サービスに接続するクライアントは、上述の一時キーと同じ技術を使用して、該クライアント自身を認証するよう求められる可能性もある。
さらに、セキュリティの観点から、トンネルサービスによって、認証済みのシステムが確実に自身のウェブサービス要求を任意の所与のクライアントにリレーさせるようにすることができる機構を用いることができる。これは、クライアント接続に割り当てられ、かつクライアントの個々のサービスURLに組み込まれる、ランダムな接続IDを暗号化として使用することによって達成される。クライアントは、要求を送信したいと思うシステムのみにURLを与える。任意の他のシステムは、クライアントに割り当てられたサービスURL/接続IDを知らず、また予想することができないという単純な事実によって、要求を行うことができないであろう。
拡張性の観点から、以下のことを検討する。上記したように、呼び出し元は任意の適切なタイプのエンティティを備えることができる。例えば上記の議論では、ウェブブラウザを使用して、特定のウェブサービス又は他のウェブブラウザへの呼び出しを開始した。ここでは、オペレーティングシステム自体が、適切に構成されたインターミディアリサーバとの持続接続を保持することができるという状況を検討する。この例において、オペレーティングシステムは、その個々のリソースを、上述の技術を使用してアクセスすることができるURLとして公開することができる。例えばディスプレスクリーン上に現れる可能性がある個々のタイルを、個々のURLに関連付けることができる。個々のタイルに関連付けられるコンテンツは、サービスによって、プッシュモデルを使用して更新され得る。例えばオペレーティングシステムフェッチ、あるいは他の方法により積極的に更新を取得するのではなく、更新は、その関連付けられたURLにおけるオペレーティングシステムのリソースへプッシュされ得る。したがって、例えばあるタイルが更新されるべき場合、ウェブサービスは、タイルの関連付けられたURLを使用して、特定のタイルへトンネルされることになるHTTP POST要求を行うことができる。例えばコンピューティングシステムは、天気の更新に関連付けられたタイルを有することがある。天気の更新を取り出させるのではなく、上述の技術を使用して、そのような更新をタイルにプッシュすることができる。
別の例として、呼び出しサービスを検討する。呼び出しサービスを用いて、クライアントは、例えばVOIP(Voice over Internet Protocol)を使用して互いを呼び出すことができる。これらのシナリオにおいて、あるクライアントが、入来した呼び出しを有する場合、特別な呼び出しサーバを用いるのではなく、上述の技術を、HTTPベースの呼び出しサーバとの接続に用いて、入来した呼び出し関連付けられるHTTP要求をクライアントに直接送信することができ、これは、結果としてプッシュ呼び出し通知となる。
ウェブブラウザのシナリオに関して、以下を検討する。RTC−Web(Real-Time Collaboration on the World Wide Web)は、ウェブのユーザ間のリアルタイムのインタラクティブ通信を達成することができるウェブブラウザにおいて、標準化されたインフラストラクチャを達成しようとする取り組みである。RTC−Webを使用して、ピアツーピアのオーディオ及びビデオメディアセッションをウェブブラウザ間で確立することができる。RTC−Webを通じてブラウザ間で確立されたデータチャネルを使用して、ウェブブラウザによってサポートされるウェブサービスは、本明細書で説明される技術を用いて、インターミディアリサーバをバイパスして相互に通信することができる。この手法において、ウェブブラウザによって実装されるライブラリ機能は、互いに対してHTTP呼び出しを行い、ウェブブラウザによってサポートされるウェブサービスにアクセスし、これを用いることができる。
さらに、上述の技術はスケーラビリティを非常に容易にする。例えばクライアント又は呼び出し元が拡大すると、トンネルサービスを提示するインターミディアリサーバを容易に追加して、そのような拡大に適応することができる。このタイプのスケーラビリティを使用して、ロードバランサに関連する処理のオーバヘッドを大いに低減することができる。特に、ロードバランサは典型的に、大きなシステムにおいて、呼び出しを向ける場所を確定するのに使用される。ロードバランサが、呼び出しに応答して、インターミディアリサーバとの接続を決定すると、その後は、その呼び出し元のためにロードバランシングを用いる必要はない。すなわち、いったん接続が確定されると、後続の呼び出しは、ロードバランサを使用する必要なく、インターミディアリサーバに対して直接行うことができる。
スケーラビリティに関して、以下を検討する。スケーラビリティはサポートされ、トンネルURLが構築される方法へと構築される。例えばトンネルURLは、次の形式を有することができる。
http://trouterX.trouter.net/connectionID
ここで、trouterX.trouter.netは、持続接続をホストしているサーバの具体的なインスタンスのドメイン名である。これは、全てのサーバが、互いを見つけてウェブサービス要求を相互に委任するという必要性なしに、独立に動作するのを可能にする。正しいサーバを見つけるというジョブがインターネット(例えばDNS)に委ねられる。この実施形態において、システムは、サーバインスタンスの間で共有状態は有しない。これは、当業者には認識されるように、無限のスケーラビリティのための規定である。
これとは対照的に、代替的なアプローチでは、例えばURLが次のような形式をとることもある。
http://alternativeservice.net/app-assigned-ID
このアプローチでは、要求は最初に、典型的に接続を有しないランダムサーバにルーティングされる。したがって、このランダムサーバは、接続のオーナーを見つけ、これに委任しなければいけない。状況は、アプリケーションによって選択されたトンネル/接続IDによって悪化し、したがってサービスがルーティング情報をURLに組み込むのを防ぐ。これは、当業者に認識されるように、「app-assigned-ID」によってキー付けされる、ルーティング情報を保持する持続ストアの必要性につながる。
1つ又は複数の実施形態に係る例示のシーケンス図及び他の検討事項について検討したので、次に、1つ又は複数の実施形態に従って実装され得る例示のプロシージャの議論について検討する。
<例示のプロシージャ>
図5は、クライアントがウェブサービスを提供できるように、呼び出し元と、トンネルサービスと、クライアントとの間で行われる通信フローを示す。この通信フローは、上述のシステム及びデバイスを用いて実装され得る。プロシージャのそれぞれの態様は、ハードウェア、ファームウェア又はソフトウェアあるいはこれらの組み合わせで実装され得る。プロシージャは、1つ又は複数のデバイスによって実行される動作を指定するブロックのセットとして示されるが、それぞれのブロックによる動作を実行するために示される順序に必ずしも限定されない。
ブロック502において、呼び出し元は、適切に構成されたウェブクライアントによって提供されるウェブサービスに関連付けられるHTTP要求を生成する。HTTP要求の例は、上記に提示されている。ブロック504において、HTTP要求をトンネルサービスに送信する。この要求は、標準のTCP接続を介して送信され得る。
ブロック506において、HTTP要求を受信し、ブロック508において、HTTP要求を処理してクライアントを識別する。これは、任意に適切な方法で行うことができ、その例は上記で提示されている。ブロック510において、HTTP要求をシリアル化して、ブロック512において、シリアル化されたHTTP要求を要求構造内にカプセル化する。これは任意の適切な方法で行うことができる。少なくとも一部の実施形態において、シリアル化されたHTTP要求は、上述のようにJSONにカプセル化される。ブロック514において、カプセル化された要求構造をクライアントに送信する。1つ又は複数の実施形態において、カプセル化された要求構造は、トンネルサービスとクライアントとの間で維持される持続接続を介して送信される。
ブロック516において、クライアントにより、カプセル化された要求構造を受信する。ブロック518において、カプセル化された要求構造を、少なくとも部分的にウェブサービスを使用して処理する。ブロック520において、カプセル化された応答構造を準備する。このカプセル化された応答構造は、少なくとも、ウェブサービスの実行に関連付けられたデータ及び情報を含む。ブロック522において、カプセル化された応答構造をトンネルサービスに送信する。1つ又は複数の実施形態において、カプセル化された応答構造は、標準のTCP接続を介して送信され得る。
ブロック524において、トンネルサービスにより、カプセル化された応答構造を受信する。ブロック526において、カプセル化された応答構造を処理して、HTTP応答を呼び出し元に送信する。これをどのように行うことができるかについての例は、上記に提示されている。
ブロック528において、呼び出し元がHTTP応答を受信し、ブロック530において、HTTP応答を処理する。これは、クライアントがウェブサービスを実行した結果としてHTTP応答内に含まれる、データ及び情報を処理することを含むことができる。
1つ又は複数の実施形態に係る例示のプロシージャを説明したので、次に、上述の実施形態を実装するのに用いることができる例示のシステム及びデバイスについて検討する。
<例示のシステム及びデバイス>
図6は、全体的に600として例示のシステムを図示している。このシステムは、本明細書で説明される様々な技術を実装することができる1つ又は複数のコンピューティングシステム及び/又はデバイスを表す、例示のコンピューティングデバイス602を含む。コンピューティングデバイス602は、例えばサービスプロバイタのサーバ、クライアント(例えばクライアントデバイス)に関連付けられたデバイス、オンチップシステム及び/又は任意の他の適切なコンピューティングデバイス若しくはコンピュータシステムとすることができる。
図示されるように、例示のコンピューティングデバイス602は、相互に通信可能に接続される処理システム604と、1つ又は複数のコンピュータ読取可能媒体606と、1つ又は複数のI/Oインタフェース608とを含む。図示されていないが、コンピューティングデバイス602は更に、様々なコンポーネントを相互に結合するシステムバスあるいは他のデータ及びコマンド転送システムを含んでもよい。システムバスは、メモリバス若しくはメモリコントローラ、周辺バス、ユニバーサルシリアルバス及び/又は様々なバスアーキテクチャのいずれかを使用するプロセッサ若しくはローカルバスのような、異なるバス構造のうちのいずれか1つ又は組み合わせを含むことができる。制御及びデータ回線のような様々な他の例も考えられる。
処理システム604は、ハードウェアを使用して1つ又は複数の動作を実行する機能性を表す。したがって、処理システム604は、プロセッサ、機能ブロック等として構成され得るハードウェア要素610を含むように図示されている。これは、特定用途向け集積回路あるいは1つ又は複数の半導体を使用して形成される他の論理デバイスとして、ハードウェアでの実装を含むことがある。ハードウェア要素610は、これらが形成される材料や用いられる処理機構に制限されない。例えばプロセッサは、半導体及び/又はトランジスタ(例えば電子集積回路(IC))から構成されることがある。そのようなコンテキストにおいて、プロセッサ実行可能命令は、電子的に実行可能な命令であってよい。
コンピュータ読取可能記憶媒体606は、メモリ/ストレージ612を含むように図示されている。メモリ/ストレージ612は、1つ又は複数のコンピュータ読取可能媒体に関連付けられたメモリ/記憶機能を表す。メモリ/ストレージコンポーネント612は、揮発性媒体(ランダムアクセスメモリ(RAM)等)及び/又は非揮発性媒体(読取専用メモリ(ROM)、フラッシュメモリ、光ディスク、磁気ディスク等)を含むことができる。メモリ/ストレージコンポーネント612は、固定の媒体(例えばRAM、ROM、固定のハードドライブ等)並びに取外し可能媒体(例えばフラッシュメモリ、取外し可能ハードドライブ、光ディスク等)を含むことができる。コンピュータ読取可能媒体606は、以下で更に説明されるように様々な他の方法で構成されてもよい。
入出力(I/O)インタフェース608は、ユーザがコマンド及び情報をコンピューティングデバイス602に入力するのを可能にし、また様々な入出力デバイスを使用して、情報をユーザ及び/又は他のコンポーネント若しくはデバイスに提示することを可能にする機能性を表す。入力デバイスの例には、キーボード、カーソル制御デバイス(例えばマウス)、マイク、スキャナ、タッチ機能(例えば物理的な接触を検出するように構成される容量式センサ又は他のセンサ)、カメラ(例えば赤外線周波数のような可視又は非可視の波長を用いて、接触を伴わない動きをジェスチャとして認識し得るもの)等が含まれる。出力デバイスの例には、ディスプレイデバイス(例えばモニタ又はプロジェクタ)、スピーカ、プリンタ、ネットワークカード、触覚応答デバイス等が含まれる。したがって、コンピューティングデバイス602は、以下で更に説明されるように、ユーザ対話をサポートするように様々な方法で構成され得る。
コンピューティングデバイス602は、本明細書で説明される技術を使用して提示することができ、様々な呼び出し元によって用いることができる、1つ又は複数のウェブサービス613も含む。
本明細書では、様々な技術がソフトウェア、ハードウェア要素又はプログラムモジュールの一般的なコンテキストにおいて説明され得る。一般に、そのようなモジュールは、特定のタスクを実行するか特定の抽象データ型を実装するルーチン、プログラム、オブジェクト、要素、コンポーネント、データ構造等を含む。本明細書で使用されるとき、「モジュール」、「機能(性)」及び「コンポーネント」という用語は、一般的に、ソフトウェア、ファームウェア、ハードウェア又はこれらの組み合わせを表す。本明細書で説明される技術の特徴はプラットフォーム独立であるが、これは、本技術が、様々なプロセッサを有する様々な市販のコンピューティングプラットフォームにおいて実装され得ることを意味する。
説明されるモジュール及び技術の実装は、何らかの形式のコンピュータ読取可能媒体に格納されるか、そのコンピュータ読取可能媒体によって伝送され得る。コンピュータ読取可能媒体は、コンピューティングデバイス602によってアクセスされ得る様々な媒体を含み得る。限定ではなく例として、コンピュータ読取可能媒体は、「コンピュータ読取可能記憶媒体」と「コンピュータ読取可能信号媒体」とを含むことがある。
「コンピュータ読取可能記憶媒体」は、単なる信号伝送や、搬送波又は信号自体等とは対照的に、情報の持続的及び/又は非一時的な記憶を可能にする媒体及び/又はデバイスを指すことができる。したがって、コンピュータ読取可能記憶媒体は、非信号担持媒体を指す。コンピュータ読取可能媒体は、コンピュータ読取可能命令、データ構造、プログラムモジュール、ロジック要素/回路又は他のデータのような情報の記憶に適した方法又は技術で実装される、揮発性及び非揮発性、取外し可能及び取外し不可能の媒体及び/又はストレージデバイスのようなハードウェアを含む。コンピュータ読取可能記憶媒体の例には、これらに限られないが、RAM、ROM、EEPROM、フラッシュメモリ若しくは他のメモリ技術、CD−ROM、デジタル多用途ディスク(DVD)若しくは他の光ストレージ、ハードディスク、磁気カセット、磁気テープ、磁気ディスクストレージ若しくは他の磁気ストレージデバイス、あるいは所望の情報を格納するのに適切であって、コンピュータによってアクセス可能な他の記憶デバイス、有形の媒体又は製品が含まれる。
「コンピュータ読取可能信号媒体」は、命令を、ネットワークを介するなどしてコンピューティングデバイス602のハードウェアに伝送するように構成される信号担持媒体を指すことがある。信号媒体は典型的に、コンピュータ読取可能命令、データ構造、プログラムモジュール又は他のデータを、搬送波、データ信号又は他の伝送機構のような変調データ信号に具現化することができる。信号媒体は、任意の情報配信媒体も含む。「変調データ信号」という用語は、情報を信号にエンコードするような方法で設定又は変更された特性の1つ又は複数を有する信号を意味する。限定ではなく例として、通信媒体は、有線ネットワーク又は直接有線接続のような有線媒体と、音響、RF、赤外線及び他の無線媒体のような無線媒体とを含む。
上述のように、ハードウェア要素610及びコンピュータ読取可能媒体606は、一部の実施形態において、1つ又は複数の命令を実行するような、説明される技術の少なくとも一部の態様を実装するのに用いられるハードウェア形式で実装されるモジュール、プログラマブルデバイスロジック及び/又は固定のデバイスロジックを表す。ハードウェアは、集積回路若しくはオンチップシステム、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)、結合プログラム可能論理回路(CPLD)及びシリコンでの他の実装や他のハードウェアが含まれる。このコンテキストにおいて、ハードウェアは、命令によって定義されるプログラムタスク及び/又はハードウェアによって具現化されるロジックを実行する処理デバイス、並びに実行のために命令を格納するのに用いられるハードウェア、例えば前述したコンピュータ読取可能記憶媒体として動作してもよい。
上述の組み合わせを用いて、本明細書で説明される様々な技術を実装することもできる。したがって、ソフトウェア、ハードウェア又は実行可能モジュールを、何らかの形式のコンピュータ読取可能記憶媒体において及び/又は1つ又は複数のハードウェア要素610によって具現化される1つ又は複数の命令及び/又はロジックとして実装してもよい。コンピューティングデバイス602は、ソフトウェア及び/又はハードウェアモジュールに対応する特定の命令及び/又は機能を実装するように構成され得る。したがって、コンピューティングデバイス602によって実行可能なモジュールのソフトウェアとしての実装は、少なくとも部分的にハードウェアで、例えばコンピュータ読取可能記憶媒体及び/又は処理システム604のハードウェア要素610の使用を通して達成され得る。命令及び/又は機能は、本明細書で説明される技術、モジュール及び実施例を実装するよう1つ又は複数の製品(例えば1つ又は複数のコンピューティングデバイス602及び/又は処理システム604)によって実行可能/動作可能である。
図6に更に図示されるように、例示システム600は、アプリケーションをパーソナルコンピュータ(PC)、テレビジョンデバイス及び/又はモバイルデバイス上で実行するときに、シームレスなユーザ経験のためのユビキタス環境を可能にする。サービス及びアプリケーションは実質的に、アプリケーションを使用している間、ビデオゲームをプレイしている間、ビデオを観ている間等に、あるデバイスから次のデバイスに遷移する際に、共通のユーザ経験のために3つの全ての環境において同様に動作する。
例示システム600において、複数のデバイスは中央コンピューティングデバイスを通して相互接続される。中央コンピューティングデバイスは、複数のデバイスにローカルであってもよく、複数のデバイスからリモートに配置されてもよい。一実施形態において、中央コンピューティングデバイスは、複数のデバイスにネットワーク、インターネット又は他のデータ通信リンクを通して接続される、1つ又は複数のサーバコンピュータのクラウドとすることができる。
一実施形態において、この相互接続アーキテクチャは、複数のデバイスにまたがって配信され、複数のデバイスのユーザに共通でシームレスな経験を提供するのを可能にする。複数のデバイスの各々は、異なる物理的要件及び能力を有し、中央コンピューティングデバイスは、プラットフォームを使用して、デバイスへの経験の配信を可能にするが、この経験は、そのデバイスに対して調整されるが、全てのデバイスに対して共通でもある。一実施形態において、ターゲットデバイスのクラスを作成し、経験をデバイスの汎用クラスに対して調整する。デバイスのクラスを、物理的な特徴、利用のタイプ又はデバイスの他の共通の特性によって定義してもよい。
様々な実装において、コンピューティングデバイス602は、コンピュータ614用、モバイル616用、テレビジョン618用及び組み込みデバイス619用の使用のような様々な異なる構成を想定してもよい。これらの構成の各々は、一般に異なる構成及び能力を有することがあるデバイスを含み、したがって、コンピューティングデバイス602は異なるデバイスクラスの1つ又は複数に従って構成され得る。例えばコンピューティングデバイス602は、パーソナルコンピュータ、デスクトップコンピュータ、マルチスクリーンコンピュータ、ラップトップコンピュータ、ネットブック等を含むデバイスのコンピュータ614クラスとして実装され得る。
コンピューティングデバイス602は、モバイルフォン、ポータブル音楽プレイヤ、ポータブルゲームデバイス、タブレットコンピュータ、マルチスクリーンコンピュータ等のモバイルデバイスを含むデバイスのモバイル616クラスとして実装されてもよい。コンピューティングデバイス602は、簡潔な視聴環境において一般的に大きなスクリーンを有するか、これと接続されるデバイスを含むテレビジョン618クラスとして実装されてもよい。これらのデバイスは、テレビジョン、セットトップボックス、ゲームコンソール等を含む。
コンピューティングデバイス602は、デバイスの組み込みシステム又は組み込みクラス619として実装されることもある。組み込みデバイスは典型的に、特定の制御機能のために設計される。したがって、組み込みデバイスは典型的に、特定のタスクの処理の専用であり得る。組み込みデバイスは、デジタル時計、メディアプレイヤ、ライトのスイッチ、信号機、工場のコントローラ、電話交換、様々な他のタイプの消費者用電化製品、GPS受信機、プリンタ、電子レンジや洗濯機、食洗機のような家事用機器、ネットワーク化されたサーモスタットを含むHVACシステム、有線又は無線のネットワークを使用するホームオートメーションデバイスのようなものから、ライト、気候、セキュリティ、オーディオ/ビジュアル、監視等のようなものの制御に至るまで、多岐にわたる可能性がある。他の組み込みデバイスが、交通システム、様々なタイプのモーター、バイタルサインのモニタリングや医療画像化等のようなもののための医療機器等に使用されることもあり得る。
本明細書で説明される技術は、コンピューティングデバイス602のこれらの様々な構成によってサポートされ、本明細書で説明される技術の特定の実施例に限定されない。この機能性は、下述されるように、分散システムの使用を通して、プラットフォーム622を介して「クラウド」620上に、全て又は部分的に実装され得る。
クラウド620は、リソース624のためのプラットフォーム622を含むか、及び/又はこれを表す。プラットフォーム622は、クラウド620のハードウェア(例えばサーバ)及びソフトウェアリソースの機能を抽象化する。リソース624は、コンピューティングデバイス602からリモートのサーバ上でコンピュータ処理が実行している間に用いることができるアプリケーション及び/又はデータを含み得る。リソース624は、ウェブサービスのような、インターネット上で及び/又はセルラ若しくはWi−Fi(登録商標)ネットワークのような加入者ネットワークを通して提供されるサービスを含むこともできる。
プラットフォーム622は、コンピューティングデバイス602を他のコンピューティシングデバイスに接続するリソース及び機能を抽出する。プラットフォーム622は、リソースのスケーリングを抽象化して、スケールの対応するレベルを、プラットフォーム622を介して実装されるリソース624について生じた要求に提供するように機能することもある。したがって、相互接続されるデバイスの実施形態において、本明細書で説明される機能性の実装をシステム600にわたって分散してもよい。例えば機能性は、部分的にコンピューティングデバイス602内に実装されてもよく、クラウド620の機能性を抽象化するプラットフォーム622を介して実装されてもよい。
様々な実施形態は、ウェブクライアントがウェブサービスを提供できるようにする。1つ又は複数の実施形態において、ウェブクライアントは、サーバとして動作し、他の目的の中でも特に、ウェブクライアントによってサポートされるウェブサービスへの呼び出し及びそのウェブサービスからの呼び出しに使用することができる。そのような使用は、限定ではなく例として、ウェブクライアントへ及びウェブクライアントからメッセージをプッシュすることを含むことができる。様々な技術は、標準のプロトコル及びライブラリを用いることができ、いずれのカスタムコード又はカスタムプラグインも必要としない。
1つ又は複数の実施形態において、中間サーバが、ウェブクライアントとの持続接続が確立されるインターミディアリとして機能する。インターミディアリサーバは、ウェブクライアントを、例えばウェブサービスURLのようなウェブクライアントのプレゼンス又はアドレスを使用して、世界に公開することができる。メッセージを第1のウェブクライアントに送信しようとする他のウェブクライアント(例えばブラウザベースのクライアント)は、公開されたウェブサービスURLを使用して、予め定義されたウェブサービスを呼び出すことができる。呼び出しを行うウェブクライアントは、同じインターミディアリサーバ又は異なるインターミディアリサーバのいずれかに登録して、そのウェブサービスURLを公開することもできる。第1のウェブクライアントはその後、このURLを使用して、メッセージを第2のウェブクライアントにプッシュすることができる。
様々な実施形態を構造的特徴及び/又は方法的動作に特有の言語で説明してきたが、添付の特許請求の範囲において定義される実施形態は、必ずしも説明される具体的な特徴又は動作に限定されない。むしろ、具体的な特徴及び動作は、様々な特許請求に係る実施形態を実装するための例示の形式として開示される。

Claims (10)

  1. ウェブクライアントによって提供されるウェブサービスに関連するHTTP要求を生成するステップと、
    前記HTTP要求を、トンネルサービスを実装するインターミディアリサーバに送信するステップと、
    前記トンネルサービスから、前記HTTP要求に関連するHTTP応答を受信するステップと、
    前記HTTP応答を処理するステップであって、前記HTTP応答は、前記ウェブクライアントによる前記ウェブサービスの実行結果に関連するデータ及び情報を含む、ステップと
    を含む、方法。
  2. 前記HTTP要求は、前記インターミディアリサーバに関連付けられるトンネルエンドポイントと、前記ウェブクライアントに関連付けられるトンネルIDと、前記ウェブサービスを識別し、かつ前記ウェブサービスによって処理されるべきデータ及び情報を含むペイロードとを含む、請求項1に記載の方法。
  3. 前記の生成するステップ、送信するステップ、受信するステップ及び処理するステップは、クライアントコンピューティングデバイスを備える呼び出し元によって実行される、請求項1に記載の方法。
  4. 前記の生成するステップ、送信するステップ、受信するステップ及び処理するステップは、ブラウザを備える呼び出し元によって実行される、請求項1に記載の方法。
  5. 前記の生成するステップ、送信するステップ、受信するステップ及び処理するステップは、ブラウザを備える呼び出し元によって実行され、前記ウェブクライアントは別のブラウザを備える、請求項1に記載の方法。
  6. 前記の生成するステップ、送信するステップ、受信するステップ及び処理するステップは、2つのウェブブラウザ間のブラウザベースのチャットを実装するのに実行される、請求項1に記載の方法。
  7. コンピュータ読取可能命令を具現化する1つ又は複数のコンピュータ読取可能記憶媒体であって、前記命令は、実行されると、
    トンネルサービスにおいて、呼び出し元からのHTTP要求を受信するステップであって、前記HTTP要求は、ウェブサービスをサポートするウェブクライアントに向けられたものである、ステップと、
    前記HTTP要求をシリアル化するステップと、
    前記シリアル化されたHTTP要求を要求構造にカプセル化するステップと、
    前記カプセル化された要求構造を前記ウェブクライアントに送信するステップと、
    前記トンネルサービスにおいて、前記ウェブクライアントからカプセル化された応答構造を受信するステップであって、前記カプセル化された応答構造は、前記ウェブサービスの実行に関連するデータ及び情報を含む、ステップと、
    前記カプセル化された応答構造を処理してHTTP応答を提供し、該HTTP応答を前記呼び出し元に送信するステップであって、前記HTTP応答が前記データ又は情報を含む、ステップと
    を含む方法を実施する、1つ又は複数のコンピュータ読取可能記憶媒体。
  8. 前記カプセル化するステップは、前記シリアル化されたHTTP要求をJSON(JavaScript Object Notation)にカプセル化することによって実行される、請求項7に記載の1つ又は複数のコンピュータ読取可能記憶媒体。
  9. 前記呼び出し元はブラウザを備える、請求項7に記載の1つ又は複数のコンピュータ読取可能記憶媒体。
  10. 前記呼び出し元及び前記ウェブクライアントのいずれもブラウザを備えない、請求項7に記載の1つ又は複数のコンピュータ読取可能記憶媒体。


JP2015505889A 2012-04-13 2013-04-11 ウェブクライアントがウェブサービスを提供するのを可能にすること Pending JP2015520436A (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/447,065 2012-04-13
US13/447,065 US20130275492A1 (en) 2012-04-13 2012-04-13 Enabling Web Clients to Provide Web Services
PCT/US2013/036055 WO2013155241A1 (en) 2012-04-13 2013-04-11 Enabling web clients to provide web services

Publications (2)

Publication Number Publication Date
JP2015520436A true JP2015520436A (ja) 2015-07-16
JP2015520436A5 JP2015520436A5 (ja) 2016-05-12

Family

ID=48289611

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2015505889A Pending JP2015520436A (ja) 2012-04-13 2013-04-11 ウェブクライアントがウェブサービスを提供するのを可能にすること

Country Status (10)

Country Link
US (1) US20130275492A1 (ja)
EP (1) EP2820827A1 (ja)
JP (1) JP2015520436A (ja)
KR (1) KR20150003192A (ja)
CN (1) CN103354542A (ja)
AU (1) AU2013245896A1 (ja)
CA (1) CA2868411A1 (ja)
MX (1) MX2014012325A (ja)
RU (1) RU2014141044A (ja)
WO (1) WO2013155241A1 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2015118478A (ja) * 2013-12-17 2015-06-25 エヌ・ティ・ティ・コミュニケーションズ株式会社 通信アダプタ装置、通信システム、トンネル通信方法、及びプログラム

Families Citing this family (28)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9319449B2 (en) * 2012-06-29 2016-04-19 Mckesson Financial Holdings Method, apparatus, and computer program product for processing data requests
US9019286B2 (en) * 2012-09-04 2015-04-28 Massimo J. Becker Remote GPU programming and execution method
US9009741B2 (en) * 2013-02-04 2015-04-14 Futurewei Technologies, Inc. Mechanism to initiate calls between browsers without predefined call signaling protocol
FR3001815A1 (fr) * 2013-02-07 2014-08-08 France Telecom Communication avec une application web
US20150046544A1 (en) * 2013-08-08 2015-02-12 Futurewei Technologies, Inc. Mirror Presence Between Websites
US10360064B1 (en) * 2013-08-19 2019-07-23 Amazon Technologies, Inc. Task scheduling, execution and monitoring
CN103546369B (zh) * 2013-11-13 2017-04-05 中国农业银行股份有限公司 一种协作方法、服务器、客户端与系统
CN103729292A (zh) * 2013-12-30 2014-04-16 瑞达信息安全产业股份有限公司 一种跨主机、跨平台的远程命令调用方法和系统
US9535816B2 (en) * 2013-12-30 2017-01-03 Lenovo (Singapore) Remote diagnostics for a computing device
SG11201604890WA (en) 2014-02-07 2016-08-30 Oracle Int Corp Cloud service custom execution environment
US9529658B2 (en) 2014-02-07 2016-12-27 Oracle International Corporation Techniques for generating diagnostic identifiers to trace request messages and identifying related diagnostic information
CA2936358C (en) 2014-02-07 2021-09-07 Oracle International Corporation Mobile cloud service architecture
US9529657B2 (en) 2014-02-07 2016-12-27 Oracle International Corporation Techniques for generating diagnostic identifiers to trace events and identifying related diagnostic information
CA2936503C (en) 2014-03-31 2021-01-19 Oracle International Corporation Infrastructure for synchronization of mobile device with mobile cloud service
US10209992B2 (en) 2014-04-25 2019-02-19 Avago Technologies International Sales Pte. Limited System and method for branch prediction using two branch history tables and presetting a global branch history register
US9961131B2 (en) 2014-04-25 2018-05-01 Microsoft Technology Licensing, Llc Enhanced reliability for client-based web services
CN105812345B (zh) * 2014-12-31 2019-08-23 广州市动景计算机科技有限公司 一种实现网页到客户端通信的方法及装置
US10063661B2 (en) 2015-01-14 2018-08-28 Oracle International Corporation Multi-tenant cloud-based queuing systems
CN104597763A (zh) * 2015-01-21 2015-05-06 苏州奥莱维信息技术有限公司 一种基于手机控制的智能家居系统
US9756020B2 (en) * 2015-04-27 2017-09-05 Microsoft Technology Licensing, Llc Persistent uniform resource locators (URLs) for client applications acting as web services
US10911413B2 (en) * 2015-09-16 2021-02-02 Oracle International Corporation Encapsulating and tunneling WebRTC traffic
CN109074265B (zh) 2016-03-28 2020-06-09 甲骨文国际公司 移动云服务的预先形成的指令
CN106506632A (zh) * 2016-10-27 2017-03-15 上海幻电信息科技有限公司 一种基于html5浏览器的音视频直播方法
US10623450B2 (en) * 2016-12-01 2020-04-14 Accenture Global Solutions Limited Access to data on a remote device
CN107168089A (zh) * 2017-06-30 2017-09-15 镇江千月广告传媒有限公司 一种对智能家居设备进行监控的方法
US20200099738A1 (en) * 2018-09-24 2020-03-26 Citrix Systems, Inc. Systems and methods for bridge protocol between diverse applications
CN112887410B (zh) * 2021-01-28 2022-12-20 郑州市景安网络科技股份有限公司 一种web服务程序的运行方法、装置、设备及存储介质
CN114900505B (zh) * 2022-04-18 2024-01-30 广州市迪士普音响科技有限公司 一种基于web的音频场景定时切换方法、装置及介质

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH10116238A (ja) * 1996-07-16 1998-05-06 Lucent Technol Inc サーバシステム
JP2003108449A (ja) * 2001-10-02 2003-04-11 Seiko Epson Corp ネットワークに接続された仲介装置
WO2011044686A1 (en) * 2009-10-16 2011-04-21 Cogent Real-Time Systems Inc. System and method for providing real-time data

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6412009B1 (en) * 1999-03-15 2002-06-25 Wall Data Incorporated Method and system for providing a persistent HTTP tunnel
US6397264B1 (en) * 1999-11-01 2002-05-28 Rstar Corporation Multi-browser client architecture for managing multiple applications having a history list
EP1410559A4 (en) * 2001-03-01 2004-11-24 Invicta Networks Inc SYSTEMS AND METHODS PROVIDED FROM A PROTECTED NETWORK FROM EXTERNAL NETWORK ACCESS
GB0314971D0 (en) * 2003-06-27 2003-07-30 Ericsson Telefon Ab L M Method for distributing passwords
JP2009514050A (ja) * 2003-07-11 2009-04-02 インターナショナル・ビジネス・マシーンズ・コーポレーション クライアント−サーバ環境においてクライアントを認証するためのシステムおよび方法
US7487243B1 (en) * 2003-08-29 2009-02-03 Juniper Networks, Inc. Network tunnel termination device selection using weighted load balancing
US20060031750A1 (en) * 2003-10-14 2006-02-09 Waldorf Jerry A Web browser as web service server
US20070174454A1 (en) * 2006-01-23 2007-07-26 Mitchell David C Method and apparatus for accessing Web services and URL resources for both primary and shared users over a reverse tunnel mechanism
US20090316687A1 (en) * 2006-03-10 2009-12-24 Peerant, Inc. Peer to peer inbound contact center
US8875135B2 (en) * 2006-04-17 2014-10-28 Cisco Systems, Inc. Assigning component operations of a task to multiple servers using orchestrated web service proxy
US8995252B2 (en) * 2006-10-29 2015-03-31 FatPipe Networks VoIP multiline failover
EP2128781A1 (en) * 2008-05-27 2009-12-02 Benny Kalbratt Method for authentication
US20090300750A1 (en) * 2008-05-27 2009-12-03 Avaya Inc. Proxy Based Two-Way Web-Service Router Gateway
US8504818B2 (en) * 2010-04-15 2013-08-06 Microsoft Corporation Method and system for reliable protocol tunneling over HTTP

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH10116238A (ja) * 1996-07-16 1998-05-06 Lucent Technol Inc サーバシステム
JP2003108449A (ja) * 2001-10-02 2003-04-11 Seiko Epson Corp ネットワークに接続された仲介装置
WO2011044686A1 (en) * 2009-10-16 2011-04-21 Cogent Real-Time Systems Inc. System and method for providing real-time data

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2015118478A (ja) * 2013-12-17 2015-06-25 エヌ・ティ・ティ・コミュニケーションズ株式会社 通信アダプタ装置、通信システム、トンネル通信方法、及びプログラム

Also Published As

Publication number Publication date
CA2868411A1 (en) 2013-10-17
US20130275492A1 (en) 2013-10-17
EP2820827A1 (en) 2015-01-07
AU2013245896A1 (en) 2014-10-09
MX2014012325A (es) 2015-05-11
WO2013155241A1 (en) 2013-10-17
KR20150003192A (ko) 2015-01-08
CN103354542A (zh) 2013-10-16
RU2014141044A (ru) 2016-04-27

Similar Documents

Publication Publication Date Title
JP2015520436A (ja) ウェブクライアントがウェブサービスを提供するのを可能にすること
EP3275155B1 (en) Persistent uniform resource locators (urls) for client applications acting as web services
US20140359117A1 (en) Shared heartbeat service for managed devices
US10148495B1 (en) Remote configuration of wireless devices
US10038754B2 (en) Method of establishing communication session using active connection of mobile terminal to relay server
US9936027B2 (en) Methods, systems, and computer readable media for application session sharing
KR20150013860A (ko) 클라이언트 없는 클라우드 컴퓨팅
EP3388938A1 (en) A method and system for pairing at least two electronical devices
Han et al. Dpwsim: A devices profile for web services (DPWS) simulator
US20160234320A1 (en) System, device, and method for accessing cross-platform service
JP7101313B2 (ja) コンピューティング環境内での仮想デスクトップの提供
CN114979248A (zh) 安全远程控制系统、设备和方法
EP2942711B1 (en) Dynamic generation of proxy connections
US20160092037A1 (en) Computer-Implemented Methods, Computer Readable Media, And Systems For Distributed Processing
US10579577B2 (en) Bridge and asynchronous channel based bus to provide UI-to-UI asynchronous communication
US12095771B2 (en) Split input and output remote access
US20190238416A1 (en) Device discovery using discovery nodes
US11528321B2 (en) Load balancing system, load balancing method, and non-transitory recording medium
US11677724B1 (en) Data access and firewall tunneling using a custom socket factory
US20240330392A1 (en) Method and system for a web interaction with objects and remote display technologies
Cha et al. bleRPC: A plug-and-play RPC framework over BLE
CN114679486A (zh) 通信交互方法及系统、应用端、客户端、中转服务端
Daadoo Developing and Implementation of Distributed Chat Applications using WPF and WCF
JP6478770B2 (ja) 通信システム、着信制御サーバ、ユーザ端末、着信制御方法、及びプログラム
Lao Integration of mobile devices and ATE systems

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20160314

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20160314

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20170214

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20170221

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20171017