(57)【要約】【課題】ネットワーク内のサーバおよび１つまたは複数のノードにわたってアプリケーションを分散させるシステムおよび方法を提供すること。【解決手段】ノードのオン又はブート時、ノード・アプリケーションがサーバに要求され、ノード上にロードされる。ノード・アプリケーションはノード上で動作して、他の機能アプリケーションを選択するユーザ・インターフェースを提供し、選択されたアプリケーションをロード／アンロードし、アプリケーションのノード・リソースを管理する。各アプリケーションはサーバ上で動作するプロセス部分とノード上にロードされるユーザ・インターフェース部分とを備えて開発される。ノード・アプリケーションは、ノード・アプリケーションによって提供される利用可能な規格を用いてアプリケーションがユーザ・インターフェースを構築できるように、各アプリケーションのユーザ・インターフェース部分へのサポートを提供する。【選択図】図４Ａ
2008159068.tif 000002
【特許請求の範囲】
【請求項１】
それぞれが中央サーバに接続された１つまたは複数のノードを含み、前記中央サーバはオーディオ・コンテンツおよびビデオ・コンテンツを含むコンテンツを、前記コンテンツを含む複数のコンテンツの発信元である放送ソース（broadcast source）から受け取り、前記コンテンツが一つまたは複数の機能アプリケーションによって前記１つまたは複数のノードのうちの少なくとも一つに送達されるシステムにおいて、一つまたは複数のノードのうちの一つと前記中央サーバにわたって一つまたは複数の機能アプリケーションのうちの一つを分散させる、前記中央サーバが実行する方法であって、
一つまたは複数のノード・アプリケーションのうちの一つを求める要求を前記ノードから受け取るステップと、
前記ノード用の前記ノード・アプリケーションを、前記ノード・アプリケーションが前記中央サーバ上に格納されていない場合、前記ノード・アプリケーションをネットワークを介してリモート・サーバから取り出して、前記ノードに送るステップと、
前記一つまたは複数の機能アプリケーションのうちの一つを求める要求を受け取るステップと、
前記放送ソースから前記中央サーバによって受け取られたオーディオ・コンテンツおよびビデオ・コンテンツをユーザに提示するリソースを含むリソースを、前記ノードと前記中央サーバとの間で動的に割り当てて、前記機能アプリケーションのプロセス部分を実行し、前記要求された機能アプリケーションのユーザ・インターフェース部分を前記ノードに送達するステップと、
前記ユーザ・インターフェース部分からデータを求める一つまたは複数の要求を受け取ること、
前記中央サーバのリソースを利用して各要求を処理する、前記機能アプリケーションの前記プロセス部分によって、データを求める各要求に応じて、前記要求されたデータにアクセスし、前記ユーザ・インターフェース部分からの各要求を処理するステップと、
前記ユーザ・インターフェース部分に各要求の結果を提供するステップと
を備え、前記ユーザ・インターフェース部分は、前記ノードに結果を前記ユーザに提示させ、前記結果は、オーディオ・コンテンツおよびビデオ・コンテンツを提供する前記放送ソースから前記中央サーバによって受け取られたコンテンツであることを特徴とする方法。
【請求項２】
前記ノード・アプリケーションを送るステップは、前記ノードのコンピュータにロードされることになる前記一つまたは複数の機能アプリケーションのうちの一つを、前記ノードでユーザが選択することを可能にする初期ユーザ・インターフェースを前記ノードに送るステップを備えることを特徴とする請求項１に記載の方法。
【請求項３】
前記ユーザ・インターフェース部分からの各要求を処理するステップは、規格（standard）を使用して各要求の前記結果のフォーマットをするステップをさらに備えることを特徴とする請求項１に記載の方法。
【請求項４】
前記ユーザ・インターフェース部分に各要求の結果を提供するステップは、プロトコルを使用して前記結果を送達するステップをさらに備えることを特徴とする請求項１に記載の方法。
【請求項５】
前記プロトコルはリモート・プロシージャ・コールであることを特徴とする請求項４に記載の方法。
【請求項６】
前記ユーザ・インターフェース部分からの各要求を処理するステップは、前記中央サーバまたはリモート・サーバ上に格納されたコンテンツにアクセスするステップをさらに備えることを特徴とする請求項１に記載の方法。
【請求項７】
コンテンツを記録するステップをさらに含み、前記コンテンツは、サテライト・システムまたはケーブル・システムを介して受信されるテレビジョン・プログラムを備えることを特徴とする請求項１に記載の方法。
【請求項８】
ユーザが前記中央サーバから前記機能アプリケーションを選択することができるように、前記中央サーバ上に前記ノード・アプリケーションを実装するステップをさらに備えることを特徴とする請求項１に記載の方法。
【請求項９】
それぞれが中央サーバに接続された１つまたは複数のノードを含み、前記中央サーバはオーディオ・コンテンツおよびビデオ・コンテンツを含むコンテンツを、前記コンテンツを含む複数のコンテンツの発信元である放送ソース（broadcast source）から受け取り、前記コンテンツが一つまたは複数の機能アプリケーションによって前記１つまたは複数のノードのうちの少なくとも一つに送達されるシステムにおいて、一つまたは複数のノードのうちの一つと前記中央サーバにわたって一つまたは複数の機能アプリケーションのうちの一つを分散させるためのプログラムを実装するコンピュータ読み取り可能な記憶媒体であって、前記プログラムは、前記中央サーバに、
ノード・アプリケーションを求める要求を前記一つまたは複数のノードのうちの一つから受け取るステップと、
前記ノード用の前記ノード・アプリケーションを、前記ノード・アプリケーションが前記中央サーバ上に格納されていない場合、前記ノード・アプリケーションをネットワークを介してリモート・サーバから取り出して、前記ノードに送るステップと、
一つまたは複数の前記機能アプリケーションのうちの一つを求める要求を受け取るステップと、
前記放送ソースから前記中央サーバによって受け取られたオーディオ・コンテンツおよびビデオ・コンテンツをユーザに提示するリソースを含むリソースを、前記ノードと前記中央サーバとの間で動的に割り当てるように、前記機能アプリケーションのプロセス部分を、前記中央サーバ上で実行し、前記要求された機能アプリケーションのユーザ・インターフェース部分を前記ノードに送達するステップと、
前記ユーザ・インターフェース部分からデータを求める一つまたは複数の要求を受け取るステップと、
前記中央サーバのリソースを利用して各要求を処理する、前記機能アプリケーションの前記プロセス部分によって、データを求める各要求に応じて、前記要求されたデータにアクセスし、前記ユーザ・インターフェース部分からの各要求を処理するステップと、
前記ユーザ・インターフェース部分に各要求の前記結果を提供するステップと
を実行させ、前記ユーザ・インターフェース部分は、前記ノードに結果を前記ユーザに提示させ、前記結果は、オーディオ・コンテンツおよびビデオ・コンテンツを提供する前記放送ソースから前記中央サーバによって受け取られたコンテンツであることを特徴とするコンピュータ読み取り可能な記録媒体。
【請求項１０】
前記ノード・アプリケーションを送るステップは、前記ノードのコンピュータにロードされることになる前記一つまたは複数の機能アプリケーションのうちの一つを、前記ノードでユーザが選択することを可能にする初期ユーザ・インターフェースを前記ノードに送るステップを備えることを特徴とする請求項９に記載のコンピュータ読み取り可能な記録媒体。
【請求項１１】
前記ユーザ・インターフェース部分からの各要求を処理するステップは、規格（standard）を使用して各要求の前記結果のフォーマットをするステップをさらに備えることを特徴とする請求項９に記載のコンピュータ読み取り可能な記録媒体。
【請求項１２】
前記ユーザ・インターフェース部分に各要求の結果を提供するステップは、プロトコルを使用して前記結果を送達するステップをさらに備えることを特徴とする請求項９に記載のコンピュータ読み取り可能な記録媒体。
【請求項１３】
前記プロトコルはリモート・プロシージャ・コールであることを特徴とする請求項１２に記載のコンピュータ読み取り可能な記録媒体。
【請求項１４】
前記ユーザ・インターフェース部分からの各要求を処理するステップは、前記中央サーバまたはリモート・サーバ上に格納されたコンテンツにアクセスするステップをさらに備えることを特徴とする請求項９に記載のコンピュータ読み取り可能な記録媒体。
【請求項１５】
コンテンツを記録するステップをさらに備え、前記コンテンツは、サテライト・システムまたはケーブル・システムを介して受信されるテレビジョン・プログラムを備えることを特徴とする請求項９に記載のコンピュータ読み取り可能な記録媒体。
【請求項１６】
ユーザが前記中央サーバから前記機能アプリケーションを選択することができるように、前記中央サーバ上に前記ノード・アプリケーションを実装するステップをさらに備えることを特徴とする請求項９に記載のコンピュータ読み取り可能な記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ネットワーク内に分散したアプリケーションを管理するためのシステムおよび方法に関する。より詳細には、本発明は、ネットワーク内のクライアントまたはノードの機能をサポートするアプリケーションを送達し、ホスティングするためのシステムおよび方法に関する。
【背景技術】
【０００２】
多くの家庭では、様々な異なる放送ソースから、テレビジョン番組およびインターネットに関係するデータなどのコンテンツを受信している。サテライト・システム、ケーブル・テレビジョン・システム、およびインターネットなどのコンピュータ・ネットワークは、それを介してコンテンツを受信するシステムおよび放送ソースの例である。異なるタイプのコンテンツが利用可能になるにつれて、そのコンテンツにアクセスするのに用いる装置(セットトップボックスおよびコンピュータ)は、サテライト・テレビジョン番組、またはケーブル・テレビジョン番組をユーザが閲覧することを可能にする同じセットトップボックスが、インターネットをユーザがブラウズすることを可能にするという意味で区別できなくなりつつある。この同じセットトップボックスが、しばしば、Ｅメール、インスタント・メッセージング、およびデジタル・ビデオ録画などの他のアプリケーションに対して用いられている。
【０００３】
セットトップボックスの機能が向上するにつれて、多くの家庭では、複数のセットトップボックスを有するようになりつつある。例えば、多くの家庭では、テレビジョン・セットごとにセットトップボックスを有している。家庭で受信するコンテンツのすべてをより良好に管理するために、コンテンツは、多くの場合、家庭内の様々なセットトップボックス(中央サーバのノードまたはクライアント)にコンテンツを送達する役割を果たすゲートウェイまたは中央サーバ・コンピュータを介して家庭に入り込む。実質上、家庭は、ホーム・サーバ・コンピュータを介して外部システムまたはコンテンツ・ソースと接続する小規模ネットワークを有する。したがってホーム・サーバ・コンピュータは、ホーム・ネットワークの様々なノードまたはクライアントにコンテンツを配布する役割を果たす。
【０００４】
単一のサーバから、複数のセットトップボックスに至るホーム・ネットワーク全体にコンテンツを配布する目的でアプリケーションを首尾よく開発（develop）するには、いくつかの難点がある。多くの場合、様々なセットトップボックスは、利用可能な規格を正確に実装しておらず、または利用可能な規格を完全には実装していない。例えば、特定の家庭では、あるテレビジョンに対してサテライト・セットトップボックスを有し、別のテレビジョンに対してウェブ・ブラウジング・セットトップボックスを有することがある。リモート・サーバからサテライト・システムを介して取り出されたコンテンツがサテライト・セットトップボックスにとって利用可能である場合であっても、そのサテライト・セットトップボックスがその情報またはコンテンツを表示できないことがあり得る。加えて、多くのアプリケーションは、特定のシステム・アーキテクチャおよび/または特定のオペレーティング・システムに依存する。不正確に実装された規格と、システム・アーキテクチャおよびオペレーティング・システムに対する依存性は、多くの場合に、性能の低下そして要求されたコンテンツの配布の失敗に帰着する可能性がある非互換性の原因になる。
【０００５】
通常、ホーム・ネットワークの中央サーバは、ホーム・ネットワークのクライアントまたはノードよりも強力（powerful）である。より非力なノードを使用してこの方式でホーム・ネットワークを作成することは、例えば、コストおよびコンピューティング・ロード（計算負荷）の分散の問題に対処する。ノードまたはクライアントはそれほど高価ではないので、消費者のホーム・ネットワークのコストが軽減される。
【０００６】
しかし、サーバと様々なノードとの間のコンピューティング・ロードの分散は、現在のネットワークでは固定されている。特定のノードまたはサーバのリソースを動的に割り振ることができないことにより、性能が低下し、ユーザ体験（user experience）が不十分なものとなる可能性がある。リソースを動的に割り振ることができない問題は、多くのアプリケーションがノード上で実行するように設計されており、サーバ上で実行できないという事実によって複雑化する。多くの場合、サーバ・コンピュータが家族の一員の誰かからのノードであるかのように使用されるので、このことは重大な意味を持っている。
【０００７】
この問題に対する１つのアプローチは、シン・クライアント・アプローチ（Thin Client approach；処理が軽いパソコン手法）である。しかしシン・クライアント・アプローチにより、様々な問題が生じる。シン・クライアント・システムでは、例えばデータ・トランスポートは、しばしばグラフィックス・デバイス・インターフェース（ＧＤＩ）を用いて実施される。ＧＤＩは、実際にオブジェクトをレンダリングするコマンドを画面に送ることによってオブジェクトを効率的に描画する。言い換えればＧＤＩは、ノードと中央サーバとの間の通信を、描画コマンドおよびビットマップのレベルに抽象化する。
【０００８】
このことは、いくつかの問題を生じさせる。まず、ビットマップ型ディスプレイに基づくユーザとの対話に適応するために将来のノードが必要となり、そのノード上で動作するどんなコードも、他のコンテンツに対してビデオを適切に配置できないことになる。加えて、ＧＤＩインターフェースは他のタイプのノードに対して実用的ではない。例えば純粋なオーディオ・ノードではＧＤＩは必要でなく、このシナリオではオーディオ・ノードはふさわしくない。
【０００９】
シン・クライアントによる解決策では、分散処理を活用する能力の優位性が利用されない。ノードとサーバとの間の分散が固定であるとき、サーバでの処理能力（processing power）の向上が効率的に利用されない。このことは、例えばプロセッサ速度が増加するにつれて明らかとなる。さらに、システム中のノード数が増加するにつれ、サーバのリソースは、増大する負担が課せられるようになる。
【００１０】
一方、シック・クライアント・アプローチ（Thick Client approach；処理が重いパソコン手法）もまた、様々な問題から不利な状況に置かれる。近年、アプリケーションは、クライアント/サーバまたはウェブ・ブラウザ/ウェブ・サーバ・アーキテクチャを念頭に置いて開発されるようになっている。この方式でアプリケーションを開発することは、ソフトウェア開発者とグラフィック・デザイナとの間で作業を容易に分割することができるので効率的である。シック・クライアントでは、この実証された開発モデルが活用されない。特定の製品のルック・アンド・フィールを変更することは難しいので、各シック・クライアントにアプリケーションをバインドすることは、開発中にパートナを変更または追加する能力も、低下させる。
【発明の開示】
【発明が解決しようとする課題】
【００１１】
コンテンツを配布し、スケーラブルかつ分散可能なアプリケーションを開発（develop）するためのシステムおよび方法が求められている。
【課題を解決するための手段】
【００１２】
これらの問題および他の問題は、複数のノードに接続されるセントラル・サーバまたはゲートウェイを含む、ネットワークまたは分散システムに実装される本発明により、克服される。アプリケーションは、本発明に従ってサーバとノードにわたって分散され、この分散アプリケーションによって、インターネット・コンテンツおよびビデオ/オーディオ・コンテンツが中央サーバを介して様々なノードに配布される。したがって、サーバは各ノードに接続され、各ノードは、中央サーバを介して様々なシステムまたは放送ソースからのコンテンツに対するアクセスを行う。このシステムまたは同報通信源には、限定はしないが、サテライト・システム、ケーブル・システム、インターネット、他のネットワーク、アンテナ・システムなど、あるいはそれらの任意の組合せを含めることができる。
【００１３】
本発明は、配布するコンテンツを、単一サーバを介して複数のクライアントまたはノードに配布するためのシステムおよび方法、ならびにスケーラブルかつ分散可能なアプリケーションを開発し、オーサリングすることに向けられている。１つの例では、ネットワークの各ノードがセントラル・サーバからノード・アプリケーションをロードする。このノード・アプリケーションは、様々なアプリケーションまたはノードの機能をユーザが選択することができるユーザ・インターフェース全体を提供する。このノード・アプリケーションは、これらのアプリケーションをロード/アンロードし、ノード上で動作するアプリケーションに対するサポートおよび互換性を実現し、ノードのリソースをアプリケーションに割り振る。ノード・アプリケーションは、限定はしないが、データ・ドリブン・アプリケーション、リモート・プロシージャ・コール（remote procedure call）、カスタム・ローデッド・コードなどを含む様々な開発モデル（develop model）をサポートする。
【００１４】
ノードとサーバにわたって分散する各アプリケーションは、ユーザ・インターフェース部分およびプロセス部分を有する。ユーザ・インターフェース部分は、一般にノード上で動作または実行し、ノード・アプリケーションのサポートで、ＨＴＭＬ、ＸＭＬ、ＣＳＳ、ＰＮＧ、ＭＮＧ、ＪＰＥＧ、ＭＰＥＧなどのレンダリングを担当する。また、ユーザ・インターフェース部分は、ノード・アプリケーションのサポートで、ＣＯＭ、ＤＣＯＭ、ＥＣＭＡＳｃｒｉｐｔなどの実行または処理も担当する。ユーザ・インターフェース部分は概して、ネットワークを介してプロセス部分と通信する。プロセス部分は概してサーバ上で動作し、サーバの処理能力を利用してデータにアクセスし、データを処理する。一方、ユーザ・インターフェース部分は、ノード上で動作し、処理したコンテンツをユーザに提示する。ノード上のユーザ・インターフェース部分とサーバ上のプロセス部分とを備えたプログラムまたはアプリケーションを開発することにより、サーバとノードの両方のリソースを動的に割り振ることを可能とする。
【００１５】
あるいは、ユーザ・インターフェース部分は、適宜サーバおよび/またはノード上のユーザ・インターフェース部分によって作成される１つまたは複数のサービス部分に結合される。このサービス部分は、サーバ上またはノード上のいずれかで作成することができる。サービス部分は、アプリケーションのユーザ・インターフェース部分の要求を処理するようにも動作する。
【００１６】
本発明の追加の特徴および利点を以下で説明する。本発明の追加の特徴および利点の一部は、以下の説明から明らかとなろう。あるいは、本発明の追加の特徴および利点は、本発明を実施することによって理解することができる。本発明の特徴および利点は、添付の特許請求の範囲で具体的に指摘される諸計器およびそれらの組合せによって理解することができ、得ることができる。本発明のこれらの特徴および他の特徴は、以下の説明および添付の特許請求の範囲によってより完全に明らかとなろう。または、本発明のこれらの特徴および他の特徴は、以下で述べる本発明を実施することによって理解することができる。
【発明を実施するための最良の形態】
【００１７】
上記で述べた本発明の利点および特徴、ならびに他の利点および特徴を得ることができる方式を説明するために、添付の図面に示す本発明の特定の実施形態を参照しながら、上記で簡潔に述べた本発明をより具体的に説明する。これらの図面は単に本発明の典型的な実施形態を示すに過ぎず、したがって本発明の範囲を制限するものとみなすべきではないことを理解して、本発明を添付の図面を用いて、より具体的かつ詳細に説明する。
【００１８】
本発明は、コンテンツを送達するためのネットワーク内で分散するアプリケーションの開発（development）を対象とする。本発明の一態様は、中央サーバと、ネットワークのノードとの間でアプリケーションおよびコンテンツを配布するのに用いるノード・アプリケーションである。ノードをブートまたはオンしたとき、ノード・アプリケーションは各ノード上にロードされ、ユーザに対して初期ユーザ・インターフェースを表示する。すべての他のアプリケーションおよびユーザ・インターフェースは、ノードでのユーザ・アクションとサーバからの着信通知とに応答して立ち上がる。
【００１９】
各分散アプリケーションは、ユーザ・インターフェース部分およびプロセス部分を有する。ユーザ・インターフェース部分は、ノード・アプリケーションによってノード上にロードされ、アプリケーション特有のコンテンツをユーザに提示する。分散アプリケーションのプロセス部分は、概してサーバ上で実行され、サーバのリソースを利用して、計算的により時間を要するタスクを実行することができる。あるいは、分散アプリケーションは、サーバまたはノードのどちらかで実行することができる１つまたは複数のサービス部分を生成して、ユーザ・インターフェース部分による要求を実行する。
【００２０】
ノード・アプリケーションは、分散アプリケーションのユーザ・インターフェース部分をサポートする。ノード・アプリケーションは、限定はしないが、ＨＴＭＬ、ＸＭＬ、ＸＨＴＭＬ、ＣＳＳ、ＰＮＧ、ＭＮＧ、ＪＰＥＧ、ＭＰＥＧ、ＤＯＭ、ＥＣＭＡＳｃｒｉｐｔ、ＳＯＡＰ、ＨＴＴＰ、ＴＣＰ／ＩＰ、ＤＣＯＭなどを含む複数の規格の実装を提供する。ノード・アプリケーションはまた、分散アプリケーションとノードの間の互換性も実現し、サーバとノードにわたってアプリケーションを動的に、合わせ込み、分散させることを可能にし、かつノードとサーバの両方でアプリケーションがローカルに動作することを可能にする。ノード・アプリケーションは、ノード上およびサーバ上でのアプリケーションのロードおよび実行をサポートする。ノード・アプリケーションはまた、現在ノード上で動作しているアプリケーションにリソースを割り振る。
【００２１】
本発明の実施形態は、以下でより詳細に論じるように、様々なコンピュータ・ハードウェアを含む特殊目的コンピュータまたは汎用コンピュータを備えることができる。本発明の範囲内の実施形態はまた、コンピュータ実行可能命令またはデータ構造を搬送し、または格納するためのコンピュータ可読媒体も含む。このようなコンピュータ可読媒体は、汎用コンピュータまたは特殊目的コンピュータでアクセスすることができる入手可能な媒体でよい。例えば、限定はしないが、そのようなコンピュータ可読媒体は、ＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ、ＣＤ−ＲＯＭまたは他の光ディスク記憶媒体、磁気ディスク記憶媒体または他の磁気記憶装置、あるいはコンピュータ実行可能命令またはデータ構造の形の所望のプログラム・コード手段を搬送または記憶するのに使用することができ、かつ汎用コンピュータまたは特殊目的コンピュータでアクセスすることができる他のどんな媒体も備えることができる。情報がネットワークまたは他の通信接続(ハードワイヤード、無線、あるいはハードワイヤードまたは無線の組み合わせ)を介してコンピュータに転送または供給されるとき、厳密には、コンピュータはその接続をコンピュータ可読媒体として認識する。したがって、任意のそのような接続は、厳密にはコンピュータ可読媒体と呼ばれる。上記の組み合わせもまた、コンピュータ可読媒体の範囲内に含まれるべきである。例えばコンピュータ実行可能命令は、ある機能または機能の集まりを汎用コンピュータ、特殊目的コンピュータ、または特殊目的処理装置に実行させる命令およびデータを含む。
【００２２】
図１および以下の議論は、本発明を実施することができる適切なコンピューティング環境の簡潔で一般的な説明を提供するものである。必須ではないが、ネットワーク環境内のコンピュータによって実行されるプログラム・モジュールなどのコンピュータ実行可能命令の一般的状況の下で本発明を説明する。一般に、プログラム・モジュールは、特定のタスクを実行し、または特定の抽象データ・タイプを実装するルーチン、プログラム、オブジェクト、コンポーネント、データ構造などを含んでいる。コンピュータ実行可能命令、関連するデータ構造、およびプログラム・モジュールは、本明細書で開示される方法のステップを実行するプログラム・コード手段の例を表している。このような実行可能命令、または関連するデータ構造の特定のシーケンスは、このようなステップで記述される機能を実装する行為に対応する例を表している。
【００２３】
パーソナル・コンピュータ、ハンドヘルド装置、マルチ・プロセッサ・システム、マイクロ・プロセッサ・ベースまたはプログラム可能な消費者向け電子機器、ネットワークＰＣ、ミニ・コンピュータ、メイン・フレーム・コンピュータなどの多くのタイプのコンピュータ・システム構成を有するネットワーク・コンピューティング環境で本発明を実施できることを当業者は理解されよう。本発明は、ローカル処理装置、ならびに通信ネットワークを介して(ハードワイヤード・リンク、無線リンク、あるいはハードワイヤードまたは無線リンクの組み合わせによって)リンクされるリモート処理装置によってタスクが実行される分散コンピューティング環境でも実施することができる。分散コンピューティング環境では、プログラム・モジュールは、ローカル・メモリ記憶装置とリモート・メモリ記憶装置のどちらにも配置することができる。
【００２４】
図１を参照すると、本発明を実装するための例示的システムは、従来型コンピュータ２０の形態の汎用コンピューティング装置を含む。従来型コンピュータ２０は、プロセッシング・ユニット２１と、システム・メモリ２２と、システム・メモリ２２を含む様々なシステム構成要素を処理装置２１に結合するシステム・バス２３とを含む。システム・バス２３は、メモリ・バスまたはメモリ・コントローラと、周辺バスと、様々なバス・アーキテクチャのうちのいずれかを用いるローカルバスとを含むいくつかのタイプのバス構造のいずれでもよい。システム・メモリは、読み取り専用メモリ（ＲＯＭ）２４およびランダム・アクセス・メモリ（ＲＡＭ）２５を含む。始動中などにコンピュータ２０内の要素間で情報を転送する助けになる基本ルーチンを含む基本入出力システム（ＢＩＯＳ）２６をＲＯＭ２４内に格納することができる。
【００２５】
コンピュータ２０はまた、磁気ハード・ディスク３９を読み書きするための磁気ハード・ディスク・ドライブ２７と、取り外し可能磁気ディスク２９を読み書きするための磁気ディスク・ドライブ２８と、ＣＤ−ＲＯＭまたは他の光媒体などの取り外し可能光ディスク３１を読み書きするための光ディスク・ドライブ３０とを含むことができる。磁気ハード・ディスク・ドライブ２７、磁気ディスク・ドライブ２８、および光ディスク・ドライブ３０は、それぞれハード・ディスク・ドライブ・インターフェース３２、磁気ディスク・ドライブ・インターフェース３３、および光ドライブ・インターフェース３４によってシステム・バス２３に接続される。ドライブと、それに関連するコンピュータ可読媒体とにより、コンピュータ２０に対して、コンピュータ実行可能命令、データ構造、プログラム・モジュール、および他のデータの不揮発性記憶が実現される。本明細書で説明する例示的環境では、磁気ハード・ディスク３９、取り外し可能磁気ディスク２９、および取り外し可能光ディスク３１を使用しているが、データを格納するために、磁気カセット、フラッシュ・メモリ・カード、デジタル・バーサタイル・ディスク、ベルヌーイ・カートリッジ、ＲＡＭ、ＲＯＭなど、他のタイプのコンピュータ可読媒体も使用することができる。
【００２６】
オペレーティング・システム３５、１つまたは複数のアプリケーション・プログラム３６、他のプログラム・モジュール３７、およびプログラム・データ３８を含む１つまたは複数のプログラム・モジュールを有するプログラム・コード手段は、ハード・ディスク３９、磁気ディスク２９、光ディスク３１、ＲＯＭ  ２４、またはＲＡＭ  ２５上に格納することができる。ユーザは、キーボード４０、ポインティング・デバイス４２、あるいはマイクロフォン、ジョイスティック、ゲーム・パッド、サテライト・ディッシュ、スキャナなどの他の入力装置（図示せず）を介してコンピュータ２０にコマンドおよび情報を入力することができる。これらの入力装置および他の入力装置はしばしば、システム・バス２３に結合されたシリアル・ポート・インターフェース４６を介して処理装置２１に接続される。あるいは入力装置は、パラレル・ポート、ゲーム・ポート、またはユニバーサル・シリアル・バス（ＵＳＢ）などの他のインターフェースによって接続することもできる。モニタ４７または他のディスプレイ装置もまた、ビデオ・アダプタ４８などのインターフェースを介してシステム・バス２３に接続される。モニタに加えて、パーソナル・コンピュータは一般に、スピーカおよびプリンタなどの他の周辺出力装置（図示せず）を含む。
【００２７】
コンピュータ２０は、リモート・コンピュータ４９ａおよび４９ｂなどの１つまたは複数のリモート・コンピュータに対する論理接続を用いて、ネットワーク環境で動作することができる。リモート・コンピュータ４９ａおよび４９ｂはそれぞれ、別のパーソナル・コンピュータ、サーバ、ルータ、ネットワークＰＣ、ピア装置、または他の共通ネットワーク・ノードでよく、一般にはコンピュータ２０に関して上記で述べた要素のうちの多くまたはすべてを含むが、図１にはメモリ記憶装置５０ａおよび５０ｂと、その関連するアプリケーション・プログラム３６ａおよび３６ｂだけを示してある。図１に示す論理接続は、ローカルエリア・ネットワーク（ＬＡＮ）５１およびワイドエリア・ネットワーク（ＷＡＮ）５２を含む。これらは限定的なものではなく、単に例として示したに過ぎない。このようなネットワーキング環境は、オフィス全体または企業全体のコンピュータ・ネットワーク、イントラネット、およびインターネットで一般的なものである。
【００２８】
ＬＡＮネットワーキング環境で使用するとき、コンピュータ２０は、ネットワーク・インターフェースまたはアダプタ５３を介してローカル・ネットワーク５１に接続される。ＷＡＮネットワーキング環境で使用するとき、コンピュータ２０は、モデム５４、無線リンク、あるいはインターネットなどのワイドエリア・ネットワーク５２を介して通信を確立するための他の手段を含む。モデム５４は内蔵でも外付けでもよく、シリアル・ポート・インターフェース４６を介してシステム・バス２３に接続される。ネットワーク環境では、コンピュータ２０に関して示したプログラム・モジュールまたはその一部は、リモート・メモリ記憶装置内に格納することができる。ここで示したネットワーク接続は例示的なものであって、ワイドエリア・ネットワーク５２を介して通信を確立する他の手段も使用できることを理解されたい。
【００２９】
図２は、本発明のシステムおよび方法を実装する例示的環境を示すブロック図である。この例では図２は、限定はしないが、サテライト・システム２０６、インターネット２０８、ケーブル・システム２１０、あるいはそれらの任意の組み合わせを含むことができる様々なシステムおよびネットワークを介してコンテンツへのアクセスを有するネットワーク２００を示している。サテライト・システム２０６、インターネット２０８、およびケーブル・システム２１０を介して送受信されるコンテンツには、限定はしないが、Ｅメール、インスタント・メッセージ、オーディオ、ビデオ、番組ガイド・データ、テレビジョン同報通信データ、ストリーミング・ビデオ／オーディオ・データ、サテライトまたはケーブル・テレビジョン・コンテンツ、イメージ・データ、テキストなど、あるいはそれらの任意の組み合わせが含まれる。
【００３０】
サーバ２０１は、ネットワーク２００に対するゲートウェイとして機能する。サーバ２０１は、図１に関連して述べた、この例におけるコンピュータであり、かつそれに加えて、サーバ２０１がインターネット２０８に加えてサテライト・システム２０６および／またはケーブル・システム２１０からのデータとインターフェースし、受信することを可能にする構成要素も含む。例えば、サーバ２０１は、サテライト信号およびケーブル信号を特定のチャネルに同調することができるような１つまたは複数のチューナを含むことができる。サーバ２０１はまた、同調したチャネルからビデオ・ストリームを生成するのに必要な構成要素も含む。このビデオ・ストリームは、例えばテレビジョンまたはコンピュータ・モニタなどのディスプレイ装置上にレンダリングすることができる。あるいは、これらのタイプの構成要素をノードのうちの１つに含めることもできる。
【００３１】
サーバ２０１は記憶装置を含む。記憶装置２０２は、アプリケーションおよびコンテンツを格納するのに使用される。例えば記憶装置２０２は、サテライト・システムおよび／またはケーブル・システムを介して同報通信される番組を記録するのに使用することができる。記憶装置２０２はまた、適宜サテライト・システムおよびケーブル・システムを介して同報通信される番組に関する番組ガイド・データも格納する。記憶装置２０２は、インターネット、Ｅメール、インスタント・メッセージなどを介してダウンロードしたコンテンツを格納する。サーバ２０１はまた、限定はしないが、テレビジョン・イベント録画スケジューリングおよび競合解決、番組ガイド・データ管理、サテライト・データ・ダウンロード・サービス、ネットワーク・アドレス変換（ＮＡＴ）サーバ、タイム・サーバ、動的ホスト構成プロトコル（ＤＨＣＰ）サーバなどを含む、他の構成要素および機能も提供する。あるいは、この機能の一部はノードに常駐することもできる。
【００３２】
ネットワーク２００はまた、ノード２１２、ノード２１８、およびノード２２４として表されている１つまたは複数のクライアントも含む。各ノードは通常、当技術分野で一般に周知の様々な接続を用いてサーバ２０１に接続される。図２の例では、各ノードは少なくとも１つの装置にも接続されるが、特定のノードを装置に接続する必要はない。例えば、ノードは一体型コンピュータ・モニタを有するコンピュータであってもよい。あるいは、ノードは特定の装置に関連付けられたセットトップボックスであってもよい。
【００３３】
この例では、ノード２１２がテレビジョン２１６に接続される。したがって、サーバ２０１はビデオ／オーディオ・コンテンツをノード２１２に配布することができ、その結果、ビデオ／オーディオ・コンテンツはテレビジョン２１６上にレンダリングされる。ノード２１８はスピーカ２２２に接続され、サーバ２０１は、コンテンツ源のうちの１つからのオーディオをノード２１８に配布することができ、ノード２１８は、オーディオをスピーカ２２２に送達する。本発明により、コンテンツ・ソースを介して受信されるコンテンツのタイプに関連付けられる他の装置も企図される。したがって装置２２８は、一般に各装置を表し、テレビジョン、コンピュータ・モニタ、スピーカ、イメージ・コンテンツを表示することができる対話式フレーム、インターネット装置、または他のどんな装置であってもよい。装置２２８向けのコンテンツは、ノード２２４を介して送達または配布される。ある例では、サーバ２０１は、それがあたかもノードであるかのように使用されることができるので、この例ではディスプレイ装置２１６がサーバ２０１に接続されている。
【００３４】
各ノードは、以下で説明するようにアプリケーションを実行することができ、かつ各ノードは、以下で説明するノード・アプリケーションによってノード上で実行中の様々なアプリケーションに動的に割り振られるいくつかのリソースを有している。各ノードの例示的リソースは、限定はしないが、プロセッサ、ネットワーク、入力、サーバ・リソース、メモリ、スクリーン、サウンド、およびイベントを含むことができる。各ノードの例示的アプリケーションまたは機能は、限定はしないが、全般的なユーザ・インターフェース／機能−ナビゲーション／プリファレンス、番組ガイド・データ、オーディオ／ビデオ・プレーヤ、ビデオ録画、メディア・ジュークボックス、ウェブ・ブラウジング、Ｅメール、インスタント・メッセージングなどを含むことができる。
【００３５】
先に触れたように、各ノードはまた、図３に関連して説明するノード・アプリケーションも有する。ノード・アプリケーション３００は、特定のノード上にロードされたとき、他のアプリケーションをロードし、そのノード上で実行することを可能にする。ノード・アプリケーション３００はノードで全ユーザ・インターフェースを生成し、かつノード・アプリケーション３００は、様々なアプリケーションにナビゲートし、ノード上にアプリケーションをロードおよびノード上からアプリケーションをアンロードし、ノード上で動作しているか、または動作することになる様々なアプリケーションに対してノード・リソースを管理し、割り振る能力をユーザに提供する。ノード・アプリケーション３００は、他のアプリケーションがサーバから動的にロードあるいはアンロードされる間、ノード上のあるアプリケーションに対するサポートを提供することができる。
【００３６】
ノード・アプリケーション３００は、プレゼンテーション・エンジン３０２、実行エンジン３０８、互換層３０４、および動的リソース割り振りモジュール３０６を含む。プレゼンテーション・エンジン３０２は、限定はしないが、ＨＴＭＬ４、ＣＳＳ１、ＰＮＧ１、他のＷ３Ｃ規格などを含む様々な規格の完全な実装を提供する。プレゼンテーション・エンジン３０２は、ユーザ・インターフェースを描画または生成するためにアプリケーションで使用される。実行エンジン３０８は、限定はしないが、ＤＣＯＭ、ＣＯＭ、およびＥＣＭＡＳｃｒｉｐｔを含む、ノード・アプリケーションによってロードされるアプリケーションがコードを実行することを可能にする他の規格の実装を提供する。互換層３０４は、ノード・アプリケーションが、異なるオペレーティング・システム上、およびプロセッサ・アーキテクチャ上で動作することを可能とする。動的リソース割り振り３０６は、特定のアプリケーションが、動的に合致することを可能とし、実行時にノードとサーバにわたってプロセッサ負荷を分散させることを可能とする。ノード・アプリケーション３００はまた、機能アプリケーションのユーザ・インターフェース部分をロードおよびアンロードするのに使用され、かつアプリケーションのプロセス部分またはアプリケーションに関連付けられたサービス部分に対して要求を行うのに使用される、ローディング・モジュールなど、他のモジュールも含む。
【００３７】
通常、ノードはサーバ２１０と同じリソースを有する必要はない。実際、本発明の１つの利点は、各ノードのハードウェア要件を著しく軽減できることである。例えば、ノードは、ハード・ドライブまたは他の大容量記憶装置を有する必要がない。各ノードは最小限のソフトウェアを有するだけでよく、各ノードはサーバ２０１に依拠して、各アプリケーションの必要とする処理を提供する。概して、各ノードは以下の機能を有し、この機能は通常、読み取り専用メモリ（ＲＯＭ）内に格納される。その機能とは、ブート・クライアント、ネットワーク・スタック、ＨＴＴＰクライアントまたはＴＦＴＰクライアント、および単純なユーザ・インターフェース画面である。
【００３８】
ノードがオンまたは初期化されるとき、ブート・クライアントは、単純なユーザ・インターフェースをユーザに表示し、中央サーバからアドレスを取得する。次に、ノード・アプリケーションがサーバから取り出される。中央サーバがノード・アプリケーションを求める要求を受け取ったとき、中央サーバは、ノード・アプリケーションがその特定のノードで利用可能である場合、ノードにノード・アプリケーションを供給する。あるいは中央サーバは、インターネットなどのネットワークを介して、またはダイアルアップ接続を用いることなどによって、別のサーバに適切なノード・アプリケーションを要求することもできる。
【００３９】
ノード・アプリケーションがノードに供給されると、そのノード・アプリケーションはノード上で実行を開始し、予備（preliminary）ユーザ・インターフェースを表示する。１つの例では、ノード・アプリケーションは、中央サーバに現在の日付および時刻を要求する。ノード・アプリケーションはまた、中央サーバからノード・プリファレンスを取り出す。ノードが新しいノードである場合、プリファレンス・プロファイルがその新しいノードに対して作成される。例えば、ノード・プリファレンスまたはプリファレンス・プロファイルは、ノードのロケーション、ノードのタイプ、ノード・シリアル番号、ノード機能（capabilities）などを含む。次に、ノード・アプリケーションはサーバに初期ユーザ・インターフェースを要求し、初期ユーザ・インターフェースが表示される。ユーザは、初期ユーザ・インターフェースから、ノード・アプリケーションによってロードされて実行されるアプリケーションを選択することができる。
【００４０】
図４Ａおよび４Ｂは、アプリケーションがどの様にノードとサーバとの間で分散され得るかを示すブロック図である。図４Ａは、アプリケーションが、ノード上で動作するユーザ・インターフェース部分と、サーバ上で動作するプロセス部分とを有する場合の例を示している。図４Ｂは、アプリケーションが、ノード上で動作するユーザ・インターフェース部分と、サーバ上またはノード上のどちらかで動作している１つまたは複数のサービス部分とを有する場合の例を示している。
【００４１】
図４は、アプリケーション開発と、ネットワーク内のアプリケーション分散の両方を示すブロック図である。図４は、ノード４０８に接続されるサーバ４００を示す。この例では、アプリケーション４０６はノード４０８とサーバ４００との間に動的に分散する。アプリケーション４０６は、サーバ４００上のプロセス部分４０４と、ノード４０８上のユーザ・インターフェース部分４１０とを含む。ノード・アプリケーション４１２は、アプリケーション４０６をロード／アンロードし、ノード４０８のリソースを、アプリケーション４０６のユーザ・インターフェース部分４１０に割り振る役割を果たす。アプリケーション４０６はノード・アプリケーション内で動作し、図４Ａには単一のアプリケーション４０６を示しているが、ノード・アプリケーション４１２は複数のアプリケーションをサポートすることができ、それらのアプリケーション間でノード・リソースを割り振ることになる。
【００４２】
ノード・アプリケーション４１２は、先に述べたような様々な規格の実装を提供することによって、アプリケーション４０６のユーザ・インターフェース部分４１０に対するサポートを提供する。したがってノード・アプリケーション４１２は、限定はしないが、ＨＴＭＬ、ＸＭＬ、ＸＨＴＭＬ、ＣＳＳ、ＰＮＧ、ＭＮＧ、ＪＰＥＧ、ＭＰＥＧ、またはそれらの組み合わせなどのデータ・ドリブン・アプリケーションに対するサポートを提供する。ノード・アプリケーション４１２はまた、限定はしないが、ＤＯＭ、ＥＣＭＡＳｃｒｉｐｔなど、またはそれらの組み合わせを含むユーザ・インターフェース部分４１０の処理的側面に対するサポートも提供する。ノード・アプリケーション４１２を使用して、ユーザ・インターフェース部分４１０は、アプリケーション４０６用のユーザ・インターフェースを構築することができる。ユーザ・インターフェース部分４１０は、ノード・アプリケーションを使用して、プレゼンテーション関係の機能、ならびに処理関係の機能を実行する。
【００４３】
ノード・アプリケーション４１２はまた、リモート・プロシージャ・コール（ＲＰＣ）もサポートする。分散されたコンポーネント・オブジェクト・モデル（ＤＣＯＭ）およびシンプル・オブジェクト・アクセス・プロトコル（ＳＯＡＰ）は、ユーザ・インターフェース部分４１０がアプリケーション４０６のプロセス部分４０４に対する関数コール（function call）またはプロシージャ・コール４１４を作成する、ことをノード・アプリケーション４１２が許可する方法の例である。ノード・アプリケーション４１２はまた、スクリプトまたはコードのカプセル化に関する振る舞い（behaviors）などのカスタム・ローデッド・コードも提供する。
【００４４】
図４Ｂは、プロセス部分をサービス部分４２０、４２１、および４２２で置き換えたことを除いて図４Ａと同様である。この例では、ユーザ・インターフェース部分４１０は、適切なプロトコルを使用して、プロシージャ・コールおよび関数コールを作成することができる。しかし、このプロシージャ・コールおよび関数コールは、サービス部分４２０、４２１、および／または４２２に対して行われる。この例では、サービス部分４２２は、サービス部分４２０および４２１がサーバ４００上に常駐してそこで動作する間、ノード４０８上に常駐してそこで動作する。１つの例では、サービス部分は、例えば、データに関するタスクまたはプロシージャを実行することができるオブジェクトである。別の例では、サービス部分はＤＣＯＭ（分散コンポーネント・オブジェクト・モデル）オブジェクトであり、ノード・アプリケーションがＤＣＯＭをサポートするので、ユーザ・インターフェース４１０はサービス部分に対するコールを発行することができる。サービス部分は、ユーザ・インターフェース部分で作成することができ、またはサーバまたはノードの一部として既存であってもよい。
【００４５】
インターフェース部分およびプロセス部分を用いる図４Ａの状況で、以下の例を説明する。しかしこの例は、図４Ｂで説明したようなサービス部分を使用して適合させることができる。ノードの一機能は、番組コンテンツおよび番組ガイド・データをユーザに提供することである。ガイド・データは、現在示されている番組、ならびに将来示される番組の説明をユーザに提供する。ガイド・データには、限定はしないが、開始時刻および終了時刻、番組の長さ、番組の表題、番組格付け（program rating）などが含まれる。この例では、ガイド・データ・アプリケーションは、ガイド・データをユーザに提供または表示する役割を果たすことになる。
【００４６】
したがって、ガイド・データ・アプリケーションは、プロセス部分あるいは１つまたは複数のサービス部分と、サーバとノードにわたって分散するユーザ・インターフェース部分とを有する。ユーザがガイド・データの閲覧を望むとき、ガイド・データ・アプリケーションのユーザ・インターフェース部分は、ガイド・データ・アプリケーションのプロセス部分に対してコールを行うことになる。プロセス部分は、サーバ上にあるので、その要求を処理し、ガイド・データのデータベースからデータを取り出す。プロセス部分はまた、必要に応じてコンテンツの多重化、および他の処理も実行する。ユーザ・インターフェース部分に戻されるデータは、ノード・アプリケーションで提供されるサポートおよび規格を用いて、ユーザ・インターフェース部分によって表示される。
【００４７】
より具体的に、ノード・アプリケーションの観点に立って、ガイド・データ・アプリケーションのプロセス部分およびユーザ・インターフェース部分の分散を例示するため、ユーザがテレビジョン・アプリケーション内からテレビジョンを視聴していると想定する。あるとき、リモート制御装置上のガイド・ボタンがユーザによって押下される。テレビジョン・アプリケーション中のイベント・ハンドラが、ガイド・データ・アプリケーションを立ち上げる。ガイド・データ・アプリケーションのユーザ・インターフェース部分コンポーネントには、限定はしないが、ユーザ・インターフェースのＸＨＴＭＬ表現（representation）、ＸＨＴＭＬ内の広告用のプレースホルダエリア、ガイド・データ・グリッドを保持するＸＨＴＭＬ内のプレースホルダエリア、ガイド・データＸＨＴＭＬのプレゼンテーションおよびレイアウトを記述するＣＳＳ、およびユーザ対話を示すガイド・データの動的生成を制御する振る舞い（behavior）を含めることができる。
【００４８】
次に、ガイド・データ・グリッドは、ノード・アプリケーションが供給するＣＳＳを用いるガイド・データ・アプリケーションのユーザ・インターフェース部分により、スタイリングされ、ユーザに対してレンダリングされる。要求がサーバに送られて広告が取り出され、取り出された広告が、広告プレースホルダエリア内にレンダリングされる。現在時刻が内部から取り出され、ノードが現在同調しているチャネルも取り出される。次いで、照会（query）がサーバに対して発行されて、隣接するチャネルが取り出され、サーバに対してやはり照会が発行されて、プログラム名、日付、時刻、およびチャネル幅が取り出される。プログラム名、日付、時刻、およびチャネル幅は、グリッド内に表示するためにフォーマットされる。データを求めるこれらの要求は、アプリケーションのプロセス部分によって処理される。したがって、ガイド・データ・アプリケーションのプロセス部分は、各照会または要求を実行し、グリッド内に表示するためにガイド・データを処理およびフォーマットする。次に、フォーマットされたガイド・データはノードに返され、グリッド・プレースホルダエリアにレンダリングされる。ユーザがガイド・データをスクロールするとき、ユーザがスクロールしているチャネルについてのデータを取り出すために、追加の要求または照会がサーバに対して行われる。このようにして、アプリケーションはサーバとノードにわたって分散する。
【００４９】
中央サーバの観点からは、サーバとノードにわたってアプリケーションを分散させることは、サーバがノード・アプリケーションからの要求を受け取ったときに開始する。サーバがノードの要求するノード・アプリケーションを有している場合、サーバはノード・アプリケーションを返し、ノードはノード・アプリケーションをロードする。サーバがノードの要求するノード・アプリケーションを有さない場合、サーバは、適切なノード・アプリケーションを得るためにインターネットにアクセスすることができる。
【００５０】
機能アプリケーションがノード上で選択されたとき、サーバは、機能アプリケーションを求める要求を受け取る。サーバは、機能アプリケーションのユーザ・インターフェース部分を提供することによってノードに応答し、ノード・アプリケーションは、ユーザ・インターフェース部分をノード上にロードする。その間に、機能アプリケーションのプロセス部分がサーバ上にロードされる。別法として、サービス部分をサーバまたはノード上にロードすることもでき、あるいはサーバまたはノード上に既存であってもよい。
【００５１】
サーバとノード間でのアプリケーションの分散は、通信がプロセス部分またはサービス部分と、ユーザ・インターフェース部分の間で行われることを示す。概して、ユーザ・インターフェース部分は、データまたは他のコンテンツを求める要求を行うことになる。プロセス部分またはサービス部分はその要求を受け取り、その要求を処理して結果を生成し、その結果がノードに返され、ユーザ・インターフェース部分によって提示および／または処理される。プロセス部分またはサービス部分は、ユーザ・インターフェース部分の要求に応答して、データベースへのアクセス、インターネットからのコンテンツの取り出し、データのフォーマット、ファイルの保存、ファイルのオープン、ビデオ・ストリームの記録、プリファレンスの設定などを行う。例えば、アプリケーションのユーザ・インターフェース部分がガイド・データを要求する場合、要求を受け取るプロセス部分またはサービス部分は、ガイド・データを格納するデータベースにアクセスし、ガイド・データを取り出し、ガイド・データをフォーマットした後、その要求の結果をユーザ・インターフェース部分に返す。
【００５２】
各アプリケーションについてプロセス部分およびユーザ・インターフェース部分を提供し、またはアプリケーションのユーザ・インターフェース部分が使用する１つまたは複数のサービス部分を提供することにより、アプリケーション・ナビゲーション・アプリケーション、プリファレンス・アプリケーション、オーディオ／ビデオ・プレーヤ、デジタル・ビデオ・レコーダ、メディア・ジュークボックス、ウェブ・ブラウジング・アプリケーション、Ｅメール・アプリケーション、およびインスタント・メッセージング・アプリケーションなどの他の機能アプリケーションを同様に実装することができる。
【００５３】
これらのアプリケーションは、ノードおよび／またはサーバで利用可能なリソースを利用するために、実行時に動的に分散させることができる。特定のアプリケーションのより集中する局面（intensive aspects）、すなわち計算の集中する部分（computation intensive portions）はサーバ上に実装され、一方アプリケーションのプレゼンテーション部分または他の処理局面（processing aspects）は、ノード・アプリケーションによってロードされるユーザ・インターフェース部分内に実装することができる。サーバは、しばしばあたかもノードであるかのように使用されるので、アプリケーションの開発が同一となるように、ノード・アプリケーションのバージョンはサーバ上にも実装される。言い換えれば、プログラマはサーバ用の特別なケースのアプリケーションを開発する必要がなく、ユーザは、あたかもノード上でアプリケーションを実行しているかのように、サーバからアプリケーションを実行することができる。
【００５４】
本発明は、その精神または本質的な特徴から逸脱することなく、他の特定の形態で実施することができる。記載の実施形態は、すべての態様において、限定的なものではなく、単なる例とみなされるべきである。したがって本発明の範囲は、上記の説明によってではなく、特許請求の範囲によって示される。特許請求の範囲の均等の意味および範囲内にあるすべての変更は、特許請求の範囲内に包含されるべきである。
【図面の簡単な説明】
【００５５】
【図１】本発明に適した動作環境を提供する例示的システムを示す図である。
【図２】複数のコンテンツ・ソースから受け取るコンテンツをホーム・ネットワーク内の複数ノードに配布するサーバを有する例示的ホーム・ネットワークを示す図である。
【図３】ノード・アプリケーションの層状構造（tiered structure）を示すブロック図である。
【図４Ａ】コンテンツを配布するのに使用する分散アプリケーションの開発および実装を示すブロック図である。
【図４Ｂ】ユーザ・インターフェース部分が適宜ノードまたはサーバのどちらかにサービス部分を作成する、分散アプリケーションの開発および実装の別の例を示すブロック図である。
【符号の説明】
【００５６】
２０  従来型コンピュータ
２１    処理装置
２２    システム・メモリ
２３    システム・バス
２４    読取り専用メモリ
２５    ランダム・アクセス・メモリ
２６    基本入出力システム
２７    磁気ハード・ディスク・ドライブ
２９    取外し可能磁気ディスク
２８    磁気ディスク・ドライブ
３０    光ディスク・ドライブ
３１    取外し可能光ディスク
３２    ハード・ディスク・ドライブ・インターフェース
３３    磁気ディスク・ドライブ・インターフェース
３４    光ドライブ・インターフェース
３５    オペレーティング・システム
３６    １つまたは複数のアプリケーション・プログラム
３６ａ、３６ｂ    アプリケーション・プログラム
３７    他のプログラム・モジュール
３８    プログラムデータ
３９    磁気ハード・ディスク
４０    キーボード
４２    ポインティング・デバイス
４６    シリアル・ポート・インターフェース
４７    モニタ
４８    ビデオ・アダプタ
４９ａ、４９ｂ    リモート・コンピュータ
５０ａ、５０ｂ    メモリ記憶装置
５１    ローカルエリア・ネットワーク
５２    ワイドエリア・ネットワーク
５３    ネットワーク・インターフェースまたはアダプタ
５１    ローカル・ネットワーク
５４    モデム
２００    ネットワーク
２０１、４００    サーバ
２０２    記憶装置
２０６    サテライト・システム
２０８    インターネット
２１０    ケーブル・システム
２１２、２１８、２２４、４０８    ノード
２１６    テレビジョン、ディスプレイ装置
２２２    スピーカ
２２８    装置
３００、４１２    ノード・アプリケーション
３０２    プレゼンテーション・エンジン
３０４    互換層
３０６    動的リソース割振りモジュール
３０８    実行エンジン
４０４    プロセス部分
４０６    アプリケーション
４１０    ユーザ・インターフェース部分
４１４    関数コールまたはプロシージャ・コール
４２０、４２１、４２２    サービス部分
【図１】
2008159068.tif 000003
【図２】
2008159068.tif 000004
【図３】
2008159068.tif 000005
【図４Ａ】
2008159068.tif 000006
【図４Ｂ】
2008159068.tif 000007