(57)【要約】      （修正有）【課題】アプリケーションフレームワークで形を失ったＮ次元データを回復する。【解決手段】第１のメッセージソースで、第１のメッセージングレイヤから第１のデータフローの第１のメッセージを受け、第１のメッセージソースから、第１のデータメッセージ再構成可能なイテレータで包まれたデータを、第１のデータフローの第１のテーブルに提供し、第１のテーブルで、第１の圧迫されたビューを提供する。【選択図】図１
2008135035.tif 000002
【特許請求の範囲】
【請求項１】
第１のメッセージソースで、第１のメッセージングレイヤから第１のデータフローの第１のメッセージを受ける工程と、
第１のメッセージソースから、第１のデータメッセージ再構成可能なイテレータで包まれたデータを、第１のデータフローの第１のテーブルに提供する工程と、
第１のテーブルで、第１の圧迫されたビューを提供する工程と、を備える方法。
【請求項２】
第２のメッセージソースで、第２のメッセージングレイヤから第２のデータフローの第２のメッセージを受ける工程と、
第２のメッセージソースから、第２のデータメッセージ再構成可能なイテレータで包まれたデータを、第２のデータフローの第１のテーブルに提供する工程と、
第２のテーブルで、第２の圧迫されたビューを提供する工程と、
第１及び第２の圧迫されたビューから、融合ビューをつくる工程と、を備える請求項１に記載の方法。
【請求項３】
再構成可能なイテレータを介して、融合ビューをクライアントコード／ディスプレイに提供する工程を備える請求項２に記載の方法。
【請求項４】
第１のメッセージソースから、第１のデータメッセージ再構成可能なイテレータに包まれたデータを、主要なデータフローの第１のテーブルにキャッシングする工程と、
第２のメッセージソースから、第２のデータメッセージ再構成可能なイテレータに包まれたデータを、主要なデータフローの第２のテーブルにルーティングする工程と、
第２のテーブルで、第２の圧迫されたビューを提供する工程と、を備え、
第１のテーブルは、キャッシングテーブルであり、第２のテーブルは、ルーティンテーブルである、請求項１に記載の方法。
【請求項５】
再構成可能なイテレータを介して、第１及び第２の融合ビューをクライアントコード／ディスプレイに提供する工程を備える請求項４に記載の方法。
【請求項６】
第１のテーブルで、第２の圧迫されたビューを提供する工程を備える、請求項１に記載の方法。
【請求項７】
再構成可能なイテレータを介して、第１及び第２の融合ビューをクライアントコード／ディスプレイに提供する工程を備える請求項６に記載の方法。
【請求項８】
保存された実行可能な指示を有するメモリーと、
メモリーに接続され、プロセッサーによって実効される時、指示は、プロセッサーをして、第１のメッセージソースで、第１のメッセージングレイヤから第１のデータフローの第１のメッセージを受けさせ、第１のメッセージソースから、第１のデータメッセージ再構成可能なイテレータで包まれたデータを、第１のデータフローの第１のテーブルに提供させ、第１のテーブルで、第１の圧迫されたビューを提供させる、プロセッサーと、を備える装置。
【請求項９】
指示は、プロセッサーをして、第2のメッセージソースで、第２のメッセージングレイヤから第２のデータフローの第２のメッセージを受けさせ、第２のメッセージソースから、第２のデータメッセージ再構成可能なイテレータで包まれたデータを、第２のデータフローの第１のテーブルに提供させ、第２のテーブルで、第２の圧迫されたビューを提供させ、第１及び第２の圧迫されたビューから、融合ビューをつくらせる、請求項８に記載の装置。
【請求項１０】
指示は、プロセッサーをして、再構成可能なイテレータを介して、融合ビューをクライアントコード／ディスプレイに提供させる、請求項９に記載の装置。
【請求項１１】
第１のテーブルは、キャッシングテーブルであり、第２のテーブルは、ルーティンテーブルであり、
指示は、プロセッサーをして、第１のメッセージソースから、第１のデータメッセージ再構成可能なイテレータに包まれたデータを、主要なデータフローの第１のテーブルにキャッシングさせ、第２のメッセージソースから、第２のデータメッセージ再構成可能なイテレータに包まれたデータを、主要なデータフローの第２のテーブルにルーティングさせ、第２のテーブルで、第２の圧迫されたビューを提供させる、請求項８に記載の装置。
【請求項１２】
指示は、プロセッサーをして、再構成可能なイテレータを介して、第１及び第２の融合ビューをクライアントコード／ディスプレイに提供させる、請求項１１に記載の装置。
【請求項１３】
指示は、プロセッサーをして、第１のテーブルで、第２の圧迫されたビューを提供させる、請求項８に記載の装置。
【請求項１４】
指示は、プロセッサーをして、再構成可能なイテレータを介して、第１及び第２の融合ビューをクライアントコード／ディスプレイに提供させる、請求項１３に記載の装置。
【請求項１５】
ネットワークソケットと、
保存された実行可能な指示を有するメモリーと、
メモリーに接続され、プロセッサーによって実効される時、指示は、プロセッサーをして、第１のメッセージソースで、第１のメッセージングレイヤから第１のデータフローの第１のメッセージを受けさせ、第１のメッセージソースから、第１のデータメッセージ再構成可能なイテレータで包まれたデータを、第１のデータフローの第１のテーブルに提供させ、第１のテーブルで、第１の圧迫されたビューを提供させる、プロセッサーと、を備えるシステム。
【請求項１６】
指示は、プロセッサーをして、第２のメッセージソースで、第２のメッセージングレイヤから第２のデータフローの第２のメッセージを受けさせ、第２のメッセージソースから、第２のデータメッセージ再構成可能なイテレータで包まれたデータを、第２のデータフローの第１のテーブルに提供させ、第２のテーブルで、第２の圧迫されたビューを提供させ、第１及び第２の圧迫されたビューから、融合ビューをつくらせる、請求項１５に記載のシステム。
【請求項１７】
プロセッサーに接続されたクライアントコード／ディスプレイを備え、
指示は、プロセッサーをして、再構成可能なイテレータを介して、融合ビューをクライアントコード／ディスプレイに提供させる、請求項１５に記載のシステム。
【請求項１８】
第１のテーブルは、キャッシングテーブルであり、第２のテーブルは、ルーティンテーブルであり、
指示は、プロセッサーをして、第１のメッセージソースから、第１のデータメッセージ再構成可能なイテレータに包まれたデータを、主要なデータフローの第１のテーブルにキャッシングさせ、第２のメッセージソースから、第２のデータメッセージ再構成可能なイテレータに包まれたデータを、主要なデータフローの第２のテーブルにルーティングさせ、第２のテーブルで、第２の圧迫されたビューを提供させる、請求項１５に記載のシステム。
【請求項１９】
プロセッサーに接続されたクライアントコード／ディスプレイを備え、
指示は、プロセッサーをして、再構成可能なイテレータを介して、第１及び第２の融合ビューをクライアントコード／ディスプレイに提供させる、請求項１８に記載のシステム。
【請求項２０】
指示は、プロセッサーをして、第１のテーブルで、第２の圧迫されたビューを提供させる、請求項１９に記載のシステム。
【請求項２１】
プロセッサーに接続されたクライアントコード／ディスプレイを備え、
指示は、プロセッサーをして、再構成可能なイテレータを介して、第１及び第２の融合ビューをクライアントコード／ディスプレイに提供させる、請求項２０に記載のシステム。
【請求項２２】
保存された指示を有するコンピュータリーダブル媒体を備え、
プロセッサーによって実効される時、指示は、プロセッサーをして、第１のメッセージソースで、第１のメッセージングレイヤから第１のデータフローの第１のメッセージを受けさせ、第１のメッセージソースから、第１のデータメッセージ再構成可能なイテレータで包まれたデータを、第１のデータフローの第１のテーブルに提供させ、第１のテーブルで、第１の圧迫されたビューを提供させる、物品。
【請求項２３】
指示は、プロセッサーをして、第2のメッセージソースで、第２のメッセージングレイヤから第２のデータフローの第２のメッセージを受けさせ、第２のメッセージソースから、第２のデータメッセージ再構成可能なイテレータで包まれたデータを、第２のデータフローの第１のテーブルに提供させ、第２のテーブルで、第２の圧迫されたビューを提供させ、第１及び第２の圧迫されたビューから、融合ビューをつくらせる、請求項２２に記載の物品。
【請求項２４】
指示は、プロセッサーをして、再構成可能なイテレータを介して、融合ビューをクライアントコード／ディスプレイに提供させる、請求項２３に記載の物品。
【請求項２５】
指示は、プロセッサーをして、第１のメッセージソースから、第１のデータメッセージ再構成可能なイテレータに包まれたデータを、主要なデータフローの第１のテーブルにキャッシングさせ、第２のメッセージソースから、第２のデータメッセージ再構成可能なイテレータに包まれたデータを、主要なデータフローの第２のテーブルにルーティングさせ、第２のテーブルで、第２の圧迫されたビューを提供させる、請求項２２に記載の物品。
【請求項２６】
指示は、プロセッサーをして、再構成可能なイテレータを介して、第１及び第２の融合ビューをクライアントコード／ディスプレイに提供させる、請求項２５に記載の物品。
【請求項２７】
指示は、プロセッサーをして、第１のテーブルで、第２の圧迫されたビューを提供させる、請求項２２に記載の物品。
【請求項２８】
指示は、プロセッサーをして、再構成可能なイテレータを介して、第１及び第２の融合ビューをクライアントコード／ディスプレイに提供させる、請求項２７に記載の物品。
【請求項２９】
指示は、プロセッサーをして、再構成可能なイテレータを介して、第１及び第２の融合ビューをクライアントコード／ディスプレイに提供させる、請求項２８に記載の物品。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、デジタルデータ処理に関し、より詳細には、再構成可能なオブジェクトと融合リアルタイムデータを用いるアプリケーションフレームワークに関する。
【背景技術】
【０００２】
アプリケーション開発者がアプリケーションを造って、ソフトウェアを開発することに対する標準的なフレームワークを採用して、コンピュータアプリケーションプログラムはますます大きくて複雑になっている。一般的に、ソフトウェア開発者によって開発されるコードは、全体的なアプリケーション機能の小さな部分だけを作る。アプリケーションフレームワークは、予めコード化された解決案の大きな量を一般のプログラム条件に提供して、フレームワークのために特に記述されるプログラムの実行を管理するために既存のオペレーティングシステムに加えられることができるソフトウェア構成要素である。対応して、コードがアプリケーションフレームワークによって提供されるサービスを利用する範囲は、システムの活動において、全体的なパフォーマンスにきわめて重大になりました。しばしば、しかし、フレームワークが非効率的に、又は、誤って使われる。
【０００３】
アプリケーションフレームワークも、再構成可能なデザインをソフトウェアシステム（又はサブシステム）に提供する。アプリケーションフレームワークは、一組の抽象クラスと彼らの例が1種類の特定のソフトウェアのために共同で働く方法として表されるかもしれません。アプリケーションフレームワークはオブジェクト指向デザインであって、多分オブジェクト指向言語で実装される。例えば、アプリケーションフレームワークは、特定のアプリケーション、異なるプログラミング言語と目標機械のためのコンパイラ、財政的モデルアプリケーション又は意志決定支援システムを構築することに向けられるかもしれません。アプリケーションフレームワークは、特定の機能のための脚色が製作されなければならない建築オブジェクトで、場所を定める。オブジェクト指向環境では、アプリケーションフレームワークは、抽象的で具体的なクラスを含む。そのようなフレームワークの例示は、既存のクラスを組み立てて、下位分類することを含む。良いアプリケーションフレームワークで、開発者は手元にそれの後で動作しているコードでよりむしろビジネスに特有の問題に関して集中することにより多くの時間を費やすことができる。
【０００４】
アプリケーションフレームワークによって提供される予めコード化された解決は、ユーザインタフェース、データアクセス、暗号、ウェブアプリケーション開発、数のアルゴリズムとネットワーク通信の発達を支えるために、フレームワークのクラスライブラリを作る。クラスライブラリの機能は、フレームワークのために開発されるカスタムアプリケーションプログラムを生じるためにソフトウェア開発者によって作成されるカスタムコードと結合される。
【０００５】
これらのアプリケーションは、ソフトウェアで、プログラムのランタイム条件を管理する環境を実行する。フレームワークの一部を形成するランタイムシステムは、アプリケーションバーチャルマシンのアピアランスを提供して、ソフトウェア開発者は、プログラムコードを均一的に実行する特定の中央演算処理装置（CPU）能力を考慮する必要がない。クラスライブラリとランタイム条件は共にフレームワークを構成している。フレームワークは、コンピュータアプリケーションの開発を単純化するために、そして、セキュリティ脅威に関してアプリケーションとコンピュータの脆弱さを下げるための、ツールである。
【発明の開示】
【発明が解決しようとする課題】
【０００６】
企業ソフトウェアは、市販ソフト（例えば高度な金融システム、人気があるウェブサイトと大規模な管理と管理システム）を含む。モデム事業ソフトウェアシステムは、通常、２つの主要なフレームワークが現在ある標準化されたマルチユーザーアプリケーションサーバソフトウェアに基づく：Java（登録商標）を用いたJ2EE（Java（登録商標） 2プラットホーム、エンタープライズ・エディション）フレームワークとマイクロソフトによる.NETフレームワーク。両方とも、原価と大規模なソフトウェア開発のための発展時間を減らすことを目的としている。
【０００７】
アプリケーションフレームワークは、いろいろなライブラリーを通ってこれらのゴールを達成するために、必要な機能を提供する。アプリケーションフレームワークの中心デザイン原理は、Ｎ次元データのキャッシングを取り扱うことになっている。特定の実装例では、たとえば、２次元の（2D）データは、終末過程に必要なサービスから受け取られて、アプリケーションフレームワークの前後関係の範囲内で、その長方形の形を失う。データの長方形の形は、それから、クライアントアプリケーションに届けられる前に、トップレベルのライブラリーで回復しなければなりません。
【０００８】
多くのアプリケーションで繰り返される問題は、たとえば、高水準ビューから低レベル（時々、生の２進数）構築物に到着しているデータを見る必要である。そして、まるでそれがテーブルの表または内容であったように、データを見る。データのこの長方形の形は、行と列（コラム）から成って、人間と機械が大きなデータセットを見る非常に一般の方法である。
【課題を解決するための手段】
【０００９】
本発明に係る方法は、第１のメッセージソースで、第１のメッセージングレイヤから第１のデータフローの第１のメッセージを受ける工程と、第１のメッセージソースから、第１のデータメッセージ再構成可能なイテレータで包まれたデータを、第１のデータフローの第１のテーブルに提供する工程と、第１のテーブルで、第１の圧迫されたビューを提供する工程と、を備える。
【発明を実施するための最良の形態】
【００１０】
図１は、ネットワーク１０２がサーバー１０４と一つ以上のクライアントシステム１０６、１０８、１１０を関連づけるクライアント／サーバーシステム１００を例示している。サーバー１０４は、ここに記述される実施形態に従って装置、プログラム又は方法を実装することにふさわしいプログラム可能なデータ処理システム又はコンピュータである。サーバー１０４は、ユーザーのリクエストを処理する１以上のランタイムシステムのためのコア作動環境を提供している。サーバー１０４は、プロセッサー１１２とメモリー１１４を含んでいる。サーバーは、グラフィカル・ユーザ・インタフェース（ＧＵＩ）ビュー部分１３０を含むかもしれない。メモリー１１４は、オペレーティングシステムと、ネットワーク１０２について通信するための伝送制御プロトコル／インターネット・プロトコル（ＴＣＰ／ＩＰ）スタックと、プロセッサー１１２で実行される機械実行可能な指示とを保存するのに用いられることができる。若干の実装例では、サーバー１０４は、複数のプロセッサーを含むことができ、そして、それぞれは、機械実行可能な指示を実行するのに用いられることができる。メモリー１１４は、サーバーで１０４を実行している複数のオペレーティングシステムプロセスによってアクセスできる共有メモリー領域を含むことができる。クライアント／サーバーシステム１００で使われるために適当なサーバー１０４の例は、Ｊａｖａ（登録商標）  ２  プラットホーム又はＮＥＴプラットホーム互換のサーバーである。
【００１１】
クライアントシステム１０６に関してここで示されるが、クライアントシステム１０６、１０８、１１０の各々は、プロセッサー１２２と、メモリー１２４とを含むかもしれません。クライアントシステム１０６、１０８、１１０は、ここに記述される実施形態に従って装置、プログラム又は方法を実装するにふさわしいプログラム可能なデータ処理システム又はコンピュータであるかもしれない。メモリー１２４は、オペレーティングシステムと、ネットワーク１０２について通信するためのＴＣＰ／ＩＰスタックと、プロセッサー１２２によって実行される機械実行可能な指示とを保存するのに用いられることができる。幾つかの例では、クライアント１０６は、複数のプロセッサーを含むことができ、それぞれは、機械実行可能な指示を実行するのに用いられることができる。メモリー１２４は、クライアント１０６で実行している複数のオペレーティングシステムプロセスによってアクセスできる共有メモリー領域を含むことができる。
【００１２】
クライアントシステム１０６、１０８、１１０は、複数のアプリケーション又はアプリケーションインターフェースを実行することができる。アプリケーション又はアプリケーションインターフェースの各々の例は、ユーザーセッションを構成することができる。各ユーザーセッションは、サーバー１０４で処理される一つ以上のリクエストを発生することができる。リクエストは、サーバー１０４又はいずれかのクライアント１０６、１０８、１１０において、ランタイムシステム１１６、１２６（例えばバーチャルマシン）上で実行される指示又はコードを含むことができる。ランタイムシステム１１６，１２６は、ユーザー・リクエストでの指示又はコードを実行して、これらのコードのためのランタイムサービスを提供するコード実行環境である。コアランタイムサービスは、プロセス、スレッド、及び、メモリー管理（例えば、オブジェクトを共有しているサーバーメモリー１１４内のオブジェクトを配置すること、オブジェクトを参照すること、及び、オブジェクトをガーベッジコレクションすること）のような機能を含むことができる。
強化されたランタイムサービスは、エラーの取扱、及び、安全性や連結性の確立のような機能を含むことができる。リアルタイムデータフロー１１８，１２０は、ネットワーク１０２から、クライアントシステム１０６，１０８，１１０のＧＵＩディスプレイ部１２８、及び／又は、サーバー１０４のＧＵＩディスプレイ部１３０までを成り立たせる、メッセージソース、テーブル、及びビューリアルタイムを備えている。リアルタイムデータフロー１１８、１２０のいくつかの実施例は、図２乃至５の中で以下に更に詳細に記述される。
【００１３】
ランタイムシステム１１６は、マイクロソフト（登録商標）によるＮＥＴフレームワークとして、又は、Ｊａｖａ（登録商標）を用いたＪ２ＥＥ（Ｊａｖａ（登録商標）  ２  プラットホーム）フレームワークとして実装されるかもしれない。
【００１４】
１つの実施例において、ランタイムシステム１１６は、ＮＥＴフレームワークとして実装されるかもしれない。ＮＥＴフレームワークは、マイクロソフト（登録商標）ウインドウズ（登録商標）の管理されたプログラミングモデルから成り、又、マイクロソフトＮＥＴフレームワーク３．０、ＮＥＴフレームワーク２．０、ウインドウズ・プレゼンテーション・ファウンデーション、ウインドウズ・コミュニケーション・ファウンデーション、及び、ウインドウズ・ワークフロー・ファウンデーションから成るかもしれない。ＮＥＴフレームワークのためのコードは、以下の、ビジュアルベーシック、Ｃ＃ｔｏＣ＋＋の言語の一つ以上から成るかもしれない。ＮＥＴフレームワークは、ＴＯＣでサンプルノードを開くことによって、テクノロジーによって組織化されたサンプルのローケーティングとビューイングとを可能にする。「テクノロジーサンプルズ」サブノードは、通常簡単であり、テクノロジーの特定面のまわりでフォーカスされたサンプルから成るかもしれません。「アプリケーションサンプルズ」サブノードは、豊かな現実のアプリケーションを造るためのアプリケーションプログラミングインタフェース（API）を使用する方法をデモンストレートする、より大きくてより複雑なアプリケーションであるサンプルから成るかもしれません。
【００１５】
ＮＥＴフレームワークは、ユーザー、システム、及び、装置を接続するためのソフトウェア・コンポーネンツを提供する。ＮＥＴフレームワークは、クライアント１０６、１０８、１１０、サーバー１０４、及び、デベロッパツールにわたる。ＮＥＴフレームワークは、ソフトウェア開発財団をつくっているシステムを操作しているサーバー１０４の一体的な部分として実装されるかもしれません。ＮＥＴフレームワークは、１又は１以上のインターネット（例えば、ＴＣＰ／ＩＰ）プロトコル、メッセージフォーマッティング基準、及び、アプリケーションと構成要素との相互動作性に基づいた統一オブジェクト指向開発環境を提供する。ディベロッパーは、イントラネットとエクストラネット環境又はインターネットの世界的なネットワークの範囲内で、相互に連結したＮＥＴアプリケーションを作成して配備する、ソフトウェア開発ツールのＮＥＴフレームワークを使用するかもしれません。
【００１６】
１つの実施例において、ランタイムシステム１１６は、Ｊａｖａ（登録商標）−ベースド１２ＥＥ（Ｊａｖａ（登録商標）  ２  プラットホーム）フレームワークバーチャルマシン（ＶＭ）として実装される。ＶＭは、本当の機械又はプロセッサーのような、命令セット、一組のレジスター、スタック、スタック、ヒープ、及び、方法域を含むことができる抽象的な機械である。ＶＭは、基本的に、プログラムコードと、プログラムコードが実行されることになっている実際のプロセッサー又はハードウェアプラットホームとの間のインターフェースの働きをする。プログラムコードは、ＶＭのリソースを操作するようにというＶＭ命令セットからの指示を含む。ＶＭは、ＶＭがランして、プログラムコードの指示を実効するため、そのプロセッサー又はハードウェアプラットホームのリソースを操作するプロセッサー又はハードウェアプラットホームへの指示を実行する。このように、同じプログラムコードは、各プロセッサー又はハードウェアプラットホームのために書き直されることなく又は再コンパイルされることなく、複数のプロセッサー又はハードウェアプラットホームで実行されることができる。その代わりに、ＶＭは、各々のプロセッサー又はハードウェアプラットホームのために実行され、そして、同じプログラムコードは、各ＶＭで実行される。ＶＭの実装は、プロセッサー又はハードウェアプラットホームによって認められるコードであり得る。代替として、ＶＭの実装は、プロセッサー１１２に直接組み入れられるコードであり得る。
【００１７】
例えば、Ｊａｖａ（登録商標）ソースプログラムは、バイトコードとして知られているプログラムコードにコンパイルされることができる。バイトコードは、あらゆるプロセッサー又はプラットホームの上で動いているＪａｖａ（登録商標）バーチャルマシンで実行されることができる。Ｊａｖａ（登録商標）バーチャルマシンは、一度にバイトコード指示を解釈することができ、あるいは、バイトコードは、ジャストインタイム（ＪＩＴ）コンパイラを使用している本当のプロセッサーまたはプラットホームのためにさらにコンパイルされることができる。
【００１８】
Ｊａｖａ（登録商標）ＶＭに加えて、ＶＭの他の例は、アドバンスド・ビジネス・アプリケーション・プログラミング言語（ＡＢＡＰ）ＶＭと、コモン・言語ランタイム（ＣＬＲ）ＶＭと、を含む。ＡＢＡＰは、ＳＡＰ  Ｒ／３システム用のアプリケーションを開発するためのプログラミング言語であり、これは、ＳＡＰによって開発されて広くインストールされたビジネス・アプリケーション・システムである。コモン言語ランタイムは、レドモンド、ワッシュのマイクロソフト（登録商標）コーポレーションにより開発され、管理されたコード実行環境である。その簡易さのため、このスペシフィケーションでの議論は、バーチャルマシンに収束しているが、ここに記述される技術が他のタイプのランタイムシステムでも使われることが理解されるべきである。
【００１９】
実行時ランタイムシステム１１６，１２６は、ローカルデータ・エンティティを形成して参照する。ローカルエンティティの多くの異なるタイプは、クラスの例、クラスのランタイム表現、及び、クラスランタイム表現をロードするのに用いられるクラスローダーである、例えば、ストリング、定数と変数、及び、オブジェクトを含み、構築される。
【００２０】
ローカルエンティティがランタイムシステム１１６、１２６によりもはや用いられないとき、ローカルエンティティを保存するのに用いられているメモリーは、再利用される必要があり、すなわち、自由にされるか、さもなければリリースされて、利用できるメモリーのプールに戻され、その結果、メモリーは、新しいデータエンティティを保存するのに用いられる。ある環境では、開発者は、ローカルエンティティ（例えば、記憶のフリーな指定された部分にはっきりと機能を呼ぶことによって）に割り当てたメモリーを明示的に再利用しなければならない。他の環境では、メモリーの再利用は、ガーベッジコレクションとして知られている技術によって取り扱われる。
【００２１】
ガーベッジコレクションは、もはや「ライブ」（すなわち、例えば、少しの現在リファレンスをつけられたオブジェクトまたは実体からも届かないことで測定されて、もはや使われていない）でないメモリーアロケータにより分散されたメモリーのブロックを特定して再利用するようになっているプロセスである。ガーベッジコレクションは、時々、ユーザープログラムによる明示的なタスクとしてよりも、むしろランタイムシステムによるバックグラウンドタスクとして取り扱われることができる。ガーベッジコレクションは、インラインされたタスクとして取り扱われることもできる。
【００２２】
ガーベッジコレクションを通してメモリーを再利用するシステムは、ユーザーに再利用を任せるシステムより勝るいくつかの利点を提供する。特に、ガーベッジコレクションを使うシステムは、懸垂ポインターやメモリー漏洩のような共通のプログラミング問題を取り除くのを助けるため、より信頼できる傾向がある。しかしながら、少なくともガーベッジコレクションプロセスの若干の部分の間、メモリーへのアクセスは、典型的に制限されると共に、ランタイムシステムは、時々停止しなければならないため、ガーベッジに関連するある程度のコストがかかる。それでも、ガーベッジコレクションは、ランタイムシステムで記憶を取り戻すために多用され、そして、多くの既知のガーベッジコレクションアルゴリズム（例えば、参照カウンティング、マーク−スイープ、マーク−コンパクト、及び、コピーアルゴリズム）がある。
【００２３】
複数のランタイムシステム１１６、１２６は、サーバー１０４環境及び／又はクライアントシステム１０６，１０８，１１０のパフォーマンスとスケーラビリティを増やすために、並列に実行されることができる。複数のランタイムシステム１１６、１２６が並列に実行されるとき、ランタイムシステム１１６、１２６間のエンティティでシェアすることは、リソース（例えば、メモリー）や時間消費を減らすことができる。エンティティを共有するのに用いることができる複数の既知の技術があり、そして、多くの異なる種類のエンティティは、シェアすることができる（例えば、ストリング、定数、変数、オブジェクト例、クラスランタイム表現とクラスローダーを含む）。
【００２４】
シェアされたエンティティの有効期間は、ローカルエンティティの有効期間とは異なっており、シェアされたエンティティを保存するのに用いられている記憶を再利用するために、標準的なガーベッジコレクション技術を使用することはできない。例えば、シェアされたエンティティのガーベッジコレクションのためのローカルガーベッジコレクション・プロセスを使用することはできない。ローカルメモリー（例えば、1つのランタイムシステムと関連したローカルエンティティを保存するのに用いられるメモリー）を再利用するのに通常用いられる、ローカルガーベッジコレクション・プロセスは、そのランタイムシステムがデータエンティティにもはやリファレンスをつけないデータエンティティをガーベッジコレクトするように典型的に構成されている。しかしながら、他のランタイムシステムがシェアされたエンティティにまだリファレンスをつけているので、1つのランタイムシステムがシェアされたエンティティにもはやリファレンスをつけないとき、シェアされたエンティティは、必ずしもガーベッジコレクトされるべきではない。シェアされたエンティティのガーベッジコレクションは、参加しているランタイムシステム１１６、１２６の間で協働関係を必要とする。
【００２５】
ＮＥＴフレームワークランタイムシステム１２６の範囲内で動いているクライアントシステム１０６、１０８、１１０のために、データは、（例えば、システム又は単純なオブジェクトアクセスプロトコル［ＳＯＡＰ］サービスをパブリッシュしてサブスクライブする）バック−エンドサービスからフロント−エンドグリッド又はＧＵＩディスプレイ１２８に送られ、ここで、データは、エンド−ユーザーにディスプレイされる。例えば、ビジネスロジックの後に、フォーマット化することと他の処理がデータに適用される。例えば、データは、ネットワーク１０２に送る前に、ＳＯＡＰ、ウェブサービス・リクエストに情報をエンコードしてメッセージに応答するために用いられる軽量・拡張可能・マークアップ・言語（ＸＭＬ）ベースド・メッセージ・プロトコルから送られる。ＳＯＡＰメッセージは、どんなオペレーティングシステム又はプロトコルからでも独立であり、とりわけＳＭＴＰ、ＭＩＭＥ、及び、ＨＴＴＰを含むいろいろなインターネット・プロトコルを使って輸送される。
【００２６】
システム１００、及び／又は、サーバー１０４、及び／又は、クライアントシステム１０６、１０８、１１０のためのアプリケーションフレームワークは、ネットワーク１０２を跨いで、リアルタイムＮ次元データのメッセージング、キャッシング、及びルーティングをサポートするアプリケーションを備えている。例えば、メッセージングは、ネットワーク１０２を跨いで、サーバー１０４と一つ以上のクライアントシステム１０６、１０８、１１０の間でなされる。最適化され拡張されたアプリケーションフレームワークは、適当なアプリケーションフレームワークをプロセス２Ｄデータに提供する。しかし、実施の形態は、この文脈に制限されない。
【００２７】
特定の実施の形態では、アプリケーションフレームワークは、メッセージングレイヤーのようなバック−エンドサービスから、２Ｄデータを受け取る。プロセスでは、２Ｄは、アプリケーションフレームワークの前後関係の範囲内で、その長方形の形状（例えば、図７とデータ７０２−１，７０２−２の将来の説明を参照）を失う。データの長方形の形状は、それから、クライアントシステム１０６、１０８、１１０のどれにでも届けられる前に、トップレベルのライブラリーで回復されなければならない。しかし、Ｎ次元データのキャッシングをサポートするために、アプリケーションフレームワークの範囲内で使用されるデータ構造は、２Ｄデータケースのために最適でないかもしない。したがって、拡張アプリケーションフレームワークは、アプリケーションフレームワークのコンテキストの範囲内でデータの長方形の形状を元に戻すのに適しているかもしれない。拡張アプリケーションフレームワークも、サーバー１０４でメッセージングソースからクライアントシステム１０６、１０８、１１０まで、全てのデータフロー１１８、１２０を通して、データの長方形の形を維持できる。拡張アプリケーションフレームワークは、データの形状が固定されるのを可能にして、その結果、信頼性をもって内部のデータ構造をできるだけ効率的にすることができる。この説明を通して、拡張アプリケーションフレームワークとアプリケーションフレームワークは、通常、アプリケーションフレームワークと称される。
【００２８】
1つの実施形態において、開発者は、クライアントシステム１０６、１０８、１１０のＧＵＩディスプレイ１２８の部分及び／又はサーバー１０４のＧＵＩディスプレイ１３０の部分にストレイトであるネットワーク１０２ソケットからセットアップリアルタイムデータフロー１１８、１２０へのアプリケーションフレームワークによって提供される資ソースを使用することができる。ネットワークソケットは、ネットワーク１０２から新しいインカミング接続のためのコンピュータ通信終点である。クライアントシステム１０６、１０８、１１０とサーバー１０４のネットワークソケットは、ネットワーク１０２からのインカミング接続を受け入れ、接続を確定させるためにネットワーク１０２のより低レベルトラフィックを処理して、それから、読込又は書込みのために、新しい接続を分岐する。
サーバー１０４のソケットは、ネットワーク１０２からの他のインカミング接続を受け入れに継続して利用できる。
【００２９】
1つの実施形態において、アプリケーションフレームワークは、既に提供された幾つかのリアルタイムデータフロー１１８、１２０の構成要素で、できるだけ柔軟で適合できるジェネリックレイヤフレームワークを使用することができる。一般に、これらのリアルタイムデータフロー１１８、１２０は、データのテーブルとこれらのテーブルへのビューで、構造のようなデータベースと協働したデータフローに似ているかもしれない。データフローは、アプリケーションフレームワークによって、結合され、又は融合（融合、merge）されることができる。例えば、アプリケーションフレームワークは、複数のソースから単一のコヒーレントなロジカル長方形ビューに複数のソースへのリアルタイムデータフロー１１８、１２０に結合するために、融合（融合、merger）又は内的な結合構成要素を提供することができる。
【００３０】
図２は、アプリケーションフレームワークのランタイムシステム１１６、１２６でのデータフロー２０２の1つの実施形態を例示しているブロック図２００である。1つの実施形態において、データフロー２０２は、ランタイムシステム１１６、１２６のリアルタイムデータフローである。データフロー２０２のアプリケーションフレームワーク構造上の構成要素は、メッセージソース２０４、テーブル２０６、及びビュー２０８から成る。データフロー２０２は、メッセージングレイヤ２１２とクライアントコード／ディスプレイ２１０との間でセットアップされ、そして、それらは、アプリケーションフレームワークの外にある。アプリケーションフレームワークの出力は、クライアントコード／ディスプレイ２１０にもたらされ、それは、例えば、アプリケーションフレームワークの外側で、ディスプレイ又はコンピュータプロセスを備えていてもよい。クライアントコード／ディスプレイ２１０は、アプリケーションフレームワークの範囲内で形成されるバーチャル長方形のデータのビューイングを可能にする。例えば、メッセージングレイヤ２１２から受けたデータは、その長方形の形に失わせるので、データフロー２０２は、データが長方形に見えて、クライアントコード／ディスプレイ２１０に長方形の形の幻想を与えるようなバーチャル方法で長方形の形を元に戻す。下記のように、他のデータフローは、ランタイムシステム１１６、１２６のアプリケーションフレームワークで実行されるかもしれません。したがって、実施の形態はこの文脈において制限されない。
【００３１】
データフロー２０２の最初の構成要素は、メッセージソース２０４である。メッセージソース２０４は、メッセージングレイヤ２１２として示される下レイヤのメッセージングメカニズム（例えば、ＸＭＬ、リアルタイムデータシステムからの1バイト配列などのためのＸＭＬリーダー）から情報またはデータを受け取る。メッセージングレイヤ２１２からの情報は、再構成可能なオブジェクト２１４−１の形態でメッセージソース２０４へ移される。メッセージングレイヤ２１２から来るあらゆるメッセージのための新しいオブジェクトを形成するよりは、むしろ、同じ再構成可能なオブジェクト２１２−１は、再利用されることができる。再構成可能なオブジェクト２１２−１は、その内部の内容をその構成概念のもう一つの例のように見えるために変更しておくことができる構成概念と考えられるかもしれない。したがって、それが完全に異なるオブジェクトのようにふるまうように、再構成可能なオブジェクト２１４−１は、その内部のステートを変えておくかもしれません。なぜなら、再構成可能なオブジェクト２１２−１は、もう一つのオブジェクトの創造を防ぐ再初期化された内的なコンテントを持つことができる。したがって、ガーベージコレクションプロセスは、より少ない仕事をし、データフロー２０２の全体的なパフォーマンスは、向上する。
【００３２】
メッセージソースは、メッセージングレイヤ２１２から再構成可能なオブジェクト２１２−１を受けて、再構成可能なオブジェクト２１２−２をテーブル２０６へ移す。メッセージソース２０４は、特定のクライアントコード／ディスプレイ２１０実装（例えば、リアルタイム、パブリッシュとサブスクライブ、ＳＯＡＰなど）と、データフロー２１０との間のアダプターとしての働きをする。メッセージソース２０４は、データフロー２０２、再構成可能なオブジェクト構成２１２−１、２１２−３、２１２−４を、クライアントコード／ディスプレイ２１０からの環境採光性可能オブジェクト構成に（又はから）マップする。アプリケーションフレームワークのリアルタイムアップデートは、キーとして表され、その結果、メッセージソース２０４は、サブスクリプションのためにキーをソフトウェア開発プロセス表現にマップし、データアップデートのキーへのサブスクリプションのためにソフトウェア開発プロセス表現をマップする。
【００３３】
データフロー２０２の次の構成要素は、テーブル206であり、そして、それは、アプリケーションフレームワークのデータフロー２０２の中心的な構造エンティティである。テーブルは、メッセージソース２０４から再構成可能なオブジェクト２１２−２を受け取って、再構成可能なオブジェクト２１２−３をビュー２０８へ移す。テーブル２０６は、一組のデータエレメント（値）で、横列と垂直コラムのモデルを使って組織される。コラムは、名前によって特定され、そして、列は、キャンディデートキーとして特定された特定のコラムサブセットで現れている値によって特定される。テーブル２０６は、例えば、関係のテーブルを照会することができる。テーブル２０６は、指定された数のコラムを持っているが、多くの列を持つことができる。実際のデータ列に加えて、テーブル２０６は、テーブル２０６の上に又は特定のコラム内の値の上に置かれた制限のような二次的情報と協働されることができる。テーブル２０６に含まれるデータは、データベースにオブジェクト理的に保管される必要はない。1つの実施形態において、テーブル２０６は、後の参考のためにデータをキャッシュすることなく、データを送る。
【００３４】
テーブル２０６は、データフロー２０２の全てのビューの全てのサブスクリプション（以下に更に詳細で記述されるものとしてのキーとコラム）の結合を維持して、テーブル２０６にインカミングアップデートの構造を押しつける。
テーブル２０６は、クライアントコード／ディスプレイ２１０のアップデートのどの部分がその発送のためのみに実際に登録したかについて決定する役割を果たす。以下に更に詳細に記述されるように、テーブル２０６は、キャッシングまたは非キャッシングであり得る。
【００３５】
データフロー２０２の最終的な構成要素は、ビュー２０８である。ビューは、テーブル２０６から再構成可能なオブジェクト２１２−３を受け取って、再構成可能なオブジェクト212-4をアプリケーションフレームワークの外側のクライアントコード／ディスプレイ２１０へ移す。アプリケーションフレームワークのランタイムシステム１１６内のデータフロー２０２のビュー２０８は、データが再構成可能なオブジェクト２１２−２、２１２−３、２１２−４の形でデータフロー２０２を通して伝播するため、データを制限するか、変換するか、濃縮するのに用いられることができる流れ構成概念である。図２の中で例示されるビュー２０８は、最も基本的な概観である。ビュー２０８は、テーブル２０６のビューである。ビュー２０８は、テーブル２０６の制限された「ビュー」を提供する。ビュー２０８は、見える列／キーとコラムとを制限する。ビュー２０８も、関係のテーブルと考えられ、質問時間に最初のデータを計算して、それから、下レイヤレイヤによって提供されるアップデートに基づくデータセットを更新し始める。一般に、ビュー２０８は、アップデート経路の中を流れるデータを、束縛することができるか、濃縮することができるか、又は、データに加えることができる。1つの実施形態において、ビュー２０８がデータを束縛するとき、それはテーブル２０６で利用できるデータのサブセットだけを示す。それでも、ビュー２０８は、ユーザーがユーザーに特有か又は既に計算されたデータをアップデートデータと協働するのを許すことができる。
【００３６】
1つの実施形態において、リアルタイムデータは、再構成可能なイテレータ（iterators）の形態で、データを再構成可能なオブジェクト２１２−２、２１２−３、２１２−３にカプセル化することによって、データフロー２０２内のメッセージソース２０４と、テーブル２０６と、ビュー２０８との構成要素の間を通される。再構成可能なイテレータ（iterator）も、再構成可能なオブジェクトであると考えられる。例えば、その特定の実施に関係なく、再構成可能なイテレータ（iterator）は、コレクションのすべての要素を通しての横断を可能にする再構成可能なオブジェクトであるかもしれない。イテレータ（iterator）は、時々、特にデータベースのコンテキストの範囲内で、カーソルと呼ばれるかもしれない。再構成可能なオブジェクトに関して先に述べたように、再構成可能なイテレータ（iterator）は、軽量かもしれなくて、メモリー・アロケーションを受けることなく、新しいデータですぐに再初期化されることができる。再構成可能なイテレータ（iterator）は、一種のポインターとして考えられ、そして、それは、２つの主要な動作をする：（１）コレクションオブジェクト（要素アクセスと呼ばれる）で1つの特定の要素にリファレンスをつけること;（２）それが次の要素（要素横断と呼ばれる）を示すように、それ自体を修正すること。再構成可能なイテレータ（iterator）も、若干の最初の要素を示しているかもしれなくて、再構成可能なイテレータ（iterator）がコンテナーで要素の全てを使い果たした時を決定するかもしれない。プログラミング言語と意図された使用に従って、再構成可能なイテレータ（iterator）は、追加的な動作を提供もするかもしれないか、異なる挙動も示すかもしれまない。
【００３７】
再構成可能なイテレータ（iterator）の主な目的は、ユーザーをコンテナーの内部構造からユーザーを分離している間、ユーザーがコンテナーのあらゆる要素を処理するのを許すことである。これは、ユーザーがそれが単純なシーケンスかリストであるかのように扱うのを許している間、コンテナーがあらゆる要素を格納するのを可能にする。再構成可能なイテレータ（iterator）クラスは、対応するコンテナークラスをタイトな関係にする。通常、コンテナーは、再構成可能なイテレータ（iterator）を作成するための方法を提供する。再構成可能なイテレータ（iterator）は、また、それがデータフロー２０２のデータを処理している時、要求があり次第、リアルタイムデータをフィルターして、マップして、濃縮する柔軟な方法を提供する。アプリケーションフレームワークでデータフロー２０２を取り扱うメモリーモデルは、以下により詳細に記述される。
【００３８】
記述された実施形態のコンテキストの範囲内で、アプリケーションフレームワークで使用される再構成可能なイテレータ（iterator）の２つの一般的なタイプがある。「データメッセージイテレータ（iterator）」と、「データイテレータ（iterator）」とである。例えば、データフロー２０２のメッセージソース２０４の構成要素は、下レイヤのメッセージングレイヤ２１２により提供された生データをとり、再構成可能なオブジェクト２１２−１の形態でデータメッセージイテレータ（iterator）実装において生データを包む。メッセージソース２０４で、データにインポーズされる長方形の形態がなく、それは、何らかの可変な主要な識別子によって集められる特質と値の単なる集合である。特質は、オブジェクト、要素またはファイルのプロパティを定める実体であるかもしれません。特質は、名前（またはキー）と値からなるかもしれません。値は、数、文字通りのストリング、配列などで、例えば、それが数であるように、扱われることができるかもしれません。可変な主要な識別子の例は、市場シンボル又はトレードアイデンティフィケーションから成るかもしれない。メッセージソース２０４は、再構成可能なオブジェクト２１２−２の形でテーブル２０６にデータメッセージイテレータ（iterator）で包まれる生データを提供する。長方形の形態は、テーブル２０６でデータにインポーズされる。特に、テーブル２０６は、一組の指定・登録された行とコラムから成り、それは、これらの仕様をインカミングデータにマッチングする。その結果、テーブル２０６は、データイテレータ（iterator）にデータを通過させ、このデータイテレータ（iterator）は、特定の最新値のための行とコラムの番号のような構造情報を検索するアクセッサを提供する点を除いて、データメッセージイテレータ（iterator）に類似している。
【００３９】
例えば、以下のアップデート（偽表記法［鍵となるコラム値］で）を考慮する：モルガン・スタンレー、業者間価格100。データメッセージイテレータ（iterator）レベルで、キーが「モルガン・スタンレー」、コラムが「業者間価格」、そして、価値100であるアップデートが全て知られている。一旦アップデートがテーブル２０６を通り抜けるならば、「モルガン・スタンレー」と「業者間価格」のためのコラムのための列が存在すると仮定して、データイテレータ（iterator）は、アップデートが指定された行か列で起こったと確定するために使用されるかもしれません。任意に、行と列は作成されることができました。
【００４０】
従って、再構成可能なオブジェクト、２１２−１、２１２−２、２１２−３、２１２−４または構成概念は、内部構造またはステートを変えて、それぞれが実際に異なるオブジェクトをつくって、それからガーベージコレクターリソースを用いる必要なしに、完全に異なるオブジェクトのようにふるまう。再構成可能なオブジェクト２１２−１、２１２−２、２１２−３、２１２−４をつくることが若干の既知の副作用があるかもしれないが、それは他のオブジェクトの必要な創造を防ぐ。Ｊａｖａ（登録商標）とＮＥＴのような管理されたプログラミング言語では、これは、ガーベージコレクターの仕事の量を減らして、パフォーマンスを向上させる。このように、特定の再構成可能なオブジェクト又は構成概念は、そのオブジェクト又は構成概念の他例のように再構成された内部構造を有する。これの１つの利益は、ガーベージコレクターを使う言語で、ガーベージコレクションが引き起こされないことである。
【００４１】
オブジェクト指向プログラミングでは、ランタイムシステム１１６，１２６は、オブジェクトを、プログラムの基本的な素材として使われるランタイムデータストレッジの個々の単位として取り扱う。これらのオブジェクトは、プログラムが機能のコレクションとしてみられる伝統的なビューと対照的に、又は、コンピュータへの指示のリストとして、互いに活動する。各々のオブジェクトは、メッセージを受けて、データを処理して、他のオブジェクトにメッセージを送ることができる。各々のオブジェクトは、異なった役割又は責任をもち、独立した小さな機械又は俳優として、見られることができる。
【００４２】
オブジェクト指向プログラミングでは、ランタイムシステム１１６、１２６は、プログラム（即ち、コンピュータで動作しているプログラム）の例を、相互に作用しているオブジェクトのダイナミックなセットとして取り扱う。ランタイムシステム１１６、１２６のオブジェクトは、非常に特定の種類のタイピングを含むために、上述のオブジェクトの概念をより一レイヤ広げる。このタイピングは、オブジェクトと方法に関連したデータを表すデータメンバーが所定の方法でデータメンバーをアクセスすることを許容している。
【００４３】
大概のオブジェクトの場合、データメンバーは、方法メンバーだけを通してアクセスされ、データが常によく定義された状態（クラス不変量が実施される）のままであることを保証することを容易にしている。しかしながら、いくらかの言語は、データメンバーと方法の区別をしない。
【００４４】
各々のオブジェクトがクラスからつくられる言語では、オブジェクトは、そのクラスの例と呼ばれている。各々のオブジェクトには、タイプがあるならば、同じクラスをもつ2つのオブジェクトは、同じデータタイプを持つであろう。クラスの例をつくることは、時々、クラスを例示することになる。
【００４５】
オブジェクトは、以下の特性によって特徴づけられる：
(1)アイデンティティ：一つのオブジェクトを他のオブジェクトを区別するオブジェクトの特性;
(2)ステート：オブジェクトに保存されるデータを記述する;
(3)挙動：オブジェクトが使われるオブジェクトインターフェースにおける方法を記述する。
【００４６】
１つの実施形態において、アプリケーションフレームワーク内のランタイムシステム１１６、１２６は、データフロー２０２の再構成可能なオブジェクト２１２−１、２１２−２、２１２−３，２１２−４、２１２−５を形成してサポートするように構成される。再構成可能なオブジェクト２１２−１、２１２−２、２１２−３、２１２−４，２１２−５は、再構成可能なオブジェクトFooを分類する以下の「Foo」として実行される。フィールド「変数」は、再構成可能なオブジェクトのステートを定め、方法の再初期化は、外界で再構成可能なオブジェクトFooの相互作用を定める。プセウド−コード（pseudo-code）：
class Foo
{ 
int variable;
void Reinitialize(int var)
{
variable = var;
}
}
異なる行動を意味するために何度も何度も再構成可能なオブジェクトFooを再利用する１つの例は、あらゆるマウスクリックの新しいオブジェクトをつくるよりはむしろ、同じオブジェクトFooを更新している。もう一つの例は、ネットワーク１０２からの全てのインカミングメッセージのための新しいオブジェクトをつくるよりはむしろ、同じ再構成可能なオブジェクトFooを再利用している。
【００４７】
それが再構成可能なオブジェクト２１２−１、２１２−２、２１２−３、２１２−４、２１２−５を最適化するために重要になる１つのエリアは、配列があることである。配列は、一般の場所であり、配列をリセットすることは、管理された言語でオブジェクトアロケーションを要求する傾向がある。しかしながら、１つの実施形態において、配列は、幾つの配列が用いられているかカウントする整数を定めることによってオブジェクトを割り当てることなく、そして、既存の配列があまりに小さい場合に新しい配列を割り当てるだけに、リセットされる。
【００４８】
１つの実施形態において、再構成可能なオブジェクトは、多くの類似するか又は同一である再構成可能なオブジェクトのステートを備え、インターフェースを再構成可能なオブジェクトに提供し；それも、グループ内で多くの再構成可能なオブジェクトの全てを通して動くインターフェースを提供する。これは、多くの再構成可能なオブジェクトが一体となって保存されるのを可能にして、再構成可能なオブジェクト、したがってガーベージコレクションの作成を減らす。
【００４９】
再構成可能なイテレータ（iterator）と従来のイテレータ（iterator）（例えばXMLReader、Databaseイテレータ（iterator））の1つの違いは、特定の時でコピーするためのデータにアクセスを提供するよりはむしろ、再構成可能なイテレータ（iterator）（または再構成可能なオブジェクト）とその挙動とがまだ利用できるということである。
【００５０】
配列を備える再構成可能なオブジェクトFooの1つの例は、以下のプセウド−コード（pseudo-code）により表され、ここで、フィールド「m_stuff」と「m_iterator」は、「０」にリセットされ、「m_stuff」は、幾つの配列が使われかをカウントするのに用いらる：
class Foo
{
int[] m_stuff;
int m iterator;
void DoSomethingO
{
Log(m_stuff[m_iterator]);
}
void ResetO
{
m_iterator=0;
{
++m_stuff;
}
}
再構成可能なオブジェクトFOOの他の特徴は、イテレータ（iterator）（例えば、「データメッセージイテレータ（iterator）」及び／又は「データイテレータ（iterator）」）に含まれるデータを部分的に示している。例えば、メッセージソース２０４からデータの一部は、クライアントコード／ディスプレイ２１０に示され、データのもう一つの部分は、もう一つのクライアントに示される。イテレータ（iterator）内では、ロジックは、構成に基づく異なるクライアントに、データセットの異なる部分を示すために使用される。1つの実装例では、ビットマップは、現在のクライアントが見るであろうデータの何れかの部分を記録するために使用される。この情報は、ユーザーが次のアイテムを求めるとき、データセットの何れの部分が進むべきかについて決定するのに用いられる。
【００５１】
1つの実施形態において、ビットマップは、大いにパフォーマンスを向上させるために特定のデータセットについてイテレーション（iteration）のフローをコントロールするのに用いられる。
【００５２】
前に述べたように、アプリケーションフレームワークは、一般的な階レイヤ化しているフレームワークとして実装される。このように、そのような実装例では、データフロー２０２をセットアップすることは、一組のレイヤを構成することにほぼ等しい。アプリケーションフレームワークのコンテキストでは、データフロー２０２は、最も深い所のネットワークレイヤから最も上の「ビュー」レイヤへのレイヤのスタックとして定義される。
【００５３】
データフロー２０２は、インターフェースによって相互に作用する。データフロー２０２内の複数の構成要素（例えば、メッセージソース２０4、テーブル２０６、及びビュー２０８）は、同じインターフェースを実装する。したがって、データフロー２０２内の複数の構成要素（例えば、メッセージソース２０4、テーブル２０６、及びビュー２０８）は、どのように管理されるかを知っていて、互いと相互に作用して、正しい結果を提供する。コヒーレントなエンティティとしてデータフロー２０２と相互に作用するために、所定の再構成可能なオブジェクト又は構成概念は、問題のインターフェースの最も上の実装例を得るのに用いられる。
【００５４】
データフロー２０２は、キャッシングまたは非キャッシングデータフローとして構成される。前に述べたように、データフロー２０２は、メッセージングレイヤ２１２からメッセージソース２０４によって受け取られ、テーブル２０６、ビュー２０８、及び、再構成可能なオブジェクトを使用しているクライアントコード／ディスプレイ２１０を通過するようなデータのフローである。データフロー２０２のキャッシング作用は、テーブル２０６の実装で決定される。アプリケーションフレームワークは、テーブル２０６の２つの実装例、即ち、それがテーブル２０６を通過する時に全ての「署名した」データをキャッシングするキャッシング実装例と、少しのデータもキャッシングしない非キャッシング実装例とを提供する。
【００５５】
図３は、アプリケーションフレームワークのランタイムシステム１１６、１２６で分岐したミックスド・モードデータフロー３０２の１つの実施形態を例示しているブロック図３００である。メッセージングソース２０２から、データフローを有するメッセージレイヤ２１２への再構成可能なオブジェクト３０８の形で単一の接続ベースフローを使っているミックスド・モードデータフロー３０２は、２つのブランチ、即ち、キャッシングフローブランチ３０４と、非キャッシングフローブランチ３０６とに分岐される。一組のキャッシング・サブスクリプションは、キャッシングフローブランチ３０４により扱われ、一組の非キャッシング・サブスクリプションは、非キャッシングフローブランチ３０６により扱われる。各々のフローブランチ３０４、３０６は、ベースフロー３０８から供給する。前述のとおり、データフロー３０２の中の情報は、再構成可能なオブジェクト又はイテレータ（iterator）３２０−１、３２０−１、３２０−３、３２０−４を使用することによって交換される。情報は、再構成可能なオブジェクト３１８の形で、ビュー３１２、３１６からクライアントコード／ディスプレイ２１０まで通過される。
【００５６】
キャッシングフローブランチ３０４では、メッセージソース２０２は、データメッセージ再構成可能なイテレータ（iterator）３２０−１で包んだメッセージングレイヤ２１２からベースフローを通して受けた再構成可能なオブジェクト３０８生データを提供して、キャッシングテーブル３１０に保存する。包まれたデータがキャッシングテーブル３１０に一旦保存されると、将来の使用は、平均的アクセスタイムを低下するため、メッセージソース２０２からの最初のデータをリフェッチング（re-fetching）するかリコンピューティング（re-computing）するよりはむしろ、キャッシングテーブル３１０で包まれたデータのキャッシュされたコピーにアクセスすることによってなされる。キャッシングテーブル３１０は、再構成可能なイテレータ（iterator）３２０−２と最初のビュー３１２に包まれたデータを通過する。ミックスド・モードデータフロー３０２のキャッシングフローブランチ３０４の最初のビュー３１２は、それがミックスド・モードデータフロー３０２を通して広がるとき、データを制限するか、変換するか、又は圧縮するフロー構成概念である。最初のビュー３１２は、キャッシングテーブル３１０への圧迫された「ビュー」を提供する。
【００５７】
非キャッシングフローブランチ３０６では、メッセージソース２０２は、データメッセージ再構成可能なイテレータ（iterator）３２０−３で包んだメッセージングレイヤ２１２からベースフローを通して受けた再構成可能なオブジェクト３０８生データを提供して、ルーティンテーブル３１４に保存する。ルーティンテーブル３１４は、再構成可能なイテレータ（iterator）３２０−４と第２のビュー３１６に包まれたデータを通過する。ミックスド・モードデータフロー３０２の非キャッシングフローブランチ３０６の最初のビュー３１２は、それがミックスド・モードデータフロー３０２を通して広がるとき、データを制限するか、変換するか、又は圧縮するフロー構成概念である。第２のビュー３１６は、ルーティンテーブル３１４への圧迫された「ビュー」を提供する。
【００５８】
図４は、アプリケーションフレームワークのランタイムシステム１１６、１２６でマルチビューデータフロー４０２の1つの実施形態を例示している図４００である。前述のとおり、マルチビューデータフロー４０２の情報は、再構成可能なオブジェクトやイテレータ（iterator）を使用して交換される。たとえば、メッセージングレイヤ２１２からの情報は、一つの接続４０８により受け取られて、再構成可能なオブジェクト４２０−１の形でメッセージソースに引き継がれる。メッセージソース２０２からの情報は、再構成可能なオブジェクト４２０−２の形でテーブル２０６に通過される。テーブル２０６は、再構成可能なオブジェクト４２０−３の形で接続４１０によりビュー４０４に情報を通過する。次に、ビュー４０４は、再構成可能なオブジェクト４２０−５の形でクライアントコード／ディスプレイ２１０に情報を通過する。同様に、テーブル２０６は、再構成可能なオブジェクト４２０−４の形でもう一つの接続４１２によりもう一つのビュー４０６に情報を通過する。次に、ビュー４０６は、再構成可能なオブジェクト４２０−６の形でクライアントコード／ディスプレイ２１０に情報を通過する。
【００５９】
図４の中で例示される実装例では、マルチカスタムビュー４０４、４０６は、より大きなサブスクリプション・セットで形成される。即ち、メッセージレイヤ２１への単一の接続４０８のために、多数のマルチビュー４０４，４０６は、例えば、ディスジョイント（disjoint）又はオーバーラッピング・サブスクリプション・セットで形成される。２つのビュー４０４、４０６が示されるが、マルチビューデータフロー４０２が２以上のマルチビューを備えると考えられる。クライアントコード／ディスプレイ２１０は、関連したリニューが各々の複数の接続４１４、４１６を通して起こるとき、マルチビュー４０４、４０６から通知を受ける。
【００６０】
マルチビューデータフロー４０２は、フローサブスクリプション管理を取り扱う。たとえば、マルチビュー４０４，４０６が同じテーブル２０６に付けられるならば、アプリケーションフレームワークは、幾つかのサブスクリプションのための参照カウントを内的に管理する。これらのマルチビュー４０４、４０６から同じキーを申し込んで、マルチビュー４０４、４０６が登録を取り消すまで、サブスクリプションは、「グローバルに」活発なままである。さらに、たとえば、他のビュー４０６が続く間、マルチビュー４０４のうちのわずか１つが登録を取り消すならば、そのビュー４０４は、そのサブスクリプションのためのアップデートを伝達するのを止める。
【００６１】
マルチビュー４０４、４０６は、ダイナミックに形成され、ランタイムシステム１１６、１２６によってランタイムにテーブル２０６に付けられる。したがって、いくつかの現在のビューを映すテンポラリービューが構築され、ディスプレイが変わると、それは壊される。この機能は、所定のインターフェースによって提供される。このインターフェースは、３つの方法を提供する。
【００６２】
このコンテキストにおいて更に考慮する点は、サブスクリプションをつくる１つのビュー４０４に・からキーがサブスクライブされるときに起こることであり、そこで、そのキーは、もう一つのビュー４０６からすでにサブスクライブされ、テーブル２０６は、キャッシングである。この場合、それぞれのアプリケーションフレームワークの範囲内のランタイムシステム１１６、１２６は、サブスクリプションをつくるビュー４０４への即時のアップデートとして、キャッシュ値を発行しない。
【００６３】
所定の例外を除いて、ランタイムシステム１１６のアプリケーションフレームワーク内で提供されるレイヤは、安全に取り扱われる。ランタイムシステム１１６のパフォーマンスを損なわないために、例外は安全にされない。使用される特定のネットワークスレッディングモデルに基づいて、これらの構成要素は、アップデートスレッドの展望からの同期なしに、スレッドセーフにされる。そこで、使用ケースを宣告しないように、最初のテーブル／ビュー構造は、更なるユーザー修正が伴わないセットアップ（静的又は動的にwildcards／greedyオプションを使用して）、アップデートスレッドとユーザースレッドとの間の同期は、提供されない。
【００６４】
図５は、アプリケーションフレームワークのランタイムシステム１１６、１２６上で融合されたビューデータフロー５０２の1つの実施形態を例示している図５００である。前に述べたように、アプリケーションフレームワークは、ストレート・データフロー（例えば、図２で示すデータフロー２０２）及び／又は分岐したデータフロー（例えば、図３に示されたブランチデータフロー３０２、又は、図４で示すマルチビューデータフロー４０２）をつくるために使用される。アプリケーションフレームワークとランタイムシステム１１６、１２６も、複数のデータフロー５０２―１―ｍのビューを融合するための機能を提供する。融合されたビュー複数のデータフロー５０２−１−ｍは、たとえば、他のキーとなる概念を使って実行される。データフローの５０２−１−ｍのｍブランチまで融合され、ｍは、何れかの整数である。
【００６５】
図示した実施形態では、アプリケーションフレームワークに関するランタイムシステム１１６、１２６は、双方向融合を支持するために使用される。しかし、融合は、ｍ方向融合をつくるためにつながれる。主要なデータフロー５０２−１では、最初のメッセージソース５０４−１は、再構成可能なオブジェクト５０６−１の形で最初のメッセージングレイヤ５０６−１から生データを受け取る。同様に、第２のデータフロー５０２−２において、第２のメッセージソース５０４−２は、再構成可能なオブジェクト５１８−１の形で第２のメッセージングレイヤ５０６−２から生データを受け取る。最初のメッセージソース５０４−１は、主要なデータフロー５０２−１の最初のテーブル５０８−１に、再構成可能なイテレータ（iterator）で包まれた生データを提供し、そして、第２のメッセージソース５０４−２は、第２のデータフロー５０２−２の第２のテーブル５０８−２に、第２のデータメッセージ再構成可能なイテレータ（iterator）５１８−２で包まれた生データを提供する。第１のビュー５１０−１は、再構成可能なイテレータ（iterator）５１６−３によって第１のテーブル５０８−１をこえて圧迫されたビューを提供し、第２のビュー５１０−２は、再構成可能なイテレータ（iterator）５１８−３によって第２のテーブル５０８−２をこえて圧迫されたビューを提供する。融合されたビュー５１２は、例えば、第１及び第２のビュー５１０−１、５１０−２からつくられる。単一の接続５１４融合インターフェースは、再構成可能なイテレータ（iterator）５２０によってクライアントコード／ディスプレイ２１０に提供される。
【００６６】
図６は、ロジックフロー６００の1つの実施形態を示す。融合インターフェースを単純化するために、融合されたビュー５１２は、以下のロジックフローに従ってセットアップされる。空のプライマリーデータフロー５０２−１（又は、既存のフローに空のトップレベルのビュー）を形成（６０２）する。空のセカンダリーフロー５０２（又は、既存のフローに空のトップレベルのビュー）を形成（６０４）する。プライマリー・セカンダリーデータフロー５０２−１、５０２−２を、キービルダーインターフェース実装例、及び、他のキースペック例（これらは、以下に更に詳細に記述されます）に沿って、新しい融合ビュー５１２を形成（６０６）する。プライマリー・セカンダリー・トップレベルビュー５１０−１、５１０−２に、必須のコラムを作成（６０８）する。プライマリーデータフロー５０２−１にキーを登録（６１０）する。必須のコラムを作成する間、データ融合インターフェースは、イベントを妨げて（６１２）、マッチングコラムを内的に形成する。
このようにして、融合は、（少なくともトップレベルビューの）プライマリー・セカンダリービュー５１０−１、５１０−２にジョイントコラム構造を備える。
【００６７】
融合ビュー５１２を通過した他のキー・スペック例は、プライマリー・セカンダリービュー５１０−１、５１０−２を融合するためのコラムディペンデンシーを特定（６１４）する。例えば、新しくつくられた他のキースペック例において、他のキーを構成していプライマリーデータフロー５０２−１にコラムを特定（６１６）する。融合ビュー５１２インターフェースは、プライマリーデータフロー５０２−１から、これらのコラムのアップデートをモニターし、セカンダリーデータフロー５０２−２でキーを登録し、解除（６１８）する。これらのキーのアップデートがセカンダリーデータフロー５０２−２から到着するとき、融合ビュー５１２インターフェースは、これらのアップデートを、プライマリーデータフロー５０２−１から対応する行にマップ（６２０）する。
【００６８】
アプリケーションフレームワークキービルダーインターフェースは、あらゆるカスタム融合ビュー５１２のために実装される。この実装は、他のキースペック例で指定されるコラムの現在の値を与えられた第２のデータフロー５０２−２のために新しいサブスプリクションキーを形成する。このように、コラムに関する１対１のマッピングは、プライマリーフローデータ５０２−１の他のキーとセカンダリーフローデータ５０２−２のプライマリーキーとの間で必要とされない。キービルダーの実装は、それが適当と考えるどんな方法で、他のキーコラムの値と組み合わされ、また、この値に加えられる。唯一の必要は、第２のメッセージソース５０４−２で登録されたとき、発生するキーが主要なコラムにマッチするということである。
【００６９】
１つの実施形態において、融合ビュー５１２実装は、ローカルにはデータをキャッシュデータしない。むしろ、それは、バーチャルマッピングによって完全に働く。したがって、融合ビュー５１２が２つのキャッシングフローに形成される場合、データは、複製されず、しかし、むしろ、データは、非正常の形態で、各プラマリーとセカンダリーデータフロー５０２−１、５０２−２の各テーブル５０８−１、５０８−２に保存され、そして、それが融合ビュー５１２表現から読み込もうとするアップデート又はクライアントコード／ディスプレイ２１０か否かの要求にのみ、テンポラリーにマップされる。
【００７０】
したがって、リアルタイム融合ビュー５１２では、２つのデータメッセージソース５０４−１、５０４−２の間の関係は、データベースロジックに類似した表記法を使用して定められる。しかしながら、上述したように、プラマリーとセカンダリーデータフロー５０２−１、５０２−２に関するデータは、再構成可能なイテレータ（iterator）５１６−１−３、５１８−１−３を使って表されるため、現実のフィジカルテーブルは、存在せず、バーチャルテーブルだけが存在する。したがって、システムは、１秒につきアップデートの倍数（例えば数千、数100万、その他）を処理することができる。
【００７１】
動作において、各々の再構成可能なイテレータ（iterator）５１６−１−３、５１８−１−３は、データのマッピング条件に従って、異なる方法で再び示される。最初のメッセージ５０４−１、５０４−２は、他のコラム（例えばコラム13）にマップする融合ビュー５１２の１つのコラム（例えばコラム7）から来るときのデータを示している。元のイテレータ（iterator）についてイテレータ（iterator）を階層化することによって、イテレータ（iterator）が融合ビュー５１２を意味するという幻想が引き起こされる。しかし、リマッピングしているコードがラッピングイテレータ（iterator）であるので、融合されたビュー５１２内のリソースには、コストがかからない。
【００７２】
１つの実施形態において、上記の実装は、ユーザーに何を示すべきかについて決めるためにビットマップを使用して最適化され、しかも、主要な／他のキーセルの現在の値を保存することによっても最適化される。
【００７３】
図7は、再構成可能なイテレータ（iterator）によってクライアントコード／ディスプレイ２１０に見受けられたデータの1つの実施形態を表す図700である。クライアントコード／ディスプレイ２１０は、図１で示されるクライアントシステム１０６、１０８、１１０の何れに関連したＧＵＩ１２８のユーザーにデータをディスプレイする。クライアントコード／ディスプレイ２１０は、第１セットの値が要なメッセージソースからである単一のデータとして、データを解釈する。
【００７４】
第１セットの値７０４は、主要なキーを、第２のメッセージソース５０４−２（これらの値は、如何なるフォーマットでもよく、例えば、テキスト、日付、及び、図示した必要な数字である）から来る第３セットの値７０６に形成する。これは、アップデートの認められた値であるが、前のセクションで記述した再構成可能なイテレータ（iterator）からの解釈のみである。
【００７５】
動作において、アップデートの部分は、入っていて、濃縮されている。上記の例において、値７０２の第１セットの値７０２−１−４は、左手のソース、クライアントコード／ディスプレイ２１０から、1つのアップデートで姿を現す。左手のソースの再構成可能なイテレータ（iterator）は、飾られているので、クライアントコード／ディスプレイ２１０又は融合ビュー５１２のカスタマーは、たとえそれらが元のメッセージソース５０４−１の完全に異なる場所から来ることができたとしても、隣接する行で第２と第４のコラムＣ２、Ｃ４に現れている値を見るであろう。これは、列／コラム位置を検索させて、デコレータでこれらの検索を変えることによって達成される。
【００７６】
価値の第4のセット７０６−１は、同じイテレータ（iterator）内から到着するかもしれません、そして、コラムＣ６−Ｃ９から来てクライアントコード／ディスプレイ２１０がそれらに会うように、正しいデコレータとクライアントコード／ディスプレイ２１０に追い越されるかもしれません。また、クライアントコード／ディスプレイ２１０は、正しい列番号に出会うかもしれません。1つの実施形態において、第二のメッセージ５０４−２からの再構成可能なイテレータ（iterator）は、キーなる価値７０４−１、７０４−２（ここでは、３９２５、２０３０）へジャンンプバックすることができる。これは、なぜなら、第２セット７０４（すなわちコラムＣ５）のマルチの価値は、それら全員が同じ価値であるために必要である第１セット702（すなわちコラムCIC4）の価値と同じである。これは、異なる列表現で絶えず価値を再生することによって達成されるかもしれません。その結果、それが異なるコラム番号で繰り返し飾られることができるように、以下にある再構成可能なイテレータ（iterator）はジャンプバックすることができなければなりません。
【００７７】
1つの実施形態において、融合されたビューデータ５０２プロセスは、再構成可能なイテレータ（iterator）オブジェクトとイテレータ（iterator）デコレータを再利用して、毎回それらをリクリエイトすることによって、さらに最適化されるだろう。
【００７８】
融合ビュー５１２実装は、それらが変わったかどうか決定するために、結合価値７０１−１を保存する。それらが変わったならば、第二のメッセージソース504-2は、融合されたビュー512がそれが以前指定したキーの上でアップデートをもはや必要としないと通知され、そして、それは、それが現在アップデートを必要とする新しいキーを指定する必要がある。他のキーがユニークでないかもしれないので、重要になっている参照は、時々必要である。
【００７９】
一時的にもう一つの再構成可能なイテレータ（iterator）の一組のアップデートイテレータ（iterator）価値をたくわえることができる図を持つことも役立つ。そのようなキャッシュなしが必要で、これは、それから複数のパスの代わりに、1つのパスにおいて処理される。必要なとき、1つの実施形態において、これは単に下にあるテーブルの埋め合わせを保存して、現在の価値を取り戻すために彼らを利用することによって実行されるかもしれません。
【００８０】
ここに示される例は、現在の発明の潜在的で特定の機能を例示することを目的とする。例が当業者のために主に発明の説明の目的を目的とすると認められることができる。例の特定の面または面は、現在の発明の範囲を制限するつもりでありませんでした。
【００８１】
数字と現在の発明の説明が現在の発明のはっきりした理解のために関連する要素を例示するために単純化されたことを理解すべきであり、その一方で、明快さの目的のために、他の要素を除きます。たとえば、ネットワークプラットホームの特定のオペレーティングシステムの詳細とモジュールは、ここに記述されません。しかし、技術の通常の知識を有する者は誓約書を出します。そして、それがたとえば多分典型的プロセッサー（コンピュータシステムまたは電子メールアプリケーション）で望ましいこれらと他の要素であるでしょう。しかし、そのような要素が周知の技術であるので、そして、彼らが現在の発明のより良い理解を容易にしないので、そのような要素に関する議論はここに提供されません。
一般に、少なくとも、多分ここに記述されるだろう実施形態のいくつかが多くでソフトウェア、ファームウェアやハードウェアの異なる実施例を実行したことは、芸術の普通の技術のうちの1つにとって明らかです。ソフトウェアとファームウェアコードは、プロセッサーまたは他のどの類似したコンピューターでも実行されるかもしれません。発明の実施形態を実行するのに用いられるかもしれないソフトウェアコードまたは専門制御ハードウェアは、制限しません。たとえば、ここに記述される実施形態は、たとえば、従来であるか、オブジェクト指向技術を使用しているCまたはC++のようなどんな適当なコンピュータソフトウェア言語タイプでも使っているコンピュータソフトウェアで実行されるかもしれません。そのようなソフトウェアは、どんな種類の適当なコンピュータで読取り可能な媒体でもまたはメディア（例えば磁気であるか光学記憶媒体）に格納されるかもしれません。活動と発明実施形態の作用は、特定のソフトウェアコードまたは専門ハードウェアコンポーネントに特定指示なしで記述されるかもしれません。普通の技術のその職人がほんの理にかなった努力ででなくしか、そして、不当な実験なしで現在の説明に基づく現在の発明の実施例を実行するためにソフトウェアと制御ハードウェアを設計することができると明らかに思われるので、そのような特定指示の欠如は可能です。
【００８２】
さらに、現在の実施形態と関連したプロセスは、プログラム可能な器材（例えばコンピュータまたはコンピュータシステムやプロセッサー）で実行されるかもしれません。プログラム可能な器材がプロセスを実行する原因になるかもしれないソフトウェアは、どんな記憶装置（例えばコンピュータシステム（不揮発性の）メモリ、光ディスク、磁気テープまたは磁気ディスク）にでも格納されるかもしれません。さらにまた、少なくとも、コンピュータシステムが製造されるか、さまざまなコンピュータで読取り可能なメディアに保存されるとき、プロセスのいくらかはプログラムされるかもしれません。そのようなメディアは記憶装置に関して上記の形のどれでも含むかもしれないおよび／または、たとえば、コンピュータまたはコンピュータシステムで読まれるかもしれなくて、復調されるかもしれなくて／解読されるかもしれないか、実行されるかもしれない指示を伝えるために、搬送波は変調したか、さもなければ操作されました。
【００８３】
ここに記述される特定のプロセス面がコンピュータで読取り可能な媒体に格納される指示またはコンピュータシステムにプロセスステップを実行するように指示するメディアを使用して実行されるかもしれないと認められることもできます。コンピュータで読取り可能な媒体は、たとえば、メモリデバイス（例えばディスケット、コンパクトディスク（CD）、デジタル用途が広いディスク（DVD）、光学的ディスクドライブまたはハードディスク装置）を含むかもしれません。コンピュータで読取り可能な媒体は、身体的で、仮想で、永久で、一時的で、半永久的で、および／または、半一時的であるメモリー記憶装置も含むかもしれません。コンピュータで読取り可能な媒体は、一つ以上の搬送波の上に送られる一つ以上のデータ信号を更に含むかもしれません。
【００８４】
たとえば、そして、ネットワークについてデータを送っておよび／または受けるように構成されるプロセッサー、マイクロコンピュータ、ミニコンピュータ、サーバー、メインフレーム、ラップトップ、個人データアシスタント（FDA）、ワイヤレス電子メール装置（例えばBlackBerry）取引を示された装置）、携帯電話、ポケベル、プロセッサー、ファックス、スキャナまたは他のどのプログラム可能な装置のも規制、無線または無線バラエティのない「コンピュータ」、「コンピュータシステム」または『プロセッサー』。ここに明らかにされるコンピュータシステムとコンピュータベースのデバイスは、情報を得て、処理して、伝える際に使用される特定のソフトウェアアプリケーションを格納することに対する記憶を含むかもしれません。そのような記憶が明らかにされた実施形態の作動に関する内臓または外部であるかもしれないと認められることができます。記憶は、ハードディスク、光ディスク、フロッピー（登録商標）皿ROM（読出し専用メモリー）、RAM（ランダム・アクセス・メモリ）、PROM（プログラム可能なROM）、EEPROM（電気的に消去可能なPROM）や他のコンピュータで読取り可能なメディアを含むソフトウェアを格納するために、どんな手段も含むかもしれません。
【００８５】
ここに明らかにされる現在の発明のいろいろな実施形態に、一つの構成要素は複数の構成要素と取り替えられるかもしれません、そして、複数の構成要素は一つの構成要素と取り替えられるかもしれません。そして、伝えられた機能または機能を実行します。そのような代用が動いていない場合を除き、そのような代用は発明の範囲内です。たとえば、ここに記述されるどんなサーバーでも、協力機能のために位置して、設定されるネットワーク化されたサーバーの「サーバーファーム」または他のグループと取り替えられるかもしれません。サーバーファームがファームの作業負担between／among個人構成要素を配布するのに役立つかもしれなくて、複数のサーバーの総体的で協力力を利用することによってコンピューティングプロセスを促進するかもしれないと認められることができます。そのようなサーバーFarmsは、仕事（例えば異なる機械から力を処理して、優先順位を決定して、ネットワーク需要に基づく仕事を予定して、および／または、部品故障または実施可能性の縮小の場合にはバックアップの偶発を提供することを求める追跡要求）を達成するロードバランシングソフトウェアを使用するかもしれません。
【００８６】
発明のいろいろな実施例がここに記述される間、それらの実施形態へのいろいろな修正、変更と脚色が少なくとも現在の発明の長所のいくらかの達成で技術に熟達せる人の心に浮かぶかもしれないことは明らかでなければなりません。ここに述べられるように、明らかにされた実施形態はしたがって、範囲と現在の発明の精神から離れることなくすべてのそのような修正、変更と脚色を含むことを目的とします。
【図面の簡単な説明】
【００８７】
【図１】ネットワークがサーバーと一つ以上のクライアントシステムを関連づけるクライアント／サーバーシステムの図示例である。
【図２】プリケーションフレームワークのランタイムシステム上でデータフローの1つの実施形態を例示しているブロック図である。
【図３】アプリケーションフレームワークのランタイムシステム上で枝分かれしたミックスド・モードデータフローの1つの実施形態を例示しているブロック図である。
【図４】アプリケーションフレームワークのランタイムシステム上でマルチビューデータフローの1つの実施形態を例示している図である。
【図５】アプリケーションフレームワークのランタイムシステム上で融合されたビューデータフローの1つの実施形態を例示している図である。
【図６】ロジックフローの一実施形態の例示である。
【図７】イテレータ（iterator）によってクライアントに見受けられたデータの1つの実施形態を表す図である。
【図１】
2008135035.tif 000003
【図２】
2008135035.tif 000004
【図３】
2008135035.tif 000005
【図４】
2008135035.tif 000006
【図５】
2008135035.tif 000007
【図６】
2008135035.tif 000008
【図７】
2008135035.tif 000009