(57)【特許請求の範囲】
【請求項１】
アプリケーションを提供するように実行可能な命令を含む１つ以上のコンピューター読み取り可能な記憶媒体であって、前記アプリケーションは、
前記アプリケーションに機能を追加するためにインターネットを介して受信された拡張コードを含む１つ以上の分離処理と、
前記１つ以上の分離処理の実行を管理するマネージャー処理であって、それぞれの前記分離処理における実行された拡張コードによる望ましくない動作の実行が前記マネージャー処理から分離され前記マネージャー処理によって制御される、マネージャー処理と
を含む１つ以上のコンピューター読み取り可能な記憶媒体。
【請求項２】
前記アプリケーションはインターネットを介してアクセス可能なコンテンツを通じてナビゲートするためのブラウザー・アプリケーションである請求項１に記載の１つ以上のコンピューター読み取り可能な記憶媒体。
【請求項３】
前記マネージャー処理は、ナビゲーションを実行するために選択可能な１つ以上の制御を提供するフレーム処理として構成され、
前記１つ以上の制御は、戻るボタン、進むボタン及びアドレス・バーを含む請求項２に記載の１つ以上のコンピューター読み取り可能な記憶媒体。
【請求項４】
前記拡張コードは、プラグ・イン、第三者プラグ・イン又はアドオンモジュールである請求項１に記載の１つ以上のコンピューター読み取り可能な記憶媒体。
【請求項５】
それぞれの前記分離処理が機能しない場合、前記マネージャー処理による前記１つ以上の分離処理の実行の管理は、それぞれの前記分離処理において実行された拡張コード及びその現在の実行されるコンテキストの回復を含む請求項１に記載の１つ以上のコンピューター読み取り可能な記憶媒体。
【請求項６】
前記マネージャー処理による前記１つ以上の分離処理の実行の管理は、それぞれの前記分離処理における前記拡張コードの実行が反応するかどうかを判断することを含む請求項１に記載の１つ以上のコンピューター読み取り可能な記憶媒体。
【請求項７】
前記マネージャー処理による前記１つ以上の分離処理の実行の管理は、それぞれの前記分離処理における拡張コードが反応しない場合にそれぞれの前記分離処理を終了することを含む請求項６に記載の１つ以上のコンピューター読み取り可能な記憶媒体。
【請求項８】
前記マネージャー処理の実行は、前記マネージャー処理が前記１つ以上の分離処理に対して提供されない資源へのアクセスを備えるよう、同一性及び前記１つ以上の分離処理とは異なる信頼のレベルを備えている請求項１に記載の１つ以上のコンピューター読み取り可能な記憶媒体。
【請求項９】
前記マネージャー処理と前記１つ以上の分離処理との間の通信は、１つ以上の非同期メッセージの使用を含む請求項１に記載の１つ以上のコンピューター読み取り可能な記憶媒体。
【請求項１０】
前記１つ以上の分離処理は第１の前記分離処理及び第２の前記分離処理を含み、
前記第１及び第２の分離処理間の通信は、１つ以上の非同期メッセージの使用を含む請求項１に記載の１つ以上のコンピューター読み取り可能な記憶媒体。
【請求項１１】
クライアント・システムによる実行に応答して、前記クライアント・システムにブラウザー・アプリケーションを提供させる命令が格納された１つ以上のコンピューター読み取り可能な記憶媒体であって、前記ブラウザー・アプリケーションは、
ネットワークを介して受信されたコンテンツを含むようにユーザー・インターフェースにおけるそれぞれのタブに関連付けられる１つ以上のタブ処理をサポートし、その結果、前記タブ処理の各々は、前記コンテンツの信用度の判断に基づいて、それぞれの前記コンテンツを、互いに分離し、及び前記クライアント・システムの他の部分から分離し、前記ブラウザー・アプリケーションはさらに、
前記１つ以上のタブ処理の実行を管理するフレーム処理をサポートし、前記少なくとも１つの前記タブ処理は、前記フレーム処理が少なくとも１つの前記タブ処理に含まれるコンテンツにとって利用可能でない１つ以上の資源にアクセスするように、前記フレーム処理より低い信頼レベルを割り当てられる、１つ以上のコンピューター読み取り可能な記憶媒体。
【請求項１２】
信頼性の判断は、前記コンテンツの意図又は信頼性に少なくとも部分的に基づく請求項１１に記載の１つ以上のコンピューター読み取り可能な記憶媒体。
【請求項１３】
別の前記タブ処理は、少なくとも１つの前記タブ処理と異なる信頼レベルを割り当てられ、その結果、前記他のタブ処理のコンテンツは、少なくとも１つの前記タブ処理に含まれるコンテンツにとって利用可能でない前記１つ以上の資源にアクセスする請求項１１に記載の１つ以上のコンピューター読み取り可能な記憶媒体。
【請求項１４】
別の前記タブ処理は、少なくとも１つの前記タブ処理とは異なる信頼レベルを割り当てられ、その結果、両方の前記タブ処理のコンテンツは、少なくとも１つの前記他のタブ処理に含まれるコンテンツにとって利用可能な１つ以上の資源に対するアクセスを有さない請求項１１に記載の１つ以上のコンピューター読み取り可能な記憶媒体。
【請求項１５】
前記コンテンツは、ブラウザー・アプリケーションの機能を拡張するように実行可能な第三者からの拡張コードを含む請求項１１に記載の１つ以上のコンピューター読み取り可能な記憶媒体。
【請求項１６】
それぞれの前記タブ処理における前記拡張コードの不具合が前記フレーム処理の不具合を引き起こさないように、それぞれの前記タブ処理における前記拡張コードの実行は前記フレーム処理から分離される請求項１５に記載の１つ以上のコンピューター読み取り可能な記憶媒体。
【請求項１７】
反応しない場合に１つ以上の処理を終了するステップであって、前記１つ以上の処理が反応しない場合に他の処理が反応する状態のままであるよう、前記１つ以上の処理の実行は前記他の処理から分離される、１つ以上の処理を終了するステップと、
前記終了された１つ以上の処理においてコンテンツを回復するステップと、
前記１つ以上の処理の同一性及びアクセス制御を制御し制限するステップと
により、前記１つ以上の処理を含む単一のアプリケーションの別の処理によって、ネットワークを介して受信されたコンテンツを含む１つ以上の処理の実行をプロセッサーが管理するステップを含む方法。
【請求項１８】
前記他の処理からの前記１つ以上の処理の実行の分離は、異なる前記処理における実行を通じて行われる請求項１７に記載の方法。
【請求項１９】
前記他の処理からの前記１つ以上の処理の実行の分離は、前記他の処理の１つ以上の非同期メッセージに対する前記１つ以上の処理の応答の失敗が前記他の処理の失敗を引き起こさないよう、前記１つ以上の非同期メッセージの使用を通じて実行される請求項１７に記載の方法。
【請求項２０】
前記コンテンツは拡張コードを含む請求項１７に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、アプリケーションにおける処理によるコンテンツの分離に関する。
【背景技術】
【０００２】
アプリケーションは多種多様のコンテンツを消費するように構成され得る。例えば、ブラウザー・アプリケーションは、ウェブ・ページ、音楽、オンライン・ビデオなどのような、ネットワークを介して利用可能な多種多様の異なるコンテンツにナビゲートするように構成されてもよい。このインターネット・コンテンツはしばしば信頼できず及び／又は信頼性が低く、したがって、その実行は資源（リソース）の使用及びアクセス制御の両方において抑制されるべきである。いくつかの例では、このコンテンツは、ブラウザー・アプリケーション自体の機能を拡張するためのものである拡張コードとして構成されてもよく、それは「プラグ・イン」、「第三者（third-party）プラグ・イン」、「アドオン」などと呼ばれることがある。しかし、この拡張コードは、障害と言えるほどに、ブラウザー・アプリケーション自体の実行に対して悪影響を有し得る。拡張コードはまた、生じることをユーザーが望まない動作を実行することを試みることもある。
【発明の概要】
【発明が解決しようとする課題】
【０００３】
ブラウザー・アプリケーションは、例えば、ブラウザー・アプリケーションの機能を拡張するために第三者プラグ・インを受け取ってもよい。しかし、それは「第三者」のプラグ・インであるので、ブラウザー・アプリケーションのプログラマー（ライター、writer）の標準を満たさない品質標準によって書かれているかもしれない。例えば、ブラウザー・アプリケーションと共に実行されるとき、プラグ・インは機能しないかもしれない。プラグ・インはブラウザー・アプリケーションと資源を共有し得る拡張コードであるので、プラグ・インの不具合は、クラッシュ、「ハング」など、ブラウザー・アプリケーションの不具合を引き起こし得る。
【課題を解決するための手段】
【０００４】
アプリケーションにおける処理（プロセス、processes）によるコンテンツの分離（isolation）が記載される。実施例において、１つ以上の処理を含む単一のアプリケーションの別の処理によってネットワークを介して受信されるコンテンツを含む当該１つ以上の処理の実行が管理される。当該管理は、反応（応答）しないか、失敗したか、そうでなければ適切に実行しない場合に、１つ以上の処理を終了すること又は再開することを含む。１つ以上の処理が反応しない場合に他の処理が反応する状態のままであるように、１つ以上の処理の実行は当該他の処理から分離される。その後、終了した１つ以上の処理におけるコンテンツは回復される。したがって、１つ以上の処理の実行は、それを実行するインターネット・コンテンツ・ソース及びユーザーの方針に基づいて、そのクライアント側の同一性（identity）及びアクセス制御が指定され制限され得るように、他の処理から分離されてもよい。その後、インターネットからのコンテンツの実行は、インターネット・ソースに特有でありローカル・クライアント・ユーザーの同一性に基づいて適用されるインターネット・ソースを超えるクライアント・オペレーティング・システム同一性及び／又はアクセス制御制限によって制御され得る。
【０００５】
別の実施例において、１つ以上のコンピューター読み取り可能な媒体は、１つ以上のタブ処理及びフレーム処理を有するブラウザー・アプリケーションを提供するために実行可能な命令を含む。１つ以上のタブ処理はネットワークを介して受信されたコンテンツを含み、その結果、各タブ処理はそれぞれのコンテンツを互いから分離する。フレーム処理は１つ以上のタブ処理の実行を管理する。タブ処理の少なくとも１つは、フレーム処理が少なくとも１つのタブ処理に含まれるコンテンツにとって利用可能でない１つ以上の資源へのアクセスを有するように、フレーム処理より低い信頼レベルを割り当てられる。
【０００６】
この概要は詳細な説明においてさらに以下に述べられる概念の選択を単純化された形式で紹介するために提供される。この概要は、特許請求された主題の主な特徴又は不可欠な特徴を特定するようには意図されず、特許請求された主題の範囲の決定に助けとして使用されるようにも意図されない。
【０００７】
詳細な説明は添付の図面に関して記載される。図面において、参照番号のもっとも左端の数字はその参照番号が最初に現われる図を識別する。詳細な説明と図面における異なる例での同じ参照番号の使用は、類似の又は同一の項目を示してもよい。
【図面の簡単な説明】
【０００８】
【図１】分離技術を使用するように動作可能な例示的な実施例における環境の図である。
【図２】アプリケーション・インフラストラクチャーを形成するために使用され得るコンポーネントを示すアーキテクチャーの図である。
【図３】ブラウザー・アプリケーションの層へ組織化されるように例示的な分離インフラストラクチャーを描く図である。
【図４】図２及び図３のコンポーネントにより実施されるようなフレーム処理及びタブ処理の例示的な実施例の図である。
【図５】コンテンツを分離する１つ以上の処理の実行が別の処理によって管理される例示的な実施例における手続を描くフロー図である。
【発明を実施するための形態】
【０００９】
概要
ネットワークを介して得られたコンテンツを実行する様々な異なるアプリケーションは、インターネットから供給されるコンテンツを動的にロードし実行することにより拡張されてもよい。このコンテンツは「ホストされた」コード及び「在来の（ネイティブ、native）」コードの両方を含み得るが、各場合において、それはホストマシンに対する指示の実行を引き起こす。このコンテンツは、ＨＴＭＬなどの「インターネットサイトに特有の」コードだけでなく、様々なもしくはすべてのインターネットサイト・コンテンツ又はローカル・マシン資源において実行されるよう意図される「プラグ・イン」、「アドオン」、「ドライバー」などを含み得る「拡張コード」をも含む。
【００１０】
拡張コードは、標準のインターネット・アクセス制御機構又は信頼性制御機構なしに実行する「ネイティブ・コード（native code）」としてしばしば提示される。それは品質と信頼性の程度が変化するものである。さらに、拡張コードは、資源（例えば、メモリー、ハンドル、処理空間など）を、拡張コードをホストするアプリケーションと共有してもよい。したがって、拡張コードの不具合はまた、アプリケーションの不具合を引き起こすことがあり（例えば、アプリケーションを「クラッシュ」させたり、「ハング」させたりする）、資源の非効率的な消費を引き起したり、セキュリティー違反に帰着したりすることがある。
【００１１】
アプリケーションにおける処理によってネットワークを介して受信されるコンテンツ（例えば、インターネット・コンテンツ）の分離が記載される。実施例において、処理はインターネット・コンテンツの実行を分離するために使用される。例えば、インターネット・ブラウザー・アプリケーションは、ウェブ・ページを通じてナビゲートするための「戻る」ボタン及び「進む」ボタン、入力としてユニフォーム・リソース・ロケーター（ＵＲＬ）アドレスを受け入れるアドレス・バーなどを含むブラウザー自体の機能の形式及び制御などの、ブラウザーの基礎機能を管理することに関与するフレーム処理（したがって、さらに以下の説明において「マネージャー処理」と呼ばれる）を含むように構成され得る。
【００１２】
ブラウザー・アプリケーションはまた、ブラウジングによってブラウザー・アプリケーション自体の基本的な機能から受け取られるコンテンツを分離するために使用される処理（したがって、さらに以下の説明において「分離処理」と呼ばれる）をサポートしてもよい。これらの処理は、例えば、各々が別個の処理において実行されるブラウザー・アプリケーション内のタブとして表示されてもよい。フレーム処理はタブ処理の実行を管理するために実行されてもよく、分離のために、タブ処理の１つ以上が機能しなくなる（例えば、反応しなくなる）場合、フレーム処理は、意図されるように実行するほか、失敗しなかった他のタブ処理とともに実行することを続けてもよい。さらに、フレーム処理は、反応がないタブ処理を終了して当該タブ処理において実行されたコンテンツをその後に回復するなどのために、１つ以上の修正処置（corrective actions）をとってもよい。様々な他の例もまた考慮され、それらについてのさらなる議論が以下の図面に関してなされる。
【００１３】
別の実施例において、コンテンツのアクセス制御及び同一性を抑制するために、分離技術は「信頼判断（trust judgment）」と共に使用され得る。以前に説明されたように、拡張コードを含むインターネットから供給されたコンテンツは、ユーザー又はローカル・クライアントの利益にならない目標を達成する目的で意図をもって書かれることもある。したがって、コンテンツに対する信頼の判断は、例えば、コンテンツのソースについての知識を使用して、又は、それぞれのコンテンツに対して「同一性及びアクセス制御」のレベルを割り当てるために使用されるコンテンツを識別及び／又は受信するために使用される手段を使用してなされてもよい。信頼判断は、拡張コードを実行するコンピューターの資源へのアクセスの基礎として使用されてもよい。しかし、従来の技術は、「アプリケーションごとに」実行された。例えば、異なる信頼性を有するウェブ・コンテンツとインタラクトするために、複数のブラウザー・アプリケーションが実行され、それはクライアント・オペレーティング・システム・アクセス制御及び同一性を適用せず、資源が非効率であり、有用性の見地からユーザーにとっていらいらさせられ混乱させられるものであり得た。信頼についての一層の議論は以下の図に関してなされる。
【００１４】
以下の説明では、分離技術を使用するように動作可能な例示的な環境がまず説明される。その後、例示的な環境のほか、他の環境においても使用され得る例示的な手続が説明される。いくつかの例では、ブラウザー・アプリケーションは分離技術を使用するものとして記載されるが、インターネット・コンテンツを実行する様々な他のアプリケーションはまた、気象情報、ヘッドライン、オンライン・ビデオなどの追加の機能を提供するために、コンピューターのデスクトップ上で第三者拡張コードを（例えば、サイドバー中で）実行する「ガジェット（gadgets）」アプリケーションなど、これらの技術を使用してもよい。
例示的な環境
図１は、分離技術を使用するように動作可能な例示的な実施例における環境１００の図である。図示された環境１００は、ネットワーク１０６を介して互いに通信で結合される複数のコンテンツ・プロバイダー１０２（１）−１０２（Ｍ）及びコンピューター１０４を含む。コンピューター１０４は様々な方法で構成されてもよい。例えば、コンピューター１０４は、デスクトップ・コンピューター、移動局、娯楽電化製品、ディスプレイ装置に通信で接続されたセットトップ・ボックス、無線電話、ゲーム機などのように、ネットワーク１０６を介して通信するように構成されてもよい。
【００１５】
ネットワーク１０６はインターネットとして示されるが、ネットワークは多種多様の構成を仮定してもよい。例えば、ネットワーク１０６は、広域ネットワーク（ＷＡＮ）、ローカル・エリア・ネットワーク（ＬＡＮ）、ワイヤレス・ネットワーク、公衆電話網、イントラネットなどを含んでもよい。さらに、単一のネットワーク１０６が示されるが、ネットワーク１０６は複数のネットワークを含むように構成されてもよい。
【００１６】
複数のコンテンツ・プロバイダー１０２（１）―１０２（Ｍ）の各々は、ネットワーク１０６を介してコンピューター１０４へそれぞれのコンテンツ１１０（ｃ）、１１２（ｋ）（「ｃ」及び「ｋ」はそれぞれ１と「Ｃ」及び「Ｋ」との間の整数であってもよい）を提供するための機能を表すそれぞれのコンテンツ・マネージャー・モジュール１０８（ｌ）−１０８（Ｍ）を含むものとして示される。コンテンツは様々な方法で構成されてもよい。例えば、コンテンツ１１２（ｋ）は、ウェブ・ページ１１４、スクリプト１１６、拡張コード１１８などとして構成されてもよい。
【００１７】
コンピューター１０４はプロセッサー１２０及びメモリー１２２を含むものとして示される。プロセッサーは、それが形成される材料又はそれに使用される処理機構によって限定されない。例えば、プロセッサーは、半導体及び／又はトランジスター（例えば、電子集積回路（ＩＣ））で構成されてもよい。そのような状況では、プロセッサーにより実行可能な命令は電子的に実行可能な命令であってもよい。代替的に、プロセッサーの又はプロセッサーのための、及びしたがって計算装置の又は計算装置のための機構は、量子計算、光学コンピューティング、機械的コンピューティング（例えば、ナノテクノロジーを使用するもの）などを含んでもよいがこれらに限定されない。さらに、単一のメモリー１２２が示されるが、ランダム・アクセス・メモリー（ＲＡＭ）、ハードディスクメモリー、取り外し可能な媒体メモリー及び他の種類のコンピューター読み取り可能な媒体などの、多種多様の種類のメモリー及びそれらの組み合わせが使用され得る。
【００１８】
コンピューターはまた、メモリー１２２に格納できるアプリケーション１２４をプロセッサー１２０上で実行するものとして示される。アプリケーション１２４は、ブラウザー・アプリケーション（そのさらなる説明は図３に関してなされる）、生産性（productivity）アプリケーションなどの多種多様の機能を提供するように構成されてもよい。
【００１９】
例として、アプリケーション１２４は、マネージャー処理及び分離処理の使用を通じてコンポーネントを互いに分離するために、オペレーティング・システム・プリミティブ（primitives）（例えば、処理）を使用し得る、コンポーネント・モデル及び分離インフラストラクチャーに従ってもよい。分離インフラストラクチャーなどの例は、マネージャー処理の例であるフレーム処理１２６及び分離処理の例である複数のタブ処理１２８（１）−１２８（Ｔ）を含むアプリケーション１２４について示される。フレーム処理１２６は、コンピューター１０４の資源（例えば、プロセッサー１２０及び／又はメモリー１２２）の「どこで」タブ処理１２８（１）―１２８（Ｔ）が実行及び／又は保持されるべきかを決定し、タブ処理１２８（１）―１２８（Ｔ）の寿命及び応答性を監視し、タブ処理１２８（１）−１２８（Ｔ）を終了し、それぞれのタブ処理１２８（１）−１２８（Ｔ）が機能しない場合にそれぞれのコンテンツ１１２（Ｉ）−１１２（Ｔ）を回復するためなどのように、タブ処理１２８（１）−１２８（Ｔ）を管理するための機能を代表する。したがって、それぞれのタブ処理１２８（１）―１２８（Ｔ）におけるコンテンツ１１２（１）―１１２（Ｔ）の実行は、フレーム処理１２６の実行と干渉せず、それによって、タブ処理１２８（１）―１２８（Ｔ）及び含まれるコンテンツ１１２（Ｉ）−１１２（Ｔ）の１つ以上が反応しない場合でさえ、フレーム処理１２６の応答性を維持する。これについてのさらなる議論は図４に関して最初になされる。追加の実施例において、処理の分離によって達成されたこの分離は、さらに、１つのタブ処理１２８（１）におけるコンテンツ１１２（１）が単一のアプリケーション（例えば、アプリケーション１２４）で別のタブ処理１２８（Ｔ）におけるコンテンツ１１２（Ｔ）と干渉しないようにする。
【００２０】
分離インフラストラクチャーなどの分離技術はまた、様々な他の機能をサポートしてもよい。例えば、それぞれのタブ処理１２８（１）―１２８（Ｔ）におけるコンテンツ１１２（Ｉ）−１１２（Ｔ）の分離は、単一のアプリケーションによる異なる「信頼」レベルの使用を可能にし得る。タブ処理１２８（１）において実行されるコンテンツ１１２（１）は、例えば、フレーム処理１２６に割り当てられる信頼レベルより低い信頼レベルを割り当てられてもよい。したがって、フレーム処理１２６は、タブ処理１２８（１）におけるコンテンツ１１２（１）によってアクセスされることが許されない追加の資源（例えば、オペレーティング・システムなどのソフトウェア及び／又は共有メモリーなどのハードウェア）にアクセスすることを許可されてもよい。同様に、タブ処理１２８（１）におけるコンテンツ１１２（１）は、タブ処理１２８（Ｔ）におけるコンテンツ１１２（Ｔ）とは異なる信頼レベルを割り当てられ、同じアプリケーション１２４内の異なる資源へアクセスしてもよい。信頼レベルについてのさらなる議論は図５に関して開始される以下の説明においてなされる。
【００２１】
単一のアプリケーションによる処理の使用は様々な他の機能をサポートしてもよい。例えば、当該処理は、タブ処理１２８（１）―１２８（Ｔ）の１つ以上が３２ビットで動作する一方でフレーム処理１２６が６４ビットで動作したり、タブ処理１２８（１）―１２８（Ｔ）が（互いに）異なる帯域幅で動作したりしてもよいように、異なる量の「ビット」を扱うように構成されてもよい。様々な他の例もまた考慮され、これについてのさらなる議論は以下の図に関してなされる。
【００２２】
一般に、本明細書に記載された機能のうちのいずれも、ソフトウェア、ファームウェア（例えば、固定論理回路）、手動処理又はこれらの実施の組み合わせを使用して実施することができる。本明細書において使用される用語「モジュール」、「機能」及び「論理」は、一般に、ソフトウェア、ファームウェア又はソフトウェアとファームウェアの組み合わせを表す。ソフトウェアによる実施の場合には、モジュール、機能又は論理は、プロセッサー（例えば、ＣＰＵ）上で実行されるときに指定されたタスクを行うプログラム・コードを表す。プログラム・コードは１つ以上のコンピューター読み取り可能なメモリー装置（例えば、図１のメモリー１２２）に格納することができる。以下に述べられる分離技術の特徴はプラットフォームに依存しないことであり、これは、様々なプロセッサーを有する様々な商用コンピューティング・プラットフォーム上で当該技術が実施できることを意味する。
【００２３】
図２は、アプリケーション・インフラストラクチャーを形成するために使用され得るコンポーネント２０２及び２０４を示すアーキテクチャー２００を図示する。アーキテクチャー２００は、アプリケーション機能の基板（substrate）としての役割を果たす分離インフラストラクチャー（ＩＳＯ）を提供してもよい。ＩＳＯは、アプリケーション・コードから、再使用され得る個別のサブシステムへと分割される。例えば、それらは、異なるアプリケーション機能によって複数回使用されてもよく、また、ＩＳＯの正確さ、セキュリティー及び信頼性を直接テストできるようにテストをするために使用されてもよい。
【００２４】
例えば、ＩＳＯは非同期通信を可能にするように設計されてもよい。コンポーネント・オブジェクト・モデル（ＣＯＭ）は、例えば、全二重機構であり、したがって、半二重通信をサポートしない。別の例において、ＩＳＯは、アーティファクト（artifacts）について異なるレベルの信頼をサポートし、アーティファクトの信頼レベルについての知識を保証し、その信頼レベルを検出するための能力を提供してもよい。さらなる例において、アーティファクトの位置は、スレッドの工程内（インプロセス）（in-process-in-thread）、工程／異なるスレッド内（in-process/different thread）、異なる処理、異なる強制インテグリティ・レベル／部分（コンパートメント）などの間で変化し得る。さらに別の例において、ＩＳＯは、ＩＳＯのアプリケーション・プログラム・インターフェース（ＡＰＩ）の「下の」実施の変化及び拡張を可能にしてもよい。
【００２５】
ＩＳＯのアーキテクチャー２００の基本単位は「コンポーネント」と見なすことができ、その例は、図２のアーキテクチャー２００のコンポーネント２０２及びコンポーネント２０４として示される。コンポーネントは位置及びメッセージの単位（ユニット）と見なされてもよい。図２の説明において、コンポーネント２０２及び２０４は、ＷＩＮＤＯＷＳ（登録商標）（ＷＩＮＤＯＷＳはワシントン州レドモンドのマイクロソフト株式会社の商標である）メッセージループ２０６及び２０８を有する。コンポーネント２０２及び２０４は、それぞれのスレッド２１０及び２１２「上で」及びそれぞれの処理２１４及び２１６（例えば、ＷＩＮＤＯＷＳ処理）「において」存在しているものとしてさらに示される。別個に示されているが、それぞれのスレッド２１０及び２１２はそれぞれの処理２１４及び２１６「内に」存在してもよい。
【００２６】
様々な異なる種類の通信がコンポーネント２０２、２０４の間でサポートされてもよい。例えば、コンポーネントはメッセージループを介して非同期メッセージ２１８を使用して通信してもよい。別の例において、区画間（cross-apartment）の同期ＣＯＭ（コンポーネント・オブジェクト・モデル）呼（呼び出し）は、ＣＯＭオブジェクト２２０を使用して実施されてもよい。実施例において、ＣＯＭオブジェクトを呼び出すことによりオブジェクトを入力又は一時中断してもよいように、コンポーネント２０２及び２０４はＣＯＭ区画（COM apartments）において実施されてもよい。さらなる例において、共有バッファー２２２は、例えば、データをストリーミングするために使用され得る。さらに他の例もまた考慮される。
【００２７】
図３は、ブラウザー・アプリケーション３０２のための層へと組織化されるような例示的な分離インフラストラクチャー３００を図示する。図３のブラウザー・アプリケーション３０２の「最も低い」層（例えば、詳細な抽象化（abstraction wise））は、低レベルの通信（例えば、ＷＩＮＤＯＷＳメッセージ）３０４及び低レベルの共有メモリー３０６を含む。次の層は、例えば、スレッド、バッファー、処理、強制インテグリティ・レベル（ＭＩＣ）など、物理ベースのアプリケーション・プログラム・インターフェース（ＡＰＩ）３０８を含む。その上の次の層は、例えば、同一性、セキュリティー、メッセージ、資源所有権（resource ownership）３１０などのコンポーネントを含んでいる。図示された例における最上層は、連続的な非同期プログラミング３１２のほか、例えば、Ｃｏｍ技術を非同期に模倣する「ＣＯＭのような」非同期プログラミングなど、プロキシー及びインターフェースを含む。
【００２８】
図４は、図２及び図３のコンポーネントにより実施されるようなフレーム処理４０２及びタブ処理４０４の例示的な実施例４００の図である。フレーム処理４０２及びタブ処理４０４は、図１のフレーム処理及びタブ処理に相当してもよいし、相当しなくてもよい。
【００２９】
図４の例示的な実施例４００は、図１のアプリケーションをコンポーネントへと分離して、それらのコンポーネント間のデータ及び制御の交換及び共有を管理する、分離インフラストラクチャーを示す。分離インフラストラクチャーの使用は、当該図によって示唆されるようなアプリケーションの疎結合の（loosely-coupled）コンポーネント化を容易にする。
【００３０】
タブ処理４０４はコンテンツの「境界（boundary）」であり、複数のタブの使用を介してコンテンツが互いに分離されるように構成されてもよい。したがって、単一のタブ処理４０４が示されるが、多くのタブ処理が使用され得る。
【００３１】
タブ処理４０４は、例えば、図３のブラウザー・アプリケーション３０２のようなアプリケーションに対する拡張を「含む」ために使用され得る。タブ処理４０４において「実行されている」コンテンツの例はタブ・スレッド４０６、４０８及び「ｉｓｏ」（すなわち、分離」）スレッド４１０として示される。スレッド（例えば、フレーム・スレッド４０６、４０８及び４１０）の各々は、以前に図２に関して説明されたようなコンポーネントとして示され、したがってそれぞれのＷＩＮＤＯＷＳメッセージループ、スレッド及び処理を含む。タブ処理４０４は、フレームに対して「処理中に（in-process）」実行してもよく、他の処理に対して「処理外で（out-of-process）」実行されてもよい。図示されないが、タブ処理４０４はまた、タブ処理４０４のコンテンツを「所有する」マネージャー・スレッドを含み得る。
【００３２】
フレーム処理４０２は、タブ処理４０４の実行を管理するための機能を代表するマネージャー・スレッド４０６を含んでいる。例えば、フレーム処理４０２は、マネージャー・スレッド４１２を介して、タブ処理４０４が「どこで」実行されるべきかを決定してもよく、タブ処理４０４の寿命及び応答性を監視してもよく、エラーが生じた場合にタブ処理４０４を取り除き、取り替え、回復してもよい。マネージャー・スレッド４０６は、例えば、タブ処理４０４が「ハングした」（例えば、無限ループにつかまった）と判定し、したがって、以前にタブ処理によって実行されたコンテンツを検索するなど、タブ処理４０４を回復してもよい。このように、影響（affect）タブ処理４０４は、全アプリケーション、例えばこの例におけるブラウザー・アプリケーション、の再初期化なしに回復される。以前に図２に関して説明されたように、スレッドと処理との間で通信が行われてもよい。
【００３３】
したがって、フレーム処理において、寿命モニタリングなどのような管理機能を行う１つのマネージャー・スレッド（例えば、「権限（authority）」マネージャー・スレッド）が存在する。また、フレームのユーザー・インターフェース（例えば、戻るボタン、進むボタン、アドレス・バーなど）を提供してフレームに対するユーザー入力に応答することに関与する１つ以上のフレーム・スレッドが存在する。
【００３４】
タブ処理において、フレームの要求においてタブ処理に分離コンポーネントを作成することに関与する１つのマネージャー・スレッド（フレーム処理において説明されたような権限マネージャー・スレッドではない）が存在する。また、タブ処理においてタブ・コンポーネントを実行し、また、タブのコンテンツ（例えば、ＨＴＭＬページ）をレンダリングすること及びコンテンツについてのユーザー入力に応答することに関与する１つ以上のタブ・スレッドが存在する。
【００３５】
さらに、フレーム又はタブ処理のいずれかにおいて実行し得る他のコンポーネントのための０以上のコンポーネント・スレッドがあってもよい。これらはタブではないが、同じ処理において分離されて、分離の利点を得るがその各々の処理を回転させるというパフォーマンス・ヒット（performance hit）を回避する。
例示的な手続
以下の説明は、以前に説明されたシステム及び装置を利用して実施することができる分離技術について記載する。手続の各々の態様は、ハードウェア、ファームウェアもしくはソフトウェア、又はその組み合わせにおいて実施されてもよい。手続は、１つ以上の装置によって行われる動作を指定し、それぞれのブロックによる動作を行うために図示された順序に必ずしも限定されないブロックの組として示される。以下の説明の一部では、図１−４に関して説明された例示的な環境について言及がなされる。
【００３６】
図５は、コンテンツを分離する１つ以上の処理の実行が別の処理によって管理される例示的な実施例における手続５００を図示する。ネットワークを介して受信されたコンテンツを含む１つ以上の処理の実行は、１つ以上の処理を含む単一のアプリケーションの別の処理によって管理される（ブロック５０２）。例えば、アプリケーション１２４は、フレーム処理１２６及び複数のタブ処理１２８（１）−１２８（Ｔ）を含むものとして示される。アプリケーション１２４は、例えば、ネットワークを介して受信されるコンテンツ１１８（ｃ）、１１２（ｋ）がタブ処理１２８（１）及び１２８（Ｔ）の使用を通じて出力され得る、制御の枠組み（構造）（例えば、進むボタン及び戻るボタン、アドレス・バーなど）を提供することに関与するフレーム処理１２６を備えたブラウザー・アプリケーション３０２に相当してもよい、したがって、ブラウザー・アプリケーション３０２のウィンドウは、コンテンツ１１２（Ｉ）−１１２（Ｔ）がタブ処理１２８（１）−１２８（Ｔ）を通じて出力されるフレーム処理１２６によって提供されるフレームを含んでもよい。ネットワークを介したコンテンツの受信が記載されるが、コンテンツはコンピューター読み取り可能な媒体を介するなどして、様々な他の方法で受け取られてもよい。
【００３７】
資源は１つ以上の処理を実行するために使用されるよう指定される（ブロック５０４）。フレーム処理１２６は、例えば、ネットワーク１０６を介して受信されるコンテンツ１１２（１）を分離するために開始されるタブ処理１２８（１）によって使用されるために、ハードウェア資源（例えば、特定の共有メモリー）、ソフトウェア機能（例えば、ハンドル、ハンドル・スペース及び／又はハンドル範囲）などを指定してもよい。様々な他の例もまた、１つ以上の処理を実行するのに使用されるための信頼レベルを指定するように考慮される（ブロック５０６）。信頼レベルは、例えば、個人情報保護方針、コンテンツ１１２（１）のソース、コンテンツ１１２（１）に付属している証明書（例えば、自己署名されたもの又は認証機関からのもの）などに基づいて決定されてもよい。
【００３８】
管理はまた、反応がない場合に１つ以上の処理を終了することを含んでもよい（ブロック５０８）。フレーム処理１２６は、例えば、タブ処理１２８（１）−１２８（Ｔ）を周期的にポーリングしてもよい。応答が所定の量の時間内にタブ処理１２８（１）―１２８（Ｔ）の１つ以上から受け取られない場合、１つ以上のタブ処理１２８（１）−１２８（Ｔ）のそれぞれは終了してもよい。したがって、タブ処理１２８（１）−１２８（Ｔ）の１つ以上が機能しない（例えば、「ハングしている」、「ビジー状態である」など）場合であっても、この不具合は、フレーム処理１２６がまだ反応するように、フレーム処理（例えば、実施例における他のタブ処理）に対して「拡張」されない。したがって、様々な修正処置がとられてもよい。
【００３９】
例として、コンテンツは１つ以上の処理において回復されてもよい（ブロック５１０）。例えば、フレーム処理１２６は、コンテンツ１１２（１）がタブ処理において「どこで」（例えば、ＵＲＬ）得られたかを決定し、終了したタブ処理１２８（１）を再開し、コンテンツ１１２（１）を再度取得してもよい。したがって、以前にそのような例において直面したように、アプリケーションの全体の不具合を引き起こすことなく、コンテンツ１１２（１）は、自動的にユーザーの介在なしに回復されてもよい。
結論
本発明は、構造的特徴及び／又は方法論の動作に特有の言葉で記載されたが、添付の特許請求の範囲において定義された発明が記載された特定の特徴又は動作に必ずしも限定されないことが理解されるべきである。より正確に言えば、特定の特徴及び動作は特許請求された発明を実施する例示的な形式として開示されている。
【図１】
0005438688.tif 000002
【図２】
0005438688.tif 000003
【図３】
0005438688.tif 000004
【図４】
0005438688.tif 000005
【図５】
0005438688.tif 000006