(57)【特許請求の範囲】
【請求項１】
コンピューティング装置上で動作しているプロセスにＷｅｂアプリケーションから要求を安全に中継するためのシステムであって、
コンピューティング装置に対しローカルのブラウザー環境内で動作しているＷｅｂアプリケーション内にインストールされたブリッジメッセージクライアントコンポーネントであって、
ブリッジサーバーコンポーネントと同一のソースから由来するものとして前記ブリッジメッセージクライアントコンポーネントが識別された場合に前記ブリッジサーバーコンポーネントが前記Ｗｅｂアプリケーションからの要求を信頼することを可能にするブリッジメッセージクライアント識別子を使用することに基づいて、ブリッジサーバーコンポーネントとの安全なローカル接続を確立し、
前記ブラウザー環境の外の前記コンピューティング装置上で動作するプロセスへルーティングするため、前記Ｗｅｂアプリケーションからの要求を前記安全なローカル接続を通して前記ブリッジサーバーコンポーネントに中継する、
ように構成されたブリッジメッセージクライアントコンポーネント、
を含む、システム。
【請求項２】
請求項１記載のシステムにおいて、前記ブリッジメッセージクライアントコンポーネントは、前記ブリッジサーバーコンポーネントへの前記安全なローカル接続をホストする通信チャンネルを識別するように構成された通信チャンネル識別子を含む、システム。
【請求項３】
請求項１記載のシステムにおいて、前記ＷｅｂアプリケーションはＷｅｂサイトからダウンロードされ、該ダウンロードされたＷｅｂアプリケーションは、前記ブリッジメッセージクライアントコンポーネントを含む、システム。
【請求項４】
請求項１記載のシステムにおいて、前記Ｗｅｂアプリケーションは、デスクトップガジェットとソーシャルネットワークアプリケーションとのうちの少なくとも１つを含む、システム。
【請求項５】
請求項１記載のシステムにおいて、前記ブリッジサーバーコンポーネントを含み、該ブリッジサーバーコンポーネントは、
前記ブリッジメッセージクライアントコンポーネントから前記安全なローカル接続を通して前記要求を受け取り、
前記ブリッジサーバーコンポーネントが前記要求に応答するように構成されていると判定されたときに、前記要求を前記プロセスに送る、
ように構成された、システム。
【請求項６】
請求項５記載のシステムにおいて、前記ブリッジサーバーコンポーネントは、
前記要求に対する応答を前記プロセスから受け、
前記Ｗｅｂアプリケーションのため、前記ブリッジメッセージクライアントコンポーネントに対し前記応答を前記安全なローカル接続を通して中継する、
ように構成された、システム。
【請求項７】
請求項６記載のシステムにおいて、前記ブリッジメッセージクライアントコンポーネントは、前記応答を前記Ｗｅｂアプリケーションに送るように構成された、システム。
【請求項８】
請求項１記載のシステムにおいて、前記ブリッジサーバーコンポーネントは、前記ブラウザー環境の外の前記コンピューティング装置内にホストされた、システム。
【請求項９】
コンピューティング装置上で動作しているプロセスにＷｅｂアプリケーションから要求を安全に中継するための方法であって、
コンピューティング装置に対しローカルのブラウザー環境内で動作しているＷｅｂアプリケーション内にインストールされたブリッジメッセージクライアントコンポーネントが、ブリッジサーバーコンポーネントと同一のソースから由来するものとして前記ブリッジメッセージクライアントコンポーネントが識別された場合に前記ブリッジサーバーコンポーネントが前記Ｗｅｂアプリケーションからの要求を信頼することを可能にするブリッジメッセージクライアント識別子を使用することに基づいて、ブリッジサーバーコンポーネントとの安全なローカル接続を確立し、
前記ブリッジメッセージクライアントコンポーネントが、前記ブラウザー環境の外の前記コンピューティング装置上で動作するプロセスへルーティングするため、前記Ｗｅｂアプリケーションからの要求を前記安全なローカル接続を通して前記ブリッジサーバーコンポーネントに中継する、
ことを含む方法。
【請求項１０】
請求項９記載の方法において、
前記ブリッジサーバーコンポーネントが、前記ブリッジメッセージクライアントコンポーネントから前記安全なローカル接続を通して前記要求を受け、
前記ブリッジサーバーコンポーネントが、前記要求を前記プロセスに送る、
ことを含む、方法。
【請求項１１】
請求項１０記載の方法において、
前記ブリッジサーバーコンポーネントが、前記要求に対する応答を前記プロセスから受け、
前記ブリッジサーバーコンポーネントが、前記Ｗｅｂアプリケーションのため、前記ブリッジメッセージクライアントコンポーネントに対し前記応答を前記安全なローカル接続を通して中継する、
ことを含む、方法。
【請求項１２】
請求項１１記載の方法において、
前記ブリッジメッセージクライアントコンポーネントが、前記応答を前記Ｗｅｂアプリケーションに送ること、
を含む、方法。
【請求項１３】
請求項９記載の方法において、前記Ｗｅｂアプリケーションは、デスクトップガジェットを含む、方法。
【請求項１４】
請求項９記載の方法において、前記Ｗｅｂアプリケーションは、ソーシャルネットワークアプリケーションを含む、方法。
【請求項１５】
請求項９記載の方法において、前記ブリッジサーバーコンポーネントは、前記ブラウザー環境の外の前記コンピューティング装置内にホストされた、方法。
【請求項１６】
請求項９記載の方法において、前記ブリッジメッセージクライアントコンポーネントは、前記ソースからの別個のダウンロード可能なモジュールとして前記Ｗｅｂアプリケーション内にインストールされた、方法。
【請求項１７】
請求項９記載の方法において、前記ブリッジメッセージクライアントコンポーネントは、前記ブリッジサーバーコンポーネントへの前記安全なローカル接続をホストする通信チャンネルを識別するように構成された通信チャンネル識別子を含む、方法。
【請求項１８】
コンピュータ実行可能命令を含むコンピュータ記憶媒体であって、前記コンピュータ実行可能命令は、処理ユニットを介して実行されると、コンピューティング装置上で動作しているプロセスとＷｅｂアプリケーションとの間の通信を容易にする方法を実行し、該方法が、
コンピューティング装置に対しローカルのブラウザー環境内で動作しているＷｅｂアプリケーション内にインストールされたブリッジメッセージクライアントコンポーネントが、ブリッジサーバーコンポーネントと同一のソースから由来するものとして前記ブリッジメッセージクライアントコンポーネントが識別された場合に前記ブリッジサーバーコンポーネントが前記Ｗｅｂアプリケーションからの要求を信頼することを可能にするブリッジメッセージクライアント識別子を使用することに基づいて、ブリッジサーバーコンポーネントとの安全なローカル接続を確立し、
前記ブリッジメッセージクライアントコンポーネントが、前記ブラウザー環境の外の前記コンピューティング装置上で動作するプロセスへルーティングするため、前記Ｗｅｂアプリケーションからの要求を前記安全なローカル接続を通して前記ブリッジサーバーコンポーネントに中継し、
前記ブリッジサーバーコンポーネントが、前記要求に対する応答を前記プロセスから受け、
前記ブリッジサーバーコンポーネントが、前記Ｗｅｂアプリケーションのため、前記ブリッジメッセージクライアントコンポーネントに対し前記応答を前記安全なローカル接続を通して中継する、
ことを含む方法。
【発明の詳細な説明】
【背景技術】
【０００１】
インターネットおよび他のオンライン技術のユーザーは、例えばファイルトランスファー又はＷｅｂページを受け取ることによって離れた場所の情報にアクセスすることができる。情報／及び又はＷｅｂベースアプリケーションの機能は、例えばパーソナルコンピューター（ＰＣ）等でのブラウザー環境で表示することができる。現在のＷｅｂベースプログラミングフレームワークは例えばＷｅｂページによってユーザーのブラウザー環境（又は不可視のブラウザータイプ環境中でデスクトップ上のガジェットとして動作）に送ることが可能なＷｅｂベースのアプリケーション（ｗｅｂアプリケーション）をとして導入されている。これらのフレームワークは、例えばユーザーの要求をサーバーに返送して、それによってＷｅｂページ内にダイナミックロジックを提供する必要がなく、ライブの豊かな対話的マルチメディア環境を提供することができる。
【発明の概要】
【０００２】
多くの場合、対話性豊かなＷｅｂアプリケーションはユーザーのコンピューター装置（例えば、パーソナルコンピューター、Ｗｅｂ動作可能な携帯装置等）上に搭載され、インターネットとのライブ（又は半ライブ）接続を維持し、要求された情報の更新及びアクセスを提供する。例えば、ユーザーはパーソナルコンピューターのデスクトップにユーザーの地点の現在の天気の状態を表示するウィジェットをロードすることができる。コンピューターがインターネットへの接続を維持している限り、この例においては、ウィジェットはユーザーのために表示された天気の状態を更新することができる。更に、ブラウザーは、例えば実際のスコアを有する各投球、アクション等で野球試合を追跡するアプリケーション等のユーザーのための豊かなマルチメディア経験を提供する豊かな対話型アプリケーション（例えば、シルバーライト（Silverlight）Java及びFlashアプリ）をロードすることができる。
【０００３】
この概要は詳細な説明において以下で更に記述される簡略化した形式で概念の選択を導入するために提供される。この概要は請求された主題の主要な要素又は必須の特徴を特定するものではなく、請求された主題の範囲を限定するために用いることを意図するものでもない。
【０００４】
現在、Ｗｅｂベースアプリケーション（Ｗｅｂアプリ）は、オペレーティングシステム（ＯＳ）アプリケーションプログラミングインターフェース（ＡＰＩ）を介して直接的にオペレーティングシステムと相互作用する、又は、オペレーティングシステムＡＰＩをコールし得るライブラリー機能と間接的に相互作用する、スタンドアローンアプリケーションではない。例えば、オペレーティングシステムＡＰＩにアクセスする能力はアプリケーションにコンピューター内の計算リソースの、ある制御を与える可能性がある。その代わりに、Ｗｅｂアプリは、例えばＯＳのＡＰＩとライブラリーとから分離された「サンドボックス(sandbox)」内のブラウザー環境において実行し、それによって悪意のハッカーからの一定の安全性を創出している。
【０００５】
現在のＷｅｂアプリは、ファイルシステム管理及びブラウザーウインドウを超えた表示領域等の、ユーザーのコンピューター上の最大限のリソースへのアクセスを利用するスタンドアローンアプリケーションとして使用することはできない。一般に、Ｗｅｂページは非ブラウザーコンテキストで処理することはできない。しかしながら、Ｗｅｂアプリがデスクトップ環境において動作しているアプリケーションからの情報にアクセスすることが可能であれば、例えばデスクトップの内容をＷｅｂアプリによる使用に提供される(例えば、Ｗｅｂアプリがデスクトップのコンテンツを使用することができる）ことなどによって、より豊かでより役立つ経験がユーザーに提供される。例えば、Ｗｅｂベースのソシャルネットワーク等のＷｅｂアプリがユーザーのためにプロファイルへの連絡先を追加するときは、Ｗｅｂアプリがそれらのコンタクトを管理するユーザーのデスクトップベースのアプリケーションからそれらをロードするのが好ましい。
【０００６】
ブラウザー環境などのＷｅｂベースアプリケーションと、アプリケーションが動作しているところなどのコンピューター上のデスクトップ環境との間のブリッジ（bridge）を提供する１つまたは複数の技術及び／又はシステムが開示される。一例として、ブリッジは、ブラウザーにおけるＷｅｂアプリが、例えば適切なセキュリティを維持しつつデスクトップアプリケーションと通信する方法を提供する。例えば、Ｗｅｂアプリがアプリケーションからの情報を要求する場合、ブリッジは要求を送出してアプリケーションから応答を取り出す方法を提供する。
【０００７】
Ｗｅｂクライアントからの要求をコンピューター装置で動作しているプロセスに中継し、プロセスからの応答を受取るための一実施形態において、Ｗｅｂブラウザーにおいて動作しているＷｅｂアプリ内のブリッジブメッセージクライアントがブラウザーの外部で動作しているプロセスへのローカル接続をオープンにすることができる。この実施形態において、ブリッジメッセージクライアントはローカル接続をホストするための通信チャンネルを識別する通信チャンネルＩＤと、ブリッジサーバーコンポーネントがＷｅｂアプリと通信するのを補助するブリッジメッセージクライアントＩＤとを有する。さらに、この実施形態において、ブリッジサーバーコンポーネントはブラウザー環境の外部にあり、ブリッジメッセージクライアントからの要求を受取って、それをプロセスに送出することができる。ブリッジサーバーコンポーネントはプロセスからの要求に対する応答を受取ってそれをローカル接続を介してブリッジメッセージクライアントに送出することができる。
【０００８】
上述した目的及び関連した目的を達成するために、以下の記述及び添付の図面が説明的な態様と実施形態とを示している。これらは１つまたは複数の態様が実施され得る種々の方法の内の幾つかを表しているのに過ぎない。開示の他の態様、利点、及び新規な特徴は添付された図面を参照して検討するときに、以下の詳細な説明から明らかになるであろう。
【図面の簡単な説明】
【０００９】
【図１】本明細書に記述される１つあるいは複数のシステム及び／又は技術が実現され得る例示的環境を示す図である。
【図２】Ｗｅｂクライアントからの要求をコンピューター装置上で動作しているプロセスに中継し、プロセスからの応答を受け取るための例示的システムを示すコンポーネントのブロック図である。
【図３】本明細書に記述されるシステムの例示的実施形態を示すコンポーネントのブロック図である。
【図４】Ｗｅｂクライアントからの要求をコンピューター装置上で動作しているプロセスに中継し、プロセスからの応答を受け取る例示的方法を示すフロー図である。
【図５Ａ】本明細書に記述される方法の一部分の例示的実施形態を示す図である。
【図５Ｂ】本明細書に記述される方法の一部分の例示的実施形態を示す図である。
【図６】本明細書に記述される１つまたは複数のシステム及び方法を実現する例示的実施形態を示すフロー図である。
【図７】本明細書に記述される１つまたは複数のシステム及び方法を実現する例示的実施形態を示すフロー図である。
【図８】本明細書に記載の１つまたは複数の内容を実施化するように構成されたプロセッサーにより実行可能な命令を含む例示的コンピューター可読媒体を示す図である。
【図９】本明細書に記載の１つまたは複数の内容が実現される例示的コンピューター環境を示す図である。
【発明を実施するための形態】
【００１０】
ここで請求された主題について図面を参照しながら説明するが、ここでは図面を通して同様の参照番号は同様の要素を示すために用いられる。以下の記載では、説明目的のため、多数の具体的な詳細が請求された主題の完全な理解を促すために記述される。しかし、請求された主題はこれらの特定な詳細を用いずに実施化できることは明らかである。他の例では、構造及び装置が、請求された主題の記述を容易にするためにブロック図の形式で示される。
【００１１】
図１は本明細書に記述される１つまたは複数の技術及び／又はシステムが実装され得る例示的環境１００を示す図である。コンピューター装置１０６は、デスクトップ環境において、パーソナルコンピューターのデスクトップ上で動作している連絡先、カレンダー、電子メールなどを管理するパーソナルアシスタントプログラム等のアプリケーション１１０を動作させている。更に、ブラウザー環境１０８がコンピューター装置１０６上で動作しており、インターネット１０２に接続される。この例示的環境１００において、Ｗｅｂベースアプリケーション１０４（Ｗｅｂアプリ）はコンピューター装置１０６上のブラウザー環境１０８にロードすることが可能である。
【００１２】
例えば、Ｗｅｂアプリケーション１０４を動作するのに用いられるコードは、ブラウザー環境１０８に完全にロードされ、ライブの更新等のためにインターネット１０２への接続を維持しつつコンピューター装置１０６上で完全に動作する。しかしながら、通常のオペレーティングシステムおよびコンピューティング環境は、ブラウザー環境１０８内で動作しているＷｅｂアプリとデスクトップ環境で動作しているアプリケーション１１０との間の接続１１２を許可しない。例えばインターネット１０２に接続されているライブＷｅｂアプリの間の接続１１２を許可しない理由の一つはコンピューティング装置のデスクトップ環境へのセキュリティ違反を軽減することである。
【００１３】
ここで提供されるように、ブリッジは、ブラウザー環境等のようなコンピューティング装置上で動作しているＷｅｂベースアプリケーションと、例えばコンピューター上のデスクトップ環境との間に提供され得る。更に、ブリッジは、例えばコンピューティング装置に対する適切なセキュリティを維持しつつ、ブラウザー環境で動作しているアプリケーションとコンピューターのデスクトップ環境で動作しているアプリケーションの間の通信を提供することができる。例えば、豊かな対話型の統合マルチメディアランタイム環境で創造されたもの等のＷｅｂアプリケーション（例えばＳｉｌｖｅｒｌｉｇｈｔ、Ｊａｖａ、Ｆｌａｓｈ等）がブラウザー環境の外部で動作しているアプリケーションからの情報を要求するときに、ブリッジは、コンピューティング装置への潜在的に不都合な通信を禁止しながら要求を送出して、アプリケーションからの応答を取り出す方法を提供する。
【００１４】
図２はＷｅｂクライアントからの要求をコンピューティング装置上で動作しているプロセスに中継してプロセスからの応答を受け取るための例示的システム２００を示すコンポーネントブロック図である。ブリッジメッセージクライアントコンポーネント２０２がコンピューター装置２１２上のブラウザー環境２１４で動作しているＷｅｂアプリケーション２１６内に配置されている。ブリッジメッセージクライアントコンポーネント２０２がコンピューター装置２１２上のデスクトップ環境（図示せず）内で動作しているアプリケーション２０内等のコンピューティング装置上のブラウザー環境の外部で動作しているプロセス２１０へのローカル接続２２０を開示する。
【００１５】
ブリッジメッセージクライアントコンポーネント２０２は、デスクトップ環境（図示せず）内等のコンピューター装置２１２上に配置されたブリッジサーバーコンポーネント２０８へのローカル接続２２０がホストされ得る通信チャンネル２１８を識別する通信チャンネル識別コンポーネント２０６を含む。このブリッジメッセージクライアントコンポーネント２０２は更に、例えば複数のブリッジメッセージクライアントコンポーネント２０２及び／又はＷｅｂアプリケーション２１６がブリッジサーバーコンポーネント２０８との通信を試みているときなどにブリッジサーバーコンポーネント２０８がＷｅｂアプリケーション２１６と通信するのを補助するブリッジメッセージ識別コンポーネント２０４を含む。
【００１６】
例示的システム２００において、ブリッジサーバーコンポーネント２０８はブラウザー環境２１４の外部に配置されており、ブリッジメッセージクライアントコンポーネント２０２からの要求を受けとってプロセス２１０に送出することが可能である。更に、ブリッジサーバーコンポーネント２０８はプロセス２１０からの要求に対する応答を受け取り、それらをローカル接続２２０を介してブリッジメッセージクライアントコンポーネント２０２に送出することができる。
【００１７】
一実施形態において、ブラウザー環境は、例えば、対話的で豊かな統合されたマルチメディアＷｅｂページがＷｅｂサイトからブラウザー（例えば２１４）にロードされたとき等の、Ｗｅｂアプリケーション（例えば２１６）のインスタンス化を有していてもよい。この実施形態において、Ｗｅｂアプリケーションはその中に配置されたブリッジメッセージクライアントコンポーネント２０２の例示を有することが可能である。更に、例えば、Ｗｅｂアプリケーション及び関連したブリッジメッセージクライアントコンポーネント２０２は例えばＷｅｂサイトからブラウザー環境にロードされ、それによって完全にコンピューティング装置（例えば２１２）上で動作するようにすることができる。
【００１８】
この実施形態において、通信チャンネル２１８は通信チャンネル識別子を使用してブリッジサーバーコンポーネント２０８によって開くことができ、ローカル接続２２０を通信チャンネル２１８上でホストすることができる。一実施形態において、通信チャンネル識別コンポーネント２０６は例えば、Ｗｅｂアプリケーションからの通信を所望のプロセス（例えば２１０）に関連したブリッジサーバーコンポーネント（例えば２０８）にリンクするオペレーティングシステム内の特定の通信チャンネル（例えば２１８）を指定するチャンネル名を含むことが可能である。
【００１９】
一例として、オペレーティングシステムチャンネルはメッセージを例えばメッセージを証明することによる方法等の何らかの方法で処理するコンポーネントであり得る。更に、実施形態において、通信チャンネル２１８は、ＨＴＴＰ(Hyper Text Transfer Protocol)、名前付きパイプ、ＴＣＰ(Transmission Control Protocol)、及びマイクロソフトメッセージキューイング（ＭＳＭＱ）等のネットワーク（又はコンピューティング装置の外部の他の通信ポイント）からのメッセージを読み取り書き込むことが可能なトランスポートチャンネルであっても良い。
【００２０】
更に、一例として、ローカル接続２２０は２個（又は２より大）のアプリケーションベースの制御インスタンスの間で送信者と受信者を接続するパブリッシュ／サブスクライブメカニズムであっても良い。一実施形態において、ブリッジサーバーコンポーネント２０８はコンピューター装置２１２上で隠された（例えばユーザーの視覚及び／又は操作から隠された）豊かな対話型の統合マルチメディアランタイム環境のインスタンス化であっても良い。この実施形態において、ローカル接続２２０はＷｅｂベースアプリケーション（ブリッジメッセージクライアントコンポーネント２０２と共にブラウザー内で動作している）の第１のインスタンス化とＷｅｂベースアプリケーションの第２のインスタンス化（ブラウザー環境の外部で動作しているブリッジサーバー）との間の通信リンクを含むことが可能である。この例において、ローカル接続２２０はブリッジメッセージクライアント（例えば２０２）とブリッジサーバーコンポーネント（例えば２０８）の間の通信リンクを確立するために名前付き通信チャンネルを使用することができる。
【００２１】
一実施形態において、ブリッジサーバーコンポーネント２０８はコンピューター装置２１２上の、例えばデスクトップ環境内で動作しているアプリケーション（例えば２５０）によってホストされているコンポーネントであっても良い。更に、ブリッジサーバーコンポーネント２０８はコンピューター装置２１２上で動作しているサービスとしてインスタンス化されたコンポーネントであっても良い。当業者はブリッジサーバーコンポーネント２０８をホスト又はインスタンス化する別な方法を考案することができることが理解され、例えば、ブリッジサーバーコンポーネント２０８はコンピューティング装置上のデスクトップ環境に配置された一以上のドライバーに含まれていても良い。
【００２２】
さらに、一実施形態において、プロセス（例えば２１０）はコンピューティング装置上のデスクトップ環境内で動作しているプログラムの少なくとも一部分を含んでも良い。
例えば、プロセスはユーザーマシーン上で動作しているアプリケーションに挿入されているプログラミングコードの一部分を含んでも良い。この例において、コードは要求された情報のストリング等のアプリケーションからの応答データを返すためにブリッジサーバーと通信するように設計することができる。Ｗｅｂアプリケーションがブリッジメッセージクライアントを使用してアプリケーションから特定のデータを要求する場合、例えば、プロセスはアプリケーションからの要求された情報をブリッジサーバーコンポーネント２０８に返すことが可能である。
【００２３】
一実施形態において、ブリッジメッセージクライアント識別子２０４は、例えばプロセス２１０に関連したブリッジサーバーコンポーネント２０８から所望のＷｅｂアプリケーション（例えば２１６）に関連した通信チャンネル２１８にリンクさせるブリッジメッセージクライアントコンポーネント２０２のためのクライアント名を含んでも良い。即ち、例えば、複数のＷｅｂアプリケーションがそれぞれブリッジメッセージクライアント（例えば２０２）のインスタンス化を含むとき、ブリッジサーバーは特定のブリッジメッセージクライアントを特定することを望むかも知れない。この方法で、この例において、Ｗｅｂアプリケーションからの要求に対する特定の応答を正しいブリッジメッセージクライアントに返すことが可能である。この実施形態において、クライアントＩＤ２０４によって通信チャンネル２１８を介した正しい接続を容易化することができる。
【００２４】
図３はここで記述されたシステムの例示的実施形態３００を示すコンポーネントブロック図である。Ｗｅｂベースアプリケーション等のＷｅｂクライアント３５２、ブラウザー環境３５４（例えばユーザーのコンピューター上）内に配置されている。Ｗｅｂクライアントは通信チャンネル２１８上でブリッジサーバーコンポーネント２０８へのローカル接続２２０を有するブリッジメッセージクライアントコンポーネント２０２を含む。ブリッジサーバーコンポーネント２０８は同様にプロセス２１０を含む（例えばユーザーのコンピューター上で動作している）デスクトップアプリケーション３５０に配置されている。
【００２５】
この例示的実施形態３００において、ブリッジサーバーはＷｅｂ中継コンポーネント３２０、マシーン中継コンポーネント３２２及びブリッジメッセージサーバーコンポーネント３２４を含んでいる。この実施形態において、Ｗｅｂ中継コンポーネント３２０及びマシーン中継コンポーネント３２２は同一のドメイン、即ちホスト制御３５８に配置されている。この例において、ホスト制御ドメイン３５８はブリッジサーバーコンポーネントにおいてインスタンス化されてＷｅｂとマシーンの中継をホストすることが可能である。
一例において、ホスト制御３５８は更に、Ｗｅｂ中継コンポーネント３２０が配置されるブリッジを介してデータを受取って送出するようなブリッジリレー（中継）３５６を含んでも良い。他の実施形態において、Ｗｅｂ中継コンポーネント３２０は同一のドメインにおけるマシーン中継コンポーネント３２２のインスタンス化（例えばホスト制御３５８）として生成されても良い。
【００２６】
この実施形態３００において、Ｗｅｂ中継コンポーネント３２０はブリッジメッセージクライアントコンポーネント２０２から要求を受け取り、マシーン中継コンポーネント３２２に送出することができる。例えば、ブリッジメッセージクライアントコンポーネント２０２はプロセスからの特定のデータの要求をローカル接続２２０を使用して通信チャンネル２１８を介して送出することができる。更に、ブリッジメッセージクライアントコンポーネント２０２はＷｅｂ中継コンポーネント３２０からの要求を受け取り、それを第１の名前付き通信パイプ３２６上でブリッジメッセージサーバーコンポーネント３２４に送出することができる。上述したように、通信チャンネルは例えばデータを交換するための名前付きパイプを含むことができる。この実施形態において、マシーンリレーは要求を送出するためにブリッジメッセージサーバーコンポーネント３２４への第１の名前付き通信パイプ３２６を識別することができる。加えて、ブリッジメッセージサーバーコンポーネント３２４はマシーン中継コンポーネント３２２からの要求を受け取って、それをプロセス２１０に送出することができる。
【００２７】
一実施形態において、プロセス２１０はアプリケーション３５０から要求された情報を取り込み、ブリッジメッセージサーバーコンポーネント３２４に応答を返すことができる。ブリッジメッセージサーバーコンポーネント３２４はプロセス２１０から応答を受け取って、それを第２の名前付き通信パイプ３２８上でマシーン中継コンポーネント３２２に送出することができる。例えば、ブリッジメッセージサーバーはマシーン中継コンポーネント３２２にメッセージを中継するために第２の名前付き通信パイプを識別しても良い。
更に、マシーン中継コンポーネント３２２はブリッジメッセージサーバーコンポーネント３２４からの応答を受けとってそれをＷｅｂ中継コンポーネント３５６に送出することができる。加えて、Ｗｅｂ中継コンポーネント３２０はマシーン中継コンポーネント３２２からの応答を受けとって、それをローカル接続２２０を介してブリッジメッセージクライアントコンポーネント２０２に送出することができる。
【００２８】
一例として、Ｗｅｂクライアント３５２は次に応答内の情報を、例えばブラウザー環境３５４内で表示することなどによって利用することができる。一実施形態において、応答は非同期で受け取ることができる。例えば、ブラウザー環境３５４は複数のＷｅｂクライアント３５２を含んでも良く、及び／又はＷｅｂクライアントが複数のブリッジメッセージクライアントコンポーネント２０２を含んでも良い。この例において、２以上のブリッジメッセージクライアント２０２が同時又は実質的に同様の時間にプロセス２１０に要求を送出しても良い。複数の要求に対する応答は非同期で返すことができる。
【００２９】
例えばブラウザー環境とユーザーのコンピューター上のデスクトップ環境との間で情報が送出されることを可能にする方法が考案されても良い。図４はＷｅｂクライアントからのコンピューティング装置上で動作しているプロセスへの要求を中継してプロセスからの応答を受け取る方法４００の例示的な実施形態を示すフロー図である。例示的方法４００は４０２で開始し、４０４においてブラウザー環境の外部でコンピューティング装置上にインストールされるべきブリッジサーバーを提供することに関係している。
【００３０】
４０６において、Ｗｅｂアプリケーション内でのブリッジメッセージクライアントのインストールが提供され、Ｗｅｂアプリケーションがコンピューティング装置上のブラウザー環境で動作するように構成される。４０８において、ローカル接続の開始が提供され、Ｗｅｂアプリケーションとプロセスの間で識別されたチャンネル上でローカル接続が開始される。４１０において、ローカル接続がブリッジメッセージクライアントとプロセスに関連したブリッジサーバーとの間の通信リンクを提供する。
【００３１】
例示的方法４００においては、４１２において、ブリッジメッセージクライアントがローカル接続上でアプリケーションからの要求をブリッジサーバーに送出する。４１４において、ブリッジサーバーがローカル接続上でブリッジメッセージクライアントからの要求を受け取り、コンピューティング装置上でブラウザー環境の外部で動作しているプロセスに送出する。更に、４１６において、ブリッジサーバーはプロセスから要求に対する応答を受け取り、それをローカル接続上でブリッジメッセージクライアントに送出する。４１８において、ブリッジメッセージクライアントがブリッジサーバーから要求に対する応答を受け取り、例えば、クライアントに関連したＷｅｂアプリケーションが応答に含まれるデータを利用する（例えばブラウザーにおいてそれを表示する）。
【００３２】
図５Ａ及び５Ｂは一つ以上のここで記述された方法の一部分の例示的実施形態５００及び５１０である。例示的実施形態５００内で、４１４においてブリッジサーバーがブリッジメッセージクライアントからの要求を受け取り、次にそれをブラウザーの外部のプロセスに送出し、５０２においてコンピューティング装置上のブラウザー環境の外部に配置されたＷｅｂリレーがローカル接続上でブリッジメッセージクライアントからの要求を受け取る。５０４において、ＷｅｂリレーがＷｅｂ中継コンポーネントと同一のドメインに配置されたマシーンリレーに要求を送出する。例示的実施形態５００内で、５０６においてマシーンリレーがＷｅｂリレーからの要求を受け取り、５０８において、それを第１の名前付き通信パイプ上でブリッジメッセージサーバーに送出する。
【００３３】
例示的実施形態５１０内で、４１６においてブリッジサーバーがプロセスから要求に対する応答を受け取ってそれをブリッジメッセージクライアントに送出し、５１２においてコンピューティング装置内のブラウザー環境の外部に配置されたマシーンリレーが、第２の名前付き通信パイプ上でブリッジメッセージサーバーから要求に対する応答を受け取る。５１４において、マシーンリレーが要求に対する応答を同一のドメインに配置されたＷｅｂリレーに送出する。５１６において、Ｗｅｂリレーがマシーンリレーから要求に対する応答を受け取り、５１８において、それをローカル接続上でブリッジメッセージクライアントコンポーネントに送出する。
【００３４】
図６及び７は一つ以上のここで記述されたシステム及び／又は方法を実現した例示的な実施形態を示すフロー図である。図６の例示的実施形態６００において、Ｗｅｂベースアプリケーション（Ｗｅｂアプリ）からの要求に応答するように構成されたプログラミングコードがコンピューティング装置のデスクトップ環境内にインストールされる。例えば、コードが開発されてユーザーのＥメール、コンタクト、カレンダー、タスク等を管理し、処理するアプリケーション内にインストールされても良い。そのコードはＷｅｂアプリケーションがユーザーのコンタクト又はＷｅｂアプリ内で使用される他の情報片を要求することを許可するように構成されても良い。
【００３５】
６０４において、ブリッジサーバーのインスタンス化（例えば図２の２０８）がコンピューティング装置のデスクトップ環境にインストールされる。一例として、ブリッジサーバーはスタンドアローンのコンポーネント又はサービスとして含まれても良く、又はＷｅｂアプリによって情報が要求される可能性が有るデスクトップアプリケーションに含まれても良い。一度インストールされると、ブリッジサーバーは通信チャンネル上で、例えば要求等の通信をリッスンする。
【００３６】
６１０において、ブリッジメッセージクライアント（例えば図２の２０２）がＷｅｂアプリにインストールされる。例えばＷｅｂアプリの開発者はブリッジサーバーと同一のルートドメインを有する同一のサイトからブリッジメッセージクライアントの一バージョンをダウンロードしても良い。この例において、ブリッジサーバーはこの方法でブリッジメッセージクライアントからの要求の通信を信頼することができ、それによって一種のセキュリティ関係を創り出すことができる。ステップ６１２において、ブリッジメッセージクライアントを含むＷｅｂアプリは例えばＷｅｂアプリケーション開発者のＷｅｂサイト等のＷｅｂサイト上で利用可能にされる。
【００３７】
６０８において、ユーザーがＷｅｂブラウザー等のブラウザー環境をオープンし、Ｗｅｂアプリケーション及び関連したブリッジメッセージクライアントを有するＷｅｂページを閲覧する。一例として、ＷｅｂアプリはユーザーがデータをアップロードすることによってＷｅｂページの追加の特徴を利用することを可能にする、豊かに統合されかつ対話型のマルチメディアエクスペリエンスである。６１４において、クライアントのためのブリッジを有するデスクトップ環境内に存在するブリッジサーバーが有るか否かが判別される。もしブリッジサーバーが存在しなければ、６１６において、クライアントと接続が行われない。しかしながら、もしブリッジサーバーが存在し、通信チャンネルが利用できれば、ブリッジメッセージクライアントは６１８においてブリッジサーバーとローカル接続を行う。一実施形態において、開始すべきローカル接続を用意することはブラウザー環境とコンピューティング装置のデスクトップ環境との間で通信リンクを作ることを含み、それによってデスクトップ環境からブラウザー環境にデータストリングが転送されることが許されても良い。
【００３８】
図７の例示的実施形態７００内で、７２０において、ユーザーがデスクトップアプリケーションに対する要求を能動化するＷｅｂアプリ上の機能を選択する。例えば、Ｗｅｂアプリは「アプリケーションからコンタクトをアップロードするためにはここをクリック」とボタンを含んでも良い。この例では、ユーザーはボタンをクリックして要求を開始することができる。７２２において、ブリッジメッセージクライアントはブリッジサーバーローカル接続上でユーザーのコンタクト管理アプリケーション内のコンタクトのリストに対する要求を送出することができる。
【００３９】
７２４において、ブリッジサーバーブリッジメッセージクライアントから要求を受け取る。７２６において、ブリッジサーバーが要求に対して応答可能か否かを判別する。例えば、ブリッジサーバーはユーザーのコンタクトがアップロードされることを許すアプリケーションのためのコードに関係しているか否かを判別することができる。結果が否定的であれば、７２８において要求に対する、例えばヌル応答以外の、如何なる応答も返されない。
【００４０】
もし７３０においてブリッジサーバーが応答可能であれば、ブリッジサーバーは要求をデスクトップアプリケーション内のコードなどのコードに送出し、要求された情報を取り込む。例えば、ユーザーのコンタクトの要求がコンタクト管理アプリケーション内のコードに送出され、そこで、そのアプリケーションはコンタクトを含むデータのストリングにそのコンタクトを配置することができる。７３２において、ブリッジサーバーがアプリケーション内のコードから応答を受け取り、それをブリッジメッセージクライアントに送出する。
【００４１】
７３４において、ブリッジメッセージクライアントが応答を受け取り、それを使用するためにＷｅｂアプリに送出する。例えば、アプリケーションはユーザーのコンタクトを受け取り、ブラウザーにおいて使用するためにそれらを表示することができる。他の例として、Ｗｅｂアプリが次にＷｅｂベースコンタクト管理アプリケーションにコンタクトをロードし、かつ／又は他のユーザーがユーザーのコンタクトからソシャルネットワーク内のリストに追加されることを許可しても良い。
【００４２】
更に他の実施形態は一以上のここで示された技術を実現するように構成されたプロセス又は実行可能な命令を含むコンピューターにより読取り可能な媒体に関係している。これらの方法で考案されても良い例示的なコンピューターにより読み取り可能な媒体が図８に示されており、インプリメンテーション８００はコンピューターで読取り可能な媒体８０８（例えばＣＤ−Ｒ、ＤＶＤ−Ｒ、又はハードディスクドライブのプラッタ）を含んでおり、その上にコンピューターにより読取り可能なデータ８０６がエンコードされている。次に、このコンピューターにより読み出し可能なデータ８０６は一以上のここで述べた原理に応じて動作するように構成された一組のコンピューター命令８０４を含んでいる。このような一つの実施形態８０２において、プロセッサー実行可能命令８０４は、例えば図４の例示的方法４００等の方法を実行するように構成されても良い。他のこのような実施形態において、プロセッサー実行可能命令８０４は例えば図２の例示的システム２００等のシステムを実現するように構成されても良い。多くのこのようなコンピューターにより読取り可能な媒体が当業者により考案され、ここで示された技術に従って動作するように構成されることが考えられる。
【００４３】
発明の主題を構造的特徴及び／又は方法論的な行為に特定の用語で記述してきたけれども、添付の請求項で画定された主題は必ずしも以上の部分に記述された具体的な特徴又は行為に限定されるものではないことが理解されるべきである。寧ろ、上述の具体的な特徴及び行為は請求項を実現するための例示の形で開示されたものである。
【００４４】
本出願において用いられているように、「コンポーネント」、「モジュール」、「システム」、「インターフェース」等の用語は一般的にコンピューター関連のエンティティ、ハードウエア、ハードウエアとソフトウエアの組み合わせ、ソフトウエア、又は実行中のソフトウエアの何れかを指すことが意図されている。例えば、コンポーネントはプロセッサー上で動作しているプロセス、プロセッサー、オブジェクト、実行可能、実行のスレッド、プログラム、及び／又はコンピューターであっても良いが、それに限定されない。
実例として、コントローラー上で動作しているアプリケーション及びコントローラーの両方はコンポーネントであり得る。一つ以上のコンポーネントがプロセス及び／又は実行のスレッド内に有って良く、コンポーネントは１つのコンピューター上に局在し、かつ／又は２つ以上のコンピューターの間で分配されても良い。
【００４５】
更に、請求項に記載された主題は方法、装置、又は標準プログラミングを使用した製品及び／又は開示された主題を実現するためにコンピューターを制御するためのソフトウエア、ファームウエア、ハードウエア、又はそれらの組み合わせを生成するエンジニアリング技術として実現されても良い。ここで使用された用語「製品」は、コンピューターにより読取り可能な装置、キャリアー又は媒体からアクセス可能なコンピュータープログラムのどれをも包含することが意図されている。勿論、当業者はこの構成に対して請求項に記載された主題の範囲及び精神から逸脱することなく多くの変形を作成しても良いことに気が付く筈である。
【００４６】
図９及び以下の説明はここで述べた一つ以上の内容の実施形態を実現する適当なコンピューティング環境の簡潔で概略的な記述を提供している。図９の動作環境は単に適当な動作環境の例であり、動作環境の使用又は機能の範囲について如何なる限度を示唆することを意図したものではない。例示されたコンピューティング装置にはパーソナルコンピューター、サーバーコンピューター、ハンドヘルド、又はラップトップ装置、携帯装置（例えば携帯電話、パーソナルデジタルアシスタント（ＰＤＡ）、メディアプレーヤ等）、マルチプロセッサーシステム、コンシューマーエレクトロニクス、ミニコンピューター、メインフレームコンピューター、上述のシステム又は装置の何れかを含む分散コンピューティング環境等が含まれるけれども、これらに限定されない。
【００４７】
必須ではないけれども、実施形態は一つ以上のコンピューティング装置によって実行されている「コンピューターが読取り可能な命令」の一般的な文脈で記述されている。
コンピューターにより読取り可能な命令はコンピューターにより読取り可能な媒体（後述）を介して分配されても良い。コンピューターにより読取り可能な命令は特定のタスクを実行するか又は特定の抽象的データタイプを実装するファンクション、オブジェクト、アプリケーションプログラミングインターフェース（ＡＰＩ）、データ構造、等のプログラムモジュールとして実装されても良い。通常、コンピューターにより読取り可能な命令の機能は種々の環境での要望に応じて組み合わされるか又は分散される。
【００４８】
図９はここで提供された一つ以上の実施形態を実現するように構成されたコンピューター装置９１２を含むシステム９１０の例を示している。一構成において、コンピューター装置９１２は少なくとも一つの処理装置９１６及びメモリー９１８を含んでいる。
コンピューティング装置の厳密な構成及び種類に依存して、メモリー９１８は揮発性（例えばＲＡＭ等）、不揮発性（例えばＲＯＭ、フラッシュメモリー等）又はこれら２つの組み合わせで有っても良い。この構成は図９において破線９１４で示されている。
【００４９】
他の実施形態において、装置９１２は追加の特徴及び／又は機能を含んでも良い。例えば、装置９１２はまた、磁気記憶装置、光学記憶装置を含み、それには限定されない（例えば、取り外し可能及び／又は非取り外し可能な）追加の記憶装置を含んでも良い。かかる追加の記憶装置は図９において記憶装置９２０で示されている。一実施形態において、ここで提供された一つ以上の実施形態を実現するためのコンピューターにより読取り可能な命令は記憶装置９２０内に設けられても良い。記憶装置９２０はまた、オペレーティングシステム、アプリケーションプログラム、等を実現する他のコンピューターにより読取り可能な命令を格納しても良い。コンピューターにより読取り可能な命令は例えば、処理装置９１６による実行のためにメモリー９１８にロードされても良い。
【００５０】
ここで使用された「コンピューターにより読取り可能な媒体」という用語はコンピューター記憶媒体を含む。コンピューター記憶媒体は例えばコンピューターにより読取り可能な命令又は他のデータ等の情報の格納のための如何なる方法又は技術において実装されている揮発性及び不揮発性の、取り外し可能及び非取り外し可能の媒体を含む。メモリ９１８及び記憶装置９２０はコンピューター記憶媒体の例である。コンピューター記憶媒体はＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ、フラッシュメモリー又は他のメモリー技術、ＣＤ−ＲＯＭ、デジタルバーサタイルディスク（ＤＶＤ）又は他の光学記憶装置、磁気カセット、磁気テープ、磁気ディスク記憶装置又は他の磁気記憶装置、又は所望の情報を格納するのに使用可能で装置９１２によってアクセス可能な他の媒体等を含んでいるけれどもこれらに限定されない。かかるコンピューター記憶媒体の何れも装置９１２の一部分であっても良い。
【００５１】
装置９１２はまた装置９１２が他の装置と通信することを可能にする通信接続９２６を含んでも良い。通信接続９２６は、例えばモデム、ネットワークインターフェースカード（ＮＩＣ）、統合ネットワークインターフェース、高周波トランスミッタ／レシーバ、赤外ポート、ＵＳＢ接続、又はコンピューター装置９１２を他のコンピューティング装置に接続するための他のインターフェースを含んで良いけれども、それに限定されない。通信接続９２６有線接続又は無線接続を含んでも良い。通信接続９２６は通信媒体を送信及び／又は受信しても良い。
【００５２】
「コンピューターにより読取り可能媒体」という用語は通信媒体を含んでも良い。通常、通信媒体は搬送波又は他の伝送メカニズム等の「変調データ信号」内のコンピューターにより読取り可能な命令又は他のデータを具体化したものであり、如何なる情報伝達媒体をも含む。「変調データ信号」という用語は一つ以上のその性質が信号中の情報をコード化するように設定又は変更された信号を含んでも良い。
【００５３】
装置９１２は例えばキーボード、マウス、ペン、音声入力装置、タッチ入力装置、赤外カメラ、ビデオ入力装置等の入力装置９２４及び／又は他のどのような入力装置を含んでも良い。例えば一つ以上のディスプレイ、スピーカ、プリンター等の出力装置９２２及び／又は他の出力装置もまた装置９１２に含まれても良い。入力装置９２４及び出力装置９２２は有線接続、無線接続、又はそれらの組み合わせを介して装置９１２に接続されても良い。一実施形態において、他のコンピューティング装置からの入力装置又は出力装置がコンピューター装置９１２のための入力装置９２４又は出力装置９２２として使用されても良い。
【００５４】
コンピューター装置９１２のコンポーネントは、例えばバスなどの種々の相互接続によって接続されても良い。かかる相互接続はＰＣＩエクスプレスなどの周辺機器コンポーネント相互接続（ＰＣＩ）、ユニバーサルシリアルバス（ＵＳＢ）、ファイアーワイヤー（ＩＥＥＥ１３９４）、光学式バスストラクチャ等を含んでも良い。他の実施形態において、コンピューター装置９１２のコンポーネントはネットワークによって相互接続されても良い。例えば、メモリー９１８はネットワークによって相互接続された異なる物理的位置に設置された複数の物理メモリーユニットによって構成されても良い。
【００５５】
当業者はコンピューターにより読取り可能な命令を格納するために用いられる記憶装置はネットワーク中に分散されていても良いことに気が付く筈である。例えば、ネットワーク９２８を介してアクセス可能なコンピューター装置９３０がここで提供された一つ以上の実施形態を実現するためのコンピューターにより読取り可能な命令を格納しても良い。コンピューティング装置９１２はコンピューター装置９３０にアクセスし、コンピューターにより読取り可能な命令の一部分又は全てを実行のためにダウンロードしても良い。あるいは、コンピューター装置９１２はコンピューターにより読取り可能な命令の幾つかを必要に応じてダウンロードするか又は命令の内のどれかはコンピューター装置９１２により実行され、また命令のどれかがコンピューター装置９３０で実行されるようにしても良い。
【００５６】
ここでは実施形態の種々の動作が提供されている。一実施形態において、記述された動作の一つ以上は一つ以上のコンピューターにより読取り可能媒体に格納されたコンピューターにより読取り可能な命令を構成して良く、その命令はコンピューティング装置によって実行されると、記述された動作をコンピューティング装置に実行させる。その動作の幾つか或いは全てが記述された順序はこれらの動作がこの順序に必然的に依存していることを示唆していると解釈されてはならない。この明細書から得るところのある当業者には他の順序でよいことが理解される筈である。更に、ここで提供された各実施形態において全ての動作が存在していることが必ずしも必要でないことが理解される筈である。
【００５７】
更に、これまで用いられてきた「例示的な」という用語は一例、代表的な例、または実例としての役割を果すことを意味している。ここで「例示的」として記述されたどのような態様又はデザインも必ずしも他の態様又はデザインより有利であると解される訳ではない。寧ろ、例示的という語の使用は概念を具体的な形で提示することを意図したものである。この出願において用いられたように、「又は」という用語は、排他的な「又は」ではなく「包含的な「又は」を意味することが意図されている。即ち、別に定めが無い限り、または文脈から明らかでない限り、「ＸはＡ又はＢを使用する」は自然な包含的な順列の何れかを意味することが意図されている。即ち、もしＸがＡを使用し；ＸがＢを使用し；又はＸがＡ及びＢの両方を使用するならば、「ＸがＡ又はＢを使用する」はこれらのどの例の場合にも満足される。更にこの出願及び添付の請求項において使用された冠詞「ａ」及び「ａｎ」は、別に定めが無い限り、又は文脈から単一形に対して用いられていることが明らかでない限り、通常「一つ以上」を意味すると理解することができる。
【００５８】
また、明細書の開示は一つ以上の実現例に関して示され、説明されてきたけれども、本明細書及び添付の図面を読んで理解することに基いて他の当業者は同等の変更及び変形が思いつく筈である。本明細書の開示はそのような変更及び変形の全てを含んでおり、以下に続く請求項の範囲のみによってのみ限定される。特に、上記のコンポーネント（例えばエレメント、リソース等）によって実行される種々の機能に関して、そのようなコンポーネントを記述するために用いられた用語は、他に定めが無い限り、記述されたコンポーネントの特定の機能を実行する（例えば機能的に同等な）如何なるコンポーネンにも、開示内容のここで示された例示的な実現例における機能を実行する構造とは構造的に同等でなくとも、対応することが意図されている。加えて、開示の特定の特徴は幾つかの実現例の内の一つのみについて開示されてきたかも知れないけれども、かかる特徴は、何れかの所定又は特定のアプリケーションに対して所望されかつ有利であるように、一つ以上の他の特徴の実現例と組み合わされても良い。更に、「含む」、「有する」、「共に」又はその変形例が詳細な説明または請求項において用いられる限り、これらの用語は「含む」という用語と同様の方法で包含的な用語で有ることが意図されている。
【図１】
0005894080.tif 000002
【図２】
0005894080.tif 000003
【図３】
0005894080.tif 000004
【図４】
0005894080.tif 000005
【図５Ａ】
0005894080.tif 000006
【図５Ｂ】
0005894080.tif 000007
【図６】
0005894080.tif 000008
【図７】
0005894080.tif 000009
【図８】
0005894080.tif 000010
【図９】
0005894080.tif 000011