(57)【要約】  プロトコルのセットが、ドキュメントタイプおよびランタイム環境を横断するドキュメント相互作用のための共通スクリプト・オブジェクト・モデルをサポートする。クロス・フレーム・ブラウザー・ベースのプロトコルが、スクリプト・オブジェクト・モデル要求をドキュメントホストに送信し、標準に準拠したブラウザーにおいて開発者コードに対する応答を管理するための安全、スケーラブル、かつ非同期な機構を提供することができる。ホスト可能ランタイム・アプリケーション・プログラミング・インターフェース（ＡＰＩ）が、ドキュメントホストのパフォーマンスに対する影響を最小限にしながら、スクリプト・オブジェクト・モデル要求をプロセス境界を横切ってドキュメントホストに送信し開発者コードに返送するために安全、スケーラブル、かつ非同期なプロトコルを提供することができる。
2015505115.tif 000002
【特許請求の範囲】
【請求項１】
ドキュメント通信ランタイム(runtime)インターフェースを提供するためのコンピューティングデバイス上で実行される方法であって、
スクリプト・オブジェクト・モデルをサポートするコールを送信するためのドキュメント中心(document-centric)メッセージングを促進する(facilitating)ステップと、
前記メッセージングを介してポリシー確認機構(policy checking mechanism)によってセキュリティーを提供するステップであって、送信エンティティ(transmitting entity)がコールを送信するのを許可されるかどうかを受信エンティティ(receiving entity)が確認する、ステップとを含む方法。
【請求項２】
前記メッセージングのためにリモート・プロシージャー・コール（ＲＰＣ）を利用するステップと、
複数のクロス・ドメイン・コールが同時に送信できるように、通信のために複数のチャネルの使用を可能にするステップとをさらに含む、請求項１に記載の方法。
【請求項３】
プロセス境界(process boundaries)を横切る(across)スクリプト・オブジェクト・モデル(script object model)要求(request)の安全(secure)、スケーラブル、かつ非同期な送信のためにホスト可能ランタイム・アプリケーション・プログラミング・インターフェース（ＡＰＩ）を提供するステップをさらに含む、請求項１に記載の方法。
【請求項４】
前記スクリプト・オブジェクト・モデル要求が、ドキュメントホストのパフォーマンスへの影響(performance impact)が実質的に小さい状態で(with a substantially reduced)、前記ドキュメントホストと開発者コードの間で送信され、前記ＡＰＩが、拡張性コード(extensibility code)からドキュメントデータへ命令(instructions)を適用する(apply)、請求項３に記載の方法。
【請求項５】
要求をキューに入れ(queuing requests)フォアグラウンド(foreground)・ユーザーインターフェース・スレッドと相互作用する(interacting)ことによってランタイム環境との相互作用(interaction)を管理する(managing)ためにリッチ(rich)クライアント・アプリケーションにおいてバックグラウンド・スレッドを提供するステップをさらに含む、請求項１に記載の方法。
【請求項６】
前記ランタイム環境(runtime environment)をブラウザー制御に接続するＡＰＩを提供するステップをさらに含む、請求項５に記載の方法。
【請求項７】
ブラウザーベースのアプリケーションにおいて、前記ランタイム環境をホストするｉｆｒａｍｅと、ドキュメントをホストするｉｆｒａｍｅおよびページのうちの一方との間で要求を安全に(securely)交換する、クロス・ドキュメント・メッセージング・ベースのＡＰＩを提供するステップをさらに含む、請求項１に記載の方法。
【請求項８】
ドキュメント通信ランタイムインターフェースを提供するためのサーバーであって、
命令を記憶するメモリーと、
前記メモリーに結合されたプロセッサーとを備え、前記プロセッサーは、ホストされたサービスを、前記メモリーに記憶された前記命令に関連して実行し、前記プロセッサーは、
スクリプト・オブジェクト・モデルをサポートするコールを送信するためのドキュメント中心メッセージングを促進し、
前記メッセージングを介してポリシー確認機構(policy checking mechanism)によってセキュリティーを提供し、送信エンティティがコールを送信するのを許可されるかどうかを受信エンティティが確認し、
要求をキューに入れフォアグラウンド・ユーザーインターフェース・スレッドと相互作用することによってランタイム環境との相互作用を管理するためにリッチクライアント・アプリケーションにおいてバックグラウンド・スレッドを提供し、
前記ランタイム環境をホストするｉｆｒａｍｅと、ドキュメントをホストするｉｆｒａｍｅおよびページのうちの一方との間で要求を安全に交換するクロス・ドキュメント・メッセージング・ベースのＡＰＩをブラウザーベースのアプリケーションにおいて提供するように適合される、サーバー。
【請求項９】
前記ブラウザーベースのアプリケーションは、拡張開発者のｉｆｒａｍｅによってホストされるランタイム環境の一部であるリクエスター(requestor)と、リクエスター要求にサービスするドキュメントコンテナー内にホストされるランタイムの環境の一部であるリスナー(listener)とを含む、請求項８に記載のサーバー。
【請求項１０】
各拡張機能は、専用のウェブオブジェクト制御によってサービスされ、少なくとも１つの通信プロトコルが前記要求を交換するために利用される、請求項８に記載のサーバー。
【請求項１１】
前記プロセッサーは、サンドボックス(sandbox)プロセスを利用して、ドキュメントをホストするアプリケーションと拡張(extension)コンテンツを提供するサードパーティー・ウェブサービスとの間の前記拡張コンテンツ・トラフィックを管理するようにさらに適合される、請求項８に記載のサーバー。
【請求項１２】
ドキュメント通信ランタイムインターフェースを提供するための命令が記憶されたコンピューター可読メモリー装置であって、前記命令は、
スクリプト・オブジェクト・モデルをサポートするコールを送信するためのドキュメント中心メッセージングを促進するステップと、
前記メッセージングを介してポリシー確認機構によってセキュリティーを提供するステップであって、送信エンティティがコールを送信するのを許可される(allowed)かどうかを受信エンティティが確認する(confirms)、ステップと
ユーザーエクスペリエンス(experience)に影響を与えずに(without impacting)ランタイム環境との相互作用を管理するためにリッチクライアント・アプリケーションへプロセスを通して要求を提供するステップと、
前記ランタイム環境をホストするｉｆｒａｍｅと、ドキュメントをホストするｉｆｒａｍｅおよびページのうちの一方との間で要求を安全に交換するクロス・ドキュメント・メッセージング・ベースのＡＰＩをブラウザーベースのアプリケーションにおいて提供するステップと、
サンドボックスプロセスを利用して、ドキュメントをホストするアプリケーションと拡張コンテンツを提供するサードパーティー・ウェブサービスとの間の前記拡張コンテンツ・トラフィックを管理するステップとを含む、コンピューター可読メモリー装置。
【請求項１３】
前記サンドボックスは、ブラウザーアプリケーションからホストプロセスへのコールを促進する、前記ブラウザーアプリケーション内へプロキシーを経由してマーシャリングされる(marshaled)前記ホストプロセスにおけるオブジェクトである、請求項１２に記載のコンピューター可読メモリー装置。
【請求項１４】
前記命令は、
アプリケーション機能を前記サンドボックスにマッピングする各アプリケーションに固有のコードを含むホスト統合(integration)マネージャーを提供するステップと、
ソリューションをホストデータにブリッジ(bridge)し、各拡張機能(extension)のコンテキストを管理するために、コンテキストマネージャーおよびアクティブ化(activation)マネージャーを提供するステップをさらに含む、請求項１２に記載のコンピューター可読メモリー装置。
【請求項１５】
前記命令は、
どの拡張機能が、前記アプリケーションのインスタンス、ドキュメント・コンテンツ・タイプ、およびドキュメント・コンテンツに関係するかを決定し、ユーザーマシン上にキャッシュされたマニフェストファイルから構成(configuration)およびポリシー情報を得るために、ソリューションマネージャーを提供するステップと、
前記拡張機能の態様(aspects)を監視するステップと、
予め決められたメトリックス(metrics)の違反(violations)に基づいて前記拡張機能の停止(stopping)および再稼働（restarting）の一方を行うステップとをさらに含む、請求項１２に記載のコンピューター可読メモリー装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本願発明の一実施例は、例えば、ドキュメント通信ランタイムインターフェースに関する。
【背景技術】
【０００２】
[0001]コンピューティング技術およびネットワーキング技術の普及に伴って、ワードプロセッシング、スプレッドシート、プレゼンテーション、通信、および同様のサービスを提供する生産性アプリケーションのようなアプリケーションは、ローカルにインストールされたバージョンに加えてまたは代えて、ブラウザーベースの形態で提供されるものが増えつつある。
【０００３】
[0002]ブラウザーベースのアプリケーションは、ウェブページが複数のソースからのコンテンツを組み合わせるマッシュアップ・ウェブ・アプリケーションとして分類され得る。たとえば、生産性アプリケーションシナリオでは、ホスティングページが協働サービスサーバーからもたらされる場合があり、その場合、埋め込まれたウェブ・アクセス・コンポーネントは、ウェブ・アクセス・サーバーからもたらされ、ビジネスサービス拡張コンポーネントは、ビジネスサービス・サーバーまたはサードパーティーの拡張コンポーネント・サーバーからもたらされる。このコンテキストでは、ホスティングページはインテグレーターであり、ウェブ・アクセス・コンポーネントおよび拡張コンポーネントはマッシュアップにおけるガジェットである。そのようなモデルでは、ガジェットは完全には信頼することができない。幅広く適合される解決方法では、ｉｆｒａｍｅを使用してコンポーネント（複数可）をサンドボックス化し、ブラウザーの同一生成元ポリシー（ＳＯＰ）スクリプトポリシーに依拠して、１つのガジェットが他のデータに損害を与えるのを防止する。
【０００４】
[0003]しかしながら、ｉｆｒａｍｅをサンドボックスとしてＳＯＰをセキュリティー対策として用いる場合、信頼される拡張コンポーネントおよびウェブ・アクセス・コンポーネント間の相互作用が限られてしまうことがある。したがって、信頼されるフレーム間に確立される通信チャネルが、ブラウザーベースのシステムでのアプリケーション隔離に関して安全でなく信頼もできないことがある。
【発明の概要】
【発明が解決しようとする課題】
【０００５】
本願発明の一実施例は、例えば、ドキュメント通信ランタイムインターフェースに関する。
【課題を解決するための手段】
【０００６】
[0004]この概要は、発明を実施するための形態でさらに後述される概念から選択したものを簡略化された形で紹介するために示される。この概要は、特許請求される主題の主要な特徴や必須の特徴を排他的に特定するものではなく、特許請求される主題の範囲を決定する際の補助とするものでもない。
【０００７】
[0005]実施形態は、ドキュメントタイプおよびランタイム環境を横断するドキュメント相互作用のための共通スクリプト・オブジェクト・モデルをサポートするためのプロトコルのセットに関する。いくつかの実施形態によれば、クロス・フレーム・ブラウザー・ベースのプロトコルが、スクリプト・オブジェクト・モデル要求をドキュメントホストに送信し、標準に準拠したブラウザーにおいて開発者コードに対する応答を管理するための安全、スケーラブル、かつ非同期な機構を提供することができる。他の実施形態によれば、ホスト可能ランタイム・アプリケーション・プログラミング・インターフェース（ＡＰＩ）が、ドキュメントホストのパフォーマンスに対する影響を最小限にしながら、スクリプト・オブジェクト・モデル要求を、プロセス境界を横切ってドキュメントホストに送信し開発者コードに返送するために、安全、スケーラブル、かつ非同期なプロトコルを提供することができる。
【０００８】
[0006]上記および他の特徴および利点は、以下の発明を実施するための形態を読んで、関連する図面を検討することで明らかとなろう。以上の概要および以下の発明を実施するための形態はいずれも説明的なものであり特許請求される態様を限定しないことを理解されたい。
【図面の簡単な説明】
【０００９】
【図１】[0007]いくつかの実施形態によるドキュメント通信インターフェースが実装され得るネットワーク化環境を示す図である。
【図２】[0008]例示的なシステムの最上位の概略図である。
【図３】[0009]実施形態によるシステム内のリッチクライアントのためのプロセス間の例示的な相互作用を示す図である。
【図４】[0010]ブラウザーベースの実装においてドキュメントデータに達するクロス・ドメイン・アクセスを促進する例を示す図である。
【図５】[0011]実施形態によるドキュメント通信ランタイムインターフェースの例示的なブラウザーおよびリッチクライアントの実装を示す図である。
【図６】[0012]リッチクライアントの実装における例示的なコンポーネントの関係を示す図である。
【図７】[0013]実施形態によるシステムが実装され得るネットワーク化環境を示す図である。
【図８】[0014]実施形態が実装され得る例示的なコンピューティング動作環境のブロック図である。
【図９】[0015]実施形態によるランタイムインターフェースを介したドキュメント通信を促進するプロセスの論理フロー図である。
【発明を実施するための形態】
【００１０】
[0016]以上に簡単に説明されたように、ブラウザーベースおよびリッチクライアント・アプリケーションのための異なる複数のドキュメントタイプおよびランタイム環境を横切るドキュメント相互作用は、スクリプト・オブジェクト・モデル要求をドキュメントホストに送信し、標準に準拠したブラウザーにおいて開発者コードに対する応答を管理するための安全、スケーラブル、かつ非同期な機構を提供する、クロス・フレーム・ブラウザー・ベースのプロトコルおよびホスト可能ランタイム・アプリケーション・プログラミング・インターフェース（ＡＰＩ）によって促進される。以下の発明を実施するための形態では、その一部を成し、例示的に特定の実施形態または例が示される添付図面が参照される。これらの態様は組み合わされてもよく、他の態様が利用されてもよく、また本開示の趣旨または範囲から逸脱することなく構造的変更が行われてもよい。したがって、以下の発明を実施するための形態は、限定的な意味でとらえられるべきではなく、本開示の範囲は、添付の特許請求の範囲およびその均等物によって定義される。
【００１１】
[0017]以下の発明を実施するための形態では、その一部を成し、例示的に特定の実施形態または例が示される添付図面が参照される。これらの態様は組み合わされてもよく、他の態様が利用されてもよく、また本開示の趣旨または範囲から逸脱することなく構造的変更が行われてもよい。したがって、以下の発明を実施するための形態は、限定的な意味でとらえられるべきではなく、本開示の範囲は、添付の特許請求の範囲およびその均等物によって定義される。
【００１２】
[0018]コンピューティングデバイスのオペレーティングシステム上で動作するアプリケーションプログラムと併せて実行するプログラムモジュールの一般的なコンテキストで実施形態が説明されるが、他のプログラムモジュールと組み合わせて態様が実装されてもよいことは当業者には認識されよう。
【００１３】
[0019]一般に、プログラムモジュールは、ルーチン、プログラム、コンポーネント、データ構造、および、特定のタスクを実行するかまたは特定の抽象データ型を実装する他のタイプの構造を含む。さらに、実施形態は、ハンドヘルドデバイス、マイクロプロセッサーシステム、マイクロプロセッサーベースまたはプログラマブル家庭用電化製品、ミニコンピューター、メインフレームコンピューター、および同等のコンピューティングデバイスを含む他のコンピューターシステム構成を用いて実施されてもよいことは、当業者には理解されよう。また、実施形態は、通信ネットワークを介してリンクされるリモート処理デバイスによってタスクが実行される分散コンピューティング環境で実施されてもよい。分散コンピューティング環境では、プログラムモジュールは、ローカルとリモートの両方のメモリー記憶装置に配置され得る。
【００１４】
[0020]実施形態は、コンピューター実装プロセス（方法）、コンピューティングシステム、あるいはコンピュータープログラム製品またはコンピューター可読媒体などの製造品として実装され得る。コンピュータープログラム製品は、コンピューターシステムによって読み取り可能であって、コンピューターまたはコンピューティングシステムに例示的なプロセス（複数可）を実行させるための命令を含むコンピュータープログラムを符号化する、コンピューター記憶媒体とすることができる。コンピューター可読記憶媒体は、非一時的なコンピューター可読メモリー装置である。コンピューター可読記憶媒体は、たとえば、揮発性コンピューターメモリー、不揮発性メモリー、ハードドライブ、フラッシュドライブ、フロッピー（登録商標）ディスク、またはコンパクトディスク、および同等の媒体のうちの１つまたは複数によって実装され得る。
【００１５】
[0021]本明細書を通して、「プラットフォーム」という用語は、生産性アプリケーションまたは同様のアプリケーションなどのウェブベースのサービスを提供するためのソフトウェアコンポーネントとハードウェアコンポーネントの組み合わせとすることができる。プラットフォームの例は、複数のサーバーにわたって実行されるホストされたサービス、単一のコンピューティングデバイスで実行されるアプリケーション、および同等のシステムを含むが、これらに限定されない。「サーバー」という用語は一般に、典型的にはネットワーク環境において１つまたは複数のソフトウェアプログラムを実行するコンピューティングデバイスを指す。しかしながら、サーバーは、ネットワーク上のサーバーとみなされる１つまたは複数のコンピューティングデバイス（ハードウェア）上で実行される仮想サーバー（ソフトウェアプログラム）として実装されてもよい。これらの技術および例示的な動作の詳細は以下に示される。
【００１６】
[0022]図１を参照すると、図１００は、いくつかの実施形態によるドキュメント通信インターフェースが実装され得るネットワーク化環境を示す。図１００に示されるコンピューティングデバイスおよびコンピューティング環境は例示のためのものである。実施形態は、種々のコンピューティングデバイスおよびシステムを用いる、様々なローカルおよびネットワーク化コンピューティング環境ならびに同様のコンピューティング環境で実装されてよい。
【００１７】
[0023]図１００に示される例示的な環境では、サービス１０２（たとえば、クラウドベースのサービス）が、１つまたは複数のアプリケーションおよび関連するサービスを、１つまたは複数のネットワーク１０８を介して複数のクライアントに提供することができる。ユーザーは、コンピューティングデバイス１０４上で実行されるブラウザーアプリケーション１０６のようなシンクライアント・アプリケーションによって、またはコンピューティングデバイス１１４上で実行されるリッチクライアント・アプリケーション１１６のようなリッチクライアント・アプリケーションによってサービス（およびアプリケーション）にアクセスすることができる。シンクライアント・アプリケーションは、典型的には、サービスとの通信によって複数のサービスへのアクセスを可能にし、サービスが提供する要素をクライアントインターフェース１０８を通してレンダリングする汎用アプリケーションである。シンクライアント・アプリケーションは、ある種のデータをローカルに記憶し、いくつかのユーザー固有またはサービス固有の構成を有することがあるが、全体として特定のサービスまたはクライアントに専用ではない。たとえば、ユーザーは、（適切なセキュリティー対策を実装する）任意のコンピューティングデバイス上の任意のシンクライアント・アプリケーションを介して同じサービスにアクセスすることができる。一方、リッチクライアント・アプリケーションは、典型的には、ユーザー固有および／またはサービス固有の構成を有するローカルにインストールされたアプリケーションを含む。データおよび構成の一部分がローカルに記憶され得る。また、リッチクライアントは、（インストールおよび構成の態様のため）通常はデバイスに固有となる。
【００１８】
[0024]サービス１０２の例は、ワードプロセッシング、スプレッドシート、プレゼンテーション、電子メール／テキストメッセージ通信、スケジューリング、連絡先管理、および同様のタスクのような機能性を提供する生産性サービスである。ワシントン州レドモンドのＭｉｃｒｏｓｏｆｔ  ＣｏｒｐｏｒａｔｉｏｎによるＭｉｃｒｏｓｏｆｔ  Ｏｆｆｉｃｅ（登録商標）は、生産性スイートの一例である。実施形態は生産性サービスに限定されない。ビジネスサービス、テストサービス、および同等のサービスなど他のサービスも、本明細書に記載の原理を用いて実装されてよい。
【００１９】
[0025]ウェブベースのサービスでは、開発者は、スクリプト・オブジェクト・モデルと呼ばれるパブリックインターフェースに対してコードを書く。実施形態によるシステムは、このインターフェースからドキュメントをホストするアプリケーションへの要求の高性能の変換および安全な送信に対処する。いくつかのアプリケーションは「インプロセス」を実装し、アプリケーションに密に結合されるので、共通プログラミングモデルの提供が困難となり、プロセス隔離の問題およびセキュリティーの問題が生じる。さらに、チャネルが別のチャネルを認識できずそのデータにアクセス／インターフェースすることができない隔離が用いられ、高度な特権拡張機能によって実行される特権が限られ、ウェブ拡張による特権の増大が阻止されることがある。
【００２０】
[0026]実施形態は、（ｉｆｒａｍｅおよびクロス・ドキュメント・メッセージング技術を利用して）リッチクライアントまたはブラウザーを用いて実装され得る。いずれも、データを取得し更新するために安全、スケーラブル、かつ非同期で隔離されたプロトコルに用いてスクリプト・オブジェクト・モデルをサポートする。リッチクライアント・アプリケーションでは、ＩＤｉｓｐａｔｃｈベースのアプリケーション・プログラミング・インターフェース（ＡＰＩ）が、（スクリプト・オブジェクト・モデルが実行される）ランタイム環境と（データが管理されユーザーに提示される）リッチクライアント・アプリケーションの間でデータをマーシャリングする。したがって、スクリプトランタイム環境とリッチクライアント・アプリケーションの間のデータのクロスプロセス転送が管理される。
【００２１】
[0027]（要求をキューに入れフォアグラウンド・ユーザーインターフェース・スレッドと相互作用する）ランタイム環境との相互作用を管理するリッチクライアント・アプリケーションにおけるバックグラウンド・スレッドが提供され得る。このアーキテクチャは、拡張性ランタイム環境が、リッチクライアント・アプリケーションのパフォーマンスに対する影響を管理した状態を確実にすることができる。したがって、リッチクライアント・アプリケーションのＡＰＩの実装が、拡張性コードからドキュメントデータへ命令を適用する。
【００２２】
[0028]また、リッチクライアント・アプリケーションの実装において、ブラウザーアプリケーション内部でホストされるウェブブラウザー制御にランタイム環境を接続するＩＤｉｓｐａｔｃｈ  ＡＰＩを実装するランタイム環境が提供され得る。したがって、プロセス隔離（「サンドボックス化」）、および（複数の同時にアクティブな拡張機能をサポートするための）スレッド管理が実現され得る。本開示を通して例示的な説明でＩＤｉｓｐａｔｃｈ  ＡＰＩを参照するが、この特定のインターフェースが実施形態を使用することは必須ではない。任意の明示的に定義されたインターフェースが利用されてもよい。たとえば、独自仕様のサンドボックスプロセスが定義され、ウェブブラウザー制御がその内部でホストされてもよい。あるいは、標準的ウェブブラウザーが、カスタム・プロトコル・ハンドラーとして制御をホストしてもよい。
【００２３】
[0029]ブラウザーベースのアプリケーション（たとえば、ワシントン州レドモンドのＭｉｃｒｏｓｏｆｔ  ＣｏｒｐｏｒａｔｉｏｎによるＥｘｃｅｌ  Ｗｅｂ  Ｓｅｒｖｉｃｅｓ（登録商標）およびＯｕｔｌｏｏｋ  Ｗｅｂ  Ａｃｃｅｓｓ（登録商標））は、ブラウザーの能力により制約される場合がある。拡張コードを実行するとき、そのコードがデータと同じドメインに由来しない場合に適用されるアクセス制約が存在することがある。コードが同じドメインに由来する場合も、アクセス制御の実施に関する問題が存在することがある。ブラウザーベースのサービスを実装する実施形態は、これらの制約を除去できるようにするための安全な高性能なプロトコルを提供することができ、それにより、ランタイム環境（スクリプト・オブジェクト・モデル）をホストするｉｆｒａｍｅとドキュメントをホストするｉｆｒａｍｅ／ページとの間で要求を安全にマーシャリングするクロス・ドキュメント・メッセージング・ベースのＡＰＩを送達する。ｉｆｒａｍｅ通信は、ブラウザーオブジェクト内の管理されたタイプのプロセス内通信である。ブラウザー「拡張ウェブコンポーネント（Ｅｘｔｅｎｓｉｏｎ  Ｗｅｂ  Ｃｏｍｐｏｎｅｎｔ）」からＣＯＭまたは別のマーシャリングプロセスを介しホストへ進む、またはブラウザーからネットワークプロトコルを介してサーバー実施形態のＷＡＣサーバーへ進むクロスプロセス境界がある。
【００２４】
[0030]ブラウザーベースの実装は、リクエスター（拡張開発者のｉｆｒａｍｅによってホストされるランタイムの一部）、およびリスナー（リクエスター要求にサービスするドキュメントコンテナー内にホストされるランタイムの一部）を含むことができる。また、拡張機能が他の拡張機能と公平にサービスされることを確実にするように設計されたキューシステムが存在してもよい。
【００２５】
[0031]ブラウザーベースのアプリケーションは、マッシュアップ・ウェブ・アプリケーションとして分類可能であり、マッシュアップ・ウェブ・アプリケーションでは、インテグレーターであるホスティングページ、ならびにマッシュアップにおけるガジェットであるウェブ・アクセス・コンポーネントおよび拡張コンポーネントを用いて、ウェブページが複数のソースからのコンテンツを組み合わせる。２つ以上のソースからのデータ、プレゼンテーション、または機能性を使用し組み合わせて新しいサービスを作成するマッシュアップ・ウェブ・アプリケーションは、生ソースデータを生成する本来の理由では必ずしもない強化された結果の生成にあたって容易な高速の統合を目標とする。マッシュアップの主な特徴は、組み合わせ、視覚化、および集約である。
【００２６】
[0032]図２は、例示的なシステムの最上位の概略図である。
[0033]図２００に示されるように、ホストされたサービス２２０（たとえば、クラウドベースのサービス）は、（たとえば、拡張マークアップ言語「ＸＭＬ」での）マニフェスト２２２とウェブページ２２４とを組み合わせることができる。マニフェストファイル２２２は、アプリケーションのインスタンス、ドキュメント・コンテンツ・タイプ、およびドキュメント・コンテンツに関連付けられた情報を提供することができる。生産性アプリケーション２２６によってホストされた拡張コンポーネント２２８は、ウェブオブジェクト制御、すなわち、生産性クライアントと相互作用する機構を開発者に提供するためのデータおよびイベント層に結合されたブラウザー環境を提供することができる。サービス２２０からのデータコールは、実際に、データコールがポリシーによってフィルタされホスト統合マネージャーを介して生産性クライアントデータコールに変換される、サンドボックス内のデータコールである。実施形態によるシステムにおいて、２つの別個のＡＰＩが存在する。第１のＡＰＩは、ソリューション・スクリプトが参照するスクリプトＡＰＩである。第２のＡＰＩは、スクリプトが開発者に対してラップしたのをホストが公開する実際のクロスプロセスＡＰＩである。ソリューションが参照するスクリプトＡＰＩは任意選択とすることができ、ポリシーは、後でより詳細に論じられるように、クロスプロセスＡＰＩで実施され得る。
【００２７】
[0034]したがって、実施形態は、安全かつスケーラブルでドキュメント中心のフレーム間通信を対象とする。また、ポリシー確認機構が、リモート・プロシージャー・コール（ＲＰＣ）ベースのメッセージングを介して提供され、送信者がコールを行うことを許可されるかどうかを受信者が確認する。フレーム間通信は、干渉なしに複数のチャネルを使用することができる。したがって、異なるコールが同時に行われてよい。ユーザー・インターフェース・コンポーネントは、ユーザーへＨＴＭＬコードをレンダリングできるようにする。ＲＰＣは、詳細にはプロセス間であってプロセス内でない。ＲＰＣコールは、ファームウェアｉｆｒａｍｅからネットワーキングＡＰＩを介しサーバーへのコール、またはＣＯＭもしくは他のマーシャリング技術によってなされたブラウザーからホストへのマーシャリングされたコールとみなすことができる。
【００２８】
[0035]図３は、実施形態によるシステム内のリッチクライアントのためのプロセス間の例示的な相互作用を示す。ブラウザーの実装にはｉｆｒａｍｅを活用することができる。
[0036]図３００は、サードパーティー・ウェブサービス３４０が、拡張コンテンツ（スクリプト言語、ＨＴＭＬなど）をブラウザー・サンドボックス・ホスト・プロセス３３４に提供する例示的なアーキテクチャを示す。いくつかの実施形態によれば、ランタイム環境は、ランタイム環境をブラウザー内部にホストされた制御に接続し、プロセス隔離（「サンドボックス化」）およびスレッド管理を提供して複数の同時にアクティブな拡張機能をサポートするＡＰＩを実装することができる。ブラウザー・サンドボックス・ホストプロセス３３４は、低整合性レベル（ＩＬ）のプロセスとすることができ、中ＩＬのアクセスを必要とする要求を、中ＩＬのブラウザー・ブローカー・プロセス３３２に送ることができる。
【００２９】
[0037]整合性レベル（ＩＬ）は、ログインセッションで動作するプロセスにＩＬベースの隔離を追加するオペレーティングシステムで実装されるコアセキュリティ機能の一部である。ＩＬは、より信頼される同じユーザーアカウントにおいて動作する他のコンテキストと比べて、潜在的に信頼性が低いとみなされるコンテキストで、いくつかのプログラムまたはソフトウェアコンポーネントのアクセス許可を選択的に制限するために使用される。オブジェクトが初期化されるとき、サブジェクトＩＬがセキュリティー・アクセス・トークンに割り当てられ得る。アクセス・トークンにおける整合性レベルは、セキュリティー参照モニタがオブジェクトに対するアクセスの許可をする前に認証を行うとき、セキュリティー記述子における整合性レベルと比較される。オペレーティングシステム（またはホストプロセス）は、サブジェクトの整合性レベルがオブジェクトより高いかそれとも低いかに応じて、また整合性ポリシーフラグに応じて、許可されるアクセス権を制限することができる。
【００３０】
[0038]ＩＤｉｓｐａｔｃｈベースのＡＰＩは、ランタイム環境と、データが管理されユーザーに提示される生産性ホストアプリケーション３３０との間のデータトラフィックを管理することができる。ドキュメント・データ・アクセス（ＤＤＡ）／トラフィックマネージャー３３６は、スクリプトランタイム環境（拡張ウェブコンポーネント３３８）と生産性アプリケーションの間のデータのクロスプロセス転送を管理することができる。
【００３１】
[0039]図４は、ブラウザーベースの実装においてドキュメントデータに達するクロス・ドメイン・アクセスを促進する例を示す。図４００における相互作用する例示的なコンポーネントは、カスタムスクリプト４４４、スクリプト・オブジェクト・モデル４４６、およびウェブ・アクセス・コンポーネント・クライアント４４８を備えるページ４４２を含み、ウェブ・アクセス・コンポーネント・クライアント４４８は、そのスクリプト・オブジェクト・モデル４５２を備える拡張コンポーネント４５０を含むことができる。図４００に示される他のコンポーネントは、ウェブ・アクセス・コンポーネント・サーバー・ドメイン４５４、ページ・ホスト・ドメイン４５６、サードパーティー・ドメイン４５８、および拡張コンポーネント・ホスト・ドメイン４６０を含む。
【００３２】
[0040]拡張ドキュメントアクセス（１）は、ウェブ・アクセス・コンポーネント（ＷＡＣ）「内へ」の拡張開発者に関する主要なフローであり、たとえば、それらのコードはページ上にロードされ、ＷＡＣは、拡張ドキュメントをホストし、それらによってドキュメントに読み込み（および潜在的に書き込み）が望まれるものである。従来のシステムでは、ＷＡＣウェブサービスはＨＴＭＬ  ｉｆｒａｍｅにおいてホストされ、ブラウザー同一生成元ポリシー（ＳＯＰ）がページの残部との直接的相互作用を阻止するため、開発者は、ＷＡＣウェブサービスを呼び出すことができない。ポリシーベースの制御を実施できるＷＡＣサーバー制御によってアクセスが制御される。相互作用（２）は、自身の拡張コンポーネント・ホスト・ドメインに対する拡張アクセスを表す。この拡張機能は、このドメインからロードされ、たとえば、画像のロード、フォームの更新、およびウェブサービスとの相互作用のために、制限なしにこのドメインと相互作用することができる。拡張ユーザーは、拡張ユーザーが拡張機能に入力するまたはＡＰＩを介して拡張機能へ流れることを可能にする任意のデータが、このドメインに送られ得ることを、認識させられることがある。
【００３３】
[0041]相互作用（３）は、ＷＡＣサーバー・ドメインに対する拡張アクセスを表す。ドキュメント・ページ・コンテンツは、拡張機能をホストするｉｆｒａｍｅを含むＷＡＣ制御を介してこのドメインからロードされる。拡張コードは、このドメインに直接アクセスできず、そのウェブサービスを呼び出せず、そのウェブサービスは、代わりに、ホストするＷＡＣ  ｉｆｒａｍｅによってのみアクセスできる。他のドメインに対する拡張アクセス（４）はプロキシーを介して可能にすることができる。プロキシー・モデルの例は、ページ・プロキシー、拡張コンポーネント・ドメイン・プロキシー、またはドキュメント・ドメイン・プロキシーを含むことができる。ページ・プロキシーでは、ページ上の任意のｉｆｒａｍｅが、許可されたメッセージに応答するｘｄｍベースのプロキシーをホストすることができる。開発者はまた、それら自体のドメイン上のプロキシーを構築し活用して、必要に応じて、他のドメインに対する前方アクセスを提供して、それらのアプリケーションに対するサービスを提供することができる。ドキュメント・ドメイン・プロキシーは、ページ上のｘｄｍサービスを使用してアクセスされることが可能であり、サードパーティー・ドメインに対する制御され認証されたアクセスを提供することができる。
【００３４】
[0042]ウェブ・アクセス・コンポーネント・コードは、ＷＡＣドメインに対するＷＡＣアクセスを介してドキュメントと相互作用（５）することができる。ＷＡＣコードは、直接的に拡張可能でなく、危険なホスティングを防止（フレームバスティング（ｆｒａｍｅ−ｂｕｓｔｉｎｇ））するように制御が提供され得る。
【００３５】
[0043]同一生成元規則のため、ＷＡＣ制御をホストしているページ上で動作するブラウザー側コードは、ＷＡＣサービスに直接アクセスすることができないことがあるが、それらは、ＡＰＩを活用してドキュメントと相互作用（６）する。ＡＰＩは、内側と外側の両方のフレームから呼び出し可能とすることができる。他のドメインに対するページアクセス（７）は、（４）と同様に促進することができ、ここでは、ページは、それが直接アクセスすることができるドメインにおいて制限され、ウェブサービスを呼び出すために同様のプロキシー技術を活用しなければならない。自身のページ・ホスト・ドメインに対するアクセス（８）は、リッチな協働アプリケーションを構築する手段として使用可能にされ得る。
【００３６】
[0044]図５は、実施形態によるドキュメント通信ランタイムインターフェースの例示的なブラウザーおよびリッチクライアントの実装を示す。ブラウザー（ｘｄｍ）の実装とリッチクライアント（ＩＤｉｓｐａｔｃｈ）の実装は、ドメイン境界を横切って相互作用する。
【００３７】
[0045]開発者スクリプト５６１は、生産性スクリプトを形成するソリューション・フレームワーク・プロバイダー・マネージャーによって、生産性サービス・オブジェクト・モデル５６２および動的ローディング５６３を介して変換される。アプリケーション固有スクリプトコードは、個別のアプリケーション・スクリプト・プロバイダーまたはウェブ・アプリケーション・スクリプト・プロバイダー（５６３から５６８）によって提供され得る。アプリケーション・スクリプト・プロバイダーおよびウェブ・アプリケーション・スクリプト・プロバイダーは、開発者の利便性のため提供され得る任意選択の層である。生産性サービスの例としての個別アプリケーションは、スプレッドシートアプリケーション、ワードプロセッシングアプリケーション、およびプレゼンテーションアプリケーションなどを含むことができる。ウェブ・アプリケーション・プロバイダーのアプリケーション固有スクリプトとウェブ・アクセス・コンポーネント５８３との間の相互作用は、クロス・ドメイン境界の両側のｘｄｍインターフェース５６９および５８０を介して促進され得る。（ウェブ・アクセス・コンポーネント５８３内の）ランタイム環境側のコンポーネントは、アプリケーション・スクリプト・オブジェクト・モデル５７８〜５７９、アクティブ化コンポーネント５８０、およびコンテキスト・マネージャー・コンポーネント５８１を含む。
【００３８】
[0046]リッチクライアント（５７２）側では、ＩＤｉｓｐａｔｃｈ  ＡＰＩ５７０が、サンドボックスプロセス境界５７１を介してアクティブ化コンポーネント５７３、コンテキスト・マネージャー・コンポーネント５７４、およびネイティブ・アプリケーション・オブジェクト・モデル５７５〜５７７へのメッセージのマーシャリングを促進する。
【００３９】
[0047]図６は、リッチクライアントの実装における例示的なコンポーネントの関係を示す。
[0048]リッチクライアント・アプリケーション６１０は、マーケットプレイス・ユーザーインターフェース・コンポーネント６１１を含むことができ、このコンポーネントは、ソリューション・フレームワーク・ランタイム環境６１７内の拡張マネージャー６１４と直接相互作用し、クライアント・オブジェクト・モデル６１２を介してソリューション・フレームワーク・マネージャー６１５と相互作用することができる。ソリューション・フレームワーク・ランタイムでは、他のマネージャモジュールがブラウザー６２０におけるスクリプト・オブジェクト・モデル・ライブラリーと相互作用するのに加えて、サンドボックスマネージャー６１６も実行され得る。サービスプロバイダー６２８は、ソリューション・フレームワーク・ランタイム環境６１７内のリモートプロキシー６１８におけるプロバイダープロキシー６１９を介して、サンドボックス６１６と相互作用することができる。リッチクライアント６１０はまた、ブラウザー６２０におけるウェブブラウザー・インターフェース６２４と相互作用するリモート拡張コンポーネント・ユーザーインターフェース６１３を含むことができる。
【００４０】
[0049]ブラウザーは、２つの層、すなわち、中ＩＬ層（６２０）および低ＩＬ層６２１に分割され得る。サービスプロバイダー６２８を有するリモーター（Ｒｅｍｏｔｅｒ）６２９は、プロセスホスト６２３と共にＡｃｔｉｖｅ  Ｘ層６２２内に存在することができる。プロセスホスト６２３は、（アプリケーション固有）拡張コンポーネント６２５を有するブラウザーインスタンス６２４と、ＡＰＩおよびイベント６２７を含むスクリプト・オブジェクト・モデル・ライブラリー６２６とを含むことができる。
【００４１】
[0050]実施形態によるシステムでは、各アプリケーションは、別個のプロセスホスト６２３を有することができる。これにより、ホストはその「オーナー」が退去した場合にプロセスリストおよびシャットダウンを確認できるため、ホストを開始／停止するときの複雑さが回避される。単一プロセスホストは、アプリケーション当たりの一度にオープンできる数の拡張機能を扱うことができる。各拡張機能は専用のウェブオブジェクト制御によってサービスされ、いくつかの通信プロトコルが利用され得る。
【００４２】
[0051]クリアインターフェースを有する層状のコンポーネントのセットが、各プロセスホスト内および所有するアプリケーションホストとサンドボックスプロセスとの間で確立されることが可能であり、それにより、管理された送達およびインフラストラクチャーのクリアデバッグが可能になる。アプリケーション内では、ドキュメントに対する永続的インラインとすることができるインスタンス固有状態を含む拡張毎のインスタンス化プロパティグループによって永続性が達成され得る。ホスト統合マネージャーは、アプリケーション機能をサンドボックスにマッピングする各アプリケーションに固有のコードを含むことができる。コンテキストおよびアクティブ化マネージャーは、ソリューションをホストデータにブリッジし、各拡張機能のコンテキストを管理することができる。この層は、アプリケーションイベント変換を処理し、拡張機能からのデータの要求を転送しまた要求にサービスすることができる。実施形態はまた、規則ベースのアクティブ化を可能にする。規則は、拡張機能が利用可能にされたときに制御をするアクティブ化に対して指定され、指定された規則と合致するデータに関して情報をその評価によって拡張機能に提供することができる。実施形態はまた、リソース消費（プロセッサー、メモリーなど）に関する範囲で、サンドボックス化されたプロセスの管理を可能にする。外部プロセスの態様が監視され、クライアントの実装における予め決められたマトリックスの違反に基づいて拡張機能が停止または制限され得る。
【００４３】
[0052]ソリューションマネージャーは、どの拡張機能が、アプリケーションのインスタンス、ドキュメント・コンテンツ・タイプ、およびドキュメント・コンテンツに関係するかを決定し、ユーザーマシン上にキャッシュされたマニフェストファイルから構成およびポリシー情報を得ることができる。サンドボックスマネージャーは、定期的にアプリケーションが依然としてアクティブであるかを確認し、拡張機能をホストするウェブブラウザーを制御するサンドボックスプロセスホストのための管理コードであり得る。
【００４４】
[0053]アプリケーション内のコードは、複数の通信プロトコルを活用して、ホスト・サンドボックス・プロセスおよび拡張アクティブ化を処理することができる。それらのプロトコルは、アプリケーションとサンドボックスホストの間の通信を可能にする。フローは、アプリケーションホストにおけるアクティブ化から開始し、ウェブオブジェクト制御における拡張機能からのデータ要求で逆に流れ、アプリケーション内で始動されるイベントで戻る。
【００４５】
[0054]サンドボックス・ホスト・プロセスは同様に層状にされ得る。ポリシーマネージャーは、拡張機能を開始するときにソリューションマネージャーによって拡張マニフェストから読み取られるポリシー情報を受け取り、これを使用してサービスプロバイダーに対するアクセスを制御することができる。スクリプト・オブジェクト・モデルＡＰＩは、拡張機能からのデータ要求にサービスするエンドポイントであり得る。その実装は、前述のようにサービスプロバイダーおよびプロキシーを介するリモートのそれらの要求であり得る。イベント層は、マーシャリングの重複なしにイベントペイロードを有効にするホスト統合マネージャーから送られたフレームワークイベントの展開をする。ウェブオブジェクト制御（複数可）は、各拡張機能のインスタンスであり、ドキュメント（およびアプリケーション）と相互作用する機構を開発者に提供するためのデータおよびイベント層に結合されたブラウザー環境である。
【００４６】
[0055]図１から６における例示的なシナリオ、アーキテクチャ、および方式は、特定のコンポーネント、データタイプ、および構成によって示される。実施形態は、これらの例示的な構成によるシステムに限定されない。ドキュメント通信ランタイムインターフェースは、アプリケーションおよびユーザーインターフェースにおいてより少ないまたはさらなるコンポーネントを利用する構成で実装されてもよい。さらに、図１から６に示された例示的な方式およびコンポーネントならびにそれらの下位コンポーネントは、本明細書に説明される原理を使用して他の値を用いて同様に実装され得る。
【００４７】
[0056]図７は、実施形態によるシステムが実装され得るネットワーク化環境である。スクリプト・オブジェクト・モデル要求を、プロセス境界を横切ってドキュメントホストに送信し、ドキュメントホストのパフォーマンスに対する影響を最小限にしながら、標準に準拠したブラウザーにおいて開発者コードに対する応答を管理するための安全、スケーラブル、かつ非同期なブラウザーベースの機構を提供する、クロス・フレーム・ブラウザーベースのプロトコルおよびホスト可能ランタイムＡＰＩを利用するシステムが、ホストされたサービスのような１つもしくは複数のサーバー７１４または単一サーバー（たとえば、ウェブサーバー）７１６を介して実装され得る。そのようなサービスは、スマートフォン７１３、ラップトップコンピューター７１２、またはデスクトップコンピューター７１１（「クライアントデバイス」）などの個々のコンピューティングデバイス上のクライアントインターフェースと、ネットワーク（複数可）７１０を介して通信することができる。
【００４８】
[0057]前述のように、サービスは、生産性アプリケーションなどのブラウザーベースのアプリケーションのためのフレームを横切る安全かつスケーラブルなドキュメント中心通信を可能にすることができる。クライアントデバイス７１１〜７１３は、前述のように、リモートサーバー（複数可）（たとえば、サーバー７１４のうちの１つ）上で実行されるアプリケーションに対するアクセスを可能にすることができる。サーバー（複数可）は、直接的にまたはデータベースサーバー７１８を介して、関連データをデータストア（複数可）７１９から取り出しまたはデータストア（複数可）７１９に記憶することができる。
【００４９】
[0058]ネットワーク（複数可）７１０は、サーバー、クライアント、インターネット・サービスプロバイダー、および通信媒体の任意のトポロジーを含むことができる。実施形態によるシステムは、静的または動的なトポロジーを有することができる。ネットワーク（複数可）７１０は、企業ネットワークなどの安全なネットワーク、無線オープンネットワークなどの保護されていないネットワーク、またはインターネットを含むことができる。ネットワーク（複数可）７１０は、公衆交換電話網（ＰＳＴＮ）またはセルラーネットワークなど他のネットワークを介した通信を調整することもできる。さらに、ネットワーク（複数可）７１０は、ブルートゥースまたは同様のネットワークなどの短距離無線ネットワークを含むことができる。ネットワーク（複数可）７１０は、本明細書に説明されるノード間の通信を提供する。限定ではなく例として、ネットワーク（複数可）７１０は、音響、ＲＦ、赤外線、および他の無線媒体などの無線媒体を含むことができる。１つまたは複数のサーバー上で実行されるサービスは、クラウドベースのサービスとすることもできる。
【００５０】
[0059]多くの他の構成のコンピューティングデバイス、アプリケーション、データソース、およびデータ配信システムが、ドキュメント通信ランタイムインターフェースを管理するために利用され得る。さらに、図７で論じられたネットワーク化環境は単に例示のためのものである。実施形態は、例示したアプリケーション、モジュール、またはプロセスに限定されない。
【００５１】
[0060]図８および関連する説明は、実施形態が実装され得る適切なコンピューティング環境の簡潔で一般的な説明を提供することを意図する。図８を参照すると、コンピューティングデバイス８００など、実施形態によるアプリケーションのための例示的なコンピューティングオペレーティング環境のブロック図が示される。基本構成では、コンピューティングデバイス８００は、少なくとも１つの処理ユニット８０２およびシステムメモリー８０４を含むことができる。コンピューティングデバイス８００は、プログラムを実行する際に協働する複数の処理ユニットを含むこともできる。コンピューティングデバイスの厳密な構成およびタイプに応じて、システムメモリー８０４は、（ＲＡＭのような）揮発性、（ＲＯＭ、フラッシュメモリーなどのような）不揮発性、またはその２つの何らかの組み合わせとすることができる。システムメモリー８０４は、典型的には、ワシントン州レドモンドのＭＩＣＲＯＳＯＦＴ  ＣＯＲＰＯＲＡＴＩＯＮによるＷＩＮＤＯＷＳ（登録商標）オペレーティングシステムなど、プラットフォームの動作を制御するのに適したオペレーティングシステム８０５を含む。システムメモリー８０４は、プログラムモジュール８０６、ブラウザーアプリケーション８２２、およびユーザーインターフェース・モジュール８２４など、１つまたは複数のソフトウェアアプリケーションを含むこともできる。
【００５２】
[0061]ブラウザーアプリケーション８２２は、ワードプロセッシング、スプレッドシート、プレゼンテーション、通信、および同様のサービスなど複数のサービスを有する生産性サービスのようなホストされたサービスに対するアクセスを提供することができる。ユーザーインターフェースコンポーネント８２４は、異なる複数のソースからユーザーへのＨＴＭＬコードのレンダリングを可能にすることができる。ドキュメントをレンダリングしドキュメントに関係するサービスを提供する際、クロス・ドメイン・メッセージングのためにフレーム間で複数の安全なチャネルが使用され得る。この基本構成は、図８では破線８０８内のコンポーネントによって示される。
【００５３】
[0062]コンピューティングデバイス８００は、さらなる特徴または機能性を有することができる。たとえば、コンピューティングデバイス８００はまた、たとえば、磁気ディスク、光ディスク、またはテープなどの追加のデータ記憶装置（取り外し可能および／または取り外し不能）を含むこともできる。そのような追加の記憶装置は、図８では、取り外し可能ストレージ８０９および取り外し不能ストレージ８１０で示される。コンピューター可読記憶媒体は、コンピューター可読命令、データ構造、プログラムモジュール、または他のデータなどの情報を記憶するための任意の方法または技術で実装される、揮発性および不揮発性の取り外し可能および取り外し不能な媒体を含むことができる。コンピューター可読記憶媒体は、非一時的コンピューター可読メモリー装置である。システムメモリー８０４、取り外し可能ストレージ８０９、および取り外し不能ストレージ８１０は、すべてコンピューター可読記憶媒体の例である。コンピューター可読記憶媒体は、ＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ、フラッシュメモリー、または他のメモリー技術、ＣＤ−ＲＯＭ、デジタル多用途ディスク（ＤＶＤ）、または他の光ストレージ、磁気カセット、磁気テープ、磁気ディスクストレージ、または他の磁気記憶装置、あるいは所望の情報を記憶するために使用可能でコンピューティングデバイス８００によってアクセス可能な任意の他の媒体を含むが、これらには限定されない。そのようなコンピューター可読記憶媒体のいずれも、コンピューティングデバイス８００の一部とすることができる。コンピューティングデバイス８００はまた、キーボード、マウス、ペン、音声入力装置、タッチ入力装置、および同等の入力装置などの入力装置（複数可）８１２を有することもできる。また、ディスプレイ、スピーカ、プリンタ、および他のタイプの出力装置などの出力装置（複数可）８１４を含むこともできる。これらの装置は当技術分野で周知であり、ここで詳細に論じる必要はない。
【００５４】
[0063]コンピューティングデバイス８００はまた、デバイスが、分散コンピューティング環境の無線ネットワーク、衛星リンク、セルラーリンク、および同等の機構などを介して、他のデバイス８１８と通信することを可能にする通信接続８１６を含むこともできる。他のデバイス８１８は、通信アプリケーションを実行するコンピューター・デバイス（複数可）、ストレージサーバー、および同等のデバイスを含むことができる。通信接続（複数可）８１６は、通信媒体の一例である。通信媒体は、コンピューター可読命令、データ構造、プログラムモジュール、または搬送波もしくは他の移送機構のような変調データ信号における他のデータを媒体に含むことができ、任意の情報送達媒体を含む。「変調データ信号」という用語は、情報を信号に符号化するように設定または変更されたその特性の１つまたは複数を有する信号を意味する。限定ではなく例として、通信媒体は、有線ネットワークまたは直接配線接続などの有線媒体、ならびに音響、ＲＦ、赤外線および他の無線媒体などの無線媒体を含む。
【００５５】
[0064]例示的な実施形態は複数の方法も含む。これらの方法は、本明細書に説明された構造を含む任意の数の手段で実装され得る。１つのそのような手段は、本明細書で説明されたタイプの装置のマシン動作による。
【００５６】
[0065]別の任意の手段は、方法の個々の動作の１つまたは複数が、動作の一部を実行する１人または複数の人間オペレータと協力して実行されるものである。これらの人間オペレータは、互いに同じ場所である必要はなく、各々がプログラムの一部を実行するマシンに伴えばよい。
【００５７】
[0066]実施形態によるランタイムインターフェースを介したドキュメント通信を促進するプロセスの論理フロー図である。プロセス９００は、いくつかの例ではホストされたサービスによって実装され得る。
【００５８】
[0067]プロセス９００は、動作９１０で開始し、動作９１０では、スクリプト・オブジェクト・モデルをサポートするコールを送信するためのドキュメント中心メッセージングが促進される。メッセージングは、ブラウザー実装のためにクロスフレームとし、リッチクライアント実装のためにＩＤｉｓｐａｔｃｈインターフェースを介することができる。動作９２０では、送信エンティティがコールを送信するのを許可されるかどうかを受信エンティティが確認する、クロス・フレーム・メッセージングを介したポリシー確認機構によって、かつ／または、サンドボックスプロセスを利用して、ドキュメントをホストするアプリケーションと拡張コンテンツを提供するサードパーティー・ウェブサービスとの間の拡張コンテンツ・トラフィックを管理することによって、セキュリティーが提供され得る。
【００５９】
[0068]動作９３０では、要求をキューに入れフォアグラウンド・ユーザーインターフェース・スレッドと相互作用することによって、ランタイム環境との相互作用を管理するためにリッチクライアント・アプリケーションにおいて、バックグラウンド・スレッドが提供され得る。動作９４０では、ランタイム環境をホストするｉｆｒａｍｅとドキュメントをホストするｉｆｒａｍｅまたはページとの間で要求を安全に交換するクロス・ドキュメント・メッセージング・ベースのＡＰＩが、ブラウザーベースのアプリケーションにおいて提供され得る。
【００６０】
[0069]いくつかの実施形態は、通信モジュール、メモリー、およびプロセッサーを含むコンピューティングデバイスで実装され、プロセッサーは、メモリーに記憶された命令に関連して上記または同等の方法を実行することができる。他の実施形態は、上記または同様の方法を実行するための命令を記憶したコンピューター可読記憶媒体として実装され得る。いくつかの実施形態では、双方向エラー処理が機構全体にわたって有効にされ得る。たとえば、ホストアプリケーションが、（アクセス許可問題などの）エラーをランタイムインスタンスに信号で返すことができ、ランタイムインスタンスは、（リソース消耗メッセージなどの）エラーをホストアプリケーションに送ることができる。
【００６１】
[0070]プロセス９００に含まれる動作は例示のためのものである。ドキュメント通信ランタイムインターフェースは、より少ないまたはさらなるステップを有する同様のプロセスによって、また本明細書で説明した原理を使用する異なる順序の動作で実装され得る。
【００６２】
[0071]上述の仕様、例、およびデータは、実施形態の構成の製造および使用の完全な説明を与える。本主題は構造的特徴および／または方法的動作に特有の言葉で説明されたが、添付の特許請求の範囲で定義された主題が必ずしも上述の特定の特徴または動作に限定されないことを理解されたい。むしろ、上述の特定の特徴および動作は、特許請求の範囲および実施形態を実装するための例示的な形態として開示される。
【図１】
2015505115.tif 000003
【図２】
2015505115.tif 000004
【図３】
2015505115.tif 000005
【図４】
2015505115.tif 000006
【図５】
2015505115.tif 000007
【図６】
2015505115.tif 000008
【図７】
2015505115.tif 000009
【図８】
2015505115.tif 000010
【図９】
2015505115.tif 000011
【国際調査報告】
2015505115.tif 000012
2015505115.tif 000013