ウェブソケット通信の分散エミュレーションを通してウェブアプリケーションサポートを提供する企業クライアント/サーバーシステム及び方法
pre−HTML5適合ウェブブラウザクライアントにおけるクロス起点セキュリティ制約のためにアクセスできないサーバー間で分散ウェブアプリケーションのサービス通信を可能にするシステム。ウェブブラウザクライアントは、定義されたソース起点を有するソース起点サーバーから受け取られたクライアント側ウェブアプリケーションを実行し、そしてその定義されたウェブアプリケーションサービスへの接続を要求する。エミュレーションクライアントライブラリーを実行すると、ウェブブラウザクライアントと、ソース起点の範囲外のターゲット起点を有するゲートウェイサーバーとの間に、両方向HTTPベースの通信接続を確立し、要求識別ウェブアプリケーションサービスへのアクセスを与える。両方向HTTPベースの通信接続は、ソースとターゲット起点との間にセキュアな通信経路を与えるクロス起点通信ブリッジを含む。ゲートウェイサーバーは、要求識別ウェブアプリケーションサービスに対して規定の関係を有するターゲットサーバーによって提供されるターゲット定義サービスへのHTML5適合接続を確立することができる。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、一般に、ネットワーク通信システムに係り、より詳細には、HTTPベースのネットワークを経てリアルタイム両方向性通信をサポートすることのできる企業クラスのクライアント/サーバーシステムに係る。
【0002】
本発明は、2009年5月1日に出願された米国仮特許出願第61/174,923号の利益を請求する。
【背景技術】
【0003】
ウェブアプリケーションの開発及び使用は、成長を続けているが、広く使用されているHTTPプロトコルが半二重通信しかサポートしないという点で著しい制約が存在する。従来のクライアント/サーバーアプリケーション使用モデルの場合のように、クライアントが種々のバックエンドシステムと対話できることが要求されない場合には、連続的なティア・ツー・ティア両方向又は全二重通信接続が強く望まれる。リアルタイム株フィードを表示し、アドホック情報更新を許し、特に、入札、チャット、ゲーム、及び他のアプリケーションで遭遇するリアルタイムオペレーションにおいて複数のユーザ間に能動的に参加できるようにする、等のウェブ上でのリアルタイムサービスの需要が重要になり増加している。
【0004】
所有権クライアント及びサーバーアプリケーションによってサポートされる他のプロトコルを利用することはできるは、ウェブブラウザクライアントが偏在するという事実は、実際上、基本的HTTPプロトコルの使用を要求する。本来的に、従来のウェブブラウザベースのクライアントアプリケーションは、データ要求及び応答が一度に一方向にしか流れない通信に基本的に制約されている。両方向通信をエミュレートする従来の試みは、典型的に、コメット・アンド・リバース・アジャック(Comet and Reverse Ajax)において具現化されるようなポーリング技術の使用を含む。本質的に、サーバーは、選択環境のもとで、クライアントへ情報をプッシュすることができる。しかしながら、これらの技術は、標準化の欠如、不充分な性能、及び限定された拡張性のような多数の制限で悩まされている。
【0005】
例えば、直接的なポーリング技術は、HTTP要求を規則的なインターバルでターゲットウェブサーバーへ繰り返し送信するためにウェブブラウザに関連して典型的に具現化されるクライアントアプリケーションを要求する。各要求は、サーバーが更新情報を有するかどうかに基づいて更新されたリアルタイム情報を潜在的に返送するサーバー発生応答を即座に受け取る。ポーリングインターバルに基づいて、受け取られる情報は、実際には、リアルタイムで受け取られず、逆に、応答情報がない場合にサーバー要求の高いオーバーヘッドを頻繁に受けて、得ることしかできない。このオーバーヘッドは、クライアント及びサーバーの両性能に影響を及ぼし、ネットワーク帯域巾を消費する。
【0006】
直接的ポーリングのオーバーヘッドを回避するために、ロングポーリングとして知られたバリアントが開発された。非同期ポーリングとしても知られているロングポーリングでは、この場合も典型的にウェブブラウザであるクライアントアプリケーションは、ターゲットウェブサーバーシステムに要求を発行する。即座の応答を与えるのではなく、ターゲットサーバーは、ある定義されたインターバルまで遅延し、ある新たな情報が応答として与えられるのを待機する。ある新たな、即ちリアルタイムのデータが遅延インターバル中にサーバーにより得られる場合には、リアルタイム情報を含むサーバー応答がクライアントへ送られる。新たな情報が受け取られない場合には、空き応答がクライアントアプリケーションに返送され、未決要求を終了させる。従って、ロングポーリングは、リアルタイムデータの配布の待ち時間を短縮する潜在性があり、要求/応答サイクルの数をある程度減少することができる。しかしながら、ロングポーリングは、依然として著しい数の要求/応答サイクルが必要とされ、且つ同様の数のHTTPヘッダがロングポーリング及びポーリングの両方に存在してクライアントとサーバーとの間で交換しなければならないために、慣習的なポーリングに勝る実質的な性能改善を与えない。
【0007】
ストリーミングは、別の従来の変形例である。ストリーミングが使用される場合には、クライアントウェブブラウザが完全な要求を送信するが、ターゲットサーバーは、少なくともある定義されたインターバル中に接続をオープンに維持できるように応答する。実際に、ターゲットサーバーは、応答が完了したという確認を延期する。これは、ターゲットサーバーが、そのターゲットサーバーによって受け取られる付加的なリアルタイム情報で応答を続けられるようにする。ストリーミング接続を確立する利益は、クライアント及びサーバーシステムの一部分においてオーバーヘッドを減少することである。ネットワークトラフィックも減少される。というのは、クライアント及びサーバーシステムは、ストリーミング接続を確立するのにHTTPヘッダパケットを一度しか送信しないからである。応答継続ネットワークパケットは、必要に応じて送信されるだけであり、従って、データしか含まず、ひいては、最小のオーバーヘッドしか課さない。不都合にも、ストリーミングは、HTTPでカプセル化され、従って、低レベルHTTP転送がネットワーク全般を通してどのようにルーティングされるかに完全に依存する。それ故、ストリーミングは、所与の接続がルーティングされる無数のシステムによって全体的に決定される予想不能な接続/切断及び実質的なバッファリング待ち時間を受ける。それ故、従来のストリーミングは、信頼できない。
【0008】
或いは又、提案されているHTML5ドラフト仕様は、ウェブソケット、サーバー送信イベント(Server-Sent Event)、及びそれに関連したアクセスセキュリティ要求を含む新たなプロトコル特徴を、HTTPプロトコルを使用して信頼性ある両方向性通信を可能にする手段として定義している。HTML5仕様は、他の中でも全二重直接TCP通信を標準化するよう意図されているが、最終的な仕様は、公式に採用されるのに、数年でなくても、おそらく、1年はかかる。次世代のウェブブラウザへの機能的合体及び動作的に均一の採用は、おそらく、数年は行われないであろう。更に、実用性、ビジネス及び他の制約のために既存のインプレースウェブブラウザの更新に対する抵抗もあり、おそらく、大規模な採用が数年以上阻止されるであろう。
【発明の概要】
【発明が解決しようとする課題】
【0009】
その結果、ビジネス及び他の商業的サービス、リクリエーション及び情報を含む全ての特性のウェブサービスにアクセスするのに使用できるクライアントウェブブラウザとは実質的に独立してリアルタイム全二重通信能力を提供する手段が要望されている。
【課題を解決するための手段】
【0010】
従って、本発明の一般的な目的は、リアルタイム両方向ブラウザ通信を、該当する場合に、現在提案されているHTML5仕様と一貫したものにできる効率的なゲートウェイサーバーシステムを提供することである。
【0011】
これは、本発明において、pre−HTML5適合ウェブブラウザクライアントにおけるクロス起点(cross-origin)セキュリティ制約のためにアクセスできないサーバー間で分散ウェブアプリケーションにおいてサービス通信を行うことのできるシステムを提供することにより達成される。ウェブブラウザクライアントは、定義されたソース起点を有するソース起点サーバーから受け取られたクライアント側ウェブアプリケーションを実行し、そしてその定義されたウェブアプリケーションサービスを要求するための接続を要求する。エミュレーションクライアントライブラリーを実行すると、ウェブブラウザクライアントと、ソース起点の範囲外のターゲット起点を有するゲートウェイサーバーとの間に、両方向可能HTTPベースの通信接続を確立し、要求識別ウェブアプリケーションサービスへのアクセスを与える。両方向可能HTTPベースの通信接続は、ソースとターゲット起点との間にセキュアな通信経路を与えるクロス起点通信ブリッジを含む。ゲートウェイサーバーは、要求識別ウェブアプリケーションサービスに対して規定の関係を有するターゲットサーバーによって提供されるターゲット定義サービスへのHTML5適合接続を確立することができる。
【0012】
本発明の効果は、参加するウェブブラウザクライアントが完全なHTML5適合であるかどうかに関わらず、分散ウェブアプリケーションを一般的に具現化できることである。本発明の一実施形態を使用して分散ウェブアプリケーションを具現化することにより、バックエンドシステムとサービスとの間でウェブブラウザクライアントまでずっとHTML5仕様に機能的に適合するように適当なメッセージ取り扱い配信が確保される。更に、好ましい実施形態は、HTML5規格に機能的に適合する。本来的に適合するHTML5ウェブブラウザクライアントは、サーバー又はクライアントアプリケーションコードを変更する必要なく、本発明によりサポートされる分散ウェブアプリケーションに及びその中に透過的に参加することができる。
【0013】
本発明の別の効果は、クライアントエミュレーションライブラリーがバイナリー及びテキストベースの両プロトコルサポートを与えることである。バイナリープロトコルサポートは、テキストのみのウェブソケットプロトコルの特徴改善を許すと共に、クライアントとサーバーとの間の生のTCP通信を一般的に可能にする非常に望ましい仕様拡張である。バイナリープロトコルサポートを設けることは、HTML5適合に影響することなく、ウェブソケットプロトコルサポートへ効率的にインターフェイスされる。本来的に適合するHTML5ウェブブラウザクライアントは、バイナリープロトコルから等しく利益を得、そしてそれを使用することができる。
【0014】
本発明の更に別の効果は、ウェブブラウザクライアントのエミュレーションスタック、及びゲートウェイサーバーとの相互動作が、高性能であることである。メッセージの配信は、弾力的である。下流のサーバー送信イベント要求に対する接続を含む全ての接続は、クライアントが開始するので、クライアントとゲートウェイサーバーとの間の通信は、HTTPプロトコルの具現化によりファイアウオール及びプロキシーサーバーをシームレスに横断することができる。切れた接続又は失われた要求の場合には、クライアント側ウェブアプリケーションは、自動的に再接続してメッセージの配信を保証するよう選択することができる。再接続オペレーションは、クライアントプロトコルライブラリ84として具現化されるのが好ましい。更に、エミュレーション層は、ローカルウェブブラウザクライアントのプロキシー設定を自動的に認識しそして讃えることができ、ウェブプロキシーサーバーを通過しなければならない接続に伴う潜在的な問題を排除することができる。更に、クライアントライブラリは、異なるクライアント技術で具現化することもでき、そして全てのケースで、サービスに対するプロトコルトランザクションを許すために適当なAPIを与えることができる。アプリケーションサーバーロジックを具現化するのに、複数のクライアント/サーバー通信トランザクションを潜在的に伴う複合サーブレットベース及び他のカスタムサーバー側サポートロジックは、要求されない。むしろ、ウェブブラウザクライアントアプリケーションは、テキスト、及び適宜に、バイナリーデータパッケージと通信することができ、これにより、通信オーバーヘッド、複雑さ、及び実行待ち時間を減少することができる。本発明により表される分散ウェブアプリケーションアーキテクチャーは、ワールドワイドの商業的アプリケーションの環境でも、非常に大きなユーザコミュニティをサポートするように容易に拡張することができる。
【0015】
本発明の更に別の効果は、分散ウェブアプリケーションの環境においてアクセスできるサービス及び起点サーバーのセットにわたり、ひいては、ウェブブラウザクライアントの特定のセットにより、容易に管理された制御をゲートウェイサーバーが与えることである。
【0016】
本発明の更に別の効果は、1つ以上のバックエンドサービスから、参加する全ての接続されたウェブブラウザクライアントへ送られ又は得られるデータのブロードキャスト及びマルチキャスト通知のための効率的な基礎を、ゲートウェイサーバーの使用により与えることである。バックエンドデータソースは、1つ又は幾つかの当該ゲートウェイサーバーへデータを送信することができ、これにより、単一の接触点から新たなサーバー送信イベント通知としてゲートウェイサーバーサポートウェブブラウザクライアントへ効率的に配布できるようにする。
【0017】
本発明の更に別の効果は、エミュレーションクライアントライブラリを使用して、多数の異なる特殊なクライアントプロトコルをサポートできることである。特定の又は所有権クライアントのプロトコルを要求する分散ウェブアプリケーションは、ゲートウェイサーバーを経てダウンロードするのに使用できるクライアントライブラリリソースを調整することによりサポートすることができる。
【図面の簡単な説明】
【0018】
【図1】本発明の好ましい実施形態のための好ましい動作環境を一般的に示す。
【図2】分散クライアント/サーバーウェブアプリケーションの具現化において本発明の好ましい実施形態を具現化するのに適したクライアント/サーバーシステムを示すブロック図である。
【図3】分散クライアント/サーバーウェブアプリケーションの具現化において本発明の好ましい実施形態を具現化するのに適した好ましいクライアント/サーバーシステムを示すブロック図である。
【図4】本発明の好ましい実施形態と一貫する分散クライアント/サーバーウェブアプリケーションに関連してクライアント側アプリケーションを具現化するように構成されたウェブブラウザクライアントを示す詳細なブロック図である。
【図5】本発明の好ましい実施形態と一貫する積層ライブラリスタックとして具現化されるクライアントライブラリのブロック図である。
【図6】本発明の好ましい実施形態によるウェブブラウザクライアントアプリケーションの好ましいiframeベース具現化を示す詳細ブロック図である。
【図7】本発明の好ましい実施形態によるエミュレートウェブソケットネットワーク接続を確立する際のウェブブラウザクライアントアプリケーションの初期化及び実行を示すシーケンス図である。
【図8A】本発明の好ましい実施形態により構成されたウェブブラウザクライアントアプリケーションの好ましいカプセル化実施を示すブロック図である。
【図8B】本発明の好ましい実施形態により構成されたウェブブラウザクライアントアプリケーションの好ましいカプセル化実施を示すブロック図である。
【図9】本発明の好ましい実施形態によるエミュレートウェブソケットネットワーク接続を確立する際のウェブブラウザクライアントカプセル化アプリケーションの実行を示すシーケンス図である。
【図10】本発明の好ましい実施形態において具現化されるゲートウェイサーバーの好ましい具現化のブロック図である。
【図11】本発明の好ましい実施形態に関連して使用される好ましいサービスリダイレクション技術を示すフローチャートである。
【図12】本発明の好ましい実施形態によりウェブブラウザクライアントとゲートウェイサーバーとの間にエミュレートウェブソケット接続を確立する好ましいプロセスを示すシーケンス図である。
【図13】本発明の好ましい実施形態によりウェブブラウザクライアントとゲートウェイサーバーとの間にエミュレートウェブソケット接続を確立し維持するのに含まれるプロキシーサーバーの取り扱いを示すシーケンス図である。
【発明を実施するための形態】
【0019】
本発明は、ウェブサービスにアクセスするのに使用されるクライアントウェブブラウザの現在のネーティブな能力とは実質的に独立してリアルタイム全二重通信能力の必要性を満足する。本発明の以下の詳細な説明において、1つ以上の図面に示された同じ部分を指すのに同じ参照番号が使用される。
【0020】
サポート仕様を含むドラフトHTML5は、ウェブブラウザ及び同様のHTTPベースのクライアントアプリケーションにおいて具現化するために推奨されるウェブソケット(WebSocket)及びサーバー送信イベント(Server-Sent Event)(SSE)のネーティブなアーキテクチャー及び動作特徴を定義する。ウェブソケット及びサーバー送信イベントは、全二重直接TCP通信チャンネルを使用できるクライアントアプリケーションを前提としている。本発明に関連したアプリケーション10において、図1に一般的に示すように、従来のクライアントシステム12、14は、パブリックインターネット、プライベートイントラネット又は他の通信ネットワーク16を通して、1つ以上のリモートサーバーシステム18、20、22にアクセスして、リアルタイム情報を両方向に要求し且つ受け取るために、ウェブブラウザアプリケーションを実行する。典型的な例において、クライアントシステム12により実行されるウェブブラウザクライアントを通してなされる情報要求は、最初に、一次又はソースサーバー18に向けられ、そして他の二次サーバー20、22で必要とされるリアルタイム両方向情報フィード接続が確立される。例えば、ソースサーバー18からウェブページが要求され、これは、配信されたページのユーザインターフェイス表現内の適当な指定のウインドウエリア内で、ニュースソースサーバー20からのリアルタイムニュースストーリー及び株情報サーバー22からの株価情報を提示する。
【0021】
従来、ソースサーバー18との整合においてサーバー20、22とのリアルタイム両方向二次接続の透過的な確立は、クライアントシステム12、14により実行されるウェブブラウザクライアントにおけるウェブソケットのネーティブサポート及びサーバー送信イベントのサポートに依存する。広く普及したネーティブなウェブソケット及びサーバー送信イベントのサポートがないと、更に、全ての主要な独立したウェブブラウザクライアント具現化にわたって適合する仕方で、商業的又はその他のウェブソケットベースシステムを確立することは、実際的でない。
【0022】
本発明によれば、特定のウェブブラウザ具現化がHTML5規格をもたないか又はその部分的なネーティブ具現化しかもたない場合でも、従来のpre−HTML5適合ウェブブラウザクライアントを具現化して、完全に適合するウェブソケット及びサーバー送信イベントを即座にサポートできるようにするゲートウェイサービスが提供される。このゲートウェイサービスは、既存のサーバー18、20、22において具現化されるか、或いは好ましい実施形態のように、個別の専用のゲートウェイサーバーシステムにおいて具現化される。通常部分的にネーティブな特徴の具現化を確認することが、適宜に利用される。その他、本発明は、HTML5仕様に適合するネーティブな具現化と一貫した機能的適合システムを達成するエミュレーションシステムを具現化する。
【0023】
図2を参照すれば、ウェブソケット及びサーバー送信イベントの種々の観点の有効なエミュレーションは、従来は、既存の従来の規格適合ウェブブラウザ、特に、ドラフトHTML5仕様に完全に適合しないもの、に組み込まれる確立されたセキュリティ並びに機能的制限によって除外される。ウェブソケット及びサーバー送信イベントエミュレーションの重要な要件は、クロス起点通信を透過的に具現化できることである。このような通信は、従来、既存の規格指定同一起点セキュリティポリシー要件により除外される。即ち、ソース起点サーバー34からクライアントシステム32へ配信されるウェブページを特に含むドキュメントは、同じ起点範囲内のみのあるリソースを参照し、要求するように制約される。一般的に定義されるように、起点とは、トランスポートプロトコル、ドメイン及びポートナンバーにより定義される。起点アクセス制約は、クロスサイトスクリプティングアタックを除外し、そして異なる起点をソースとするドキュメント間の偶発的な相互作用をより一般的に防止する。不都合なことに、従来の起点セキュリティ特徴は、異なるソース起点範囲を有するページ間の、悪意のない通信も阻止する。従来、例えば、ソース起点サーバー34から送られるドキュメントは、異なる起点にあるターゲットサーバー36、38から送られるドキュメント又はサービスにアクセスすること又はそれとデータを交換することが防止される。
【0024】
本発明によれば、図3に一般的に示すように、本発明の好ましい実施形態により構成されたクロスドキュメントメッセージングシステム40は、クライアントシステム32によりロードされたドキュメントを異なる起点にわたって選択的にセキュアに相互作用できるようにする。ターゲット起点要求は、説明上、ソース起点サーバー34の範囲外にある起点により定義されたサーバーにより提供されるドキュメント又はサービスに対して、ソース起点サーバー34から受け取られるソース起点ドキュメントから生じるリソース要求として定義される。指定のドメイン、ポート及びトランスポートプロトコルのいずれかがソース及びターゲット起点間で異なる場合には、起点の範囲が異なり、それら起点間の要求がクロス起点要求となる。本発明によれば、クライアントシステム32からのターゲット起点要求は、特に、ゲートウェイサーバー42へ向けられ、これは、次いで、ターゲットサーバー36、38と通信できるようにする適当なサービスを具現化する。ゲートウェイサーバー42は、典型的に、ソース起点サーバー34及びクライアントシステム32の範囲外の起点である。
【0025】
図4に50で詳細に示されたように、クライアントシステム32で実行されるウェブブラウザクライアントアプリケーション52は、ユーザ選択ソース起点ウェブサーバー34へ要求を発行する。評価の際に、ソース起点ウェブサーバー34は、要求対応ウェブページドキュメント54を返送する。好ましくは、ウェブページドキュメント54は、検索されるべき初期構成リソースの識別を含むように予めコード化される。ウェブブラウザクライアントアプリケーション52がオブジェクト基準に遭遇するときに、初期構成リソース要求がソース起点ウェブサーバー34へ発行され、それに対応するクライアントライブラリ56を返送する。オブジェクト基準リソースの性質に基づいて、1つ以上のファイルがクライアントライブラリ56の一部分として返送される。又、ウェブページドキュメント54は、ソース起点ウェブサーバー34に代わって動作する指定のゲートウェイサーバー42を識別するように働く初期ターゲット基準でも予めコード化されるのが好ましい。
【0026】
クライアントライブラリ56の好ましい実施形態が、図5に、積層ライブラリスタック70として一般的に示されている。全体的に、クライアントライブラリ56は、従来のpre−HTML5適合ウェブブラウザアプリケーション52において実行されたときに機能的HTML5適合ウェブソケットエミュレーションを与える。低レベルの、より基本的な層が積層ライブラリスタック70の底に配置され、より上位の層において、より高いレベルの機能が次第に与えられる。図5に示すもの以外の付加的な層が、従来のpre−HTML5適合ウェブブラウザに存在する。アドベフラッシュ(Adobe Flash)、マイクロソフトシルバーライト(Microsoft Silverlight)、及びオラクルジャバ(Oracle Java(登録商標))を含むウェブブラウザアプリケーション層プラグインも、もしあれば、ウェブブラウザ実行環境内で利用することができる。
【0027】
クライアントライブラリ56のベースは、必要なエミュレーションをpre−HTML5適合ウェブブラウザにもたずに名目上存在する従来のXmlHttpRequest(XHR)層72である。XmlHttpRequest層72は、HTTP及びHTTPS要求を指定のターゲットウェブサーバーシステムへ直接送信することのできるアプリケーションプログラミングインターフェイス(API)を与える。サーバー応答は、データとして直接受け取られ、これは、次いで、要求を開始したウェブアプリケーションにより使用するためにAPIを通して得ることができる。名目上、XmlHttpRequestの実行及び完了は、単一の起点に限定される。即ち、要求ソース及びターゲットウェブサーバーシステムは、共通起点の範囲内に存在しなければならない。
【0028】
ポストメッセージ(PostMessage)層74は、クライアントブラウザ52の環境内で実行されるウェブアプリケーションにアクセスできる付加的なAPIコールを与えることにより、エミュレートされたクロス起点メッセージをサポートするために設けられる。本発明の好ましい実施形態で具現化されるように、ポストメッセージ層74は、従来のウェブブラウザの厳密なセキュリティポリシー具現化を管理し、ウインドウ内に埋め込まれたドキュメントが異なる起点からロードされる場合でも、単一のベースウェブページドキュメントにより定義される複数のフレームをセキュアに通信できるようにする。ベースドキュメントと、ページ内に埋め込まれたドキュメントとの間の通信は、ターゲットが、命名されたソース起点からのメッセージを明確に予想しそして受け容れるとすれば、ポストメッセージ層74を通して許される。ソースが、命名されたターゲット起点からのメッセージを明確に聴取し受け容れる場合には、両方向通信がサポートされる。ある現在の、従来ウェブブラウザは、ポストメッセージAPIの初期ネーティブ具現化をサポートする。ポストメッセージ層74は、既存のポストメッセージAPIの存在及び適合性を検出するのが好ましい。ネーティブポストメッセージAPIが存在しないか、ネーティブポストメッセージAPIが不適合である場合には、ポストメッセージ層74がエミュレーションを通して全てのポストメッセージAPIコールを取り扱うことができる。
【0029】
好ましい実施形態において、ポストメッセージ層74は、典型的にジャバスクリプト(JavaScript(登録商標))、フラッシュ(Flash)及びシルバーライト(Silverlight)である埋め込みウインドウ技術の性質に基づく具現化を使用してポストメッセージAPIをエミュレートする。各々について、埋め込みドキュメント又はその等効物が埋め込みウインドウ起点の範囲内で検索される。この埋め込みドキュメントは、機能的に、ポストメッセージAPIと両立性のあるブリッジ整流処理を与える。現在の好ましい実施形態と一貫したジャバスクリプトの場合には、クライアントiframeを、ゲートウェイサーバー42により取り扱われる対応起点へのブリッジとして使用する構造化された仕方でエミュレーションが具現化され、それにより、ソース対ターゲット通信経路を機能的に確立する。ポストメッセージのメッセージは、URL id断片として転送される短いデータセグメント、典型的に、iframe URLのポスト“#”部分として、iframeを通して通信される。ジャバ、フラッシュ及びシルバーライトの場合には、ウインドウ対応埋め込みドキュメントと組み合わされて動作されるインストールランタイムは、本発明により構成された技術対応ブリッジメカニズムを使用して通信を確立するための基礎をなす。
【0030】
クロス起点リクエスト(Cross-Origin Request)層76は、HTML5適合クロス起点リソースシェアリングAPIを通してアクセス可能なW3Cクロス起点リソースシェアリング(Cross-Origin Resource Sharing)(CORS)仕様のエミュレーションを与える。クロス起点リクエスト層76は、ウェブブラウザクライアントがネーティブクロス起点リソースシェアリングをサポートしないか又はネーティブ具現化が適合しない場合にイネーブルされる。本発明の好ましい実施形態で具現化されるように、クロス起点リソースシェアリングは、ポストメッセージ層74及びXmlHttpRequest層72のレバレッジ使用を通してウェブブラウザクライアント52においてエミュレートされる。クロス起点リソース要求は、ポストメッセージ及びXmlHttpRequest層74、72を通して処理され、そしてゲートウェイサーバー42を通して、対応ターゲットサーバー36、38によりサービスされる指定のターゲット起点に接続される。本発明の好ましい実施形態では、ゲートウェイサーバー42は、ターゲットサーバー36、38への特定の適合接続を確立できるHTML5適合クロス起点リソースシェアリングコンポーネントを具現化する。
【0031】
サーバー送信イベント層78は、ウェブクライアントが、HTML5適合サーバー送信イベントストリームに接続できるようにする。サーバー送信イベント層78は、データのストリームをリモートターゲットサーバーからウェブブラウザ52へ送信されるものとしてローカルに管理する。データのサーバー送信ストリームは、従来、ウェブブラウザクライアント52へと下流へ送信されるネットワークメッセージの一方向性非同期シリーズとして具現化される。ある従来のウェブブラウザは、SSEプロトコルの初期のネーティブ具現化であるが、本発明の好ましい実施形態は、エージェント特有のネーティブ具現化を拡張することによりサーバー送信イベント層78の完全な具現化を与える。即ち、サーバー送信イベント層78は、現在エージェントを検出し、そしてSSEプロトコルに対するサポートを完了するために必要に応じて機能を補足する。部分的なネーティブサポートが得られないか又は使用できない場合には、サーバー送信イベント層78は、SSEプロトコルをサポートするのに適したものとして全エミュレーションを遂行する。本発明の好ましい実施形態では、ゲートウェイサーバー42は、ウェブブラウザクライアント52とのクロス起点XmlHttpRequest応答ストリーミング接続を管理するためのプログラムを具現化し、サーバー送信イベントストリームのソースで動作している上流ターゲットサーバーから供給される付加的なメッセージを聴取しながら、HTTP応答をオープンに保つ。
【0032】
ウェブソケットエミュレーション層80は、両方向接続をサポートする。接続が確立されると、ウェブブラウザクライアント52は、典型的にターゲットサーバー36、38をホストとするバックエンドサービスに直接リンクされる。又、接続は、それが確立されると、オープンのままとなり、クライアント及びサーバーの両方は、非同期で前後に情報を送信することができる。ウェブソケットエミュレーション層80は、ジャバー(Jabber)、IMAP、等のテキストベースのプロトコルをサポートする。好ましい実施形態では、ウェブソケットエミュレーション層80は、HTML5適合ウェブソケットAPIの完全な具現化を与える。
【0033】
バイトソケット(ByteSocket)層82は、好ましくは、ウェブソケットエミュレーション層80を通るバイナリーデータ送信をサポートするために設けられる。それに対応するバイナリートランスポートプロトコル仕様は、W3C又はIETFにより与えられていない。本発明によれば、バイトソケット層82は、ウェブソケットAPIと一般的にパラレルのAPIを具現化する。バイトソケットAPIは、主としてバイト値を含むバイナリープリミティブの読み取り及び書き込みを許す付加的な方法を与える。バイトソケット層82は、バイナリープロトコルの全範囲の具現化を可能にし、更に、テキストベースのプロトコルに対しネットワークにわたってバイナリー圧縮及び暗号化を適用する。
【0034】
典型的に特殊な付加的なクライアントプロトコルライブラリが、クライアントプロトコルライブラリ層84の一部分として、クライアントライブラリ56に含まれてもよい。これらのクライアントプロトコルライブラリは、典型的に、アプリケーション又はサーバー特有のプロトコルを具現化する。本発明の好ましい実施形態では、クライアントプロトコルライブラリ層84は、例えば、グーグルトーク(Google Talk)により使用される従来のXMPPプロトコルを具現化するXmppClientを含むことができる。好ましくは、XmppClientクライアントライブラリは、ウェブソケットエミュレーション層80を利用して、XMPPテキスト指向のメッセージを交換する。
【0035】
又、クライアントプロトコルライブラリ層84は、ストリーミングテキスト配向メッセージングプロトコル(Streaming Text Orientated Messaging Protocol)(Stomp)を具現化するStompClientクライアントライブラリを含むことができる。好ましくは、StompClientクライアントライブラリは、バイトソケットクライアントライブラリを使用して、ApacheActiveMQのようなStomp適合アプリケーションを実行するリモートサーバーとでStompメッセージを交換する。同様に、リモートインターネットリレーチャット(Internet Relay Chat)(IRC)サーバーとのメッセージ交換をサポートするためにIrcClientクライアントライブラリを設けることができる。更に特殊なクライアントライブラリ、例えば、リモートフレームバッファクライアントライブラリは、特殊な両方向プロトコルをサポートするために具現化することができる。ネットワークを経てキーボード及びマウスイベントを送信すると共にグラフィックスクリーン更新を受信するためにバーチャルネットワーククライアント(VNC)具現化によりリモートフレームバッファプロトコルが使用される。
【0036】
本発明の別の実施形態では、エミュレーション層70の初期化中に、ウェブブラウザクライアント52の実行環境内でフラッシュプラグインの潜在的な存在を検出するためのテストが実施される。検出されて、エミュレーションに対する付属物として使用できるように適当に構成された場合には、エミュレーション層70は、指定のゲートウェイサーバー42との単一のTCPソケット接続を確立するに充分な幾つかのネットワーク及びソケット通信動作をプラグインへ選択的に委任することができる。即ち、UI動作をサポートするためにフラッシュプラグインが一般的に使用されるが、そのプラグインに組み込まれた限定されたネットワーク層及び限定されたソケット能力の選択的利点を取り入れることができる。ネットワーク及びソケット層の観点しか使用しないと、目に見える表示アーティファクトは生成されない。しかしながら、フラッシュプラグインは、常に利用できるものではなく、ファイアウオール、HTTPプロキシー及び他の通信バリアの存在により使用可能な仕方で又は使用できるように構成される。フラッシュプラグインにより与えられるネットワーク層の使用は、依然、限定された環境のもとで行われる。
【0037】
典型的な使用において、ウェブアプリケーションは、ウェブブラウザクライアント52により実行されるクライアント側アプリケーションと、ソース起点サーバー34及び1つ以上のターゲットサーバー36、38によりある組み合わせで機能的に具現化される分散型サーバー側アプリケーションと、の組み合わせとして具現化される。ウェブページ54におけるオブジェクト基準は、ウェブブラウザクライアント52がクライアント側アプリケーションを1つ以上のドキュメントとして最初にロードできるようにする。クライアント側アプリケーションは、典型的に、サーバー送信イベント層78、ウェブソケット層80及びバイトソケット層82に関連したAPIと対話しそしてそれを使用するように設計される。ウェブソケット層80は、使用される主たるAPIであると予想されるが、全ての層をクライアント側アプリケーションにより使用することができる。
【0038】
図6を参照すれば、ウェブブラウザクライアント52の環境内の実行可能なドキュメント92としてクライアント側アプリケーションが示されている。本発明の好ましい実施形態において具現化されるように、ドキュメント92の実行によるクライアントライブラリ56へのAPIコールは、最終的にポストメッセージ要求94として実現される。各ポストメッセージ要求94は、少なくとも、当該ソース及びターゲット起点と、要求により表される動作とによって定義される。ソース起点は、ドキュメント92の起点である。具現化されるエミュレーションの性質により、メッセージのターゲット起点は、実際には、ゲートウェイサーバー42の起点である。負荷バランス及び相対的な地理的な理由で複数のゲートウェイサーバー42を同時に具現化することができる。実際上、ポストメッセージ要求94は、ターゲットゲートウェイサーバー42も識別する。
【0039】
クライアント側アプリケーションを具現化する技術がJavaScript(登録商標)である場合には、1つ以上のiframe92が通信ブリッジとして確立される。クロス起点要求層74として処理された各クロス起点XmlHttpRequestは、それに対応するポストメッセージ要求94として実現され、これは、次いで、ドキュメントイベントとしてiframe96インスタンスへ通されるのが好ましい。iframe96インスタンスは、要求に関連したソース及びターゲット起点の独特の組み合わせに基づいて選択され、ターゲット起点は、この場合も、サービスゲートウェイサーバー42の起点に対応する。本発明の好ましい実施形態では、iframe96インスタンスは、必要に応じて生成され、そしてウェブページ54又はウェブブラウザクライアント52が閉じるまで持続するのが好ましい。ソース及びターゲット起点の組み合わせに対するiframeがまだ生成されない場合には、ポストメッセージ層74がそれに対応するiframe96を生成し、そしてゲートウェイサーバー42とのプリフライト要求/応答トランザクションを通して、iframe96インスタンスにより信頼関係が確立される。
【0040】
ゲートウェイサーバー42の観点から、プリフライト要求の発生は、標準的なCORSプリフライト要求と一貫したものであり、従って、CORS適合ウェブブラウザをゲートウェイサーバー42と相互動作させることができる。信頼関係を確立する一部分として、通信ブリッジルーチンがゲートウェイサーバー42からiframe96インスタンスへダウンロードされ、iframe96インスタンス内でポストメッセージAPIのターゲット側を具現化する。信頼関係により、開始するポストメッセージ要求に対応するXmlHttpRequestは、次いで、ゲートウェイサーバー42へ送信され、そしてターゲットサーバー36のようなサービスサーバーへ適宜に転送される。本発明の好ましい実施形態では、ゲートウェイサーバー42を通してアクセスできる他のターゲットサーバー36、38によって提供されるサービスを定義するために、ゲートウェイサーバー42にマッピングが管理上確立される。従って、ポストメッセージ要求がウェブソケット要求を表す場合には、典型的な結果として、ドキュメント92から、それに対応するiframe96インスタンス、ゲートウェイサーバー42を経て、ドキュメント92へのリアルタイム非同期データソースとして働くターゲットサーバー36により典型的に提供されるリモートサービスへ、両方向可能な接続が確立される。
【0041】
ソース起点の検証は、ゲートウェイサーバー42によって行われるのが好ましい。JavaScript(登録商標)エミュレーション環境では、ゲートウェイサーバー42は、受け取られた各要求が、ゲートウェイサーバー42のターゲット起点に一致する値を有するXMLHttpRequest“リファラ”ヘッダと、許されたソース起点の値を有するXMLHttpRequest“X−起点”ヘッダとを含むことを検証する。好ましくは、“X−起点”ヘッダの値は、ゲートウェイサーバー42からiframe96インスタンスへダウンロードされる通信ブリッジルーチンにより決定される。ゲートウェイサーバー42は、通信ブリッジルーチンを発生し、そして通信ブリッジルーチンは、ウェブブラウザクライアント52からのiframe96インスタンスを含むドキュメント92のソース起点を決定するので、“X−起点”ヘッダの値は、ゲートウェイサーバー42により、要求のソース起点を正確に識別すると信用される。
【0042】
フラッシュ及びシルバーライトのような他のクライアント側アプリケーション具現化技術については、同様のエミュレーションアーキテクチャーが使用される。一般的に、ポストメッセージ94は、識別された技術に基づき、ベースドキュメント92内に、iframe96と同様の対応サブウインドウを生成する。ウインドウを初期化すると、ドキュメント又は等効物が、プリフライト要求/応答トランザクションの一部分又は等効物としてゲートウェイサーバー42から参照され及び検索される。その検索されたドキュメントは、本発明の好ましい実施形態では、ポストメッセージAPIのターゲット側を具現化する通信ブリッジルーチンを機能的に含み、これにより、必要に応じて、ベースドキュメント92とサブウインドウドキュメントとの間にセキュアな通信経路を許す。
【0043】
ゲートウェイサーバー42との信頼関係を確立する好ましいプロセス110が図7に一般的に示されている。ウェブブラウザクライアント52のユーザによって典型的に開始される従来のページ要求112に応答して、要求112で示すように、ロードページ要求が起点サーバー34へ発行される。それに対応するページがロードされ(114)、そして最初に評価され(116)、ページにより要求される付加的なオブジェクトを探索しロードする。本発明の好ましい実施形態では、クライアントライブラリ56へのページ埋め込み参照により、埋め込み参照識別ゲートウェイサーバー42から本質的にスタティックなリソースロード118が生じる。ウェブブラウザクライアント52は、ロードされたページに関連した初期化120を完了し、これは、クライアントライブラリ層70のウェブブラウザクライアントへのエミュレーションインターセプトを検出し及び確立するためのクライアントライブラリの必須の初期化を含む。
【0044】
典型的に、あるユーザ対話122、又はドキュメント92の自律的動作から生じる開始イベントに応答して、ウェブソケット、バイトソケット、クロス起点要求、又は他の要求がクライアントライブラリ層70に対してなされる。例示上、この要求は、ドキュメント92により表されるJavaScript(登録商標)クライアントアプリケーションから発生するウェブソケット要求である。この要求は、更に、ゲートウェイサーバー42により提供される特定のサービスへの接続を要求するものとして特定される。この要求は、ポストメッセージ層74へと処理される(124)。本発明の好ましい実施形態によれば、適当なiframe96インスタンスがまだ存在しない場合に、ウェブページベースドキュメント54のソース起点を識別する機能的ソース起点、及びサービスの有効な位置を識別する機能的ターゲット起点を伴うiframeが生成される。JavaScript(登録商標)におけるiframeの生成は、例えば、次のコードで具現化することができる。
【0045】
iframeの機能的ソース起点は、明確にセットされず、通信ブリッジルーチンにより、ウェブブラウザクライアント52へのコールによって自動的に決定される。このコールは、iframe96インスタンスの生成に続く通信ブリッジルーチンの初期化中及びiframe96インスタンスへの通信ブリッジルーチンのダウンロード中に行われるのが好ましい。従って、iframe96インスタンスの機能的ソース起点は、iframe96インスタンスの生成の役割を果たすドキュメント92のソース起点、例えば、“http://retailer.com:80”として決定される。機能的ターゲット起点は、“src”属性を、例えば、“http://gateway.com:2750”として明確に使用して特定される。
【0046】
好ましくは、開始ポストメッセージ要求の当該ソース及びターゲット起点、並びに要求されたサービス、を識別するプリフライトXmlHttpRequestメッセージは、指定されたゲートウェイサーバー42へ送信される(126)。ゲートウェイサーバー42における管理上確立されるサービスアクセスポリシーが要求に対して評価される。本発明の好ましい実施形態では、ポリシーが一般的に次の形態をとる。
【0047】
従って、サービス“/gwStockService”のための“http://retailer.com:80”から“ws://gateway.com:2750”への特定のクロス起点リソース要求は、受け容れできると決定される。この要求は、更に、例えば、リモートターゲットサーバー36により提供される実際のサービスソース“tcp://target.com:1330/stockService”へのTCPベースのウェブソケット接続を確立して、ゲートウェイサーバー42によるオンデマンド生成によってサポートされる。本発明の好ましい実施形態では、ウェブブラウザクライアントアプリケーション92により要求できる種々のサービスがゲートウェイサーバー42において直接ホストされる。サービスアクセスポリシーにより特定される接続は、このようなケースでは、ローカルホストへの接続参照である。
【0048】
サービスアクセスポリシーの評価に基づき、確認メッセージが返送される(128)。何らかの理由でサービス接続が許されない場合には、発生する要求124が本質的に失敗となる。ウェブソケット接続に必要なエミュレートサポートは、それが許される場合に、初期化される(130)。本発明の好ましい実施形態では、これは、次のJavaScript(登録商標)に一般的に例示するように、到来する要求イベントを取り扱うためのポストメッセージリスナーをiframe96インスタンス内にインストールすることを含む。
【0049】
ウェブソケット要求124に対応するポストメッセージ要求は、次いで、XmlHttpRequestへ機能的に変換される。より詳細には、HTML5適合ポストメッセージ要求は、ベースウェブページ54ドキュメント内で、ターゲットドキュメントを表すウインドウにおいてコールされる。この要求は、ポストメッセージデータとして表されるメッセージ、及び要求のソース起点を通す。iframe96インスタンスがそれ以前に確立される場合には、ポストメッセージ要求がポストメッセージ74 APIに通される。
【0050】
この要求は、次いで、ゲートウェイサーバー42へ送信され、そしてサービスアクセスポリシーに基づいて資格付けがなされる。ゲートウェイサーバー42は、次いで、識別されたターゲットサーバー36との対応接続134を確立する。接続134の性質は、要求されたサービスの性質に依存し、例えば、TCP又はウェブソケット接続でよい。XmlHttpRequestに対する応答が受け取られて、iframeチェーンを通して戻され、応答データペイロードをベースウェブページ54ドキュメントへ返送する。その後のウェブソケット要求124は、iframe96インスタンスを再使用し、それにより、ソース及びターゲット起点間に確立される信頼関係のレバレッジ使用をなす。
【0051】
他のウェブブラウザクライアントアプリケーション92技術に関しては、ベースページ54との対話が制限される。図8Aに一般的に示されるように、ウェブブラウザベースページ54は、そのベースページ54に埋め込まれた別のウェブブラウザクライアントアプリケーション92との必須の対話がもしあっても制限した状態で、カプセル化フラッシュ、シルバーライト、又は他のアプリケーション152を埋め込むことができる。本発明の好ましい実施形態では、このようなカプセル化アプリケーション152は、ゲートウェイサーバー42からのリソース118としてロードされる。
【0052】
フラッシュカプセル化アプリケーション152のケースでは、フラッシュプラグインの一部分として与えられるフラッシュランタイムライブラリは、一般的な所有権ネットワーク及びソケット状通信能力を含む。クライアントライブラリ56は、カプセル化アプリケーション152の一部分として含まれ、カプセル化アプリケーション152がゲートウェイサーバー42の外部サービスと直接通信できるようにするのが好ましい。
【0053】
本発明の好ましいフラッシュ実施形態は、クロス起点リソースシェアリングでのフラッシュアプリケーション実行をサポートする。図8Bを参照すれば、ソース起点サーバー34からロードされたドキュメント92は、これもソース起点サーバー34からロードされたフラッシュクライアントアプリケーション156に対する参照を含む。それ故、ウェブブラウザクライアント52により実行されるフラッシュクライアントアプリケーション156は、ドキュメント92のソース起点及びソース起点サーバー34内で実行される。従って、フラッシュクライアントアプリケーション156は、ゲートウェイサーバー42からロードされることが更に特定されるフラッシュブリッジアプリケーション158に対する参照を含む。それ故、フラッシュブリッジアプリケーション158は、ゲートウェイサーバー42のターゲット起点内で実行される。
【0054】
フラッシュクライアント及びブリッジアプリケーション156、158は、SWFファイルフォーマットドキュメントとしてロードされたフラッシュ移動ファイルとして具現化されるのが好ましい。フラッシュクライアントアプリケーション156は、クライアントライブラリ56を含むのが好ましい。本発明により、iframeを通してのポストメッセージ通信と同様に、フラッシュクライアントとブリッジアプリケーション156、158との間にセキュアな通信能力が確立される。このチャンネルは、フラッシュランタイムライブラリを通してサポートされる共有イベントを使用して確立され、従って、データを両方向にディスパッチできるのが好ましい。この通信チャンネルは、フラッシュブリッジアプリケーション158が、実行を通して、ゲートウェイサーバー42により資格付けされたソース起点で識別されたフラッシュクライアントアプリケーション156を検証しそしてそれのみと通信することを要求することにより、ソース及びターゲット起点の独特の組み合わせに固定される。この通信チャンネルの初期化において、フラッシュクライアントアプリケーション156のソース起点は、フラッシュブリッジアプリケーション158によりフラッシュクライアントアプリケーション156のLoaderInfoメタデータから検索される。このソース起点は、ゲートウェイサーバー42へ返送される。ゲートウェイサーバー42に対してローカルの管理上確立されたセキュリティポリシーの評価において起点が許可されたとすれば、フラッシュブリッジアプリケーション158は、返送メッセージにより、フラッシュクライアントアプリケーション156との共有イベント通信に対してイネーブルされる。フラッシュクライアントアプリケーション156により具現化されたクライアント側ウェブアプリケーションは、例えば、ターゲットサーバー36により提供されるリモートサーバーにアクセスするため、必要に応じて、ゲートウェイサーバー42のクロス起点にアクセスすることができる。
【0055】
或いは又、フラッシュクライアントアプリケーション156は、ウェブソケット接続を使用してゲートウェイサーバー42と直接通信することができる。ネーティブウェブソケット接続が望まれる場合には、フラッシュブリッジアプリケーションは、ターゲットゲートウェイサーバー42へウェブソケット要求を発行するように試みる。フラッシュブリッジアプリケーション158を通して通信するのではなく、フラッシュクライアントアプリケーション156の初期実行は、フラッシュクライアントアプリケーション156の一部分として与えられるクライアントライブラリ56を通してウェブソケット接続要求を発行する。この接続要求は、ゲートウェイサーバー42とのソケットベース接続を要求するためにフラッシュランタイムを使用してエミュレートされる。次いで、フラッシュクロスドメインポリシーファイルが、意図されるウェブソケット接続のターゲット起点から検索される。ゲートウェイサーバー42は、特に、そのような要求を聴取し、そして有効フラッシュクロスドメインポリシーファイルを返送するように構成されるのが好ましい。フラッシュクライアントアプリケーション156の基礎となるフラッシュランタイムは、ポリシーを評価し、そしてターゲット起点とのクロス起点ウェブストック接続が許されるかどうか決定する。
【0056】
規範的なクロスドメインポリシーファイルは、次の通りである。
【0057】
フラッシュランタイムが適合ポリシーファイルを受け取りそしてフロムドメイン(from-domain)がフラッシュクライアントアプリケーション156のソース起点に一致するとすれば、ランタイムは、クライアントライブラリがソケットを指定のポートにおいてターゲット起点へとオープンしそしてネーティブウェブソケットプロトコルを経て通信するのを許す。ウェブソケットプロトコルハンドシェークの一部分として、ターゲット起点のクッキーを送信することも要求される。しかしながら、ネーティブソケット接続は、デフォールトによりクッキーを送信せず、従って、ターゲットドメインに取り付けられたクッキーを発見するために最小のHTTP要求もターゲットゲートウェイに送信される。クッキーは、HTTP応答からパースされ、ウェブソケットハンドシェーク通信に含まれる。
【0058】
デスクトップ及びアプレットJava(登録商標)クライアントにおけるクロス起点通信の具現化は、同様のクライアントアプリケーション156及びブリッジアプリケーション158アーキテクチャーを使用するのが好ましい。Java(登録商標)クライアントアプリケーション156については、アプリケーションコードが、ソース起点サーバー34から、好ましくはクライアントライブラリ56のJava(登録商標)具現化を含む.jarファイルにおいてロードされる。従って、Java(登録商標)クライアントアプリケーション156は、ドキュメント92のソース起点にある。初期実行において、Java(登録商標)クライアントアプリケーション156は、.jarファイルとしても与えられるブリッジアプリケーション158をゲートウェイサーバー42からロードするための要求をなす。ブリッジアプリケーション158のロードは、許される。その実行は、ターゲット領域で行われる。
【0059】
Java(登録商標)クライアントランタイムは、ソケット及びHTTP要求ライブラリ具現化を含む。ネーティブなウェブソケットプロトコル接続が望まれる場合には、ブリッジアプリケーション158は、ゲートウェイサーバー42へのソケット接続をなすことができる。そうではなくて、例えば、介在するプロキシーサーバーを横断するために要求されるように、エミュレートされたウェブソケットプロトコルが必要となる場合には、ランタイムHTTP要求ライブラリが使用される。
【0060】
異なる起点からのコードを、非セキュアな仕方で相互作用しないよう分離するために、Java(登録商標)ランタイムは、異なる起点からのクラスを異なる「クラスローダ」にロードする。デフォールトにより、1つのクラスローダにロードされたコードは、別のクラスローダにロードされたコードにアクセスしたり又はそれを実行したりすることができない。しかしながら、ランタイムシステムのコアであるコードは、特殊な「ランタイムクラスローダ」にロードされ、これは、他のコードにより安全にアクセスすることができる。Java(登録商標)クライアントとブリッジアプリケーションとの間の通信チャンネルをポストメッセージアナログコードとしてクライアントライブラリ56に生成するために、クライアント及びブリッジの両.jarは、コアJava(登録商標)ランタイムの一部分として存在するインターフェイス又は拡張可能なクラスをインスタンス生成する。ランタイムクラスローダにロードされるこのクラスは、Java(登録商標)クライアントアプリケーション156及びJava(登録商標)ブリッジアプリケーション158の両方にアクセスすることができる。この目的に使用できる規範的なクラスは、標準的Java(登録商標)クラス“java(登録商標).beans.PropertyChangeSupport”である。このクラスは、全ての実行環境においてJava(登録商標)ランタイムに得ることができ、従って、セキュリティの例外を招くことなくJava(登録商標)クライアントアプリケーション156及びJava(登録商標)ブリッジアプリケーション158によってコールすることができる。PropertyChangeSupportクラス、及び他のそのようなクラスは、任意のデータを両方向に通過できる拡張又は具現化を許すに充分なほど一般的である。
【0061】
他のクライアントランタイム環境でも要求されるように、ターゲット通信の報告されるソース起点は、正確であり、且つ改竄から保護されねばならない。正確さを確保するために、Java(登録商標)ブリッジアプリケーション158は、Java(登録商標)ランタイム環境へのコールを具現化し、Java(登録商標)クライアントアプリケーション156のソース起点を決定する。特に、Java(登録商標)ブリッジアプリケーション158は、Java(登録商標)クライアントアプリケーション156の.jarファイル内に存在することが分かっている.classファイルをロードするためのコールをなす。例えば、この.classファイルが“SourceOriginLocation.class”と命名された場合には、Java(登録商標)ブリッジアプリケーション158は、クラスをロードするために次のコールを行う。
【0062】
返送されるURL値は、ロードされた.classファイルの起点、ひいては、ソース起点の識別を含む。例えば、Java(登録商標)クライアントアプリケーション156の.jarファイルの名前が“client.jar”である場合には、返送されるURLが次の形態となる。
【0063】
それ故、“http://retailer.com:80”は、Java(登録商標)クライアントアプリケーション156のソース起点である。このソース起点は、次いで、任意の接続中にゲートウェイサーバー42へ送られ、ゲートウェイサーバー42がこのソース起点からのクロス起点接続を確認し、選択的に許すことができるようにする。Java(登録商標)クライアントランタイムは、それ自身、クラスロード中に正しいリソースストリングを返送することに信頼があるので、ソース起点値も信頼がある。
【0064】
本発明の好ましい実施形態において対処されるシルバーライトカプセル化アプリケーション152のケースには、制限が存在する。要するに、シルバーライトランタイムによりサポートされる起点セキュリティ範囲は、広く配布されるウェブアプリケーションに関連した実際の使用に対して充分な仕様を与えない。この制限は、本発明の好ましい実施形態では、カプセル化アプリケーション152の設定中のクロス起点通信ポリシーを資格付けすることで管理される。図9を参照すれば、典型的にあるユーザ対話162に応答して、カプセル化シルバーライトアプリケーション152は、ウェブソケット要求164として表されたシルバーライトサービス要求を、クライアントライブラリ56を通して処理する。本発明の好ましい実施形態において具現化されるように、2つのヘッダがウェブソケット要求164に自動的に追加される。又、本発明の好ましい実施形態では、ヘッダは、次のように特定される。
【0065】
ここで、第1のヘッダは、有効なソース起点を識別し、そして第2のヘッダは、ソース起点をエンコードする動的に発生されるヘッダである。ゲートウェイサーバー42に向けられたウェブソケット要求164を処理する際に、シルバーライトランタイムは、クロス起点通信の試みを認識する。次いで、シルバーライトランタイムは、プリフライト要求166を開始して、クライアントアクセスポリシーを検索する。プリフライト要求は、慣習によれば、特に命名された“clientaccesspolicy.xml”ドキュメントを検索するために起点ルートに向けられる。従って、定義されたターゲット起点がhttp://gateway.com:2750である場合には、ドキュメント要求は、http://gateway.com:2750/clientaccesspolicy.xmlに向けられる。ゲートウェイサーバー42は、シルバーライトアクセスの予想において、そのような要求を聴取し、そしてカスタマイズされたクライアントアクセスポリシー168で応答し、ゲートウェイサーバー42に、クロス起点アクセスを許すサービスアクセスポリシーをもたせる。即ち、要求のソース起点が、サービスアクセスポリシーの<cross−site−constraint>エントリーに対してチェックされる。この制約を満足すると、clientaccesspolicy.xmlドキュメントが動的に発生されそして返送される(168)。クライアントアクセスポリシーは、一般的に、次の形態となる。
【0066】
ドメインhttp://retailer.comから、サブ経路を含む経路/myServiceへの有効な要求は、2つのヘッダ値X−Origin及びX−Origin−http%3A%2F%2Fretailer.com%3A80を含むことが許されることが明記される。このクライアントアクセスポリシーは、シルバーライトカプセル化アプリケーション152への参照と共にシルバーライトランタイムに登録される。その結果、本発明によれば、シルバーライトカプセル化アプリケーション152は、ヘッダを全シルバーライト要求の一部分として与え、そしてゲートウェイサーバー42は、両ヘッダを有するシルバーライト要求だけを受け容れる。プリフライトトランザクション166、168の一部分としてのクライアントアクセスポリシーの動的な発生及びアプリケーションは、そのような要求を許し通過させるためにシルバーライトランタイムの動作を資格付けする。シルバーライトランタイムは、非適合ヘッダを有する要求を阻止し続ける。ゲートウェイサーバー42は、適合ヘッダをもたないシルバーライト要求は許さない。
【0067】
図10を参照すれば、ゲートウェイサーバー42の好ましい具現化190が示されている。好ましい実施形態において、ゲートウェイサーバー42は、ウェブブラウザクライアント32及び種々の起点サーバー34、36、38へのネットワーク接続をサポートするように構成された従来のウェブサーバーシステムにおいて具現化される。機能的に、クライアントネットワークインターフェイス192は、ウェブブラウザクライアント32とのネットワーク接続194をサポートする。クライアントライブラリ56から発信する要求は、ゲートウェイサーバー42により実行されるアプリケーションサーバー内にホストされるイベント駆動モジュールとして具現化されるのが好ましいエミュレーションサポートプロセッサ196に向けられる。最初に処理される要求は、次いで、ネーティブウェブソケットライブラリ198を通して具現化され、このライブラリは、サービスネットワークインターフェイス200を通して、要求されたウェブソケット両立性サービスを提供するリモート起点サーバー36、28へ至るTCP及び他のネットワーク接続202を確立することができる。
【0068】
又、ゲートウェイサーバー42によりホストされるアプリケーションサーバー内のイベント駆動モジュールとして実行されるサービスアクセスプロセッサ204は、エミュレーションサポートプロセッサ196により受け取られる要求を評価し、資格付けする。フラッシュ及びシルバーライトプリフライト動作中に発行されるクライアントアクセス要求は、ソケットポリシープロセッサ206により受け取られて取り扱われる。サービスアクセスプロセッサ204は、フラッシュ及びシルバーライトプリフライト要求において識別される起点を資格付けするために、必要に応じて、ソケットポリシープロセッサ206によりアクセスされる。
【0069】
ゲートウェイサーバー42、特に、エミュレーションサポートプロセッサ196は、サービス要求のリダイレクションをサポートするのが好ましい。サービスアクセスプロセッサ204は、サービス要求を資格付けするのに加えて、サービスターゲットのリダイレクションを指定する。名目上、このようなリダイレクションは、サービス要求に応答して従来のHTTP30Xを返送することにより具現化される。しかしながら、ゲートウェイサーバー42とのウェブソケット通信に対してiframe96インスタンスを使用する本発明の実施形態は、そのようなリダイレクション要求を取り扱う上で制限がある。より詳細には、iframe96インスタンスは、iframe96インスタンスの生成中に確立されたターゲット起点の範囲外の起点へのリダイレクションを取り扱うことができない。カプセル化プログラム152を具現化するのに使用される他の技術は、リダイレクション要求を自動的に取り扱う上で同様に制限がある。
【0070】
その影響を受ける好ましい実施形態では、図11に示す別のリダイレクション処理フロー210を使用するのが好ましい。明瞭化のために、リダイレクション処理フロー210は、Javascript(登録商標)具現化に特定して説明する。上述したように、ウェブソケット要求212は、クライアントライブラリ56のポストメッセージ層74を通るポストメッセージ要求214及びそれに対応するiframe96インスタンス216として処理される。対応サービスに対する要求218は、ゲートウェイサーバー42へとなされる。名目上、その要求は、リモートターゲットサーバー36、38上の要求されたサービスへの接続220により取り扱われる。
【0071】
そうではなくて、ゲートウェイサーバー42のインスタンス218は、異なるゲートウェイサーバー42のインスタンス222へのリダイレクションが適当であることを決定することがある。この決定は、ローカルの管理上確立されるサービスアクセスポリシーの評価に基づいて行われ、そしてリダイレクションターゲットゲートウェイサーバー42のインスタンス222を識別するのが好ましい。リダイレクションは、iframe216へ返送されるサービスリダイレクト224メッセージの生成により具現化されるのが好ましい。サービスリダイレクト224メッセージは、HTTP 30Xリダイレクションメッセージを包むHTTP 20Xメッセージとして特に与えられる。iframe216は、明確なHTTP 30Xメッセージの取り扱いに失敗することがあるが、リダイレクションがクロス起点である場合には、iframe216は、HTTP 20Xメッセージを受け取り、そしてそこに含まれたペイロードデータを適合応答として発信ポストメッセージ要求214へ返送することができる。ポストメッセージ層74は、更に、メッセージペイロードを評価のためにウェブソケットエミュレーション層80へ返送する。返送されるメッセージペイロードがHTTP 30Xリダイレクションに対応する特定のケースでは、ウェブソケットエミュレーション層80は、HTTP 30Xリダイレクションメッセージにより指定されるリダイレクションターゲットゲートウェイサーバー42のインスタンス222へポストメッセージ要求214を再発行することにより、リダイレクションディレクティブをエミュレートする。ゲートウェイサーバー42のインスタンス222のターゲット起点に対応するiframe96インスタンス226が使用される。ゲートウェイサーバー42のインスタンス222が更なるリダイレクションを遂行しなければ、リモートターゲットサーバー36、38上の要求識別サービスへの接続228がなされる。
【0072】
一般的に同等のリダイレクション処理フロー210は、Java(登録商標)、フラッシュ及びシルバーライトのような他の具現化技術に対して具現化される。これらのケースにおいて該当する場合には、ブリッジアプリケーション158インスタンスは、定義されたターゲット起点に制限され、従って、リダイレクション要求の即座の取り扱いを除外する。包まれたHTTP 30Xリダイレクションメッセージは、この場合も、ブリッジアプリケーション158インスタンスに与えられ(224)、コンテンツをクライアントアプリケーション156へ返送してクライアントアプリケーション156内でウェブソケットエミュレーション層80により取り扱いできるようにするのが好ましい。
【0073】
iframe96又はブリッジアプリケーション158インスタンスにおいて即座に取り扱う上で問題となる他の応答メッセージは、リダイレクション処理フロー210と同様に取り扱いできることが明らかである。即ち、このような問題応答は、HTTP 200応答メッセージで包まれ、その包囲された応答メッセージをドキュメント92又はクライアントアプリケーション156により取扱できるようにする。
【0074】
ウェブブラウザクライアント52とゲートウェイサーバー42との間にエミュレートされたウェブソケット接続を確立する好ましいプロセス240が図12に示されている。クライアント側ウェブソケットエミュレーション、又はクライアントライブラリ56に対する同様の要求242に応答して、最初にゲートウェイサーバー42に対してHTTP接続244がなされる。しかしながら、この接続244は、ゲートウェイサーバー42によって閉じられず、オープンに維持され(246)、そして両方向ウェブソケット通信セッションの半分の有効なエミュレーションにおいてゲートウェイサーバー42からウェブクライアントブラウザ52へ下流にデータを送信するのに使用される。接続244を経て与えられるサービス要求は、要求されたサービスを有効にホスティングするものとして識別された適当なリモートターゲットサーバー36との従来の両方向性TCPベースウェブソケット接続248を確立するために、ゲートウェイサーバー42により使用されるのが好ましい。接続248が確立されると、それに対応するサービス250は、オープン接続246を経て中継されるサーバー送信イベントの非同期シリーズとしてデータを選択して送信することができる。
【0075】
好ましくは、あるユーザイベント252に応答して生じるか又はクライアント側ウェブアプリケーション254の自律的実行に基づいて生じる上流通信は、個別のHTTP接続256を経て、ゲートウェイサーバー42へXmlHttpRequestとして送られるクロス起点リソース要求として送信される。この要求は、サーバー送信イベントメッセージシンタックスを使用してエミュレーションにおいて送信されるのが好ましい。この好みは、主として、両方向通信を取り扱う上での一貫性のためであり、そして更に、サーバー送信イベント層78の信頼性ある配信メッセージメカニズムに基づいてウェブソケットを通して信頼性あるメッセージ配信を行えるようにする。即ち、好ましい実施形態では、エミュレートされたサーバー送信メッセージシンタックスは、受信確認のために追跡されるイベントIDを含む。サーバー送信イベントメッセージは、それに対応する確認メッセージが受信されるまでバッファされ、メッセージ配信失敗の環境又は見掛け上の環境において再送信を行えるようにするのが好ましい。接続256を通して受け取られた上流メッセージは、サービス250による考慮及び適当な応答のためにゲートウェイサーバー42により両方向ウェブソケット接続248を通してルーティングされる。
【0076】
上流通信は、典型的に、その数が制限され、短いメッセージになる傾向がある。これは、従来のウェブブラウザクライアントにおいて具現化される同時接続制限と組み合わされて、ウェブブラウザクライアントからゲートウェイサーバー42への過渡的な上流接続を使用する好みを生じる。エミュレーションのもとでは、下流接続246のみが持続的通信接続として維持されるのが好ましい。
【0077】
従来のネーティブウェブソケット接続の性質により、プロキシー及び他の中継サーバーの存在は、ウェブソケット接続の経路において許容される。本発明の好ましい実施形態では、ウェブソケットエミュレーション層80は、ゲートウェイサーバー42との組み合わせにおいて、下流接続246の状態の機能的監視を具現化して、下流接続246の経路におけるプロキシー又は他のサーバーの存在又は問題の振舞いを検出するのが好ましい。図13を参照すれば、プロキシーサーバーの潜在的な存在を許容する本発明のオペレーション270が示されている。ウェブソケット接続を開始する要求242は、プロキシーサーバー274へのルーティングを引き起こす上流へのHTTP接続を生じさせる。次いで、それに対応するHTTP接続276が生成されて、ゲートウェイサーバー42へルーティングされる。上述したように、この接続は、終了せず、接続278としてオープンに維持される。介在するプロキシーサーバー274は、典型的に、それに対応する接続278’をオープンに維持するが、プロキシーサーバー274の厳密な振舞いは、プロキシーサーバー274のローカル構成により決定される。ゲートウェイサーバー42は、接続278をオープンに維持するが、プロキシーサーバー274は、下流送信データをバッファするか、又は構成ポリシーの問題として、接続278”を完全に終了させる。いずれにせよ、ウェブブラウザクライアントは、プロキシーサーバー274により決定される任意の待ち時間又は全データ配信の終了を受ける限定されたデータを受け取る。
【0078】
本発明によれば、ゲートウェイサーバー42は、オープンの下流接続278がスレッシュホールド期間より長くアイドル状態になったときにその接続を通して心鼓動パケットを自律的に送信する。ここに示す好ましい実施形態では、心鼓動スレッシュホールドは、5秒である。ウェブソケットエミュレーション層80が心鼓動周期を越えて接続278”を通してデータを受信し損なうと、プロキシーサーバーの存在が仮定され、そして接続278”がプロキシーサーバー274により終了されないとすれば、接続278”を経て上流へ切断が送られる。この切断は、プロキシーサーバー274により保持されたバッファデータのフラッシュを生じさせる。好ましくは、HTTPSプロトコルを使用してゲートウェイサーバー42への新たな接続280が確立される。接続280は、この場合も、持続的な下流接続282としてオープンに保たれる。HTTPSプロトコルを使用する接続は、デフォールトでは、好ましいものではない。というのは、接続を確立しそれを通してデータを処理ためにウェブブラウザクライアント52及びゲートウェイサーバー42の両方に大きなオーバーヘッドがかかるためである。しかしながら、HTTPS接続は、介在するプロキシーサーバー274が検出される場合には、好ましいものである。というのは、プロトコルが、バッファも中断もせずに、ほぼ常時にプロキシーサーバー274を通過するからである。HTTPS接続を確立できない場合には、長いポーリングへの後退が具現化されるのが好ましい。それ故、下流接続282は、プロキシーサーバー274が存在するときでも有効に持続維持することができる。接続失敗278”の場合に未確認のままであるサーバー送信イベントは、自動的に再送信される。ゲートウェイサーバーが上流接続制限を検出できるようにするため、好ましくはウェブソケットエミュレーション層80において、ウェブブラウザクライアント52で同様の心鼓動メカニズムが具現化されるのが好ましい。
【0079】
従って、リアルタイムウェブアプリケーションにとって重要な両方向ウェブブラウザクライアント通信を達成するためのシステム及び方法が説明された。エミュレートされたウェブソケットサーバーシステムは、従来のpre−HTML5適合ウェブブラウザが、両方向全二重バイナリー及びテキスト通信を即座にサポートできるようにする。それ故、複雑な従来の分散型ウェブアプリケーションアーキテクチャーを回避することができる。むしろ、本発明を使用することにより、ウェブアプリケーションは、HTTP上のエミュレートされたウェブソケットを通して搬送されるネーティブプロトコルを使用してバックエンドサービスと直接通信することができる。
【0080】
本発明の好ましい実施形態の以上の説明から、当業者であれば、ここに開示した実施形態の多数の変更や修正が容易に明らかとなろう。それ故、特許請求の範囲内で、本発明は、上述したものとは異なる仕方で実施されてもよいことが理解されよう。
【符号の説明】
【0081】
10:アプリケーション
12、14:従来のクライアントシステム
16:通信ネットワーク
18、20、22:リモートサーバーシステム
32:クライアントシステム
34:ソース起点サーバー
36、38:ターゲットサーバー
40:クロスドキュメントメッセージングシステム
42:ゲートウェイサーバー
52:ウェブブラウザクライアントアプリケーション
54:ウェブページドキュメント
56:クライアントライブラリ
70:ライブラリスタック
72:XmlHttpRequest層
74:ポストメッセージ層
76:クロス起点リクエスト層
78:サーバー送信イベント層
80:ウェブソケットエミュレーション層
82:バイトソケット層
84:クライアントプロトコルライブラリ層
92:実行可能なドキュメント
94:ポストメッセージ要求
96:iframe
【技術分野】
【0001】
本発明は、一般に、ネットワーク通信システムに係り、より詳細には、HTTPベースのネットワークを経てリアルタイム両方向性通信をサポートすることのできる企業クラスのクライアント/サーバーシステムに係る。
【0002】
本発明は、2009年5月1日に出願された米国仮特許出願第61/174,923号の利益を請求する。
【背景技術】
【0003】
ウェブアプリケーションの開発及び使用は、成長を続けているが、広く使用されているHTTPプロトコルが半二重通信しかサポートしないという点で著しい制約が存在する。従来のクライアント/サーバーアプリケーション使用モデルの場合のように、クライアントが種々のバックエンドシステムと対話できることが要求されない場合には、連続的なティア・ツー・ティア両方向又は全二重通信接続が強く望まれる。リアルタイム株フィードを表示し、アドホック情報更新を許し、特に、入札、チャット、ゲーム、及び他のアプリケーションで遭遇するリアルタイムオペレーションにおいて複数のユーザ間に能動的に参加できるようにする、等のウェブ上でのリアルタイムサービスの需要が重要になり増加している。
【0004】
所有権クライアント及びサーバーアプリケーションによってサポートされる他のプロトコルを利用することはできるは、ウェブブラウザクライアントが偏在するという事実は、実際上、基本的HTTPプロトコルの使用を要求する。本来的に、従来のウェブブラウザベースのクライアントアプリケーションは、データ要求及び応答が一度に一方向にしか流れない通信に基本的に制約されている。両方向通信をエミュレートする従来の試みは、典型的に、コメット・アンド・リバース・アジャック(Comet and Reverse Ajax)において具現化されるようなポーリング技術の使用を含む。本質的に、サーバーは、選択環境のもとで、クライアントへ情報をプッシュすることができる。しかしながら、これらの技術は、標準化の欠如、不充分な性能、及び限定された拡張性のような多数の制限で悩まされている。
【0005】
例えば、直接的なポーリング技術は、HTTP要求を規則的なインターバルでターゲットウェブサーバーへ繰り返し送信するためにウェブブラウザに関連して典型的に具現化されるクライアントアプリケーションを要求する。各要求は、サーバーが更新情報を有するかどうかに基づいて更新されたリアルタイム情報を潜在的に返送するサーバー発生応答を即座に受け取る。ポーリングインターバルに基づいて、受け取られる情報は、実際には、リアルタイムで受け取られず、逆に、応答情報がない場合にサーバー要求の高いオーバーヘッドを頻繁に受けて、得ることしかできない。このオーバーヘッドは、クライアント及びサーバーの両性能に影響を及ぼし、ネットワーク帯域巾を消費する。
【0006】
直接的ポーリングのオーバーヘッドを回避するために、ロングポーリングとして知られたバリアントが開発された。非同期ポーリングとしても知られているロングポーリングでは、この場合も典型的にウェブブラウザであるクライアントアプリケーションは、ターゲットウェブサーバーシステムに要求を発行する。即座の応答を与えるのではなく、ターゲットサーバーは、ある定義されたインターバルまで遅延し、ある新たな情報が応答として与えられるのを待機する。ある新たな、即ちリアルタイムのデータが遅延インターバル中にサーバーにより得られる場合には、リアルタイム情報を含むサーバー応答がクライアントへ送られる。新たな情報が受け取られない場合には、空き応答がクライアントアプリケーションに返送され、未決要求を終了させる。従って、ロングポーリングは、リアルタイムデータの配布の待ち時間を短縮する潜在性があり、要求/応答サイクルの数をある程度減少することができる。しかしながら、ロングポーリングは、依然として著しい数の要求/応答サイクルが必要とされ、且つ同様の数のHTTPヘッダがロングポーリング及びポーリングの両方に存在してクライアントとサーバーとの間で交換しなければならないために、慣習的なポーリングに勝る実質的な性能改善を与えない。
【0007】
ストリーミングは、別の従来の変形例である。ストリーミングが使用される場合には、クライアントウェブブラウザが完全な要求を送信するが、ターゲットサーバーは、少なくともある定義されたインターバル中に接続をオープンに維持できるように応答する。実際に、ターゲットサーバーは、応答が完了したという確認を延期する。これは、ターゲットサーバーが、そのターゲットサーバーによって受け取られる付加的なリアルタイム情報で応答を続けられるようにする。ストリーミング接続を確立する利益は、クライアント及びサーバーシステムの一部分においてオーバーヘッドを減少することである。ネットワークトラフィックも減少される。というのは、クライアント及びサーバーシステムは、ストリーミング接続を確立するのにHTTPヘッダパケットを一度しか送信しないからである。応答継続ネットワークパケットは、必要に応じて送信されるだけであり、従って、データしか含まず、ひいては、最小のオーバーヘッドしか課さない。不都合にも、ストリーミングは、HTTPでカプセル化され、従って、低レベルHTTP転送がネットワーク全般を通してどのようにルーティングされるかに完全に依存する。それ故、ストリーミングは、所与の接続がルーティングされる無数のシステムによって全体的に決定される予想不能な接続/切断及び実質的なバッファリング待ち時間を受ける。それ故、従来のストリーミングは、信頼できない。
【0008】
或いは又、提案されているHTML5ドラフト仕様は、ウェブソケット、サーバー送信イベント(Server-Sent Event)、及びそれに関連したアクセスセキュリティ要求を含む新たなプロトコル特徴を、HTTPプロトコルを使用して信頼性ある両方向性通信を可能にする手段として定義している。HTML5仕様は、他の中でも全二重直接TCP通信を標準化するよう意図されているが、最終的な仕様は、公式に採用されるのに、数年でなくても、おそらく、1年はかかる。次世代のウェブブラウザへの機能的合体及び動作的に均一の採用は、おそらく、数年は行われないであろう。更に、実用性、ビジネス及び他の制約のために既存のインプレースウェブブラウザの更新に対する抵抗もあり、おそらく、大規模な採用が数年以上阻止されるであろう。
【発明の概要】
【発明が解決しようとする課題】
【0009】
その結果、ビジネス及び他の商業的サービス、リクリエーション及び情報を含む全ての特性のウェブサービスにアクセスするのに使用できるクライアントウェブブラウザとは実質的に独立してリアルタイム全二重通信能力を提供する手段が要望されている。
【課題を解決するための手段】
【0010】
従って、本発明の一般的な目的は、リアルタイム両方向ブラウザ通信を、該当する場合に、現在提案されているHTML5仕様と一貫したものにできる効率的なゲートウェイサーバーシステムを提供することである。
【0011】
これは、本発明において、pre−HTML5適合ウェブブラウザクライアントにおけるクロス起点(cross-origin)セキュリティ制約のためにアクセスできないサーバー間で分散ウェブアプリケーションにおいてサービス通信を行うことのできるシステムを提供することにより達成される。ウェブブラウザクライアントは、定義されたソース起点を有するソース起点サーバーから受け取られたクライアント側ウェブアプリケーションを実行し、そしてその定義されたウェブアプリケーションサービスを要求するための接続を要求する。エミュレーションクライアントライブラリーを実行すると、ウェブブラウザクライアントと、ソース起点の範囲外のターゲット起点を有するゲートウェイサーバーとの間に、両方向可能HTTPベースの通信接続を確立し、要求識別ウェブアプリケーションサービスへのアクセスを与える。両方向可能HTTPベースの通信接続は、ソースとターゲット起点との間にセキュアな通信経路を与えるクロス起点通信ブリッジを含む。ゲートウェイサーバーは、要求識別ウェブアプリケーションサービスに対して規定の関係を有するターゲットサーバーによって提供されるターゲット定義サービスへのHTML5適合接続を確立することができる。
【0012】
本発明の効果は、参加するウェブブラウザクライアントが完全なHTML5適合であるかどうかに関わらず、分散ウェブアプリケーションを一般的に具現化できることである。本発明の一実施形態を使用して分散ウェブアプリケーションを具現化することにより、バックエンドシステムとサービスとの間でウェブブラウザクライアントまでずっとHTML5仕様に機能的に適合するように適当なメッセージ取り扱い配信が確保される。更に、好ましい実施形態は、HTML5規格に機能的に適合する。本来的に適合するHTML5ウェブブラウザクライアントは、サーバー又はクライアントアプリケーションコードを変更する必要なく、本発明によりサポートされる分散ウェブアプリケーションに及びその中に透過的に参加することができる。
【0013】
本発明の別の効果は、クライアントエミュレーションライブラリーがバイナリー及びテキストベースの両プロトコルサポートを与えることである。バイナリープロトコルサポートは、テキストのみのウェブソケットプロトコルの特徴改善を許すと共に、クライアントとサーバーとの間の生のTCP通信を一般的に可能にする非常に望ましい仕様拡張である。バイナリープロトコルサポートを設けることは、HTML5適合に影響することなく、ウェブソケットプロトコルサポートへ効率的にインターフェイスされる。本来的に適合するHTML5ウェブブラウザクライアントは、バイナリープロトコルから等しく利益を得、そしてそれを使用することができる。
【0014】
本発明の更に別の効果は、ウェブブラウザクライアントのエミュレーションスタック、及びゲートウェイサーバーとの相互動作が、高性能であることである。メッセージの配信は、弾力的である。下流のサーバー送信イベント要求に対する接続を含む全ての接続は、クライアントが開始するので、クライアントとゲートウェイサーバーとの間の通信は、HTTPプロトコルの具現化によりファイアウオール及びプロキシーサーバーをシームレスに横断することができる。切れた接続又は失われた要求の場合には、クライアント側ウェブアプリケーションは、自動的に再接続してメッセージの配信を保証するよう選択することができる。再接続オペレーションは、クライアントプロトコルライブラリ84として具現化されるのが好ましい。更に、エミュレーション層は、ローカルウェブブラウザクライアントのプロキシー設定を自動的に認識しそして讃えることができ、ウェブプロキシーサーバーを通過しなければならない接続に伴う潜在的な問題を排除することができる。更に、クライアントライブラリは、異なるクライアント技術で具現化することもでき、そして全てのケースで、サービスに対するプロトコルトランザクションを許すために適当なAPIを与えることができる。アプリケーションサーバーロジックを具現化するのに、複数のクライアント/サーバー通信トランザクションを潜在的に伴う複合サーブレットベース及び他のカスタムサーバー側サポートロジックは、要求されない。むしろ、ウェブブラウザクライアントアプリケーションは、テキスト、及び適宜に、バイナリーデータパッケージと通信することができ、これにより、通信オーバーヘッド、複雑さ、及び実行待ち時間を減少することができる。本発明により表される分散ウェブアプリケーションアーキテクチャーは、ワールドワイドの商業的アプリケーションの環境でも、非常に大きなユーザコミュニティをサポートするように容易に拡張することができる。
【0015】
本発明の更に別の効果は、分散ウェブアプリケーションの環境においてアクセスできるサービス及び起点サーバーのセットにわたり、ひいては、ウェブブラウザクライアントの特定のセットにより、容易に管理された制御をゲートウェイサーバーが与えることである。
【0016】
本発明の更に別の効果は、1つ以上のバックエンドサービスから、参加する全ての接続されたウェブブラウザクライアントへ送られ又は得られるデータのブロードキャスト及びマルチキャスト通知のための効率的な基礎を、ゲートウェイサーバーの使用により与えることである。バックエンドデータソースは、1つ又は幾つかの当該ゲートウェイサーバーへデータを送信することができ、これにより、単一の接触点から新たなサーバー送信イベント通知としてゲートウェイサーバーサポートウェブブラウザクライアントへ効率的に配布できるようにする。
【0017】
本発明の更に別の効果は、エミュレーションクライアントライブラリを使用して、多数の異なる特殊なクライアントプロトコルをサポートできることである。特定の又は所有権クライアントのプロトコルを要求する分散ウェブアプリケーションは、ゲートウェイサーバーを経てダウンロードするのに使用できるクライアントライブラリリソースを調整することによりサポートすることができる。
【図面の簡単な説明】
【0018】
【図1】本発明の好ましい実施形態のための好ましい動作環境を一般的に示す。
【図2】分散クライアント/サーバーウェブアプリケーションの具現化において本発明の好ましい実施形態を具現化するのに適したクライアント/サーバーシステムを示すブロック図である。
【図3】分散クライアント/サーバーウェブアプリケーションの具現化において本発明の好ましい実施形態を具現化するのに適した好ましいクライアント/サーバーシステムを示すブロック図である。
【図4】本発明の好ましい実施形態と一貫する分散クライアント/サーバーウェブアプリケーションに関連してクライアント側アプリケーションを具現化するように構成されたウェブブラウザクライアントを示す詳細なブロック図である。
【図5】本発明の好ましい実施形態と一貫する積層ライブラリスタックとして具現化されるクライアントライブラリのブロック図である。
【図6】本発明の好ましい実施形態によるウェブブラウザクライアントアプリケーションの好ましいiframeベース具現化を示す詳細ブロック図である。
【図7】本発明の好ましい実施形態によるエミュレートウェブソケットネットワーク接続を確立する際のウェブブラウザクライアントアプリケーションの初期化及び実行を示すシーケンス図である。
【図8A】本発明の好ましい実施形態により構成されたウェブブラウザクライアントアプリケーションの好ましいカプセル化実施を示すブロック図である。
【図8B】本発明の好ましい実施形態により構成されたウェブブラウザクライアントアプリケーションの好ましいカプセル化実施を示すブロック図である。
【図9】本発明の好ましい実施形態によるエミュレートウェブソケットネットワーク接続を確立する際のウェブブラウザクライアントカプセル化アプリケーションの実行を示すシーケンス図である。
【図10】本発明の好ましい実施形態において具現化されるゲートウェイサーバーの好ましい具現化のブロック図である。
【図11】本発明の好ましい実施形態に関連して使用される好ましいサービスリダイレクション技術を示すフローチャートである。
【図12】本発明の好ましい実施形態によりウェブブラウザクライアントとゲートウェイサーバーとの間にエミュレートウェブソケット接続を確立する好ましいプロセスを示すシーケンス図である。
【図13】本発明の好ましい実施形態によりウェブブラウザクライアントとゲートウェイサーバーとの間にエミュレートウェブソケット接続を確立し維持するのに含まれるプロキシーサーバーの取り扱いを示すシーケンス図である。
【発明を実施するための形態】
【0019】
本発明は、ウェブサービスにアクセスするのに使用されるクライアントウェブブラウザの現在のネーティブな能力とは実質的に独立してリアルタイム全二重通信能力の必要性を満足する。本発明の以下の詳細な説明において、1つ以上の図面に示された同じ部分を指すのに同じ参照番号が使用される。
【0020】
サポート仕様を含むドラフトHTML5は、ウェブブラウザ及び同様のHTTPベースのクライアントアプリケーションにおいて具現化するために推奨されるウェブソケット(WebSocket)及びサーバー送信イベント(Server-Sent Event)(SSE)のネーティブなアーキテクチャー及び動作特徴を定義する。ウェブソケット及びサーバー送信イベントは、全二重直接TCP通信チャンネルを使用できるクライアントアプリケーションを前提としている。本発明に関連したアプリケーション10において、図1に一般的に示すように、従来のクライアントシステム12、14は、パブリックインターネット、プライベートイントラネット又は他の通信ネットワーク16を通して、1つ以上のリモートサーバーシステム18、20、22にアクセスして、リアルタイム情報を両方向に要求し且つ受け取るために、ウェブブラウザアプリケーションを実行する。典型的な例において、クライアントシステム12により実行されるウェブブラウザクライアントを通してなされる情報要求は、最初に、一次又はソースサーバー18に向けられ、そして他の二次サーバー20、22で必要とされるリアルタイム両方向情報フィード接続が確立される。例えば、ソースサーバー18からウェブページが要求され、これは、配信されたページのユーザインターフェイス表現内の適当な指定のウインドウエリア内で、ニュースソースサーバー20からのリアルタイムニュースストーリー及び株情報サーバー22からの株価情報を提示する。
【0021】
従来、ソースサーバー18との整合においてサーバー20、22とのリアルタイム両方向二次接続の透過的な確立は、クライアントシステム12、14により実行されるウェブブラウザクライアントにおけるウェブソケットのネーティブサポート及びサーバー送信イベントのサポートに依存する。広く普及したネーティブなウェブソケット及びサーバー送信イベントのサポートがないと、更に、全ての主要な独立したウェブブラウザクライアント具現化にわたって適合する仕方で、商業的又はその他のウェブソケットベースシステムを確立することは、実際的でない。
【0022】
本発明によれば、特定のウェブブラウザ具現化がHTML5規格をもたないか又はその部分的なネーティブ具現化しかもたない場合でも、従来のpre−HTML5適合ウェブブラウザクライアントを具現化して、完全に適合するウェブソケット及びサーバー送信イベントを即座にサポートできるようにするゲートウェイサービスが提供される。このゲートウェイサービスは、既存のサーバー18、20、22において具現化されるか、或いは好ましい実施形態のように、個別の専用のゲートウェイサーバーシステムにおいて具現化される。通常部分的にネーティブな特徴の具現化を確認することが、適宜に利用される。その他、本発明は、HTML5仕様に適合するネーティブな具現化と一貫した機能的適合システムを達成するエミュレーションシステムを具現化する。
【0023】
図2を参照すれば、ウェブソケット及びサーバー送信イベントの種々の観点の有効なエミュレーションは、従来は、既存の従来の規格適合ウェブブラウザ、特に、ドラフトHTML5仕様に完全に適合しないもの、に組み込まれる確立されたセキュリティ並びに機能的制限によって除外される。ウェブソケット及びサーバー送信イベントエミュレーションの重要な要件は、クロス起点通信を透過的に具現化できることである。このような通信は、従来、既存の規格指定同一起点セキュリティポリシー要件により除外される。即ち、ソース起点サーバー34からクライアントシステム32へ配信されるウェブページを特に含むドキュメントは、同じ起点範囲内のみのあるリソースを参照し、要求するように制約される。一般的に定義されるように、起点とは、トランスポートプロトコル、ドメイン及びポートナンバーにより定義される。起点アクセス制約は、クロスサイトスクリプティングアタックを除外し、そして異なる起点をソースとするドキュメント間の偶発的な相互作用をより一般的に防止する。不都合なことに、従来の起点セキュリティ特徴は、異なるソース起点範囲を有するページ間の、悪意のない通信も阻止する。従来、例えば、ソース起点サーバー34から送られるドキュメントは、異なる起点にあるターゲットサーバー36、38から送られるドキュメント又はサービスにアクセスすること又はそれとデータを交換することが防止される。
【0024】
本発明によれば、図3に一般的に示すように、本発明の好ましい実施形態により構成されたクロスドキュメントメッセージングシステム40は、クライアントシステム32によりロードされたドキュメントを異なる起点にわたって選択的にセキュアに相互作用できるようにする。ターゲット起点要求は、説明上、ソース起点サーバー34の範囲外にある起点により定義されたサーバーにより提供されるドキュメント又はサービスに対して、ソース起点サーバー34から受け取られるソース起点ドキュメントから生じるリソース要求として定義される。指定のドメイン、ポート及びトランスポートプロトコルのいずれかがソース及びターゲット起点間で異なる場合には、起点の範囲が異なり、それら起点間の要求がクロス起点要求となる。本発明によれば、クライアントシステム32からのターゲット起点要求は、特に、ゲートウェイサーバー42へ向けられ、これは、次いで、ターゲットサーバー36、38と通信できるようにする適当なサービスを具現化する。ゲートウェイサーバー42は、典型的に、ソース起点サーバー34及びクライアントシステム32の範囲外の起点である。
【0025】
図4に50で詳細に示されたように、クライアントシステム32で実行されるウェブブラウザクライアントアプリケーション52は、ユーザ選択ソース起点ウェブサーバー34へ要求を発行する。評価の際に、ソース起点ウェブサーバー34は、要求対応ウェブページドキュメント54を返送する。好ましくは、ウェブページドキュメント54は、検索されるべき初期構成リソースの識別を含むように予めコード化される。ウェブブラウザクライアントアプリケーション52がオブジェクト基準に遭遇するときに、初期構成リソース要求がソース起点ウェブサーバー34へ発行され、それに対応するクライアントライブラリ56を返送する。オブジェクト基準リソースの性質に基づいて、1つ以上のファイルがクライアントライブラリ56の一部分として返送される。又、ウェブページドキュメント54は、ソース起点ウェブサーバー34に代わって動作する指定のゲートウェイサーバー42を識別するように働く初期ターゲット基準でも予めコード化されるのが好ましい。
【0026】
クライアントライブラリ56の好ましい実施形態が、図5に、積層ライブラリスタック70として一般的に示されている。全体的に、クライアントライブラリ56は、従来のpre−HTML5適合ウェブブラウザアプリケーション52において実行されたときに機能的HTML5適合ウェブソケットエミュレーションを与える。低レベルの、より基本的な層が積層ライブラリスタック70の底に配置され、より上位の層において、より高いレベルの機能が次第に与えられる。図5に示すもの以外の付加的な層が、従来のpre−HTML5適合ウェブブラウザに存在する。アドベフラッシュ(Adobe Flash)、マイクロソフトシルバーライト(Microsoft Silverlight)、及びオラクルジャバ(Oracle Java(登録商標))を含むウェブブラウザアプリケーション層プラグインも、もしあれば、ウェブブラウザ実行環境内で利用することができる。
【0027】
クライアントライブラリ56のベースは、必要なエミュレーションをpre−HTML5適合ウェブブラウザにもたずに名目上存在する従来のXmlHttpRequest(XHR)層72である。XmlHttpRequest層72は、HTTP及びHTTPS要求を指定のターゲットウェブサーバーシステムへ直接送信することのできるアプリケーションプログラミングインターフェイス(API)を与える。サーバー応答は、データとして直接受け取られ、これは、次いで、要求を開始したウェブアプリケーションにより使用するためにAPIを通して得ることができる。名目上、XmlHttpRequestの実行及び完了は、単一の起点に限定される。即ち、要求ソース及びターゲットウェブサーバーシステムは、共通起点の範囲内に存在しなければならない。
【0028】
ポストメッセージ(PostMessage)層74は、クライアントブラウザ52の環境内で実行されるウェブアプリケーションにアクセスできる付加的なAPIコールを与えることにより、エミュレートされたクロス起点メッセージをサポートするために設けられる。本発明の好ましい実施形態で具現化されるように、ポストメッセージ層74は、従来のウェブブラウザの厳密なセキュリティポリシー具現化を管理し、ウインドウ内に埋め込まれたドキュメントが異なる起点からロードされる場合でも、単一のベースウェブページドキュメントにより定義される複数のフレームをセキュアに通信できるようにする。ベースドキュメントと、ページ内に埋め込まれたドキュメントとの間の通信は、ターゲットが、命名されたソース起点からのメッセージを明確に予想しそして受け容れるとすれば、ポストメッセージ層74を通して許される。ソースが、命名されたターゲット起点からのメッセージを明確に聴取し受け容れる場合には、両方向通信がサポートされる。ある現在の、従来ウェブブラウザは、ポストメッセージAPIの初期ネーティブ具現化をサポートする。ポストメッセージ層74は、既存のポストメッセージAPIの存在及び適合性を検出するのが好ましい。ネーティブポストメッセージAPIが存在しないか、ネーティブポストメッセージAPIが不適合である場合には、ポストメッセージ層74がエミュレーションを通して全てのポストメッセージAPIコールを取り扱うことができる。
【0029】
好ましい実施形態において、ポストメッセージ層74は、典型的にジャバスクリプト(JavaScript(登録商標))、フラッシュ(Flash)及びシルバーライト(Silverlight)である埋め込みウインドウ技術の性質に基づく具現化を使用してポストメッセージAPIをエミュレートする。各々について、埋め込みドキュメント又はその等効物が埋め込みウインドウ起点の範囲内で検索される。この埋め込みドキュメントは、機能的に、ポストメッセージAPIと両立性のあるブリッジ整流処理を与える。現在の好ましい実施形態と一貫したジャバスクリプトの場合には、クライアントiframeを、ゲートウェイサーバー42により取り扱われる対応起点へのブリッジとして使用する構造化された仕方でエミュレーションが具現化され、それにより、ソース対ターゲット通信経路を機能的に確立する。ポストメッセージのメッセージは、URL id断片として転送される短いデータセグメント、典型的に、iframe URLのポスト“#”部分として、iframeを通して通信される。ジャバ、フラッシュ及びシルバーライトの場合には、ウインドウ対応埋め込みドキュメントと組み合わされて動作されるインストールランタイムは、本発明により構成された技術対応ブリッジメカニズムを使用して通信を確立するための基礎をなす。
【0030】
クロス起点リクエスト(Cross-Origin Request)層76は、HTML5適合クロス起点リソースシェアリングAPIを通してアクセス可能なW3Cクロス起点リソースシェアリング(Cross-Origin Resource Sharing)(CORS)仕様のエミュレーションを与える。クロス起点リクエスト層76は、ウェブブラウザクライアントがネーティブクロス起点リソースシェアリングをサポートしないか又はネーティブ具現化が適合しない場合にイネーブルされる。本発明の好ましい実施形態で具現化されるように、クロス起点リソースシェアリングは、ポストメッセージ層74及びXmlHttpRequest層72のレバレッジ使用を通してウェブブラウザクライアント52においてエミュレートされる。クロス起点リソース要求は、ポストメッセージ及びXmlHttpRequest層74、72を通して処理され、そしてゲートウェイサーバー42を通して、対応ターゲットサーバー36、38によりサービスされる指定のターゲット起点に接続される。本発明の好ましい実施形態では、ゲートウェイサーバー42は、ターゲットサーバー36、38への特定の適合接続を確立できるHTML5適合クロス起点リソースシェアリングコンポーネントを具現化する。
【0031】
サーバー送信イベント層78は、ウェブクライアントが、HTML5適合サーバー送信イベントストリームに接続できるようにする。サーバー送信イベント層78は、データのストリームをリモートターゲットサーバーからウェブブラウザ52へ送信されるものとしてローカルに管理する。データのサーバー送信ストリームは、従来、ウェブブラウザクライアント52へと下流へ送信されるネットワークメッセージの一方向性非同期シリーズとして具現化される。ある従来のウェブブラウザは、SSEプロトコルの初期のネーティブ具現化であるが、本発明の好ましい実施形態は、エージェント特有のネーティブ具現化を拡張することによりサーバー送信イベント層78の完全な具現化を与える。即ち、サーバー送信イベント層78は、現在エージェントを検出し、そしてSSEプロトコルに対するサポートを完了するために必要に応じて機能を補足する。部分的なネーティブサポートが得られないか又は使用できない場合には、サーバー送信イベント層78は、SSEプロトコルをサポートするのに適したものとして全エミュレーションを遂行する。本発明の好ましい実施形態では、ゲートウェイサーバー42は、ウェブブラウザクライアント52とのクロス起点XmlHttpRequest応答ストリーミング接続を管理するためのプログラムを具現化し、サーバー送信イベントストリームのソースで動作している上流ターゲットサーバーから供給される付加的なメッセージを聴取しながら、HTTP応答をオープンに保つ。
【0032】
ウェブソケットエミュレーション層80は、両方向接続をサポートする。接続が確立されると、ウェブブラウザクライアント52は、典型的にターゲットサーバー36、38をホストとするバックエンドサービスに直接リンクされる。又、接続は、それが確立されると、オープンのままとなり、クライアント及びサーバーの両方は、非同期で前後に情報を送信することができる。ウェブソケットエミュレーション層80は、ジャバー(Jabber)、IMAP、等のテキストベースのプロトコルをサポートする。好ましい実施形態では、ウェブソケットエミュレーション層80は、HTML5適合ウェブソケットAPIの完全な具現化を与える。
【0033】
バイトソケット(ByteSocket)層82は、好ましくは、ウェブソケットエミュレーション層80を通るバイナリーデータ送信をサポートするために設けられる。それに対応するバイナリートランスポートプロトコル仕様は、W3C又はIETFにより与えられていない。本発明によれば、バイトソケット層82は、ウェブソケットAPIと一般的にパラレルのAPIを具現化する。バイトソケットAPIは、主としてバイト値を含むバイナリープリミティブの読み取り及び書き込みを許す付加的な方法を与える。バイトソケット層82は、バイナリープロトコルの全範囲の具現化を可能にし、更に、テキストベースのプロトコルに対しネットワークにわたってバイナリー圧縮及び暗号化を適用する。
【0034】
典型的に特殊な付加的なクライアントプロトコルライブラリが、クライアントプロトコルライブラリ層84の一部分として、クライアントライブラリ56に含まれてもよい。これらのクライアントプロトコルライブラリは、典型的に、アプリケーション又はサーバー特有のプロトコルを具現化する。本発明の好ましい実施形態では、クライアントプロトコルライブラリ層84は、例えば、グーグルトーク(Google Talk)により使用される従来のXMPPプロトコルを具現化するXmppClientを含むことができる。好ましくは、XmppClientクライアントライブラリは、ウェブソケットエミュレーション層80を利用して、XMPPテキスト指向のメッセージを交換する。
【0035】
又、クライアントプロトコルライブラリ層84は、ストリーミングテキスト配向メッセージングプロトコル(Streaming Text Orientated Messaging Protocol)(Stomp)を具現化するStompClientクライアントライブラリを含むことができる。好ましくは、StompClientクライアントライブラリは、バイトソケットクライアントライブラリを使用して、ApacheActiveMQのようなStomp適合アプリケーションを実行するリモートサーバーとでStompメッセージを交換する。同様に、リモートインターネットリレーチャット(Internet Relay Chat)(IRC)サーバーとのメッセージ交換をサポートするためにIrcClientクライアントライブラリを設けることができる。更に特殊なクライアントライブラリ、例えば、リモートフレームバッファクライアントライブラリは、特殊な両方向プロトコルをサポートするために具現化することができる。ネットワークを経てキーボード及びマウスイベントを送信すると共にグラフィックスクリーン更新を受信するためにバーチャルネットワーククライアント(VNC)具現化によりリモートフレームバッファプロトコルが使用される。
【0036】
本発明の別の実施形態では、エミュレーション層70の初期化中に、ウェブブラウザクライアント52の実行環境内でフラッシュプラグインの潜在的な存在を検出するためのテストが実施される。検出されて、エミュレーションに対する付属物として使用できるように適当に構成された場合には、エミュレーション層70は、指定のゲートウェイサーバー42との単一のTCPソケット接続を確立するに充分な幾つかのネットワーク及びソケット通信動作をプラグインへ選択的に委任することができる。即ち、UI動作をサポートするためにフラッシュプラグインが一般的に使用されるが、そのプラグインに組み込まれた限定されたネットワーク層及び限定されたソケット能力の選択的利点を取り入れることができる。ネットワーク及びソケット層の観点しか使用しないと、目に見える表示アーティファクトは生成されない。しかしながら、フラッシュプラグインは、常に利用できるものではなく、ファイアウオール、HTTPプロキシー及び他の通信バリアの存在により使用可能な仕方で又は使用できるように構成される。フラッシュプラグインにより与えられるネットワーク層の使用は、依然、限定された環境のもとで行われる。
【0037】
典型的な使用において、ウェブアプリケーションは、ウェブブラウザクライアント52により実行されるクライアント側アプリケーションと、ソース起点サーバー34及び1つ以上のターゲットサーバー36、38によりある組み合わせで機能的に具現化される分散型サーバー側アプリケーションと、の組み合わせとして具現化される。ウェブページ54におけるオブジェクト基準は、ウェブブラウザクライアント52がクライアント側アプリケーションを1つ以上のドキュメントとして最初にロードできるようにする。クライアント側アプリケーションは、典型的に、サーバー送信イベント層78、ウェブソケット層80及びバイトソケット層82に関連したAPIと対話しそしてそれを使用するように設計される。ウェブソケット層80は、使用される主たるAPIであると予想されるが、全ての層をクライアント側アプリケーションにより使用することができる。
【0038】
図6を参照すれば、ウェブブラウザクライアント52の環境内の実行可能なドキュメント92としてクライアント側アプリケーションが示されている。本発明の好ましい実施形態において具現化されるように、ドキュメント92の実行によるクライアントライブラリ56へのAPIコールは、最終的にポストメッセージ要求94として実現される。各ポストメッセージ要求94は、少なくとも、当該ソース及びターゲット起点と、要求により表される動作とによって定義される。ソース起点は、ドキュメント92の起点である。具現化されるエミュレーションの性質により、メッセージのターゲット起点は、実際には、ゲートウェイサーバー42の起点である。負荷バランス及び相対的な地理的な理由で複数のゲートウェイサーバー42を同時に具現化することができる。実際上、ポストメッセージ要求94は、ターゲットゲートウェイサーバー42も識別する。
【0039】
クライアント側アプリケーションを具現化する技術がJavaScript(登録商標)である場合には、1つ以上のiframe92が通信ブリッジとして確立される。クロス起点要求層74として処理された各クロス起点XmlHttpRequestは、それに対応するポストメッセージ要求94として実現され、これは、次いで、ドキュメントイベントとしてiframe96インスタンスへ通されるのが好ましい。iframe96インスタンスは、要求に関連したソース及びターゲット起点の独特の組み合わせに基づいて選択され、ターゲット起点は、この場合も、サービスゲートウェイサーバー42の起点に対応する。本発明の好ましい実施形態では、iframe96インスタンスは、必要に応じて生成され、そしてウェブページ54又はウェブブラウザクライアント52が閉じるまで持続するのが好ましい。ソース及びターゲット起点の組み合わせに対するiframeがまだ生成されない場合には、ポストメッセージ層74がそれに対応するiframe96を生成し、そしてゲートウェイサーバー42とのプリフライト要求/応答トランザクションを通して、iframe96インスタンスにより信頼関係が確立される。
【0040】
ゲートウェイサーバー42の観点から、プリフライト要求の発生は、標準的なCORSプリフライト要求と一貫したものであり、従って、CORS適合ウェブブラウザをゲートウェイサーバー42と相互動作させることができる。信頼関係を確立する一部分として、通信ブリッジルーチンがゲートウェイサーバー42からiframe96インスタンスへダウンロードされ、iframe96インスタンス内でポストメッセージAPIのターゲット側を具現化する。信頼関係により、開始するポストメッセージ要求に対応するXmlHttpRequestは、次いで、ゲートウェイサーバー42へ送信され、そしてターゲットサーバー36のようなサービスサーバーへ適宜に転送される。本発明の好ましい実施形態では、ゲートウェイサーバー42を通してアクセスできる他のターゲットサーバー36、38によって提供されるサービスを定義するために、ゲートウェイサーバー42にマッピングが管理上確立される。従って、ポストメッセージ要求がウェブソケット要求を表す場合には、典型的な結果として、ドキュメント92から、それに対応するiframe96インスタンス、ゲートウェイサーバー42を経て、ドキュメント92へのリアルタイム非同期データソースとして働くターゲットサーバー36により典型的に提供されるリモートサービスへ、両方向可能な接続が確立される。
【0041】
ソース起点の検証は、ゲートウェイサーバー42によって行われるのが好ましい。JavaScript(登録商標)エミュレーション環境では、ゲートウェイサーバー42は、受け取られた各要求が、ゲートウェイサーバー42のターゲット起点に一致する値を有するXMLHttpRequest“リファラ”ヘッダと、許されたソース起点の値を有するXMLHttpRequest“X−起点”ヘッダとを含むことを検証する。好ましくは、“X−起点”ヘッダの値は、ゲートウェイサーバー42からiframe96インスタンスへダウンロードされる通信ブリッジルーチンにより決定される。ゲートウェイサーバー42は、通信ブリッジルーチンを発生し、そして通信ブリッジルーチンは、ウェブブラウザクライアント52からのiframe96インスタンスを含むドキュメント92のソース起点を決定するので、“X−起点”ヘッダの値は、ゲートウェイサーバー42により、要求のソース起点を正確に識別すると信用される。
【0042】
フラッシュ及びシルバーライトのような他のクライアント側アプリケーション具現化技術については、同様のエミュレーションアーキテクチャーが使用される。一般的に、ポストメッセージ94は、識別された技術に基づき、ベースドキュメント92内に、iframe96と同様の対応サブウインドウを生成する。ウインドウを初期化すると、ドキュメント又は等効物が、プリフライト要求/応答トランザクションの一部分又は等効物としてゲートウェイサーバー42から参照され及び検索される。その検索されたドキュメントは、本発明の好ましい実施形態では、ポストメッセージAPIのターゲット側を具現化する通信ブリッジルーチンを機能的に含み、これにより、必要に応じて、ベースドキュメント92とサブウインドウドキュメントとの間にセキュアな通信経路を許す。
【0043】
ゲートウェイサーバー42との信頼関係を確立する好ましいプロセス110が図7に一般的に示されている。ウェブブラウザクライアント52のユーザによって典型的に開始される従来のページ要求112に応答して、要求112で示すように、ロードページ要求が起点サーバー34へ発行される。それに対応するページがロードされ(114)、そして最初に評価され(116)、ページにより要求される付加的なオブジェクトを探索しロードする。本発明の好ましい実施形態では、クライアントライブラリ56へのページ埋め込み参照により、埋め込み参照識別ゲートウェイサーバー42から本質的にスタティックなリソースロード118が生じる。ウェブブラウザクライアント52は、ロードされたページに関連した初期化120を完了し、これは、クライアントライブラリ層70のウェブブラウザクライアントへのエミュレーションインターセプトを検出し及び確立するためのクライアントライブラリの必須の初期化を含む。
【0044】
典型的に、あるユーザ対話122、又はドキュメント92の自律的動作から生じる開始イベントに応答して、ウェブソケット、バイトソケット、クロス起点要求、又は他の要求がクライアントライブラリ層70に対してなされる。例示上、この要求は、ドキュメント92により表されるJavaScript(登録商標)クライアントアプリケーションから発生するウェブソケット要求である。この要求は、更に、ゲートウェイサーバー42により提供される特定のサービスへの接続を要求するものとして特定される。この要求は、ポストメッセージ層74へと処理される(124)。本発明の好ましい実施形態によれば、適当なiframe96インスタンスがまだ存在しない場合に、ウェブページベースドキュメント54のソース起点を識別する機能的ソース起点、及びサービスの有効な位置を識別する機能的ターゲット起点を伴うiframeが生成される。JavaScript(登録商標)におけるiframeの生成は、例えば、次のコードで具現化することができる。
【0045】
iframeの機能的ソース起点は、明確にセットされず、通信ブリッジルーチンにより、ウェブブラウザクライアント52へのコールによって自動的に決定される。このコールは、iframe96インスタンスの生成に続く通信ブリッジルーチンの初期化中及びiframe96インスタンスへの通信ブリッジルーチンのダウンロード中に行われるのが好ましい。従って、iframe96インスタンスの機能的ソース起点は、iframe96インスタンスの生成の役割を果たすドキュメント92のソース起点、例えば、“http://retailer.com:80”として決定される。機能的ターゲット起点は、“src”属性を、例えば、“http://gateway.com:2750”として明確に使用して特定される。
【0046】
好ましくは、開始ポストメッセージ要求の当該ソース及びターゲット起点、並びに要求されたサービス、を識別するプリフライトXmlHttpRequestメッセージは、指定されたゲートウェイサーバー42へ送信される(126)。ゲートウェイサーバー42における管理上確立されるサービスアクセスポリシーが要求に対して評価される。本発明の好ましい実施形態では、ポリシーが一般的に次の形態をとる。
【0047】
従って、サービス“/gwStockService”のための“http://retailer.com:80”から“ws://gateway.com:2750”への特定のクロス起点リソース要求は、受け容れできると決定される。この要求は、更に、例えば、リモートターゲットサーバー36により提供される実際のサービスソース“tcp://target.com:1330/stockService”へのTCPベースのウェブソケット接続を確立して、ゲートウェイサーバー42によるオンデマンド生成によってサポートされる。本発明の好ましい実施形態では、ウェブブラウザクライアントアプリケーション92により要求できる種々のサービスがゲートウェイサーバー42において直接ホストされる。サービスアクセスポリシーにより特定される接続は、このようなケースでは、ローカルホストへの接続参照である。
【0048】
サービスアクセスポリシーの評価に基づき、確認メッセージが返送される(128)。何らかの理由でサービス接続が許されない場合には、発生する要求124が本質的に失敗となる。ウェブソケット接続に必要なエミュレートサポートは、それが許される場合に、初期化される(130)。本発明の好ましい実施形態では、これは、次のJavaScript(登録商標)に一般的に例示するように、到来する要求イベントを取り扱うためのポストメッセージリスナーをiframe96インスタンス内にインストールすることを含む。
【0049】
ウェブソケット要求124に対応するポストメッセージ要求は、次いで、XmlHttpRequestへ機能的に変換される。より詳細には、HTML5適合ポストメッセージ要求は、ベースウェブページ54ドキュメント内で、ターゲットドキュメントを表すウインドウにおいてコールされる。この要求は、ポストメッセージデータとして表されるメッセージ、及び要求のソース起点を通す。iframe96インスタンスがそれ以前に確立される場合には、ポストメッセージ要求がポストメッセージ74 APIに通される。
【0050】
この要求は、次いで、ゲートウェイサーバー42へ送信され、そしてサービスアクセスポリシーに基づいて資格付けがなされる。ゲートウェイサーバー42は、次いで、識別されたターゲットサーバー36との対応接続134を確立する。接続134の性質は、要求されたサービスの性質に依存し、例えば、TCP又はウェブソケット接続でよい。XmlHttpRequestに対する応答が受け取られて、iframeチェーンを通して戻され、応答データペイロードをベースウェブページ54ドキュメントへ返送する。その後のウェブソケット要求124は、iframe96インスタンスを再使用し、それにより、ソース及びターゲット起点間に確立される信頼関係のレバレッジ使用をなす。
【0051】
他のウェブブラウザクライアントアプリケーション92技術に関しては、ベースページ54との対話が制限される。図8Aに一般的に示されるように、ウェブブラウザベースページ54は、そのベースページ54に埋め込まれた別のウェブブラウザクライアントアプリケーション92との必須の対話がもしあっても制限した状態で、カプセル化フラッシュ、シルバーライト、又は他のアプリケーション152を埋め込むことができる。本発明の好ましい実施形態では、このようなカプセル化アプリケーション152は、ゲートウェイサーバー42からのリソース118としてロードされる。
【0052】
フラッシュカプセル化アプリケーション152のケースでは、フラッシュプラグインの一部分として与えられるフラッシュランタイムライブラリは、一般的な所有権ネットワーク及びソケット状通信能力を含む。クライアントライブラリ56は、カプセル化アプリケーション152の一部分として含まれ、カプセル化アプリケーション152がゲートウェイサーバー42の外部サービスと直接通信できるようにするのが好ましい。
【0053】
本発明の好ましいフラッシュ実施形態は、クロス起点リソースシェアリングでのフラッシュアプリケーション実行をサポートする。図8Bを参照すれば、ソース起点サーバー34からロードされたドキュメント92は、これもソース起点サーバー34からロードされたフラッシュクライアントアプリケーション156に対する参照を含む。それ故、ウェブブラウザクライアント52により実行されるフラッシュクライアントアプリケーション156は、ドキュメント92のソース起点及びソース起点サーバー34内で実行される。従って、フラッシュクライアントアプリケーション156は、ゲートウェイサーバー42からロードされることが更に特定されるフラッシュブリッジアプリケーション158に対する参照を含む。それ故、フラッシュブリッジアプリケーション158は、ゲートウェイサーバー42のターゲット起点内で実行される。
【0054】
フラッシュクライアント及びブリッジアプリケーション156、158は、SWFファイルフォーマットドキュメントとしてロードされたフラッシュ移動ファイルとして具現化されるのが好ましい。フラッシュクライアントアプリケーション156は、クライアントライブラリ56を含むのが好ましい。本発明により、iframeを通してのポストメッセージ通信と同様に、フラッシュクライアントとブリッジアプリケーション156、158との間にセキュアな通信能力が確立される。このチャンネルは、フラッシュランタイムライブラリを通してサポートされる共有イベントを使用して確立され、従って、データを両方向にディスパッチできるのが好ましい。この通信チャンネルは、フラッシュブリッジアプリケーション158が、実行を通して、ゲートウェイサーバー42により資格付けされたソース起点で識別されたフラッシュクライアントアプリケーション156を検証しそしてそれのみと通信することを要求することにより、ソース及びターゲット起点の独特の組み合わせに固定される。この通信チャンネルの初期化において、フラッシュクライアントアプリケーション156のソース起点は、フラッシュブリッジアプリケーション158によりフラッシュクライアントアプリケーション156のLoaderInfoメタデータから検索される。このソース起点は、ゲートウェイサーバー42へ返送される。ゲートウェイサーバー42に対してローカルの管理上確立されたセキュリティポリシーの評価において起点が許可されたとすれば、フラッシュブリッジアプリケーション158は、返送メッセージにより、フラッシュクライアントアプリケーション156との共有イベント通信に対してイネーブルされる。フラッシュクライアントアプリケーション156により具現化されたクライアント側ウェブアプリケーションは、例えば、ターゲットサーバー36により提供されるリモートサーバーにアクセスするため、必要に応じて、ゲートウェイサーバー42のクロス起点にアクセスすることができる。
【0055】
或いは又、フラッシュクライアントアプリケーション156は、ウェブソケット接続を使用してゲートウェイサーバー42と直接通信することができる。ネーティブウェブソケット接続が望まれる場合には、フラッシュブリッジアプリケーションは、ターゲットゲートウェイサーバー42へウェブソケット要求を発行するように試みる。フラッシュブリッジアプリケーション158を通して通信するのではなく、フラッシュクライアントアプリケーション156の初期実行は、フラッシュクライアントアプリケーション156の一部分として与えられるクライアントライブラリ56を通してウェブソケット接続要求を発行する。この接続要求は、ゲートウェイサーバー42とのソケットベース接続を要求するためにフラッシュランタイムを使用してエミュレートされる。次いで、フラッシュクロスドメインポリシーファイルが、意図されるウェブソケット接続のターゲット起点から検索される。ゲートウェイサーバー42は、特に、そのような要求を聴取し、そして有効フラッシュクロスドメインポリシーファイルを返送するように構成されるのが好ましい。フラッシュクライアントアプリケーション156の基礎となるフラッシュランタイムは、ポリシーを評価し、そしてターゲット起点とのクロス起点ウェブストック接続が許されるかどうか決定する。
【0056】
規範的なクロスドメインポリシーファイルは、次の通りである。
【0057】
フラッシュランタイムが適合ポリシーファイルを受け取りそしてフロムドメイン(from-domain)がフラッシュクライアントアプリケーション156のソース起点に一致するとすれば、ランタイムは、クライアントライブラリがソケットを指定のポートにおいてターゲット起点へとオープンしそしてネーティブウェブソケットプロトコルを経て通信するのを許す。ウェブソケットプロトコルハンドシェークの一部分として、ターゲット起点のクッキーを送信することも要求される。しかしながら、ネーティブソケット接続は、デフォールトによりクッキーを送信せず、従って、ターゲットドメインに取り付けられたクッキーを発見するために最小のHTTP要求もターゲットゲートウェイに送信される。クッキーは、HTTP応答からパースされ、ウェブソケットハンドシェーク通信に含まれる。
【0058】
デスクトップ及びアプレットJava(登録商標)クライアントにおけるクロス起点通信の具現化は、同様のクライアントアプリケーション156及びブリッジアプリケーション158アーキテクチャーを使用するのが好ましい。Java(登録商標)クライアントアプリケーション156については、アプリケーションコードが、ソース起点サーバー34から、好ましくはクライアントライブラリ56のJava(登録商標)具現化を含む.jarファイルにおいてロードされる。従って、Java(登録商標)クライアントアプリケーション156は、ドキュメント92のソース起点にある。初期実行において、Java(登録商標)クライアントアプリケーション156は、.jarファイルとしても与えられるブリッジアプリケーション158をゲートウェイサーバー42からロードするための要求をなす。ブリッジアプリケーション158のロードは、許される。その実行は、ターゲット領域で行われる。
【0059】
Java(登録商標)クライアントランタイムは、ソケット及びHTTP要求ライブラリ具現化を含む。ネーティブなウェブソケットプロトコル接続が望まれる場合には、ブリッジアプリケーション158は、ゲートウェイサーバー42へのソケット接続をなすことができる。そうではなくて、例えば、介在するプロキシーサーバーを横断するために要求されるように、エミュレートされたウェブソケットプロトコルが必要となる場合には、ランタイムHTTP要求ライブラリが使用される。
【0060】
異なる起点からのコードを、非セキュアな仕方で相互作用しないよう分離するために、Java(登録商標)ランタイムは、異なる起点からのクラスを異なる「クラスローダ」にロードする。デフォールトにより、1つのクラスローダにロードされたコードは、別のクラスローダにロードされたコードにアクセスしたり又はそれを実行したりすることができない。しかしながら、ランタイムシステムのコアであるコードは、特殊な「ランタイムクラスローダ」にロードされ、これは、他のコードにより安全にアクセスすることができる。Java(登録商標)クライアントとブリッジアプリケーションとの間の通信チャンネルをポストメッセージアナログコードとしてクライアントライブラリ56に生成するために、クライアント及びブリッジの両.jarは、コアJava(登録商標)ランタイムの一部分として存在するインターフェイス又は拡張可能なクラスをインスタンス生成する。ランタイムクラスローダにロードされるこのクラスは、Java(登録商標)クライアントアプリケーション156及びJava(登録商標)ブリッジアプリケーション158の両方にアクセスすることができる。この目的に使用できる規範的なクラスは、標準的Java(登録商標)クラス“java(登録商標).beans.PropertyChangeSupport”である。このクラスは、全ての実行環境においてJava(登録商標)ランタイムに得ることができ、従って、セキュリティの例外を招くことなくJava(登録商標)クライアントアプリケーション156及びJava(登録商標)ブリッジアプリケーション158によってコールすることができる。PropertyChangeSupportクラス、及び他のそのようなクラスは、任意のデータを両方向に通過できる拡張又は具現化を許すに充分なほど一般的である。
【0061】
他のクライアントランタイム環境でも要求されるように、ターゲット通信の報告されるソース起点は、正確であり、且つ改竄から保護されねばならない。正確さを確保するために、Java(登録商標)ブリッジアプリケーション158は、Java(登録商標)ランタイム環境へのコールを具現化し、Java(登録商標)クライアントアプリケーション156のソース起点を決定する。特に、Java(登録商標)ブリッジアプリケーション158は、Java(登録商標)クライアントアプリケーション156の.jarファイル内に存在することが分かっている.classファイルをロードするためのコールをなす。例えば、この.classファイルが“SourceOriginLocation.class”と命名された場合には、Java(登録商標)ブリッジアプリケーション158は、クラスをロードするために次のコールを行う。
【0062】
返送されるURL値は、ロードされた.classファイルの起点、ひいては、ソース起点の識別を含む。例えば、Java(登録商標)クライアントアプリケーション156の.jarファイルの名前が“client.jar”である場合には、返送されるURLが次の形態となる。
【0063】
それ故、“http://retailer.com:80”は、Java(登録商標)クライアントアプリケーション156のソース起点である。このソース起点は、次いで、任意の接続中にゲートウェイサーバー42へ送られ、ゲートウェイサーバー42がこのソース起点からのクロス起点接続を確認し、選択的に許すことができるようにする。Java(登録商標)クライアントランタイムは、それ自身、クラスロード中に正しいリソースストリングを返送することに信頼があるので、ソース起点値も信頼がある。
【0064】
本発明の好ましい実施形態において対処されるシルバーライトカプセル化アプリケーション152のケースには、制限が存在する。要するに、シルバーライトランタイムによりサポートされる起点セキュリティ範囲は、広く配布されるウェブアプリケーションに関連した実際の使用に対して充分な仕様を与えない。この制限は、本発明の好ましい実施形態では、カプセル化アプリケーション152の設定中のクロス起点通信ポリシーを資格付けすることで管理される。図9を参照すれば、典型的にあるユーザ対話162に応答して、カプセル化シルバーライトアプリケーション152は、ウェブソケット要求164として表されたシルバーライトサービス要求を、クライアントライブラリ56を通して処理する。本発明の好ましい実施形態において具現化されるように、2つのヘッダがウェブソケット要求164に自動的に追加される。又、本発明の好ましい実施形態では、ヘッダは、次のように特定される。
【0065】
ここで、第1のヘッダは、有効なソース起点を識別し、そして第2のヘッダは、ソース起点をエンコードする動的に発生されるヘッダである。ゲートウェイサーバー42に向けられたウェブソケット要求164を処理する際に、シルバーライトランタイムは、クロス起点通信の試みを認識する。次いで、シルバーライトランタイムは、プリフライト要求166を開始して、クライアントアクセスポリシーを検索する。プリフライト要求は、慣習によれば、特に命名された“clientaccesspolicy.xml”ドキュメントを検索するために起点ルートに向けられる。従って、定義されたターゲット起点がhttp://gateway.com:2750である場合には、ドキュメント要求は、http://gateway.com:2750/clientaccesspolicy.xmlに向けられる。ゲートウェイサーバー42は、シルバーライトアクセスの予想において、そのような要求を聴取し、そしてカスタマイズされたクライアントアクセスポリシー168で応答し、ゲートウェイサーバー42に、クロス起点アクセスを許すサービスアクセスポリシーをもたせる。即ち、要求のソース起点が、サービスアクセスポリシーの<cross−site−constraint>エントリーに対してチェックされる。この制約を満足すると、clientaccesspolicy.xmlドキュメントが動的に発生されそして返送される(168)。クライアントアクセスポリシーは、一般的に、次の形態となる。
【0066】
ドメインhttp://retailer.comから、サブ経路を含む経路/myServiceへの有効な要求は、2つのヘッダ値X−Origin及びX−Origin−http%3A%2F%2Fretailer.com%3A80を含むことが許されることが明記される。このクライアントアクセスポリシーは、シルバーライトカプセル化アプリケーション152への参照と共にシルバーライトランタイムに登録される。その結果、本発明によれば、シルバーライトカプセル化アプリケーション152は、ヘッダを全シルバーライト要求の一部分として与え、そしてゲートウェイサーバー42は、両ヘッダを有するシルバーライト要求だけを受け容れる。プリフライトトランザクション166、168の一部分としてのクライアントアクセスポリシーの動的な発生及びアプリケーションは、そのような要求を許し通過させるためにシルバーライトランタイムの動作を資格付けする。シルバーライトランタイムは、非適合ヘッダを有する要求を阻止し続ける。ゲートウェイサーバー42は、適合ヘッダをもたないシルバーライト要求は許さない。
【0067】
図10を参照すれば、ゲートウェイサーバー42の好ましい具現化190が示されている。好ましい実施形態において、ゲートウェイサーバー42は、ウェブブラウザクライアント32及び種々の起点サーバー34、36、38へのネットワーク接続をサポートするように構成された従来のウェブサーバーシステムにおいて具現化される。機能的に、クライアントネットワークインターフェイス192は、ウェブブラウザクライアント32とのネットワーク接続194をサポートする。クライアントライブラリ56から発信する要求は、ゲートウェイサーバー42により実行されるアプリケーションサーバー内にホストされるイベント駆動モジュールとして具現化されるのが好ましいエミュレーションサポートプロセッサ196に向けられる。最初に処理される要求は、次いで、ネーティブウェブソケットライブラリ198を通して具現化され、このライブラリは、サービスネットワークインターフェイス200を通して、要求されたウェブソケット両立性サービスを提供するリモート起点サーバー36、28へ至るTCP及び他のネットワーク接続202を確立することができる。
【0068】
又、ゲートウェイサーバー42によりホストされるアプリケーションサーバー内のイベント駆動モジュールとして実行されるサービスアクセスプロセッサ204は、エミュレーションサポートプロセッサ196により受け取られる要求を評価し、資格付けする。フラッシュ及びシルバーライトプリフライト動作中に発行されるクライアントアクセス要求は、ソケットポリシープロセッサ206により受け取られて取り扱われる。サービスアクセスプロセッサ204は、フラッシュ及びシルバーライトプリフライト要求において識別される起点を資格付けするために、必要に応じて、ソケットポリシープロセッサ206によりアクセスされる。
【0069】
ゲートウェイサーバー42、特に、エミュレーションサポートプロセッサ196は、サービス要求のリダイレクションをサポートするのが好ましい。サービスアクセスプロセッサ204は、サービス要求を資格付けするのに加えて、サービスターゲットのリダイレクションを指定する。名目上、このようなリダイレクションは、サービス要求に応答して従来のHTTP30Xを返送することにより具現化される。しかしながら、ゲートウェイサーバー42とのウェブソケット通信に対してiframe96インスタンスを使用する本発明の実施形態は、そのようなリダイレクション要求を取り扱う上で制限がある。より詳細には、iframe96インスタンスは、iframe96インスタンスの生成中に確立されたターゲット起点の範囲外の起点へのリダイレクションを取り扱うことができない。カプセル化プログラム152を具現化するのに使用される他の技術は、リダイレクション要求を自動的に取り扱う上で同様に制限がある。
【0070】
その影響を受ける好ましい実施形態では、図11に示す別のリダイレクション処理フロー210を使用するのが好ましい。明瞭化のために、リダイレクション処理フロー210は、Javascript(登録商標)具現化に特定して説明する。上述したように、ウェブソケット要求212は、クライアントライブラリ56のポストメッセージ層74を通るポストメッセージ要求214及びそれに対応するiframe96インスタンス216として処理される。対応サービスに対する要求218は、ゲートウェイサーバー42へとなされる。名目上、その要求は、リモートターゲットサーバー36、38上の要求されたサービスへの接続220により取り扱われる。
【0071】
そうではなくて、ゲートウェイサーバー42のインスタンス218は、異なるゲートウェイサーバー42のインスタンス222へのリダイレクションが適当であることを決定することがある。この決定は、ローカルの管理上確立されるサービスアクセスポリシーの評価に基づいて行われ、そしてリダイレクションターゲットゲートウェイサーバー42のインスタンス222を識別するのが好ましい。リダイレクションは、iframe216へ返送されるサービスリダイレクト224メッセージの生成により具現化されるのが好ましい。サービスリダイレクト224メッセージは、HTTP 30Xリダイレクションメッセージを包むHTTP 20Xメッセージとして特に与えられる。iframe216は、明確なHTTP 30Xメッセージの取り扱いに失敗することがあるが、リダイレクションがクロス起点である場合には、iframe216は、HTTP 20Xメッセージを受け取り、そしてそこに含まれたペイロードデータを適合応答として発信ポストメッセージ要求214へ返送することができる。ポストメッセージ層74は、更に、メッセージペイロードを評価のためにウェブソケットエミュレーション層80へ返送する。返送されるメッセージペイロードがHTTP 30Xリダイレクションに対応する特定のケースでは、ウェブソケットエミュレーション層80は、HTTP 30Xリダイレクションメッセージにより指定されるリダイレクションターゲットゲートウェイサーバー42のインスタンス222へポストメッセージ要求214を再発行することにより、リダイレクションディレクティブをエミュレートする。ゲートウェイサーバー42のインスタンス222のターゲット起点に対応するiframe96インスタンス226が使用される。ゲートウェイサーバー42のインスタンス222が更なるリダイレクションを遂行しなければ、リモートターゲットサーバー36、38上の要求識別サービスへの接続228がなされる。
【0072】
一般的に同等のリダイレクション処理フロー210は、Java(登録商標)、フラッシュ及びシルバーライトのような他の具現化技術に対して具現化される。これらのケースにおいて該当する場合には、ブリッジアプリケーション158インスタンスは、定義されたターゲット起点に制限され、従って、リダイレクション要求の即座の取り扱いを除外する。包まれたHTTP 30Xリダイレクションメッセージは、この場合も、ブリッジアプリケーション158インスタンスに与えられ(224)、コンテンツをクライアントアプリケーション156へ返送してクライアントアプリケーション156内でウェブソケットエミュレーション層80により取り扱いできるようにするのが好ましい。
【0073】
iframe96又はブリッジアプリケーション158インスタンスにおいて即座に取り扱う上で問題となる他の応答メッセージは、リダイレクション処理フロー210と同様に取り扱いできることが明らかである。即ち、このような問題応答は、HTTP 200応答メッセージで包まれ、その包囲された応答メッセージをドキュメント92又はクライアントアプリケーション156により取扱できるようにする。
【0074】
ウェブブラウザクライアント52とゲートウェイサーバー42との間にエミュレートされたウェブソケット接続を確立する好ましいプロセス240が図12に示されている。クライアント側ウェブソケットエミュレーション、又はクライアントライブラリ56に対する同様の要求242に応答して、最初にゲートウェイサーバー42に対してHTTP接続244がなされる。しかしながら、この接続244は、ゲートウェイサーバー42によって閉じられず、オープンに維持され(246)、そして両方向ウェブソケット通信セッションの半分の有効なエミュレーションにおいてゲートウェイサーバー42からウェブクライアントブラウザ52へ下流にデータを送信するのに使用される。接続244を経て与えられるサービス要求は、要求されたサービスを有効にホスティングするものとして識別された適当なリモートターゲットサーバー36との従来の両方向性TCPベースウェブソケット接続248を確立するために、ゲートウェイサーバー42により使用されるのが好ましい。接続248が確立されると、それに対応するサービス250は、オープン接続246を経て中継されるサーバー送信イベントの非同期シリーズとしてデータを選択して送信することができる。
【0075】
好ましくは、あるユーザイベント252に応答して生じるか又はクライアント側ウェブアプリケーション254の自律的実行に基づいて生じる上流通信は、個別のHTTP接続256を経て、ゲートウェイサーバー42へXmlHttpRequestとして送られるクロス起点リソース要求として送信される。この要求は、サーバー送信イベントメッセージシンタックスを使用してエミュレーションにおいて送信されるのが好ましい。この好みは、主として、両方向通信を取り扱う上での一貫性のためであり、そして更に、サーバー送信イベント層78の信頼性ある配信メッセージメカニズムに基づいてウェブソケットを通して信頼性あるメッセージ配信を行えるようにする。即ち、好ましい実施形態では、エミュレートされたサーバー送信メッセージシンタックスは、受信確認のために追跡されるイベントIDを含む。サーバー送信イベントメッセージは、それに対応する確認メッセージが受信されるまでバッファされ、メッセージ配信失敗の環境又は見掛け上の環境において再送信を行えるようにするのが好ましい。接続256を通して受け取られた上流メッセージは、サービス250による考慮及び適当な応答のためにゲートウェイサーバー42により両方向ウェブソケット接続248を通してルーティングされる。
【0076】
上流通信は、典型的に、その数が制限され、短いメッセージになる傾向がある。これは、従来のウェブブラウザクライアントにおいて具現化される同時接続制限と組み合わされて、ウェブブラウザクライアントからゲートウェイサーバー42への過渡的な上流接続を使用する好みを生じる。エミュレーションのもとでは、下流接続246のみが持続的通信接続として維持されるのが好ましい。
【0077】
従来のネーティブウェブソケット接続の性質により、プロキシー及び他の中継サーバーの存在は、ウェブソケット接続の経路において許容される。本発明の好ましい実施形態では、ウェブソケットエミュレーション層80は、ゲートウェイサーバー42との組み合わせにおいて、下流接続246の状態の機能的監視を具現化して、下流接続246の経路におけるプロキシー又は他のサーバーの存在又は問題の振舞いを検出するのが好ましい。図13を参照すれば、プロキシーサーバーの潜在的な存在を許容する本発明のオペレーション270が示されている。ウェブソケット接続を開始する要求242は、プロキシーサーバー274へのルーティングを引き起こす上流へのHTTP接続を生じさせる。次いで、それに対応するHTTP接続276が生成されて、ゲートウェイサーバー42へルーティングされる。上述したように、この接続は、終了せず、接続278としてオープンに維持される。介在するプロキシーサーバー274は、典型的に、それに対応する接続278’をオープンに維持するが、プロキシーサーバー274の厳密な振舞いは、プロキシーサーバー274のローカル構成により決定される。ゲートウェイサーバー42は、接続278をオープンに維持するが、プロキシーサーバー274は、下流送信データをバッファするか、又は構成ポリシーの問題として、接続278”を完全に終了させる。いずれにせよ、ウェブブラウザクライアントは、プロキシーサーバー274により決定される任意の待ち時間又は全データ配信の終了を受ける限定されたデータを受け取る。
【0078】
本発明によれば、ゲートウェイサーバー42は、オープンの下流接続278がスレッシュホールド期間より長くアイドル状態になったときにその接続を通して心鼓動パケットを自律的に送信する。ここに示す好ましい実施形態では、心鼓動スレッシュホールドは、5秒である。ウェブソケットエミュレーション層80が心鼓動周期を越えて接続278”を通してデータを受信し損なうと、プロキシーサーバーの存在が仮定され、そして接続278”がプロキシーサーバー274により終了されないとすれば、接続278”を経て上流へ切断が送られる。この切断は、プロキシーサーバー274により保持されたバッファデータのフラッシュを生じさせる。好ましくは、HTTPSプロトコルを使用してゲートウェイサーバー42への新たな接続280が確立される。接続280は、この場合も、持続的な下流接続282としてオープンに保たれる。HTTPSプロトコルを使用する接続は、デフォールトでは、好ましいものではない。というのは、接続を確立しそれを通してデータを処理ためにウェブブラウザクライアント52及びゲートウェイサーバー42の両方に大きなオーバーヘッドがかかるためである。しかしながら、HTTPS接続は、介在するプロキシーサーバー274が検出される場合には、好ましいものである。というのは、プロトコルが、バッファも中断もせずに、ほぼ常時にプロキシーサーバー274を通過するからである。HTTPS接続を確立できない場合には、長いポーリングへの後退が具現化されるのが好ましい。それ故、下流接続282は、プロキシーサーバー274が存在するときでも有効に持続維持することができる。接続失敗278”の場合に未確認のままであるサーバー送信イベントは、自動的に再送信される。ゲートウェイサーバーが上流接続制限を検出できるようにするため、好ましくはウェブソケットエミュレーション層80において、ウェブブラウザクライアント52で同様の心鼓動メカニズムが具現化されるのが好ましい。
【0079】
従って、リアルタイムウェブアプリケーションにとって重要な両方向ウェブブラウザクライアント通信を達成するためのシステム及び方法が説明された。エミュレートされたウェブソケットサーバーシステムは、従来のpre−HTML5適合ウェブブラウザが、両方向全二重バイナリー及びテキスト通信を即座にサポートできるようにする。それ故、複雑な従来の分散型ウェブアプリケーションアーキテクチャーを回避することができる。むしろ、本発明を使用することにより、ウェブアプリケーションは、HTTP上のエミュレートされたウェブソケットを通して搬送されるネーティブプロトコルを使用してバックエンドサービスと直接通信することができる。
【0080】
本発明の好ましい実施形態の以上の説明から、当業者であれば、ここに開示した実施形態の多数の変更や修正が容易に明らかとなろう。それ故、特許請求の範囲内で、本発明は、上述したものとは異なる仕方で実施されてもよいことが理解されよう。
【符号の説明】
【0081】
10:アプリケーション
12、14:従来のクライアントシステム
16:通信ネットワーク
18、20、22:リモートサーバーシステム
32:クライアントシステム
34:ソース起点サーバー
36、38:ターゲットサーバー
40:クロスドキュメントメッセージングシステム
42:ゲートウェイサーバー
52:ウェブブラウザクライアントアプリケーション
54:ウェブページドキュメント
56:クライアントライブラリ
70:ライブラリスタック
72:XmlHttpRequest層
74:ポストメッセージ層
76:クロス起点リクエスト層
78:サーバー送信イベント層
80:ウェブソケットエミュレーション層
82:バイトソケット層
84:クライアントプロトコルライブラリ層
92:実行可能なドキュメント
94:ポストメッセージ要求
96:iframe
【特許請求の範囲】
【請求項1】
pre−HTML5適合ウェブブラウザクライアントにウェブアプリケーションサポートを与えて、ソースサーバーにより提供されるアプリケーションがターゲットサーバーにより提供されるサービスを利用できるようにする方法であって、前記ターゲットサーバーのサービスは、前記ソースサーバーのソース起点との通信に対してセキュアなターゲット起点から提供されるものであり、
a)定義されたソース起点を有するソース起点サーバーから受け取られるクライアント側ウェブアプリケーションをウェブブラウザクライアントにより実行する段階であって、要求識別ウェブアプリケーションサービスへの接続を要求する段階を含む当該実行段階と、
b)前記ウェブブラウザクライアントによるエミュレーションクライアントライブラリの実行を通して、前記ウェブブラウザクライアントと、前記要求識別ウェブアプリケーションサービスにアクセスするためのゲートウェイサーバーとの間の両方向可能なHTTPベースの通信接続を第1に確立する段階であって、前記ゲートウェイサーバーは、前記定義されたソース起点の範囲外の定義されたターゲット起点に関連され、そして前記両方向可能なHTTPベースの通信接続は、前記定義されたソース起点と前記ターゲット起点との間にセキュアな通信経路を与えるクロス起点通信ブリッジを含むものである当該段階と、
c)前記ゲートウェイサーバーを通して、前記要求識別ウェブアプリケーションサービスに対して規定の関係を有するターゲットサーバーにより提供されるターゲット定義サービスへのHTML5適合接続を第2の確立する段階と、
を含む方法。
【請求項2】
前記実行段階は、前記ウェブブラウザクライアントにより通信ブリッジプログラムを実行することを含み、前記通信ブリッジプログラムは、前記要求段階に応答して前記ゲートウェイサーバーから受け取られ、前記クライアント側ウェブアプリケーションは、前記定義されたソース起点内で実行され、前記通信ブリッジプログラムは、前記定義されたターゲット起点内で実行され、そして前記クロス起点通信ブリッジは、前記通信ブリッジプログラムと前記ウェブブラウザクライアントとの間に確立される、請求項1に記載の方法。
【請求項3】
前記ゲートウェイサーバーにより前記両方向可能なHTTPベースの通信接続を資格付けする段階を更に含み、前記要求は、前記定義されたソース起点及び前記要求識別ウェブアプリケーションサービスの識別を与え、そして前記ゲートウェイサーバーは、前記要求を受け入れるべきかどうか決定する、請求項2に記載の方法。
【請求項4】
前記資格付け段階は、サービスアクセスポリシーを評価して、前記定義されたソース起点と、前記要求識別ウェブアプリケーションサービスとの間の許された関係を決定する段階を含む、請求項3に記載の方法。
【請求項5】
前記資格付け段階は、前記要求識別ウェブアプリケーションサービスに対する前記既定の関係を決定する段階を含む、請求項4に記載の方法。
【請求項6】
前記ゲートウェイサーバーは、更に、前記要求をリダイレクトすべきかどうか決定し、前記資格付け段階は、HTTP応答メッセージに包まれたHTTPリダイレクションメッセージを返送し、前記HTTPリダイレクションメッセージを前記クライアント側ウェブアプリケーションへ配信する、請求項3に記載の方法。
【請求項7】
前記エミュレーションクライアントライブラリは、ウェブソケットエミュレーション層を含み、前記第1に確立する段階は、前記HTTPリダイレクションメッセージに応答して、前記要求識別ウェブアプリケーションサービスにアクセスするために前記ウェブブラウザクライアントとリダイレクションゲートウェイサーバーとの間に前記両方向可能なHTTPベースの通信接続を確立し、前記リダイレクションゲートウェイサーバーは、前記定義されたソース起点の範囲外の定義されたリダイレクションターゲット起点に関連される、請求項6に記載の方法。
【請求項8】
分散ウェブアプリケーションの実行をサポートするサーバーシステムであって、
a)ネットワークに結合されたソース起点サーバーシステムであって、これは、クライアント側ウェブアプリケーションを含み、そしてソース起点の範囲内で前記ネットワークを通してアクセスできるソース起点サーバーシステムと、
b)前記ネットワークに結合されたゲートウェイサーバーシステムであって、これは、通信ブリッジプログラムを含み、ターゲット起点の範囲内で前記ネットワークを通してアクセスでき、そしてウェブアプリケーションサービスへネットワーク接続を与えるように動作するゲートウェイサーバーシステムと、
c)前記ネットワークに結合されたクライアントシステムであって、これは、ウェブブラウザクライアントを実行するように動作でき、前記ウェブブラウザクライアントは、クロス起点メッセージを除外するpre−HTML5適合ウェブブラウザクライアントであり、前記ウェブブラウザクライアントは、前記クライアント側ウェブアプリケーションを前記ソース起点サーバーシステムダウンロードするように働き、更に、前記ウェブブラウザクライアントは、前記ソース起点の範囲内で前記クライアントシステム上の前記クライアント側ウェブアプリケーションを実行するように動作し、前記ウェブブラウザクライアントは、前記通信ブリッジプログラムを前記ゲートウェイサーバーシステムダウンロードするように動作し、前記ウェブブラウザクライアントは、更に、前記ターゲット起点の範囲内で前記クライアントシステム上の前記通信ブリッジプログラムを実行するように動作し、前記クライアント側ウェブアプリケーション及び前記通信ブリッジプログラムは、クロス起点通信チャンネルを具現化し、前記クライアント側ウェブアプリケーションは、更に、前記通信ブリッジプログラム及び前記ゲートウェイサーバーシステムを通して前記ウェブアプリケーションサービスクロス起点の要求を発行するように動作するようなクライアントシステムと、
を備えたサーバーシステム。
【請求項9】
前記クロス起点通信チャンネルは、フラッシュランタイムライブラリベースのネーティブ共有イベントを使用してデータを転送し、そして前記通信ブリッジプログラムは、フラッシュランタイムライブラリに関連したLoaderInfoメタデータを使用して、前記ソース起点を決定する、請求項8に記載のサーバーシステム。
【請求項10】
前記通信ブリッジプログラムの実行は、更に、前記ゲートウェイサーバーシステムに維持されたクライアントアクセスポリシーに基づいて前記ゲートウェイサーバーシステムにより条件付きで受け容れられるソース起点クライアントアクセス要求を前記ゲートウェイサーバーシステムに与えることにより前記ソース起点を検証するように動作する、請求項9に記載のサーバーシステム。
【請求項11】
前記クロス起点通信チャンネルは、シルバーライトランタイムライブラリを使用し、前記通信ブリッジプログラムは、前記ゲートウェイサーバーシステムによるクロス起点通信チャンネルの確認を可能にするソース起点を識別するエンコードされたヘッダデータでウェブソケット要求をエンコードするよう動作する、請求項8に記載のサーバーシステム。
【請求項12】
前記通信ブリッジプログラムの実行は、更に、許されたヘッダデータの識別を含む動的に発生されるアクセスポリシーを条件付きで検索する前記ゲートウェイサーバーシステムに向けられるクロスサイトアクセスポリシー要求を発生するよう動作し、前記エンコードされたヘッダデータは、前記ウェブアプリケーションサービスの前記要求に前記許されたヘッダデータとして合体され、そして前記ウェブアプリケーションサービスへの前記要求の送信を資格付けするために前記ゲートウェイサーバーシステムにより使用される、請求項11に記載のサーバーシステム。
【請求項13】
前記クロス起点通信チャンネルは、ランタイムクラスロードのクラスを通してデータの転送を許すJavaランタイムライブラリを使用し、そしてJavaランタイムライブラリに関連したクラスローダーメタデータは、前記ソース起点を決定するために前記通信ブリッジプログラムにより使用される、請求項8に記載のサーバーシステム。
【請求項14】
前記ゲートウェイサーバーシステムは、前記要求に応答して前記クライアントシステムへ送信する前にHTTPリダイレクション及びエラーメッセージをHTTP 20Xメッセージ内に包むように動作する、請求項8に記載のサーバーシステム。
【請求項15】
前記クライアント側ウェブアプリケーションと前記ウェブアプリケーションサービスとの間のエミュレートされたウェブソケット通信接続は、前記クライアントシステム上で実行される前記通信ブリッジプログラムを通して前記クライアントシステムと前記ゲートウェイサーバーシステムとの間のオープンHTTP接続を経て確立され、前記クロス起点通信チャンネルは、XMLHttpRequestメッセージのクロス起点転送を与え、そして一連のXMLHttpRequestメッセージが、前記エミュレートされたウェブソケット通信接続を通して転送されるデータを搬送する、請求項8に記載のサーバーシステム。
【請求項16】
前記ゲートウェイサーバーシステムは、前記エミュレートされたウェブソケット通信接続を通して転送されるデータを搬送するため、前記クライアントシステムへサーバー送信イベントを送信するように動作する、請求項15に記載のサーバーシステム。
【請求項17】
前記エミュレートされたウェブソケット通信接続は、前記ゲートウェイサーバーシステムと前記ウェブアプリケーションサービスとの間でネーティブなウェブソケット通信接続として具現化される、請求項16に記載のサーバーシステム。
【請求項18】
前記オープンのHTTP接続は、セキュアなHTTP接続である、請求項17に記載のサーバーシステム。
【請求項19】
前記通信ブリッジプログラムは、サーバー送信イベントの識別子を追跡して、前記クライアントシステムと前記ゲートウェイサーバーシステムとの間のサーバー送信イベントメッセージデータの配信を保証する、請求項18に記載のサーバーシステム。
【請求項20】
前記ゲートウェイサーバーシステムは、前記クライアントシステムへキープアライブデータを送信して、前記オープンのHTTP接続を維持するように動作する、請求項19に記載のサーバーシステム。
【請求項1】
pre−HTML5適合ウェブブラウザクライアントにウェブアプリケーションサポートを与えて、ソースサーバーにより提供されるアプリケーションがターゲットサーバーにより提供されるサービスを利用できるようにする方法であって、前記ターゲットサーバーのサービスは、前記ソースサーバーのソース起点との通信に対してセキュアなターゲット起点から提供されるものであり、
a)定義されたソース起点を有するソース起点サーバーから受け取られるクライアント側ウェブアプリケーションをウェブブラウザクライアントにより実行する段階であって、要求識別ウェブアプリケーションサービスへの接続を要求する段階を含む当該実行段階と、
b)前記ウェブブラウザクライアントによるエミュレーションクライアントライブラリの実行を通して、前記ウェブブラウザクライアントと、前記要求識別ウェブアプリケーションサービスにアクセスするためのゲートウェイサーバーとの間の両方向可能なHTTPベースの通信接続を第1に確立する段階であって、前記ゲートウェイサーバーは、前記定義されたソース起点の範囲外の定義されたターゲット起点に関連され、そして前記両方向可能なHTTPベースの通信接続は、前記定義されたソース起点と前記ターゲット起点との間にセキュアな通信経路を与えるクロス起点通信ブリッジを含むものである当該段階と、
c)前記ゲートウェイサーバーを通して、前記要求識別ウェブアプリケーションサービスに対して規定の関係を有するターゲットサーバーにより提供されるターゲット定義サービスへのHTML5適合接続を第2の確立する段階と、
を含む方法。
【請求項2】
前記実行段階は、前記ウェブブラウザクライアントにより通信ブリッジプログラムを実行することを含み、前記通信ブリッジプログラムは、前記要求段階に応答して前記ゲートウェイサーバーから受け取られ、前記クライアント側ウェブアプリケーションは、前記定義されたソース起点内で実行され、前記通信ブリッジプログラムは、前記定義されたターゲット起点内で実行され、そして前記クロス起点通信ブリッジは、前記通信ブリッジプログラムと前記ウェブブラウザクライアントとの間に確立される、請求項1に記載の方法。
【請求項3】
前記ゲートウェイサーバーにより前記両方向可能なHTTPベースの通信接続を資格付けする段階を更に含み、前記要求は、前記定義されたソース起点及び前記要求識別ウェブアプリケーションサービスの識別を与え、そして前記ゲートウェイサーバーは、前記要求を受け入れるべきかどうか決定する、請求項2に記載の方法。
【請求項4】
前記資格付け段階は、サービスアクセスポリシーを評価して、前記定義されたソース起点と、前記要求識別ウェブアプリケーションサービスとの間の許された関係を決定する段階を含む、請求項3に記載の方法。
【請求項5】
前記資格付け段階は、前記要求識別ウェブアプリケーションサービスに対する前記既定の関係を決定する段階を含む、請求項4に記載の方法。
【請求項6】
前記ゲートウェイサーバーは、更に、前記要求をリダイレクトすべきかどうか決定し、前記資格付け段階は、HTTP応答メッセージに包まれたHTTPリダイレクションメッセージを返送し、前記HTTPリダイレクションメッセージを前記クライアント側ウェブアプリケーションへ配信する、請求項3に記載の方法。
【請求項7】
前記エミュレーションクライアントライブラリは、ウェブソケットエミュレーション層を含み、前記第1に確立する段階は、前記HTTPリダイレクションメッセージに応答して、前記要求識別ウェブアプリケーションサービスにアクセスするために前記ウェブブラウザクライアントとリダイレクションゲートウェイサーバーとの間に前記両方向可能なHTTPベースの通信接続を確立し、前記リダイレクションゲートウェイサーバーは、前記定義されたソース起点の範囲外の定義されたリダイレクションターゲット起点に関連される、請求項6に記載の方法。
【請求項8】
分散ウェブアプリケーションの実行をサポートするサーバーシステムであって、
a)ネットワークに結合されたソース起点サーバーシステムであって、これは、クライアント側ウェブアプリケーションを含み、そしてソース起点の範囲内で前記ネットワークを通してアクセスできるソース起点サーバーシステムと、
b)前記ネットワークに結合されたゲートウェイサーバーシステムであって、これは、通信ブリッジプログラムを含み、ターゲット起点の範囲内で前記ネットワークを通してアクセスでき、そしてウェブアプリケーションサービスへネットワーク接続を与えるように動作するゲートウェイサーバーシステムと、
c)前記ネットワークに結合されたクライアントシステムであって、これは、ウェブブラウザクライアントを実行するように動作でき、前記ウェブブラウザクライアントは、クロス起点メッセージを除外するpre−HTML5適合ウェブブラウザクライアントであり、前記ウェブブラウザクライアントは、前記クライアント側ウェブアプリケーションを前記ソース起点サーバーシステムダウンロードするように働き、更に、前記ウェブブラウザクライアントは、前記ソース起点の範囲内で前記クライアントシステム上の前記クライアント側ウェブアプリケーションを実行するように動作し、前記ウェブブラウザクライアントは、前記通信ブリッジプログラムを前記ゲートウェイサーバーシステムダウンロードするように動作し、前記ウェブブラウザクライアントは、更に、前記ターゲット起点の範囲内で前記クライアントシステム上の前記通信ブリッジプログラムを実行するように動作し、前記クライアント側ウェブアプリケーション及び前記通信ブリッジプログラムは、クロス起点通信チャンネルを具現化し、前記クライアント側ウェブアプリケーションは、更に、前記通信ブリッジプログラム及び前記ゲートウェイサーバーシステムを通して前記ウェブアプリケーションサービスクロス起点の要求を発行するように動作するようなクライアントシステムと、
を備えたサーバーシステム。
【請求項9】
前記クロス起点通信チャンネルは、フラッシュランタイムライブラリベースのネーティブ共有イベントを使用してデータを転送し、そして前記通信ブリッジプログラムは、フラッシュランタイムライブラリに関連したLoaderInfoメタデータを使用して、前記ソース起点を決定する、請求項8に記載のサーバーシステム。
【請求項10】
前記通信ブリッジプログラムの実行は、更に、前記ゲートウェイサーバーシステムに維持されたクライアントアクセスポリシーに基づいて前記ゲートウェイサーバーシステムにより条件付きで受け容れられるソース起点クライアントアクセス要求を前記ゲートウェイサーバーシステムに与えることにより前記ソース起点を検証するように動作する、請求項9に記載のサーバーシステム。
【請求項11】
前記クロス起点通信チャンネルは、シルバーライトランタイムライブラリを使用し、前記通信ブリッジプログラムは、前記ゲートウェイサーバーシステムによるクロス起点通信チャンネルの確認を可能にするソース起点を識別するエンコードされたヘッダデータでウェブソケット要求をエンコードするよう動作する、請求項8に記載のサーバーシステム。
【請求項12】
前記通信ブリッジプログラムの実行は、更に、許されたヘッダデータの識別を含む動的に発生されるアクセスポリシーを条件付きで検索する前記ゲートウェイサーバーシステムに向けられるクロスサイトアクセスポリシー要求を発生するよう動作し、前記エンコードされたヘッダデータは、前記ウェブアプリケーションサービスの前記要求に前記許されたヘッダデータとして合体され、そして前記ウェブアプリケーションサービスへの前記要求の送信を資格付けするために前記ゲートウェイサーバーシステムにより使用される、請求項11に記載のサーバーシステム。
【請求項13】
前記クロス起点通信チャンネルは、ランタイムクラスロードのクラスを通してデータの転送を許すJavaランタイムライブラリを使用し、そしてJavaランタイムライブラリに関連したクラスローダーメタデータは、前記ソース起点を決定するために前記通信ブリッジプログラムにより使用される、請求項8に記載のサーバーシステム。
【請求項14】
前記ゲートウェイサーバーシステムは、前記要求に応答して前記クライアントシステムへ送信する前にHTTPリダイレクション及びエラーメッセージをHTTP 20Xメッセージ内に包むように動作する、請求項8に記載のサーバーシステム。
【請求項15】
前記クライアント側ウェブアプリケーションと前記ウェブアプリケーションサービスとの間のエミュレートされたウェブソケット通信接続は、前記クライアントシステム上で実行される前記通信ブリッジプログラムを通して前記クライアントシステムと前記ゲートウェイサーバーシステムとの間のオープンHTTP接続を経て確立され、前記クロス起点通信チャンネルは、XMLHttpRequestメッセージのクロス起点転送を与え、そして一連のXMLHttpRequestメッセージが、前記エミュレートされたウェブソケット通信接続を通して転送されるデータを搬送する、請求項8に記載のサーバーシステム。
【請求項16】
前記ゲートウェイサーバーシステムは、前記エミュレートされたウェブソケット通信接続を通して転送されるデータを搬送するため、前記クライアントシステムへサーバー送信イベントを送信するように動作する、請求項15に記載のサーバーシステム。
【請求項17】
前記エミュレートされたウェブソケット通信接続は、前記ゲートウェイサーバーシステムと前記ウェブアプリケーションサービスとの間でネーティブなウェブソケット通信接続として具現化される、請求項16に記載のサーバーシステム。
【請求項18】
前記オープンのHTTP接続は、セキュアなHTTP接続である、請求項17に記載のサーバーシステム。
【請求項19】
前記通信ブリッジプログラムは、サーバー送信イベントの識別子を追跡して、前記クライアントシステムと前記ゲートウェイサーバーシステムとの間のサーバー送信イベントメッセージデータの配信を保証する、請求項18に記載のサーバーシステム。
【請求項20】
前記ゲートウェイサーバーシステムは、前記クライアントシステムへキープアライブデータを送信して、前記オープンのHTTP接続を維持するように動作する、請求項19に記載のサーバーシステム。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8A】
【図8B】
【図9】
【図10】
【図11】
【図12】
【図13】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8A】
【図8B】
【図9】
【図10】
【図11】
【図12】
【図13】
【公表番号】特表2012−525659(P2012−525659A)
【公表日】平成24年10月22日(2012.10.22)
【国際特許分類】
【出願番号】特願2012−508806(P2012−508806)
【出願日】平成22年5月1日(2010.5.1)
【国際出願番号】PCT/US2010/033314
【国際公開番号】WO2010/127327
【国際公開日】平成22年11月4日(2010.11.4)
【出願人】(511265844)カージング コーポレーション (2)
【Fターム(参考)】
【公表日】平成24年10月22日(2012.10.22)
【国際特許分類】
【出願日】平成22年5月1日(2010.5.1)
【国際出願番号】PCT/US2010/033314
【国際公開番号】WO2010/127327
【国際公開日】平成22年11月4日(2010.11.4)
【出願人】(511265844)カージング コーポレーション (2)
【Fターム(参考)】
[ Back to top ]