JPH10312284A - クライアント−サーバーアプリケーション使用可能なシステムのためのオブジェクト指向システム、方法及び製品 - Google Patents

クライアント−サーバーアプリケーション使用可能なシステムのためのオブジェクト指向システム、方法及び製品

Info

Publication number
JPH10312284A
JPH10312284A JP9211114A JP21111497A JPH10312284A JP H10312284 A JPH10312284 A JP H10312284A JP 9211114 A JP9211114 A JP 9211114A JP 21111497 A JP21111497 A JP 21111497A JP H10312284 A JPH10312284 A JP H10312284A
Authority
JP
Japan
Prior art keywords
server
client
application
computer
ice
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP9211114A
Other languages
English (en)
Inventor
Sherri L Gish
シェリ・エル.・ギッシュ
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Sun Microsystems Inc
Original Assignee
Sun Microsystems Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Sun Microsystems Inc filed Critical Sun Microsystems Inc
Publication of JPH10312284A publication Critical patent/JPH10312284A/ja
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer And Data Communications (AREA)
  • Stored Programmes (AREA)
  • Multi Processors (AREA)

Abstract

(57)【要約】 (修正有) 【課題】 好適なクライアント−サーバーアプリケーシ
ョン使用可能システムのためのオブジェクト指向システ
ムを提供する。 【解決手段】 クライアントコンピューターコードセグ
メントとサーバーコンピューターコードセグメントの間
のイベント駆動メッセージ転送を容易にするためにクラ
イアントコードセグメントとサーバーコードセグメント
を結合するように構成された実行フレームワークコード
セグメント;実行フレームワークコードセグメント、ク
ライアントコンピューターノードは下記(1)を含む: (1)クライアントコンピューターノードに常駐するユ
ーザーインターフェース;クライアントコンピューター
コードセグメントはユーザーインターフェースと実行フ
レームワークコードセグメントの間で結合されたユーザ
ー構成可能ユーザーインターフェースアダプタを含む。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明はコンピューターシス
テムにおける改良に関し、さらに詳しくはネットワーク
ユーザーインターフェースにおけるインタープライズコ
ンピューティングを管理するためのオペレーティングシ
ステムソフトフェアに関する。
【0002】
【従来の技術および発明が解決しようとする課題】現代
のコンピューティングシステムの最も重要な側面の一つ
はヒューマンユーザーとマシンの間のインターフェース
である。最も初期の、最も人気のあるタイプのインター
フェースはテキストベースである:キーボード上にテキ
ストキャラクタをタイプすることによってユーザーと通
信されるユーザー及びディスプレイスクリーン上にテキ
ストキャラクタを表示することによってユーザーと通信
されるマシン。さらに最近では、グラフィックユーザー
インターフェースが人気を持つようになっている。それ
はマシンがグラフィックを表示し、ディスプレイスクリ
ーン上でテキスト及びピクチャを含むグラフィックを表
示することによってユーザーと通信し、ユーザーがマウ
スのような位置決め装置で表示されたピクチャを操作す
ることによって及びテキストコマンドにおいてタイプす
ることによってマシンと通信する。
【0003】多くの現代のコンピューターシステムはウ
ィンドウ環境と称されるグラフィックユーザーインター
フェースで操作する。典型的なウィンドウ環境では、デ
ィスプレイ上で表現されるグラフィカルディスプレイは
電子的な“デスクトップ(desktop )”の表面に類似す
るように配置され、コンピューター上で実行する各アプ
リケーションプログラムは“ウィンドウズ”と称される
スクリーンの矩形領域に表示される1以上の電子的な
“ペーパーシート(paper sheets )”として表され
る。
【0004】各ウィンドウ領域は関連するアプリケーシ
ョンプログラムによって生成される情報を一般に表示す
る。デスクトップ上に同時に存在する幾つかのウィンド
ウ領域があってもよく、それぞれは異なるアプリケーシ
ョンプログラムによって生成される情報を表示する。ア
プリケーションプログラムはウィンドウ領域内で画像、
グラフィック又はテキストを描いたり又は“ペイントす
る(painting)”ことによって各ウィンドウを通してユ
ーザーに情報を与える。ユーザーは位置決め装置によっ
て制御されるカーソルでウィンドウ領域におけるオブジ
ェクトを“ポイントし(pointing at)”、オブジェク
トを操作又は移動することによって、またキーボードに
情報をタイプすることによってアプリケーションと順に
通信する。ウィンドウ領域はユーザーが都合の良い方法
でデスクトップを配置できるようにディスプレイスクリ
ーン上の周囲で移動させたり、サイズや外観を変えるこ
とができる。
【0005】ウィンドウ領域のそれぞれは典型的にサイ
ジングボックス、ボタン及びスクロールバーのような標
準グラフィカルオブジェクトを多数含んでいる。これら
の特徴はユーザーが選択及び操作のためにカーソルでポ
イントできるユーザーインターフェース装置を表してい
る。装置が選択又は操作されるとき、基礎となるアプリ
ケーションプログラムは制御がユーザーによって操作さ
れるウィンドウシステムを介して知らされる。
【0006】一般に、上記のウィンドウ環境はコンピュ
ーターオペレーティングシステムの一部である。オペレ
ーティングシステムは典型的にはディスクメモリー上の
情報を記憶及び検索し、ネットワークと通信し、ファイ
ルの創成、名前付け及び名前変更を含むファイル操作を
行い、ある場合には誤動作の発見又は誤動作からの回復
のための診断操作を行うような基本操作をコンピュータ
ーシステムに行わせることができるユーティリティプロ
グラムの収集を含んでいる。
【0007】コンピューティングシステムの最後の部分
は一層高いレベル機能を与え、特別なタスクを行い、ユ
ーザーとの直接インターフェースを与えるためにオペレ
ーティングシステムと対話する“アプリケーションプロ
グラム(application program)”である。アプリケー
ションプログラムは典型的にはそのときに要求されるタ
スクを行うオペレーティングシステムに連続したタスク
コマンドを送り出すことによってオペレーティングシス
テム機能を利用する。例えば、アプリケーションプログ
ラムはオペレーティングシステムがコンピューターディ
スクメモリ上の特別な情報を記憶し又はビデオディスプ
レイ上の情報を表示することを要求してもよい。
【0008】図1はアプリケーションプログラムとオペ
レーティングシステムの両方を利用する典型的な従来技
術のコンピューターシステムの概略図である。コンピュ
ーターシステムはボックス100によって概略的に表さ
れ、アプリケーションはボックス102によって表さ
れ、オペレーティングシステムはボックス106によっ
て表される。前述のアプリケーションプログラム102
とオペレーティングシステム106の間の対話は矢印1
04に概略的に示されている。このデュアルプログラム
システムはメインフレームからパーソナルコンピュータ
ーまでの多くのタイプのコンピューターシステム上で使
用されている。
【0009】スクリーンディスプレイを取扱うための方
法はコンピューターからコンピューターに変化し、この
点に関して図1は従来技術のパーソナルコンピューター
システムを表している。スクリーンディスプレイを与え
るため、アプリケーションプログラム102は一般に表
示されるべき情報をスクリーンバッファ110に記憶す
る(記憶操作は矢印108によって概略的に示されてい
る)。システムにおける様々なハードウェア及びソフト
ウェアの制御下でスクリーンバッファ110の内容がバ
ッファから読み出され、矢印114によって概略的に示
されるようにディスプレイアダプタ112に与えられ
る。ディスプレイアダプタ112はスクリーンバッファ
110における情報をケーブル116によってディスプ
レイアダプタ112に接続されるディスプレイモニタ1
18を駆動するために使用できる形に変換するソフトウ
ェア及びハードウェア(時にはファームウェアの形)を
含んでいる。
【0010】図1に示された従来技術の構成は一般に単
一アプリケーションプログラム102がどのような与え
られた時間でも実行しているシステムにおいて十分に作
動する。この単一システムは単一アプリケーションプロ
グラム102がディスプレイ問題を起こさないで全体の
スクリーンバッファ領域110のどのような領域にも情
報を書き込むことができるので適切に作動する。しかし
ながら、もし図1に示された構成が1以上のアプリケー
ションプログラム102を同時に操作できるコンピュー
ターシステム(例えば“マルチタスク(multi-tasking
)”コンピューターシステム)に使用されるなら、デ
ィスプレイ問題が起こりうる。特に、もし各アプリケー
ションプログラムがアプリケーション間の直接通信なし
で全体のスクリーンバッファ110にアクセスするな
ら、あるアプリケーションは別のアプリケーションによ
って使用されるスクリーンバッファの部分をオーバーラ
イトしてもよく、それによってあるアプリケーションに
よって生成したディスプレイを他のアプリケーションに
よって生成したディスプレイによってオーバーライトさ
せることができる。
【0011】従って、各アプリケーションプログラムが
スクリーンバッファの部分だけに閉じ込められ、それに
よって他のディスプレイを分離することを保証するため
アプリケーションプログラムの操作を調整する機構が開
発された。この調整はウィンドウがスクリーンディスプ
レイ上で“オーバーラップ(overlap )”できるシステ
ムでは複雑になった。スクリーンディスプレイはウィン
ドウが“オーバーラップ”するように配置されるとき、
別のウィンドウの“フロント(front )”においてスク
リーン上に現れるウィンドウは下にあるウィンドウをカ
バーし、隠している。従って、先頭のウィンドウ以外、
下にあるウィンドウの一部だけをスクリーン上に描き、
いかなる与えられた時間においても“見ることができる
(visible )”ようにしてもよい。さらに、ウィンドウ
はユーザーによって移動又はリサイズすることができ、
見ることができる各ウィンドウの部分は他のウィンドウ
を移動又はリサイズするにつれて変化する。従って、各
アプリケーションウィンドウに割り当てられるスクリー
ンバッファの部分は他のアプリケーションからのウィン
ドウを移動又はリサイズするにつれて変化する。
【0012】ウィンドウを移動又はリサイズすることに
よって起こる迅速なスクリーン変化を構成するために必
要なスクリーンバッファへの変化を効率的に管理するた
め、図1に示された従来技術のコンピューター配置は図
2に示されたように修正されている。この新しい配置で
はコンピューターシステム200は1以上のアプリケー
ションプログラム(それらのうちプログラム202及び
216が示されている)によって制御され、それらのプ
ログラムはコンピューターシステムにおいて同時に実行
されてもよい。それぞれのプログラムは矢印206及び
220によって概略的に示されているようにオペレーテ
ィングシステム204とインターフェースする。しかし
ながら、ディスプレイ上のディスプレイ情報を表示する
ため、アプリケーション202及び216はオペレーテ
ィングシステムに設けられた中央ウィンドウ管理プログ
ラム218にディスプレイ情報を送る。ウィンドウ管理
プログラム218は矢印208によって概略的に示され
ているようにスクリーンバッファ210と直接順にイン
ターフェースする。スクリーンバッファ210の内容は
矢印212によって示されるように与えられ、ディスプ
レイモニタ224にケーブル222によって接続される
ディスプレイアダプタ214に与えられる。
【0013】かかるシステムではウィンドウ管理プログ
ラム218はユーザーがアプリケーションプログラムの
操作中に見るウィンドウディスプレイの全ての維持に対
して責任がある。ウィンドウ管理プログラム218は全
てのアプリケーションプログラムと通信しているので、
ウィンドウディスプレイがオーバーラップしないことを
保証するようにアプリケーション間で調整することがで
きる。結果としてウィンドウを移動するにつれて描かれ
たり再び描かれたりしなければならないウィンドウ及び
ウィンドウ領域の位置及びサイズの情報を得るのは一般
にウィンドウ管理プログラムのタスクである。
【0014】ウィンドウ管理プログラム218はアプリ
ケーション202及び216のそれぞれからディスプレ
イ要求を受ける。しかしながら、ウィンドウ管理プログ
ラム218だけがスクリーンバッファ210とインター
フェースするので、各アプリケーションに対してスクリ
ーンバッファ210の各領域を割り当て、別のアプリケ
ーションによって生成されたディスプレイにオーバーラ
イトするアプリケーションが全くないことを保証するこ
とができる。図2に示された配置を利用する商業的に入
手可能な多数の異なるウィンドウ環境がある。これらは
Microsoft Corporation によって開発されたグラフィ
カルユーザーインターフェース、X/Window Operating
環境、WINDOWS , International Business Machines
Corporation によって開発されたOS/2 Presentation
Manager 、及び Apple Computer Corporation によ
って開発されたMacintosh OS を含む。
【0015】これらのウィンドウ環境のそれぞれはそれ
自身の内部ソフトウェアアーキテクチャを持っている
が、アーキテクチャはコンピューターネットワークソフ
トウェアを記述するために使用される多層モデルと同じ
多層モデルを使用することによって全て分類することが
できる。典型的な多層モデルは下記層を含む: ユーザーインターフェース ウィンドウ管理プログラム 資源管理及び通信 構成要素ドライバソフトウェア コンピューターハードウェア ここで“ウィンドウ環境”は一緒に使われる上記層の全
てに関するものである。
【0016】最も下にあるコンピューターハードウェア
レベルは基本コンピューター及びディスプレイモニタ、
キーボード、マウス又はトラックボールの如き位置決め
装置を含む入出力装置、及びプリンタ及びディスクドラ
イブを含む他の標準構成要素を含んでいる。次の“構成
要素ドライバソフトウェア”レベルは様々なハードウェ
ア構成要素を操作するために必要なコマンド及び信号を
生成する装置依存ソフトウェアからなる。資源管理及び
通信層は構成要素ドライバとインターフェースし、より
高い層によって生成される多重通信及びアプリケーショ
ン間の通信、資源を下にある層に割り当てるソフトウェ
アルーチンを含んでいる。ウィンドウ管理プログラムは
ウィンドウの移動及びリサイズ、ウィンドウの起動又は
不起動及びウィンドウの再ドロー及び再ペイントの如き
基本的なウィンドウ操作へのユーザーインターフェース
を取扱う。最後のユーザーインターフェース層はアプリ
ケーションプログラムが完全なユーザーインターフェー
スを開発するために使用する様々な制御(ボタン、スラ
イダ、ボックス及び他の制御)を実現する高レベルのフ
ァシリティを与える。
【0017】図2に示された配置はディスプレイスクリ
ーンインターフェース問題を解決するが、ウィンドウ管
理プログラム218が全てのアプリケーションプログラ
ムによって生成されるスクリーンディスプレイ要求を処
理しなければならないという欠点をこうむる。要求は連
続的に処理することができるにすぎないので、各要求が
端末224上に表示を生成するように処理される前にウ
ィンドウ管理プログラムへのプレゼンテーションのため
待機される。多くのウィンドウがスクリーン上に同時に
存在するディスプレイでは、ウィンドウ管理プログラム
218は容易にディスプレイ情報に対して“ボトルネッ
ク(bottleneck)”になり、アプリケーションプログラ
ム202及び216によってディスプレイの迅速な変化
を妨げる。ウィンドウがユーザーによって移動又は再位
置付けされるときのスクリーンの再ドローの遅れはしば
しばいらいらさせられシステムの操作を低下する断片的
な方法でウィンドウが構成されていることを外観によっ
て明らかにされる。
【0018】この問題は多くのアプリケーションが全て
極めて限定された資源と競合状態にあるクライアント−
サーバー環境ではさらに一層強調される。インターネッ
トは優れた通信媒体として仕事場に普及している。イン
ターネットは典型的なビジネスエンタープライズ(ente
rprise)においてほとんどどの場所からもアクセス可能
であるので、新しい専門的なひびきの流行語(buzzwor
d)はフォームエンタープライズコンピューターから
“インタープライズ(interprise)”コンピューターに
進化した。インタープライズはインターネットとエンタ
ープライズの連結である。
【0019】今日のクライアントサーバーエンタープラ
イズでは、現在のクライアントサーバーエンタープライ
ズに存在するアプリケーションは分散型システム環境の
ために構築されているので、現実に管理できるようにな
っていない。また新しいシステムは革命的ではなく進歩
的であることを要求する。かなりの出費を要求する現代
のシステムの再設計は避ける必要がある。
【0020】様々なプラットフォームで容易に展開、設
置でき、クライアント対サーバーについてそれらを分割
することを容易にし実行後のアプリケーションを管理す
るように構成された管理可能なアプリケーションをユー
ザーが使用できるシステムが要求されている。システム
は故障、エラー又はバグのために必ずしも破壊しない
が、エンタープライズ自体が複雑で、誰かが全体のシス
テムをダウンするような予期せぬことをどこかでしてい
るかもしれないので破壊することもある。システムが実
際にダウンしたとき、システム管理者はすぐに問題を確
認し、これらの予期せぬ出来事が起こるときにビジネス
が活動を中止しないように問題を効果的な方法で処理す
る。
【0021】アプリケーションはドメイン条件に基づい
て設計されるべきであり、従って下にあるいかなるプラ
ットフォームからも独立し、商業的な開発者が働く方法
に対して一層適合している。商業的な世界では、開発工
程は重要でない。通常の従業員はアプリケーション開発
者又はプログラマーではない。会社はかかる仕事を外で
雇う;会社はその種の仕事を行うためにコンサルタント
を受ける。会社及び会社が望むものによって、会社は通
常コンサルティング会社、個人コンサルタント、又はよ
り小さなグループのコンサルタントを雇い、アプリケー
ションの開発に加わって助けてもらう。それらの目的は
エンド(end )アプリケーションであり、それは保全さ
れなければならない。会社はそれを形作り、それを発展
させ、それを成長させる。修正を見越しておくために、
開発作業はエンタープライズのアプリケーション全体の
全ての詳細をどのグループも理解することは要求されず
にアプリケーションの異なる部分について異なるグルー
プの人々が作業することを可能にするモジュール式でな
ければならない。
【0022】第2の基準はシステムを開発する人々の一
部に対する余計な知識、負担又は洗練をできるだけ少な
く要求する。ほとんどの会社は単一の個人にそれらのビ
ジネスを左右されることを望まない。むしろ、会社は会
社に特別な要求をしないですばやく会社の条件にマッチ
するアプリケーションを製造するために良く理解された
ツールで作業できるドメインエキスパートである人々を
持つことを望む。
【0023】
【課題を解決するための手段】前述の問題はアプリケー
ションがサーバー(バックエンド)プログラムでネット
ワークを利用して通信するクライアント(フロントエン
ド)プログラムから構成される本発明の実例的な具体例
において克服される。クライアント及びサーバープログ
ラムは疎結合され、ネットワークを使用して情報を交換
する。クライアントプログラムはユーザーインターフェ
ース(User Interface )(UI)及びオブジェクト指
向フレームワーク(プレゼンテーションエンジン(Pres
entationEngine)(PE)フレームワーク)から構成さ
れる。UIはフレームワークとデータメッセージを交換
する。フレームワークは二つのタイプのメッセージを取
扱うように設計されている:(1)UIから、及び
(2)ネットワークを介してサーバー(バックエンド)
プログラムから。フレームワークはメッセージをフレー
ムワークへ入れたりフレームワークから出したりするメ
ッセージを管理するメディエーター(mediator)を含ん
でいる。サーバー上に常駐する多数のクライアントコン
ピューターコードセグメント(それぞれは結合を開始す
るためにクライアントコンピューターにネットワーク上
で伝送するためのものである)及び特別な交信プロトコ
ルを介して通信するために伝送されたクライアントコン
ピューターコードセグメントを利用する特別なクライア
ントとのネットワークを介する結合の開始に反応してサ
ーバー上で実施するサーバー上に常駐する多数のサーバ
ーコンピューターコードセグメントによって、ネットワ
ークを介してサーバーコンピューターとクライアントコ
ンピューターを結合するように構成された実行フレーム
ワークコードセグメントを利用するクライアントコンピ
ューター、サーバーコンピューター及びクライアントコ
ンピューターをサーバーコンピューターに接続するため
のネットワークのためのソフトウェアを有する分散形コ
ンピューターシステムが開示される。
【0024】
【発明の実施の形態】本発明はSUN,IBM,PS/
2,又は Apple’ Macintosh’のようなコンピューター
上に常駐するオペレーティングシステムのコンテキスト
で実施されることが好ましい。典型的なハードウェア環
境が図3に描かれており、それは本発明に従ったコンピ
ューター300の典型的なハードウェア構成を示してい
る。コンピューター300は中央処理装置302(それ
は従来のマイクロプロセッサーであってもよい)及び多
数の他の装置によって制御され、全てはシステムバス3
08を介して相互接続され、特別なタスクを遂行するた
めに与えられている。個々のコンピューターは図3に示
された装置のいくつかだけを持ったり、示されていない
付加的な構成要素を持ってもよいが、ほとんどのコンピ
ューターは少なくとも示された装置を含むだろう。
【0025】特に、図3に示されたコンピューターは情
報の一時的な記憶のためのランダムアクセスメモリ(R
AM)306、コンピューターの構成及び基本操作コマ
ンドのための永久記憶のためのリードオンリーメモリ
(ROM)304及びディスク装置313及びプリンタ
314のような周辺装置をそれぞれケーブル315及び
312を介してバス308に接続するための入出力(I
/O)アダプタ310を含んでいる。また、ユーザーイ
ンターフェースアダプタ316はキーボード320のよ
うな入力装置及びマウス、スピーカ及びマイクを含む他
の公知のインターフェース装置をバス308に接続する
ために与えられている。視覚的出力はビデオモニタのよ
うなディスプレイ装置322にバス308を接続するデ
ィスプレイアダプタ318によって与えられる。コンピ
ューターはその上に常駐し、 SUNSolaris 又は JavaOS
オペレーティングシステムのようなオペレーティングシ
ステムソフトウェアによって制御及び調整される。
【0026】好ましい例では、本発明はオブジェクト指
向プログラミング技術を使用するC++プログラミング
言語で実施される。C++はコンパイル済の言語であ
る。即ち、プログラムは人が読取り可能なスクリプトで
書かれ、次にこのスプリクトはコンピューターにロード
され直接実施できる機械が読取り可能な数字コードを生
成するコンパイラと称される別のプログラムに与えられ
る。以下記載されるように、C++言語はプログラムの
再使用時に多くの制御を与えてプログラムの破壊又は不
適切な使用を防止しながら、ソフトウェア開発者が他の
ものによって書かれたプログラムを容易に使用できる特
徴を有する。C++言語は良く知られており、詳細にそ
の言語を記載する多くのアーティクル及びテキストが利
用されている。さらに、C++コンパイラは Borland
International,Inc.及び Microsoft Corporationを含
む多くのコンピューターメーカーから商業的に入手可能
である。従って、明確化の理由のため、C++言語の詳
細及びC++コンパイラの操作はここではさらに議論し
ないだろう。
【0027】当業者によって理解されるように、オブジ
ェクト指向プログラミング(Object-Oriented Program
ming(OOP))技術は“オブジェクト(objects )”
の定義、創成、使用及び破壊を含んでいる。これらのオ
ブジェクトはデータ要素、ルーチン、又はデータ要素を
操作するファンクションを含むソフトウェア構成要素で
ある。データ及び関連ファンクションは構成要素として
のソフトウェアによって処理され、それらは単一アイテ
ムであるかのように創成、使用及び削除することができ
る。共に、データ及びファンクションはオブジェクトが
現実世界の構成要素をその特性(データ要素によって表
すことができる)及びその挙動(そのデータ操作ファン
クションによって表すことができる)に関して仮想的に
モデル化することを可能にする。このようにして、オブ
ジェクトは人やコンピューターのような具体的なものを
モデル化することができ、オブジェクトはまた数字又は
幾何学的デザインのような抽象的な概念もモデル化する
ことができる。
【0028】オブジェクトはそれ自体オブジェクトでな
く、実際のオブジェクトの構成方法をコンパイラに命令
するテンプレートとして作用する“クラス(classes
)”を創成することによって規定される。クラスは例
えばデータ変数の数及びタイプ及びデータを操作するフ
ァンクションに含まれるステップを指定してもよい。オ
ブジェクトはオブジェクト創成中に与えられる引き数の
ような対応するクラス定義及び付加的な情報を使用して
オブジェクトを構成するコンストラクター(constructo
r )と称される特別なファンクションによってプログラ
ムに実際に創成される。同様にオブジェクトはデストラ
クター(destructor)と称される特別なファンクション
によって破壊される。オブジェクトはそれらのデータを
使用し、それらのファンクションを呼び出すことによっ
て使用してもよい。
【0029】オブジェクト指向プログラミング技術の原
理利益は三つの基本原理から生じる:カプセル封じ、多
相性及び継承。とりわけ、オブジェクトは内部データ構
造及び内部ファンクションの全て又は一部を隠したり又
はカプセル封じするように設計することができる。特
に、プログラム設計中、プログラム開発者はデータ変数
の全て又はいくつか及び関連ファンクションの全て又は
いくつかがオブジェクト自体だけによる使用のために又
は“私用(private )”に考慮されるオブジェクトを規
定することができる。他のデータ又はファンクションは
他のプログラムによる使用のための利用又は“公開(pu
blic)”を宣言することができる。他のプログラムによ
る私用変数へのアクセスはオブジェクトの私用データに
アクセスするオブジェクトのために公開ファンクション
を規定することによって制御することができる。公開フ
ァンクションは私用データと“外部(outside )”世界
の間に制御されかつ一貫したインターフェースを形成す
る。私用変数に直接アクセスするプログラムコードを書
くためのいずれの試みもコンパイラにプログラムコンパ
イル中のエラーを生じさせ、そのエラーはコンパイル処
理を停止し、プログラムの実行を妨げる。
【0030】多相性は同じ全体フォーマットを持つが、
一貫した結果を生成するために別々に機能するように異
なるデータで作動するオブジェクト及びファンクション
を許容する概念である。例えば、付加的なファンクショ
ンは変数A+変数B(A+B)として規定されてもよ
く、この同じフォーマットはA及びBが数、文字又はド
ル及びセントのいずれでも使用できる。しかしながら、
加算を行う実際のプログラムコードはA及びBを含む変
数のタイプによって広く異なるかもしれない。多相性は
三つの別々のファンクションに各タイプの変数(数字、
文字及びドル)に対して一つを書くことを許容する。フ
ァンクションが規定された後、プログラムはその共通フ
ォーマット(A+B)によって付加的なファンクション
に後で言及することができ、コンパイル中、C++コン
パイラは変数タイプを調べることによって三つのファン
クションのどれが実際に使用されているかを決定するだ
ろう。コンパイラは次いで適当なファンクションコード
を置換するだろう。多相性は類似の結果を生成する同様
のファンクションにプログラムソースコード内で“グル
ープ化(grouped )”してより論理的で明瞭なプログラ
ムフローを生成することを可能にする。
【0031】オブジェクト指向プログラミングの下にあ
る第3の原理は継承であり、それはプログラム開発者が
予め存在するプログラムを容易に再使用し、スクラッチ
からのソフトの創成を避けることを可能にする。継承の
原理はソフトウェア開発者が関連するようなクラス(及
びクラスから後で創成されるオブジェクト)を宣言する
ことを可能にする。特に、クラスは他のベースクラスの
サブクラスとして設計されてもよい。サブクラスは“継
承し(inherits)”、ベースクラスの公開ファンクショ
ンの全てにアクセスを持ち、まさにこれらのファンクシ
ョンがサブクラスに現れるかのようである。あるいは、
サブクラスは継承されたファンクションのいくつか又は
全てをオーバーライドすることができ、又は単に同じフ
ォームで新しいファンクションを規定することによって
継承されたファンクションのいくつか又は全てを修正し
てもよい(オーバーライド又は修正はベースクラスにお
けるファンクションを変えないが、サブクラスにおける
ファンクションの使用を修正するにすぎない)。別のク
ラスのいくつかのファンクショナリティを(選択的な修
正とともに)有する新しいサブクラスの創成はソフトウ
ェア開発者が存在するコードを個々のニーズに合わせて
容易にカスタマイズすることを可能にする。
【0032】オブジェクト指向プログラミングは他のプ
ログラミング概念に対してかなりの改良を与えるが、プ
ログラム開発は特に修正のために利用できる予め存在す
るソフトウェアプログラムが全くない場合、かなり多く
の時間と労力をなお要求する。結果として、従来技術の
方法はプログラム開発者に一連の定義済の相互接続され
たクラスを与え、それらは特別な環境で共通に出合うタ
スクを行うように全て指向されている一連のオブジェク
ト及び付加的な雑ルーチンを作る。かかる定義済クラス
及びライブラリは典型的に“フレームワーク(framewor
ks)”と称せられ、本質的にワーキングアプリケーショ
ンに予め組立てられた構造を与える。
【0033】例えば、ユーザーインターフェースのため
のフレームワークはウィンドウ、スクロールバー、メニ
ューなどを作る一連の定義済グラフィックインターフェ
ースオブジェクトを与え、これらのグラフィックインタ
ーフェースオブジェクトにサポート及び“デフォルト
(default )”挙動を与えてもよい。フレームワークは
オブジェクト指向技術に基づいているので、定義済クラ
スはベースクラスとして使用することができ、組込みデ
フォルトは開発者が定義したサブクラスによって引き継
ぎ、開発者がフレームワークを拡張できるように修正又
はオーバーライドすることができ、専門的技術(expert
ise )の特別な領域でカスタマイズされた解決策を作
る。このオブジェクト指向の方法はプログラマーがオリ
ジナルプログラムを変更しないで、むしろオリジナルプ
ログラムの能力を拡張するので従来のプログラミングに
対して大きな利点を与える。さらに、フレームワークが
アーキテクチャガイダンス及びモデル化を与え、同時に
開発者が自由にプログラムドメインに独自の特別な動作
を供給するので、開発者はコードの層を通して盲目的に
作業することはない。
【0034】解決されるべき問題の種類及び伴われるシ
ステムのレベルによって利用できる多くの種類のフレー
ムワークが存在する。フレームワークのタイプはユーザ
ーインターフェースを開発するのに役立つ高レベルアプ
リケーションフレームワークから通信、印刷、ファイル
システムサポート、グラフィックなどの如き基本システ
ムソフトウェアサービスを与える低レベルフレームワー
クまでの範囲である。アプリケーションフレームワーク
の商業的な例は MacApp (Apple ),Bedrock(Symante
c),OWL(Borland ),NeXT Step App Kit (NeX
T)、及びSmalltalk −80 MVC(ParcPlace )を
含む。
【0035】フレームワークの方法はオブジェクト層に
おけるカプセル封じ、多相性及び継承の原理を全て利用
し、他のプログラミング技術に対して実質的な改良にな
るけれども、問題も生じる。アプリケーションフレーム
ワークはモノリシックオペレーティングの上部の1以上
のオブジェクト“層(layers)”からなり、たとえオブ
ジェクト層の柔軟性があったとしても、オークワード手
続コール(aukword procedural calls)によって下に
あるオペレーティングシステムと直接対話する必要性が
なお多い。
【0036】アプリケーションフレームワークが開発者
にアプリケーションプログラムのためのプレハブ機能を
与えるのと同じ方法で、好ましい例に含まれるようなシ
ステムフレークワークはシステムレベルサービスにプレ
ハブ機能を与えることができ、その開発者はカスタマイ
ズされた解決策を作るために修正又はオーバーライドで
き、それによって従来技術のアプリケーションフレーム
ワークプログラムで必要なオークワード手続コールを避
ける。例えば、アプリケーションプログラムによって生
成される情報を表示するためにウィンドウを作成、削除
及び操作するための基礎を与えることができるディスプ
レイフレームワークを考えて下さい。これらの能力を必
要としたアプリケーションソフトウェア開発者は通常そ
れらを与えるために特別なルーチンを書込まなければな
らないだろう。フレームワークでこれをするために、開
発者は完成したディスプレイの特性及び挙動を供給する
必要があるにすぎず、一方フレームワークはタスクを行
う実際のルーチンを与える。
【0037】好ましい例はフレームワークの概念をと
り、アプリケーション及びオペレーティングシステムを
含む全体のシステムにわたってそれを適用する。商業上
の又は法人の開発者、システム統合者、又はOEMにと
って、これは MacApp のようなフレームワークに対して
実証される利点の全てがテキスト及びユーザーインター
フェースのようなものに対するアプリケーションレベル
でだけでなく、印刷、グラフィック、マルチメディア、
ファイルシステム、I/O、試験などのようなサービス
に対するシステムレベルでてこ入れできることを意味す
る。
【0038】好ましい例はJAVA,C,及びC++言
語を使用して記述され、オブジェクト指向プログラミン
グ方法論を利用する。オブジェクト指向プログラミング
(OOP)は複雑なアプリケーションを開発するために
益々使用されるようになっている。OOPはソフトウェ
ア設計及び開発の主流に向かって進むにつれて、様々な
ソフトウェア解決策がOOPの利益を利用するための適
応を要求する。メッセージインターフェースのための一
連のOOPクラス及びオブジェクトを与えることができ
るように電子メッセージシステムのメッセージインター
フェースに適用されるためのこれらのOOPの原理に対
する要求が存在する。
【0039】OOPは問題を分析し、システムを設計
し、プログラムを構成する工程を含む、オブジェクトを
使用するコンピューターソフトウェアの開発法である。
オブジェクトは関連する構造及び手順の収集及びデータ
の両方を含むソフトウェアパッケージである。それは構
造及び手順の収集及びデータの両方を含むので、それは
特別なタスクを行うために他の付加的な構造、手順又は
データを必要としない自足できる構成要素として視覚化
することができる。それゆえ、OOPはオブジェクトと
称される大きく独立した(autonomous)構成要素の収集
としてコンピュータープログラムを見る。それらのそれ
ぞれは個々のタスクに対して責任がある。一つの構成要
素又はモジュールにデータ、構造及び手順をともにパッ
ケージするというこの概念はカプセル封じと称される。
【0040】一般に、OOP構成要素はオブジェクトモ
デルに一致するインターフェースを与え、構成要素統合
アーキテクチャを通してランタイムにアクセスされる再
使用可能なソフトウェアモジュールである。構成要素統
合アーキテクチャは異なる方法空間のソフトウェアモジ
ュールが互いの能力又は機能を利用できる一連のアーキ
テクチャ機構である。これはどれがアーキテクチャを作
るかについて共通の構成要素オブジェクトモデルを仮定
することによって一般になされる。
【0041】この点でオブジェクトとオブジェクトのク
ラスの間で区別する価値がある。オブジェクトはオブジ
ェクトのクラスの単一例であり、それはしばしばクラス
と称される。オブジェクトのクラスは青写真として見る
ことができ、それから多くのオブジェクトを形成するこ
とができる。
【0042】OOPはプログラムに別のオブジェクトの
一部であるオブジェクトを作ることを可能にする。例え
ば、ピストンエンジンを表すオブジェクトはピストンを
表すオブジェクトと構成関係を持たなければならないと
言われている。実際に、ピストンエンジンはピストン、
バルブ及び多くの他の構成要素を含む;ピストンがピス
トンエンジンの要素であることは二つのオブジェクトに
よってOOPに論理的かつ意味論的に表すことができ
る。
【0043】OOPは別のオブジェクト“から依存する
(depends from )”オブジェクトの創成も可能にす
る。もし二つのオブジェクトがあるなら(一つはピスト
ンエンジンを表し、他はピストンがセラミックで作られ
たピストンエンジンを表す)、二つのオブジェクト間の
関係は構成関係にない。セラミックエンジンはピストン
エンジンを作らない。むしろそれはピストンエンジンよ
り1以上の限定を有するピストンエンジンの1種にすぎ
ない;そのピストンはセラミックから作られる。この場
合において、セラミックピストンエンジンを表すオブジ
ェクトは導出されたオブジェクトと称され、それはピス
トンエンジンを表すオブジェクトの全ての側面を引き継
ぎ、それにさらなる限定又は詳細を加える。セラミック
ピストンエンジンを表すオブジェクトはピストンエンジ
ンを表すオブジェクト“から依存する(depends from
)”。これらのオブジェクト間の関係は継承と称され
る。
【0044】セラミックピストンエンジンを表すオブジ
ェクト又はクラスはピストンエンジンを表すオブジェク
トの側面の全てを引き継ぐとき、それはピストンエンジ
ンクラスに規定される標準ピストンの熱特性を引き継
ぐ。しかしながら、セラミックピストンエンジンオブジ
ェクトはこれらのセラミックの特別な熱特性をオーバー
ライドし、それらは金属ピストンと関連する熱特性とは
典型的に異なる。それはオリジナル上をスキップし、セ
ラミックピストンに関連する新しいファンクションを使
用する。異なる種類のピストンエンジンは異なる特性を
有するが、それと関連する同じ下にあるファンクション
(例えばエンジン中のピストン数、発火順序、潤滑な
ど)を持ってもよい。どのようなピストンエンジンオブ
ジェクトにおいてもこれらのファンクションのそれぞれ
をアクセスするために、プログラマーは同じ名前で同じ
ファンクションを呼び出すが、ピストンエンジンの各タ
イプは同じ名前のうしろにファンクションの異なる/オ
ーバーライドするインプリメンテーションを持ってもよ
い。同じ名前のうしろにファンクションの異なるインプ
リメンテーションを隠すというこの能力は多相性と称さ
れ、それはオブジェクト間での通信を大いに単純化す
る。
【0045】構成関係の概念、カプセル封じ、継承及び
多相性を用いて、オブジェクトは現実世界のいかなるも
のについても表すことができる。実際、我々の現実の論
理的認識はオブジェクト指向ソフトウェアにおけるオブ
ジェクトになることができる種類のものを決定すること
についての唯一の限定である。典型的なカテゴリーは以
下のようである: − オブジェクトは交通の流れにおける自動車、回路デ
ザインプログラムにおける電子構成要素、経済的モデル
における国、又は航空交通制御システムにおける航空機
のような物理的オブジェクトを表すことができる。 − オブジェクトはウィンドウ、メニュー又はグラフィ
ックオブジェクトのようなコンピューターユーザー環境
の要素を表すことができる。 − オブジェクトは都市の緯度及び経度の表又はパーソ
ナルファイルのようなインベントリを表すことができ
る。 − オブジェクトは時間、角度及び複素数、又は平面上
の場所のようなユーザーが規定するデータタイプを表す
ことができる。
【0046】どのような論理的に分離可能な事柄につい
ても表すオブジェクトの巨大な能力を用いることによっ
て、OOPはソフトウェア開発者がその現実が物理的エ
ンティティ、方法、システム又は構成の事柄であるかど
うかを現実のいくつかの側面のモデルであるコンピュー
タープログラムで設計及び実施することを可能にする。
オブジェクトはいかなるものも表すことができるので、
ソフトウェア開発者は将来の大きなソフトウェアプロジ
ェクトの構成要素として使用できるオブジェクトを作る
ことができる。
【0047】もし新しいOOPソフトウェアプログラム
の90%が予め存在する再使用可能なオブジェクトから
作られた検証済の存在する構成要素からなるなら、新し
いソフトウェアプロジェクトの残りの10%だけがスク
ラッチから書込み及び試験されなければならない。90
%は広く試験された再使用可能なオブジェクトのインベ
ントリに由来するので、エラーが生じる潜在的ドメイン
はプログラムの10%である。結果として、OOPはソ
フトウェア開発者が他の前に作ったオブジェクトからオ
ブジェクトを作ることを可能にする。
【0048】この方法はアセンブリ及びサブアセンブリ
から作られた複雑な機械に良く似ている。それゆえ、O
OP技術はソフトウェア技術をソフトウェアが存在する
構成要素(それはオブジェクトとして開発者に利用でき
る)から作られるハードウェア技術に一層類似させる。
これは全て結局、開発の増加するスピード及びソフトウ
ェアの改良された品質になる。
【0049】プログラミング言語はカプセル封じ、継
承、多相性、及び構成関係のようなOOP原理を十分に
サポートするように開始する。C++言語の出現で、多
くの商業的なソフトウェア開発者がOOPを包含する。
さらに、C++は商業的アプリケーション及びシステム
−プログラミングプロジェクトの両方に対して適してい
る。今のところ、C++は多くのOOPプログラマーの
うちで最も人気のある選択であるように見えるが、Smal
ltalk ,common lisp object system(CLOS)、
及び Eiffel のような他のOOP言語のホストがある。
さらに、OOP能力は Pascal のような伝統的な人気の
あるコンピュータープログラミング言語に加えられる。
【0050】オブジェクトクラスの利点は以下のように
まとめられる: − オブジェクト及びそれらの対応するクラスは複雑な
プログラミング問題を多くのより小さな、より簡単な問
題にする。 − カプセル封じは互いに通信できる小さな独立したオ
ブジェクトへのデータの編成を通してデータ抽象化を強
制する。カプセル封じは不意のダメージからオブジェク
ト内のデータを保護するが、オブジェクトのメンバーフ
ァンクション及び構造を呼び出すことによって他のオブ
ジェクトがそのデータと対話することができる。 − サブクラシング及び継承はシステム内で利用できる
標準クラスから新しい種類のオブジェクトを導出するこ
とを通してオブジェクトを拡大及び修正することができ
る。従って、新しい能力はスクラッチから開始する必要
性なしで作られる。 − 多相性及び多重継承は異なるプログラマーが多くの
異なるクラスの特性を混ぜたり一致させたりすることが
でき、予測可能な方法で関連するオブジェクトで作業で
きる専門オブジェクトを作ることができる。 − クラス階層及び抑制階層は現実世界オブジェクト及
びそれらの間の関係をモデル化するために柔軟な機構を
与える。 − 再使用可能なクラスのライブラリは多くの状況にお
いて有用であるが、それらは一定の制限を有する。例え
ば: − 複雑性。複雑なシステムでは、関連するクラスのた
めのクラス階層は多くの何十又は何百というクラスを伴
って極端に混乱させられる。 − 制御の流れ。クラスライブラリの助けで書かれたプ
ログラムは制御の流れに責任がある(即ち、それは特別
なライブラリから作られた全てのオブジェクトの間の対
話を制御しなければならない)。プログラマーはどの種
類のオブジェクトに対してどの時間にどのファンクショ
ンを呼び出すかを決定しなければならない。 − 努力の重複。クラスライブラリはプログラマーが多
くの小さな断片のコードを使用及び再使用することを可
能にするが、各プログラマーは異なる方法でそれらの断
片をまとめることができる。2人の異なるプログラマー
は正確に同じことをする二つのプログラムを書くために
同じクラスライブラリを使用することができるが、その
内部構造(即ち、設計)は各プログラマーが方法に従っ
て作る何百という小さな決定によって全く異なってもよ
い。必然的に、同じ断片のコードはわずかに異なる方法
で同じことをすることになり、それらは同じように一緒
に作用しない。
【0051】クラスライブラリは極めて柔軟性がある。
プログラムが複雑になっていくに従って、プログラマー
は何度も基本的な問題に対する解決策を再発明させられ
ている。相対的に新しい範囲のクラスライブラリ概念は
クラスライブラリのフレームを持つことである。このフ
レームワークはさらに複雑であり、特別なアプリケーシ
ョンドメインにおいて共通の条件及び設計を実現する主
要な機構及び小規模パターンの両方を獲得する共同で行
うクラスのかなりの収集からなる。それらはパーソナル
コンピューターのためのメニュー、ウィンドウ、ダイア
ログボックス及び他の標準ユーザーインターフェース要
素を表示する際に伴う雑用からアプリケーションプログ
ラマーを開放するためにまず開発された。
【0052】フレームワークはプログラマーが自らが書
くコードと他人によって書かれたコードの間の対話につ
いて考える方法における変化も表している。手順プログ
ラミングの初期には、プログラマーはオペレーティング
システムによって与えられるライブラリを呼び出してあ
るタスクを行ったが、基本的にプログラムは最初から終
わりまで実行され、プログラマーは制御の流れに対して
責任があったにすぎない。これは給料を印刷したり、数
学的表を計算したり、又はまさに一つの方法で実行され
るプログラムで他の問題を解決するために適していた。
【0053】グラフィカルユーザーインターフェースの
開発はこの手順プログラム配列をひっくり返しはじめ
た。これらのインターフェースはプログラム論理よりむ
しろユーザーがプログラムを駆動し、ある行動が行われ
るべき時を決定することができる。今日、ほとんどのパ
ーソナルコンピューターソフトウェアはマウス、キーボ
ード、及び他の外部イベント源を監視するイベントルー
プによってこれを達成し、ユーザーが行う行動によるプ
ログラマーのコードの適切な部分を呼び出す。プログラ
マーはイベントが起こる順序をもはや決定しない。代わ
りに、プログラムは予測できない時間に予測できない順
序で呼び出される別々の断片に分割される。この方法に
おける制御をユーザーに手放すことによって、開発者は
より一層簡単に使用されるプログラムを作る。それにも
かかわらず、開発者によって書かれたプログラムの個々
の断片はオペレーティングシステムによって与えられる
ライブラリを呼び出して一定のタスクを達成し、プログ
ラマーはイベントループによって呼び出された後に各断
片中の制御の流れを決定しなければならない。アプリケ
ーションコードはシステム“の上部に置かれる(sits
on top of )”。
【0054】同じイベントループプログラムは全てのア
プリケーションのために別々に書かれる必要のない多く
のコードを書くことをプログラマーに要求する。アプリ
ケーションフレームワークの概念は同じループ概念をさ
らに持っている。基本メニュー、ウィンドウ、及びダイ
アログボックスを構成する全てのナット及びボルトを処
理し、次いでこれらのものを全て一緒に作業させる代わ
りに、アプリケーションフレームワークを使用するプロ
グラマーはアプリケーションコード及びベーシックユー
ザーインターフェース要素を適所で作業することを開始
する。続いて、それらは意図するアプリケーションの特
別な能力とフレームワークの一般的な能力のいくつかを
置き換えることによってそこから作り上げられる。
【0055】アプリケーションフレームワークはプログ
ラマーがスクラッチから書かなければならないコードの
全体量を減らす。しかしながら、フレームワークは実際
にウィンドウを表示し、コピー及びペーストなどをサポ
ートする一般的なアプリケーションであるので、プログ
ラマーは同じループプログラムが可能にするより多い程
度で制御を手放すことができる。フレームワークコード
はほとんど全てのイベント取扱い及び制御の流れを処理
し、プログラマーのコードはフレームワークがそれを必
要とするときにだけ呼び出される(例えばプロプラエタ
リデータ構造を作成又は操作すること)。
【0056】フレームワークプログラムを書くプログラ
マーは制御をユーザーに手放すだけでなく(イベントル
ーププログラムに対してあてはまる)、プログラム内の
制御の詳細な流れをフレームワークに手放す。この方法
は同じ問題に対して何度も繰り返して作られるカスタム
コードを有する孤立したプログラムに対して興味ある方
法で一緒に作用する複雑なシステムの創造を可能にす
る。
【0057】従って、上で説明したように、フレームワ
ークは基本的に与えられた問題ドメインに対する再使用
可能な設計解決策を作り上げる共同するクラスの収集で
ある。それは典型的にデフォルト挙動(例えばメニュー
及びウィンドウに対して)を与えるオブジェクトを含
み、プログラマーはフレームワークが適切な時間にアプ
リケーションコードを呼び出すようにそのデフォルト挙
動のいくつかを引き継ぎ他の挙動をオーバーライドする
ことによってそれを使用する。
【0058】フレームワークとクラスライブラリの間に
三つの主な違いがある: − 挙動(Behavior)対プロトコル。クラスライブラリ
は本質的にあなたがあなたのプログラムにおいてそれら
の個々の挙動を欲しいときに呼び出すことができる挙動
の収集である。一方、フレームワークは挙動だけでな
く、プログラマーが与えることを提案するもの対フレー
ムワークが与えるもののためのルールを含む、挙動を組
合せることができる方法を支配するルール又はプロトコ
ルを与える。 − 呼び出し対オーバーライド。クラスライブラリを用
いて、プログラマーはオブジェクトを例示し、それらの
メンバーファンクションを呼び出す。フレームワークを
用いて同じ方法でオブジェクトを例示し呼び出すこと
(即ち、クラスライブラリとしてフレームワークを取扱
うこと)ができるが、フレームワークの再使用可能な設
計の十分な利点を得るため、プログラマーは典型的にオ
ーバーライドしフレームワークによって呼び出されるコ
ードを書く。フレームワークはそのオブジェクト間で制
御の流れを管理する。プログラムを書くことはどのよう
にして異なる断片が一緒に作用すべきかを指定するより
むしろフレームワークによって呼び出されるソフトウェ
アの様々な断片の間で信頼性を分割することを含む。 − 実現(Imprementation)対設計。クラスライブラリ
を用いて、プログラマーは実現だけを再使用し、一方フ
レームワークを用いて彼らは設計を再使用する。フレー
ムワークは関連プログラムのファミリー又はソフトウェ
アが作動する方法を具体化する。それは与えられたドメ
インにおいて様々な特別なプログラムに適応することが
できる一般的な設計解決策を表す。例えば単一のフレー
ムワークは、たとえ同じフレームワークで作られた二つ
の異なるユーザーインターフェースが全く異なるインタ
ーフェース問題を解決したとしても、ユーザーインター
フェースが作動する方法を具体化することができる。
【0059】従って、様々な問題及びプログラミングタ
スクに対する解決のためのフレームワークの開発を通し
て、ソフトウェアのための設計及び開発努力におけるか
なりの低減を達成することができる。本発明の好ましい
例はクライアントと商人の間の輸送媒体のための汎用安
全交信プロトコルとともにインターネット上のドキュメ
ントを実施するためにHyperText Markup Language
(HTML)を利用する。HTTP又は他のプロトコル
は過度の実験なしですぐにHTMLの代わりにすること
ができる。これらの製品についての情報は T. Berners
−Lee ,D. Connoly,“RFC 1866:Hypertext
Markup Language −2.0”(11月1995年);
及びR. Fielding ,H. Frystyk,T. Berners−Lee ,J.
Gettys 及びJ. C. Mogul ,“Hypertext Transfer P
rotocol −−HTTP/1.1:HTTP Working G
roup Internet Draft ”(5月2日1996年)にお
いて利用できる。HTMLは次々とプラットフォームを
持ち運びできるハイパーテキストドキュメントを作るた
めに使用された簡単なデータフォーマットである。HT
MLドキュメントは幅広い範囲のドメインから情報を表
すために適切な包括的セマンティクスを有するSGML
ドキュメントである。HTMLは1990年以来 World
−Wide Web grobal informationの開始によって使用
されている。HTMLはISO Standard 8879:
1986 Information Processing Text and Offi
ce Systems ;Standard Generalized Markup Langu
age (SGML)のアプリケーションである。
【0060】今まで、Web 開発ツールはクライアントか
らサーバーに及ぶ動的Web アプリケーションを作り、存
在するコンピューテング資源を相互運用する能力におい
て制限されていた。最近まで、HTMLはWeb ベースの
解決策の開発に使用される主要な技術であった。しかし
ながら、HTMLは下記領域において不適切であること
がわかった: 劣った性能; 限定的ユーザーインターフェース能力; 静的Web ページを作ることだけができる; 存在するアプリケーション及びデータとの相互運用性の
不足; 基準化能力なし。
【0061】Sun Microsystemの Java 言語は下記のよ
うにすることによってクライアント側の問題の多くを解
決する: クライアント側での性能を向上する; 動的、リアルタイム Web アプリケーションの作成を可
能にする; 幅広い種類のユーザーインターフェース構成要素を作成
する能力を与える。
【0062】Java は機械コード(例えばC,C++,F
ortran など)の代わりに中間形態のバイトコードにコ
ンパイルされる。バイトコードはバイトコードインタプ
リタを用いてどのようなマシン上でも実行する。従っ
て、 Java アプレットは様々なクライアントマシン上で
実行することができ、バイトコードは圧縮され、ユニバ
ーサルなクライアント及びサーバー中央手段で好ましい
例を拡大するネットワーク上で効率的に送信するように
設計されている。
【0063】Java を用いて、開発者のローバストユー
ザーインターフェース(UI)構成要素を作ることがで
きる。カスタム“規格品(widgets )”(例えば、リア
ルタイム相場表示機、生き物のように動くアイコンな
ど)を作ることができ、クライアント側性能を向上す
る。HTMLと違って、 Java はクライアント側妥当性
検証の考えをサポートし、向上した性能のためクライア
ント上への適切な処理をアンロードする。動的、リアル
タイム Web ページを作ることができる。上記カムタム
UI構成要素を使用して、動的Web ページも作ることが
できる。
【0064】Sun の Java 言語は“インターネットをプ
ログラムする(programming theInternet)”ための産
業上認知された言語として出現した。Sun は Java を簡
単で、オブジェクト指向の、分散された、翻訳された、
ローバスト、安全、アーキテクチャニュートラル、持ち
運び可能な、高性能、多重系、動的、専門語に従順な
(buzzword−compliant )、汎用のプログラミング言語
として規定する。 Java はプラットフォーム独立 Java
アプレットの形でインターネットのためのプログラミン
グをサポートする。 Java アプレットは開発者がWeb ド
キュメント(例えば簡単な動画、ページ装飾、ベーシッ
クゲームなど)に“対話形の内容(interactive conte
nt)”を加えることができるSun の Java Application
Programming Interface(API)に従う小さな専用
アプリケーションである。アプレットはサーバーからク
ライアントにコードをコピーすることによって Java −
コンパチブルブラウザ(例えばNetscape Navigator )
内で実行する。言語の観点から、 Java の中心的特徴は
C++に基づいている。Sun の Java 文献には、 Java
は基本的には“より動的な方法解決のために Objective
C からの拡張を有するC++”であると述べられてい
る。
【0065】Java と同じ機能を与える別の技術はMicro
soft 及びActiveX Technology によって提供され、イ
ンターネット及びパーソナルコンピューターのための動
的内容を確立するために開発者及びWeb 設計者に与え
る。ActiveX は動画、3Dバーチャルリアリティ、ビデ
オ及び他のマルチメディアの内容を開発するためのツー
ルを含む。ツールはインターネット基準を使用し、多重
プラットフォーム上で作動し、100以上の会社によっ
てサポートされている。グループのビルディングブロッ
クはActiveX Controls と称され、それは開発者がハイ
パーテキストマークアップ言語(HTML)ページにお
いてソフトウェアの部分を埋め込むことができる小さな
速い構成要素である。ActiveX Controls は Microsoft
VisualC++ ,Borland Delphi , Microsoft Visual
Basic プログラミングシステム、及び将来には Java
のためのMicrosoft の開発ツール(コードは“Jakarta
”と称される)を含む様々なプログラミング言語で作
動する。ActiveX Technologies は ActiveX Server
Framework も含み、開発者がサーバーアプリケーション
を創作することを可能にする。当業者はActiveX が本発
明を実行するために過度の実験なしで Java に置き換え
れることをすぐに認識する。
【0066】好ましい例は管理可能なアプリケーション
を作るためのシステムを提供する。アプリケーションは
様々なプラットフォームにすぐに展開でき、それらをク
ライアント対サーバーに区切りアプリケーションを処理
することが容易であるように構成される。好ましい例は
マルチノードプラットフォームにおいてノードを分散し
たクライアントサーバーアプリケーションとして使用可
能である。単一アプリケーションは小さく分割され、ネ
ットワークにおけるノードを横切って分散される。即
ち、アプリケーションは分散形システムとして規定され
る。
【0067】エンタープライズコンピューティングシス
テムはしばしばネットワークによって相互接続されたノ
ードの異質収集(heterogeneous collection )であ
る。典型的な環境では、ネットワークにおけるサーバー
ノードはデータベースと対話するプログラム及びデータ
を保持し、クライアントノードはサーバー上で情報にア
クセスするためのプログラムを含んでいる。これらの環
境の複雑性はソフトウェアアプリケーションを創造、構
成、展開及び管理することを難しくしている。しかしな
がら、ウェブ技術(ブラウザ、 Java 言語及びHTT
P)の出現は企業がこれらの問題のいくつかを解決する
際に役立つ内部ウェブを創造及び使用することを可能に
している。 Java はクライアント−サーバーアプリケー
ションプラットフォーム及び分布チャネルとしてウェブ
が前記挑戦の多くをアドレスする際に好ましい例と対話
することを可能にする。
【0068】好ましい例はWeb からダウンロードできる
クライアントプログラムを作るためのツールキットを含
んでいる;サーバープログラムを単一アプリケーション
としてクライアントと機能させるためのインターフェー
ス;ツールを実行するためのフレームワークとクライア
ントプログラム及びサーバープログラムの両方を接続す
るためのツール;及びアプリケーションを導入、展開及
び管理するためのツール。
【0069】好ましい例に従って作られるアプリケーシ
ョンは互いに協同する一連の構成要素からなる。サーバ
ー構成要素はCプログラムを呼び出すことができるいか
なる原始言語でも実現することができる。クライアント
構成要素は Java プログラミング言語で実現される。ク
ライアント構成要素はGUI及びプレゼンテーションエ
ンジン(Presentantion Engine (PE))からなる。
アプリケーションシステムを完成するため、好ましい例
はクライアントとサーバー構成要素の間のメッセージの
交換を行うことができる通信層、エラーを報告するため
の例外層、及びアプリケーション展開を管理するための
アクセス層を与える。好ましい例を利用するるアプリケ
ーション開発者のタスクは構成要素をアプリケーション
システムにアセンブルすることである。
【0070】好ましい例はサーバーアプリケーションへ
の Java クライアントアクセスを与え、存在するアプリ
ケーションを広げたり又は新しいアプリケーションを作
るために利用することができる。存在するアプリケーシ
ョンのうち、サーバープログラム及びデータベースがサ
ーバー上にあり、ユーザーインターフェースがクライア
ント上にあるように区分されているものは好ましい例に
移行するために特に適している。好ましい例に特に適し
た他のアプリケーションはデータベースに対する変化又
はそれらをアクセスするプログラムなしで部門又は団体
のデータへのアクセスを要求する。インターネット、イ
ントラネット又は他のネットワーク環境においてWeb 技
術を既に使用する企業のために、好ましい例に従ったア
プリケーションは世界又は組織のどこからでも存在する
データに素早くアクセスすることができる。好ましい例
に従ったアプリケーションは導入(設置)された Java
インタプリタ/ランタイム(Java JDK)又はJava
OSを用いてどのような処理装置上でも実行することが
できる。アプリケーションクライアントプログラムはグ
ラフィカルユーザーインターフェース(Graphical Use
r Interface(GUI))と統合するための方法及び必
要な Java クラスを含むヌルアプリケーションテンプレ
ートを使用する Java において開発されている。テンプ
レートはクライアントプログラムにサーバープログラム
との通信をさせる Java クラスを含む。アプリケーショ
ンを導入及び展開するためのツール及びスクリプトはア
プレットビューワ又はWeb ブラウザからのアプリケーシ
ョン開始のための汎用開始アプレットを含んでいる。
【0071】好ましい例に従った主要な開発タスクは与
えられたテンプレートからプレゼンテーションエンジン
(PE)と称されるアプリケーションフロントエンドを
作ることである。PEテンプレートはクライアント通信
ライブラリを通してメッセージ及びそれらのデータを送
るための方法(オブジェクトにおける論理)を含んでい
る。開発者は彼らのアプリケーションのために必要なメ
ッセージ及びデータを指定するためにテンプレートを変
更する。通信ライブラリはネットワークを横切るメッセ
ージ及びデータの受渡しを取扱う。PEツールキットは
これらのタスクをサポートする。ツールキットは特別な
アプリケーションの条件のために変更及び拡張すること
ができるフルセットの Java 構成要素である。またサー
バープログラムはインバウンド(inbound )メッセージ
に反応してどのハンドラファンクションが呼び出される
かを指定し、データがクライアントに送られるときサー
バーローカル通信ライブラリに“送信(send)”コール
を挿入することによってクライアントと通信することが
できなければならない。二つのPE開発タスクは(1)
Java UIをPEフレームワークに接続すること、及び
(2)PEとサーバーの間で交換されるメッセージを定
義/記述することである。
【0072】好ましい例に従った構成要素の全てはサー
バーがその資源に対する全てのアクセスを制御するよう
にサーバー上に存在する。サーバーはかくしてそのアプ
リケーションの展開及び管理を制御する。クライアント
はサーバーの資源にアクセスするためにウェブを使用す
る。また、クライアントノードでのユーザーが以下で詳
細に述べられるブラウザからアプリケーションを開始で
きるようにするアプレットを作るためにテンプレートが
与えられる。
【0073】図4は好ましい例に従ったブロック図であ
る。クライアント410及びバックエンドサーバー40
0はそれらのローカル通信ライブラリ420でメッセー
ジを介して通信されたデータメッセージを創成及び受信
する。メッセージはTCP/IPの上部で層にした“i
ctp”プロトコルにおいて符号化されたイベントであ
る。実行フレームワーク430層はどのような特定のサ
ーバープロトコルの依存も避けるTCP/IPのような
交信プロトコルの上部で受渡す非同期のイベント駆動メ
ッセージとしていかなるネットワークプロトコル上でも
実現することができる。アプリケーションは特別なメッ
セージイベントを有し、各構成要素(フロント410及
びバック400エンド)はメッセージイベントのための
ローカルハンドラを含む。従って、どのような二つの構
成要素も、それらがアプリケーション440のために定
義されたメッセージイベントにおいてメッセージのため
のローカルハンドラを含むなら、アプリケーション44
0を形成するために実行フレームワーク430に差込む
ことができる。構成要素はそれぞれ通信ライブラリ42
0のローカルインスタンスを含んでいる。構成要素だけ
がメッセージイベントを送信又は受信するためにローカ
ル通信ライブラリ420のアプリケーションプログラミ
ングインターフェース(Application Programming In
terface (API))と対話する。
【0074】好ましい例に従ったアプリケーション構成
要素は構成要素間で直接の依存(又は通信)が全くない
ので“疎結合(loosely coupled)”されている。実行
フレームワーク430は様々なアプリケーションに対す
る全てのメッセージ転送のための一貫した接続を与え
る。実行フレームワーク430は接続のためにエラー報
告のような付加的なサービスを供給する。アプリケーシ
ョン440はアプリケーションが展開される特別な分散
形プラットフォームの物理的特性から孤立されている。
従って、アプリケーション構成要素及びメッセージイベ
ントは一定のままであるが、分散形プラットフォームは
調整及び変更することができる。
【0075】アプリケーション440は図4及び図5に
示されているように良く規定された構成要素を含むシス
テムであるので、フロントエンド530及びバックエン
ド540に加えてそれらをアプリケーション中に対応づ
ける方法の定義を導入することができる。それゆえ、サ
ーバーは全ての資源を持ち、一方クライアント500は
資源へのアクセスだけを要求することができる。サーバ
ー520は良く規定された方策を執行することによって
その資源へのアクセスを制御できるように拡張される。
【0076】図5は好ましい例がサーバー中央方策(se
rver-centric policies )の実現及び設定を容易にする
ために Java をどのようにしててこ入れするかを示した
ものである。クライアント及びサーバーノードはインタ
ーネット、イントラネット又は他のネットワーク環境に
おいてウェブ技術を利用して通信する。クライアントノ
ード500はアプリケーションを実行するための要求と
HTTPを介してサーバーノード520を接触する。ク
ライアント500を認証した後、サーバーノード520
はサーバーノード520で維持されるアプリケーション
定義リストに基づいたフロント502及びバックエンド
510構成要素を選択する。サーバーはそのバックエン
ドプロセス510を開始し、インターネット、イントラ
ネット又は他のネットワーク環境においてWeb 技術を介
してクライアントノードにフロントエンドプログラム5
02を送る。クライアント500はクライアントノード
500で局部的に選択されたフロントエンド502を実
行する。フロントエンド(クライアント)プログラムは
アプリケーションを実行するためにメッセージ受渡しを
開始するためにサーバーに戻るTCP/IP接続を開
く。フロントエンドプログラム502は一連の多重プラ
ットフォームクライアント上で並行に実行できるクライ
アント/サーバーアプリケーションのインスタンスを容
易にする Javaにおいて完全に実現される。サーバー5
20はコンピューター上で設置される Java ランタイム
を有するいかなるクライアントノード500にもフロン
トエンドプログラム502を送ることができる。サーバ
ー方策はクライアントを含まないだろう。方策はそのロ
ーカル資源のサーバー制御に集中するだろう。
【0077】また、図5はフロントエンド502とバッ
クエンド510アプリケーション構成要素の間の疎結合
を示したものである。各プログラムはローカル通信ライ
ブラリ515を含んでいる。フロントエンドライブラリ
は Java において実現され、バックエンドライブラリは
C APIでC++において実現される。プログラムは
それぞれメッセージを送信及び受信するためにローカル
通信ライブラリAPIを利用する。従ってプログラムは
互いに直接通信しない。
【0078】プレゼンテーションエンジン(Presentati
on Engine) 各アプリケーション実行のために二つの段階が存在す
る。第1段階では、アプリケーションが開始し、クライ
アントノードはサーバーノードの資源へのアクセスを要
求し、サーバーはこの要求上で動作する。ノードはイン
ターネット又は他の通信ネットワークを介して結合さ
れ、エンタープライズ内で持続的な関係を持たない。第
2段階、アプリケーション実行では、クライアントはプ
レゼンテーションエンジン(Presentation Engine(P
E))と称されるフロントエンド Java プログラムを受
け、プレゼンテーションサービスを容易にする。フロン
トエンド及びバックエンドはTCP/IP上で実行フレ
ームワークを介して通信される。
【0079】図6は好ましい例に従ったアプリケーショ
ン開始と組合される処理を示したものである。アプリケ
ーションが開始するとき、クライアントノードはクライ
アント600ユーザーについての情報をまず収集し htt
p 602を介してサーバーノード610を接続する開始
アプレット620を実行する。サーバーノード610は
インターネット、イントラネット又は他のネットワーク
環境においてWeb 技術上でHTTPを介して要求を処理
するためのウェブサーバー630を含むように拡張され
ている。アクセス層640はウェブサーバー630から
cgi−bin インターフェースを介して呼び出される。ア
クセス層640はクライアントユーザーについての情報
(例えばユーザーID及びパスワード)がサーバー常駐
認証サービスを呼び出すために使用できるようにフレー
ムワークを与える。たとえ認証がうまくいったとして
も、アクセス層640は開始アプレットによって供給さ
れるアプリケーションネームを使用し、app管理者6
50を呼び出す。app管理者650はサーバーノード
610上で導入されるアプリケーション定義を取扱う。
app管理者650はアプリケーションバックエンド6
60を選択し、処理を開始する。リスナーソケットはサ
ーバーノード上で開放され、ポート番号はapp管理者
650に戻される。また、app管理者650は一連の
Java バイトコードとしてサーバー上に記憶されるアプ
リケーションフロントエンド(Front End(FE))6
70を選択し、リスナーソケットポート番号を含むPE
670インスタンスを作る。アプリケーション開始はP
E670インスタンスが実行のためにクライアントノー
ドにダウンロードされるときに終了する。
【0080】アプリケーション実行 アプリケーション実行が開始されるとき、クライアント
ノードはPE700(図7)を解釈しはじめ、それをサ
ーバーノード710から受信する。PE700はフレー
ムワーク(それはグラフィカルユーザーインターフェー
ス(GUI)を含むことができるユーザーインターフェ
ース(UI)を含む)及び Java で実現される通信ライ
ブラリ720のインスタンスである。いったんそれが開
始すると、PE700はサーバーapp管理者650が
バックエンドプロセス730を開始したときに供給され
たサーバーポート番号を利用してサーバーノード710
へのソケット接続を開く。サーバーノード710上のバ
ックエンドプロセス730はデータベース管理システム
(Data Base Management System(DBMS))71
2へのインターフェースをカプセル封じする分散形シス
テムであってもよい。フロントエンド700はプレゼン
テーションサービス及びそれ自身のウェブアクセス能力
だけに集中する。実行フレームワーク724はイベント
駆動メッセージ受渡し735を使用してフロントエンド
構成要素700をバックエンド構成要素730に連結す
る。この設計はアプリケーションのフロントエンド70
0とバックエンド730の間のモジュール性を保護す
る。
【0081】アプリケーション実行中、サーバーノード
710通信ライブラリ720はその資源へのアクセスを
最大にする方策を容易にするため接続を管理する。例え
ばサーバーはトランザクションレスポンスを待つための
最大時間に対して構成することができる。もし新しいク
ライアントメッセージを受信する前に最大時間を越える
なら、タイマーが働き、サーバーはクライアント接続を
終了し、ポートを再使用するだろう。実行フレームワー
ク724はインターネット、イントラネット又は他のネ
ットワーク環境アクセスにおいてWeb 技術を介してシス
テム管理責任者にアクセスできるアプリケーション実行
データ及びサービスを報告するランタイムエラーを供給
する。アプリケーション実行が終了するとき、クライア
ントノード700とサーバーノード710の間の関係も
終了する。アプリケーション開始はアプリケーション実
行が望まれる毎に行われなければならない。
【0082】クライアントのプレゼンテーションエンジ
ンはクライアントノード上で記憶され、もしプレゼンテ
ーションエンジンがクライアント上でキャッシュ(緩衝
記憶)されるなら動的に開始することができる。キャッ
シュ内にプレゼンテーションエンジンを記憶するための
理由はモバイル(移動)コンピューティング性能をサポ
ートし、ネットワーク交通を減らすことである。この技
術はプレゼンテーションエンジンがサーバー上の最近
の、最新のリリースと同調されることを保証するために
バージョン改訂を要求する。
【0083】アプリケーション開発 好ましい例に従ったアプリケーション開発法は第3世代
言語プログラミングタスクよりむしろシステム統合タス
クである。図7は好ましい例に従ったアプリケーション
の三つの基本的な構成要素を示したものである。フロン
トエンド、クライアント側700、バックエンド730
サーバー側710、及びフロントエンドとバックエンド
の間の接続を容易にする実行フレームワーク724。ア
プリケーション開発プロセスは多数の工程からなる。第
1工程はフロント及びバックエンド構成要素の責任(re
sponsibilities)を定義する。好ましい例は通信サービ
スのためにインターネット、イントラネット又は他のネ
ットワーク環境におけるWeb 技術を利用して存在するク
ライアント/サーバーアプリケーションのファンクショ
ンへの移行を容易にするように設計されている。この移
行は存在するアプリケーション論理を再設計することを
要求しない。プロセスは残っているサーバーバックエン
ドコードとメッセージイベントを交換する Java 言語で
実現される新しいPEフロントエンドの実現を伴う。図
8は好ましい例によってサポートされたものへの存在す
るクライアント−サーバーアプリケーションの移行を示
したものである。
【0084】新しい Java PEフロントエンド820は
存在するアプリケーションコードに加えられ、プレゼン
テーション層(UI層)800及び変数を操作すること
に責任がある一定量のノン−データベースアウェア( n
on−database aware )論理を含むだろう。データベー
ス及びそのデータを承知している全ての論理はバックエ
ンド構成要素に残っている。PE820は存在するアプ
リケーションからの論理に限定されない。それは Java
において実現されるプログラムであり、エンタープライ
ズイントラネット内の付加的なインターネット関連サー
ビスの直接的な利益を得ることができる。PEの複雑性
は開発者の選択によって決定される。
【0085】好ましい例を利用するために存在するアプ
リケーションを移行する第2工程はPEとバックエンド
の間で交換されたメッセージイベントを定義することで
ある。PEとバックエンドは疎結合され、データイベン
トを交換する。各イベントはイベントと関連するデータ
及び独自の名前を持っている。メッセージイベントデー
タ項目はタイプ、即ち全ての基本タイプと一つの合成タ
イプによって宣言される。メッセージデータタイプは J
ava とCの両方において基本タイプをマップする。通信
ライブラリはメッセージイベントを定義するために開発
者によって使用されうるAPIを持つ。
【0086】第3工程はバックエンドをセットアップ
し、メッセージイベントを取扱うことである。サーバー
常駐バックエンド構成要素はメッセージイベントを取扱
わなければならない。この処理は通信ライブラリのイン
スタンスを存在するサーバーコードと連結することによ
って可能になる。通信ライブラリはC APIを有し、
従ってサーバーコードはCを呼び出すことができるどの
ような言語においても実現できる。存在するサーバーコ
ードは通信ライブラリAPIを利用してメッセージを送
信及び受信する。通信ライブラリはメッセージイベント
がフロントエンドから来るときサーバーコードにおいて
ハンドラファンクションを呼び出す。開発者はこれらの
ハンドラファンクションを作り、通信ライブラリにおけ
るAPIを使用してそれらを定義されたメッセージイベ
ントごとに一つのハンドラファンクションに記録するだ
ろう。
【0087】いったんコンパイルされ連結されると、バ
ックエンドはアプリケーション開始中app管理者によ
って始められる単一プロセスである。サーバー通信ライ
ブラリとサーバーコードの間のインターフェースは多重
系である。
【0088】第4工程はプレゼンテーションエンジンフ
ロントエンドを開発することである。 Java はこのタス
クのために利用される。テンプレート及びツールはこの
タスクを容易にするために与えられる。これらのタスク
を容易にすることと関連する詳細なタスクは以下に記載
されている。
【0089】存在するクライアントサーバーアプリケー
ションを好ましい例に移行する最終工程はサーバーノー
ド上にアプリケーション構成要素を導入することであ
る。フロントエンド(クライアント)及びバックエンド
構成要素はサーバーノード上で導入される。 Java 開始
アプレットはクライアントがサーバー上でアプリケーシ
ョンにアクセスすることを可能にする。アプリケーショ
ン導入及び構成のための一連のツールは好ましい例に従
ったサーバーノード上のアプリケーションとして与えら
れる。 Java 開始アプレットテンプレートはアプリケー
ションの開始アプレットの開発を容易にするためにも与
えられる。
【0090】プレゼンテーションエンジン開発 プレゼンテーションエンジン開発は Java における新し
いアプリケーションフロントエンドを開発する工程であ
る。このタスクを簡単にし、アプリケーション性能及び
頑強性保証を与えるため、全てのアプリケーションフロ
ントエンドはプログラムの単一クラスのインスタンスで
ある。 Java において実現された基本的なプレゼンテー
ションエンジンフレームワークは好ましい例に従った実
施例として与えられる。特別なアプリケーションプレゼ
ンテーションエンジンを開発することは基本的なプレゼ
ンテーションエンジンフレームワークテンプレートを拡
大しカスタマイズすることを意味する。プレゼンテーシ
ョンエンジン(PE)はそれ自体二つの構成要素を有す
るシステムである:(1) Java において実現されるU
I、及び(2)PEフレームワーク。PEを開発するこ
とは下記二つの工程を有するシステム統合タスクであ
る。
【0091】(1) Java で実現されるUIを開発す
る。図9は好ましい例に従ったPE960を示すブロッ
ク図である。UI900構成要素は開発者の特別な要求
に従って開発される。フロントエンド処理が Java言語
を利用するので、UIは Java の豊富なファンクショナ
リティの利点を持つ。UI900はUIアダプタ910
構成要素へのインターフェースを介してPE960フレ
ームワークに接続される。インターフェースはデータイ
ベントを交換するためにPE960フレームワークとい
かなる Java 実現UI900の接続も容易にする汎用メ
ッセージ受渡しインターフェースである。APIは開発
者がUI900をUIアダプタ910に連結できるよう
にPE960フレームワークに与えられる。
【0092】(2)PEフレームワークテンプレート
(960)を拡張する。図9はどのようにしてPEフレ
ームワーク960アーキテクチャが好ましい例に従った
2種の外部イベントを容易にするように配置されている
かを示したものである。2種の外部イベントは実行フレ
ームワークからのメッセージイベント及びUIイベント
である。フレームワークは Java 実現通信ライブラリ構
成要素、Comm アダプタ950を含んでいる。PEフレ
ームワーク960はUIアダプタ910を介してUI9
00にインターフェースし、 Comm アダプタ950を介
してサーバーTCP/IP接続にインターフェースす
る。メディエーター920構成要素はPEフレームワー
ク960の中へ及び外へ動く全ての外部イベントを取扱
う。
【0093】UI900,UIアダプタ及びモデル94
0はアプリケーション特定情報を供給する開発者によっ
て直接拡張される。通信ライブラリ及びメディエーター
構成要素は開発者によって拡張されない。PEフレーム
ワーク960はモデル940−ビュー930コントロー
ラーアーキテクチャを持つ。開発者はローカル論理を実
現しPE−ローカル状態を維持するためにモデル940
構成要素を拡張してもよい。ビュー構成要素930はモ
デル940データ表現とメッセージデータ表現の間でマ
ップする。
【0094】PEフレームワーク960のモデル940
構成要素を拡張することなくPEフレームワークを作る
ことができる。このモデルは“PE−lite”オプション
として言及され、通信アダプタ950、メディエーター
920、UIアダプタ910及びUI900からなる。
このオプションを利用するため、開発者はUI900及
びPEフレームワークインスタンス960から構成要素
をアセンブルする。PEフレームワーク960はUI外
部イベント及び通信外部イベントの間で直接マップする
ためにメディエーター920を利用する。
【0095】実行フレームワーク960は通信中枢とし
てTCP/IPを利用する通信抽象であり、コンピュー
ターシステムにおけるバスに類似する。好ましい例に従
った各構成要素は様々なファンクションカードがコンピ
ューターシステムのバスに差し込まれるとき、実行フレ
ームワークに連結される。典型的な分散形コンピューテ
ィング環境と異なる構成要素において局所(ローカル)
対遠隔(リモート)の概念は全くない。
【0096】このアーキテクチャでは、分散形ドメイン
を全く持たない。全てがローカルであり、構成要素がこ
のフレームワークと接続する方法はフレームワークであ
る通信層へのローカルコールを作ることによってなされ
る。通信ライブラリ構成要素において全て具体化され
る。従って、プログラム間で変換されるメッセージはデ
ータである。ファンクションコールよりむしろ、それら
は実際にはデータコンテナである。交換において起こり
うることはデータがパックされイベントとして送られる
か、又はデータがここでパックされイベントとして向こ
うに送られるかだけである。
【0097】クライアント及びサーバープログラムの中
にはメッセージイベントにおけるデータのためのハンド
ラがある。従って、いかなるフロントエンド及びいかな
るバックエンドも共通の組のメッセージイベントのため
のローカルハンドラを有する。それらはフレームワーク
によってともに連結されアプリケーションを作る。従っ
て、我々がそこで呼び出すものは“疎結合”である。そ
れはプログラム間の依存が全くなく、プログラムが直接
通信しないことを意味する。これはアプリケーションに
おけるモジュール性を保護する。プログラムはデータイ
ベントを送ってもよく、プログラムはその処理に割込む
データイベントを取扱うこともできる。
【0098】フレームワークは一般に通信手段のために
TCP/IP上に層を作るが、他のネットワーキングプ
ロトコルを利用することができる。プログラムはICE
−TComm 層と常に対話する。アプリケーション構成要
素は抽象物とインターフェースしているので、下にある
実際の物理的な分散形プラットフォームと上にあるアプ
リケーションの間にファイアウォールがある。従って、
アプリケーションは分散されたエンタープライズの物理
的構造の詳細から独立している。エンタープライズはア
プリケーションの再設計を要求することなしで基準化及
び/又は変更されてもよい。
【0099】好ましい例に従った実施例 図10は従来のクライアントサーバーアーキテクチャの
ブロック図である。従来技術ではクライアントコンピュ
ーター1000は定義済データプロトコル(データスト
リーム)を介してネットワーク1030にアクセスし、
データベース管理システム(Data Base Management
System(DBMS))1020の形でデータ及びコード
1010を含む定義済サーバー1001と対話する。
【0100】好ましい例に従ったアプリケーションは図
11に示されている。カプセル封じされたDBMS11
02はコード1170における巨大な投資と同様に保存
される。しかしながら、サーバー1180は少量の Jav
a コードを利用する疎結合されたクライアント1120
にウェブノードを変えサーバー1180によって送られ
る定義済データストリームをクライアント1120に一
致することに対して責任があるネットワークサポート1
150に通信するためのサービスAPI1160を含ん
でいる。ウェブサーバー1106は既に述べられ以下で
繰り返されているようにPEフレームワーク1104及
びアクセスモジュール1108を介してサーバー118
0からウェブ上のメッセージの送信及びメッセージへの
アクセスを容易にするために利用される。
【0101】図12は別の例に従ったクライアント12
00との接触を設定するサーバー2110を示したもの
である。コード1240及びDBMS1230は図10
及び図11に記載されている。しかしながら、ウェブ接
触はクライアント1200−サーバー1210通信を設
定するためにアクセス層1280を利用するユーザーを
認証することによってノード間で設定される。次いで、
Java バイドコード1250はPEリポジトリ1290
から抽出され、アクセス層1280及びウェブサーバー
1270を使用してクライアント1200にダウンロー
ドされる。
【0102】図13は別の例に従った疎結合されたクラ
イアント−サーバーアプリケーションを示したものであ
る。サーバー1300は定義済データストリーム135
0及びアプリケーションコード1320及びDBMS1
310を利用してサービスAPI1360及びネットワ
ークサポート1340を介してクライアント1330に
通信する。アプリケーションアーキテクチャの“疎”結
合された性質はクライアント1330及びサーバー13
00に状態(ステート)独立性を維持させ低帯域幅ネッ
トワーク1350を介して接続させる非同期の方法にお
けるメッセージ通信を通して可能である。アプリケーシ
ョンはファンクションコール(関数呼出し)レベルAP
Iを全く要求しない。
【0103】好ましい例の基礎を形成する基本的なアー
キテクチャデザイン決定のいくつかはクライアント13
30とサーバー1300状態の間で制御するサーバー1
300を含む。 Java 言語はインターネット、イントラ
ネット又は他のネットワーク環境におけるウェブ技術を
介して通信しクライアント1330状態情報をクライア
ントノードに分散するために利用される。サーバー13
00はカプセル封じされたDBMSインターフェースを
ネットワークに与える。サーバー1300ノードはウェ
ブノードのためにクライアント1330−サーバー13
00関係の設定をサポートするためにフレームワークに
よって拡張される。
【0104】ウェブノードのためのクライアント133
0−サーバー1300関係は要求ノードでユーザーを認
証する安全 http プロセスを利用して確立される。次い
で、クライアント1330ノードはサーバーでの記憶さ
れた状態から適切なクライアント1330状態を選択す
ることによって設定され、 Java クライアント状態はネ
ットワーク上で特別なクライアント1330ノードにダ
ウンロードされる。次に、クライアント1330−サー
バー1300ネットワーク通信セッションはサーバープ
ロセスを開始しクライアント1330ノードへのソケッ
ト接続を設定することによって始められる。いったんセ
ッションが設定されると、そのときネットワークはPE
通信ライブラリを用いてイベント駆動メッセージ受渡し
を維持することによって管理されなければならない。
【0105】図14は好ましい例に従ったアプリケーシ
ョン1430を開発するために必要なシステム統合タス
クを示したものである。まず、開発者の構成要素間で交
換されなければならないメッセージイベント1450を
定義する。クライアントプログラム1410及びサーバ
ープログラム1420はサーバーノード1420上のア
プリケーション1430として定義される。バックエン
ドはメッセージを送信及び受信することを可能にしなけ
ればならない。フロントエンド(PE)は開発されなけ
ればならず、そのとき構成要素はサーバーノード142
0に設置される。目的はモジュラーアプリケーション開
発をサポートし開発者から最小の付加的な知識の負荷
(例えば Java 又はOOPにおける洗練)を要求するこ
とである。
【0106】図15は好ましい例に従ったクライアント
アプリケーション(PE)のモジュラー設計を示すブロ
ック図である。アプリケーション論理1530はインタ
ーネット機能へのアクセスを最小にするため Java で完
全に書かれている。アプリケーション論理は Java プロ
グラム又はアプレットとして実行する。外部インターフ
ェースライブラリ1520はUI層1510を通してU
I又はAPI1500にインターフェースするために様
々な呼び出し可能なファンクションを含んでいる。メッ
セージライブラリ1540は通信層1550を通して情
報をサーバー1560に通信するのに使用するためにメ
ッセージを与える。アーキテクチャはサーバー1560
と疎結合されたクライアントである。データ交換はイベ
ント駆動メッセージ受渡しを介してされる。フレキシブ
ルUI1510及び通信層1550はサーバー又はUI
設計にインターフェースするメッセージ受渡しAPIを
容易にする。開発者はアプリケーションを設計及び実現
するためにネットワーク通信又はシステムプログラミン
グを理解することは要求されない。クライアントプログ
ラムは効果的なプレゼンテーションサービスをサポート
するために設計することができる。DBMSインターフ
ェースはバックエンド(サーバー)においてカプセル封
じされる。従って、クライアントとサーバーの間のウェ
ブ接続において取扱わなければならない分散形トランザ
クションは全くない。
【0107】図16は別の例に従ったフレームワークの
ブロック図である。モデルデータ1600はユーザーに
よってアクセス及び変更できる定義済クラスの形で与え
られ、付加的データ又は論理を加えられて特定のアプリ
ケーションの条件を満たしUI構成要素又はビューのた
めの適切なマップを指定する。十分なファンクションモ
デルに拡散するのに必要な全てのクラステンプレートが
与えられる。モデルデータ1600は外部IFビュー1
622上で利用され、付加的なモデルデータ1620は
ビューを拡張するために必要なものとして加えられても
よい。同様に、メッセージビュー1612は付加的なモ
デルデータ1610をメッセージビュー1612に加え
ることによって拡張することができる。メディエーター
1630はメッセージを経路指定し通信アダプタ164
0又はUIアダプタ1650への制御を与えることに対
して責任がある。
【0108】図17は別の例に従った基本的なビルディ
ングブロックを示したものである。PEオブジェクト1
700は再使用可能な、拡張可能なファンクションを促
進するために利用される方法(論理)及びデータ(公的
及び私的情報)を含むオブジェクトである。PEファン
クション1710は好ましい例に従ったコールバック、
オブザーバー、イベントハンドラ及びマップを実施する
ためにPEオブジェクト1700を利用する。PE Inf
o 1720はファンクション構成要素間で移動されるデ
ータの基本単位であり、PEイベントハンドラ1730
は好ましい例に従ったUIイベント及び入力メッセージ
を取扱うためにビューによって使用される。
【0109】図18は好ましい例に従った(PE)フレ
ームワークを拡張するために利用される工程を強調する
ブロック図である。ユーザー1800は1810で示さ
れているようにUIアダプタを変更しなければならな
い。アプリケーションを促進するために必要な全ての基
本処理はユーザーの要求を行うために必要なオブジェク
トをインスタンス生成するために全ての基本クラスを与
える基本フレームワークに組み込まれる。
【0110】図19は好ましい例に従ったPEオブジェ
クト1900の図である。PEオブジェクトはメッセー
ジにおいて受渡されるモデル及び他の構造化データを構
築するために使用されるデータ構造ライブラリである。
ベースPEオブジェクト1900からインスタンス生成
された基本1910及び合成1920オブジェクトと関
連する抑制階層がある。オブジェクト指向アーキテクチ
ャは直列化インターフェースのために十分に使用可能で
かつ十分に自己記述されている多相の、カプセル封じさ
れたオブジェクトを容易にする。
【0111】図20は好ましい例に従った入力メッセー
ジ及びUIイベントを取扱うためにビューによって使用
されるPEイベントハンドラ2000の図である。PE
イベントハンドラ2000はモデルへのマップを実現す
るためにメッセージを利用して受渡されるオブジェクト
PE Info 2010データにおいて定義される名前(ネ
ーム)欄及びデータに基づいたタスクを指名する。図2
1は好ましい例に従ったPE Info オブジェクト210
0データを示したものである。データはイベント及びメ
ッセージシグネチャをカプセル封じし、モデルとXIF
ビュー、モデルとMsgビュー及びXIFビューとUI
の間での受渡しのために三つの場所で使用される。
【0112】図22は好ましい例に従ったモデルへの入
力メッセージフローを示したものである。メッセージは
バイトストリームフォーマット2200における通信層
中に流れ、メディエーターを介してメッセージビュー2
210に受渡し、PE Info2220データを転送する
ためにMsgハンドラPEイベントハンドラを利用して
メッセージをアンパック及びディスパッチする。PE I
nfo 2220はイベント及びメッセージシグネチャをカ
プセル封じしメッセージをモデルマップ2230に変形
するために使用され、それはその後 setValue 及び get
Value 処理2240のために利用される。キープレス又
は他の行動の如きUIイベントが2260で起こると
き、コールバックPEファンクション2270はモデル
PEオブジェクト2250がさらなるメッセージ処理の
ために利用できる情報への変形のためにイベント及びデ
ータ情報を外部ビューディスパッチャー2290に受渡
すためにPE Info 2280を利用する。
【0113】図23は図22と極めて類似した方法で好
ましい例に従ったモデルにUIをマップする入力メッセ
ージを示したものである。図24は図22及び図23と
類似した方法で好ましい例に従ったメッセージにモデル
をマップする出力メッセージを示したものである。図2
5は前述の図面と同様の方法で好ましい例に従ったモデ
ルをUIにマップする出力メッセージを示したものであ
る。好ましい例に従った処理をさらに明確にするため
に、好ましい例に従ったアプリケーションのための詳細
な設置(導入)及び論理仕様を以下に与える。
【0114】エンタープライズコンピューティング環境
はネットワークによって相互接続される多種のノードか
らなる。典型的な環境では、ネットワークにおけるサー
バーノードはデータベースと対話するデータ及びプログ
ラムを保持し、クライアントノードはサーバー上で情報
をアクセスするためのプログラムを含んでいる。これら
の環境の複雑さはソフトウェアアプリケーションを創
成、構成、展開、及び管理することを難しくしている。
Web 技術(ブラウザ、 Java 言語、HTTP)の出現は
企業がこれらの問題のいくつかの解決を助けるために内
部ウェブを創造及び使用できるようにしている。
【0115】Java はクライアント−サーバーアプリケ
ーションプラットフォーム及び分散チャネルとしてウェ
ブを使用可能にする。“インタープライズ(Interpris
e)”コンピューティング環境ツールキット(Computing
Environment Toolkit )(ICE−T)はウェブの
ためにクライアント−サーバーアプリケーションを構
築、拡張及び展開することを可能にする(“インタープ
ライズ(Interprise)”はインターネットとエンタープ
ライズを組合せたものである)。
【0116】ICE−Tアプリケーションは下記のもの
を提供する: ・ Web 上にダウンロードすることができるクライアン
トプログラムを作るためのツールキット ・ 単一アプリケーションとしてサーバープログラムを
クライアントとともに作動できるようにするためのイン
ターフェース ・ クライアントプログラムとサーバープログラムの両
方を実行するためのフレームワークに両者を接続するた
めのツール ・ アプリケーションを導入、展開及び管理するための
ツール
【0117】ICE−Tアプリケーション アプリケーションは(Cを呼び出すことができるいかな
る言語でも実現される)サーバープログラム構成要素及
び( Java で実現される)クライアントプログラム構成
要素からなる。クライアント構成要素はGUI及びプレ
ゼンテーションエンジン(PE)からなる。アプリケー
ションシステムを完成するために、ICE−Tはクライ
アントとサーバー構成要素の間のメッセージの交換を可
能にする通信層、ICE−T構成要素から報告するエラ
ーのための例外層、及びどのようにしてアプリケーショ
ンを展開するかを管理するためのアクセス層を提供す
る。ICE−Tアプリケーション開発者のタスクは構成
要素をアプリケーションシステムにアセンブルすること
である。
【0118】ICE−Tはサーバーアプリケーションへ
の Java クライアントアクセスを与える。新しいアプリ
ケーション又は存在するアプリケーションは好ましい例
を利用して拡張された。存在するアプリケーションのう
ち、サーバープログラム(ビジネス論理)及びデータベ
ースがサーバー上にあり、ユーザーインターフェースが
クライアント(3層クライアント−サーバーアプリケー
ション)上にあるように区分けされたものはICE−T
フロントエンドへの移行のために特に適している。
【0119】ICE−Tは下記のものを要求するエンタ
ープライズアプリケーションのために良く適している: ・ アクセスするプログラム又はデータベースへの変化
なしでの部門又は団体データへのアクセス。 インターネット、イントラネット又は他のネットワーク
環境におけるエンタープライズウェブ技術を既に使用す
る企業にとって、ICE−Tアプリケーションはインタ
ーネット接続がある機関又は分野におけるどこからでも
存在するデータに素早くアクセスできる。 ・ クライアントプラットフォーム独立性。 ICE−Tプレゼンテーションエンジンは Java 仮想マ
シン( Java VirtualMachine )が存在するどこでも実
行することができる。 ・ 迅速な開発。 クライアントはGUI及び通信ライブラリとの統合のた
めの方法及び必要な Java クラスを含むヌルアプリケー
ションテンプレートを使用して Java において開発され
る。 ・ 簡単な展開。 ICE−Tはアプリケーションを導入及び展開するため
のスクリプト及びツールを与え、ウェブブラウザ又はア
プレットビューワからアプリケーションを開始するため
の汎用開始アプレットを含む。 ・ ユーザーの集中認証。 サーバー上に導入されたカスタマイズ可能なアクセス層
はクライアントプログラムへのアクセスの集中制御を可
能にする。 ・ 簡単なメンテナンス。 ほとんどの企業にとって、存在するアプリケーションを
維持することはかなりの資源の重荷である。ICE−T
はバックエンド(サーバー)のプログラム又はアーキテ
クチャを変えたり、又は急勾配の学習曲線を要求したり
することなく、新しいアプリケーションフロントエンド
(クライアント)を作り、存在するものを移行するため
の手段を与える。 ・ デスクトップ又はラップトップから企業全体を通し
ての幅広い使用。 エンドユーザーはウェブブラウザにおけるアプレットと
してICE−Tアプリケーションを命名することができ
る。
【0120】ICE−Tアプリケーション開発及び展開 ICE−Tアプリケーションにおける主要な開発タスク
は与えられたテンプレートからアプリケーションフロン
トエンド、 Java プレゼンテーションエンジンを作るこ
とである。プレゼンテーションエンジン(Presentation
Engine(PE))はクライアント通信ライブラリを通
してメッセージ及びそれらのデータを送るための方法を
含んでいる。開発者はメッセージ及びそれらのアプリケ
ーションのために要求されるデータを指定するためにテ
ンプレートを変更する。通信ライブラリはネットワーク
を横切るデータ及びメッセージの受渡しを取扱う。プレ
ゼンテーションエンジンツールキットはこれらのタスク
をサポートする。ツールキットは Java 構成要素の完全
な集合であり、それらのいくつかは変更又は拡張しなけ
ればならない。
【0121】付加的な開発タスクはサーバープログラム
を変更してどのファンクションをインバウンドメッセー
ジに反応して呼び出し、サーバー通信ライブラリへの呼
び出しを作って結果をクライアントに送るためにはどの
ファンクションを指定するためにサーバープログラムを
変更することである。ICE−Tアプリケーションシス
テムにおける全ての構成要素はサーバー上に常駐する。
アプリケーションを展開するため、あなたはその構成要
素及び付加的なICE−Tファイル及びサーバー上のア
プリケーションを管理するプログラムを導入する。IC
E−Tはユーザーがブラウザからアプリケーションを開
始できる開始アプレットを作るためのテンプレートも与
える。Chapter 3“ICE−Tアプリケーションの構成
及び展開( Configuring and Deploying ICE−T
Applications)”はこれらのタスク及びツールを記載
する。
【0122】ICE−Tアプリケーションにおけるイベ
ント駆動メッセージ受渡し ICE−Tアプリケーションの構成要素は外部イベント
に反応してメッセージを創成、送信及び受信する。イベ
ントはユーザーからの入力(マウスクリック)又はシス
テム環境における変化(サーバー遮断)のように何かが
起こったことを通信する方法である。
【0123】ICE−T通信層はTCP/IP上でクラ
イアントとサーバープログラムの間の非同期イベント駆
動メッセージ受渡しを可能にする。ICE−Tでは、メ
ッセージ自体はイベントであり、各プログラム構成要素
はメッセージイベントのためのローカルハンドラを含
む。
【0124】クライアント及びサーバープログラム構成
要素はそれぞれメッセージを創成、送信、及び受信する
ためにセットアップされなければならない。プレゼンテ
ーションエンジンのファンクショナリティの部分は受信
者を決定しメッセージを彼らに運ぶことである。例え
ば、ユーザーインターフェースはユーザーがボタンをク
リックするときにメッセージをプレゼンテーションエン
ジンに送る。プレゼンテーションエンジンはメッセージ
を受信し、次いでそれをデータモデル又はサーバープロ
グラムに送り、それは次いで演算を行い結果とともに応
答する。
【0125】また、サーバープログラムはメッセージを
受信できなければならず、しかもそれらを取扱うために
ファンクションを登録しなければならない。
【0126】メッセージの受信者は互いについて多くを
知る必要はなく、彼らは彼らがどのメッセージを受信し
たいかを指定する必要がある。この情報はクライアント
プログラムにおける createMessageHandlers()法及びサ
ーバープログラムにおけるるcreateMessageHandlers()
ファンクションを使用して登録される。
【0127】プレゼンテーションエンジンは2種のアプ
リケーションイベントのためにハンドラを含むべきであ
る: ・ ユーザーインターフェースからのイベント ユーザーインターフェースからプレゼンテーションエン
ジンに入ってくるイベントはサーバー又はプレゼンテー
ションエンジンのデータモデルへのメッセージを生じ
る。 ・ サーバーからのイベント サーバーからプレゼンテーションエンジンに入ってくる
イベントはユーザーインターフェースにおいてデータを
表示するか又はプレゼンテーションエンジンのデータモ
デルにおいてデータを入れることを生じる。
【0128】サーバープログラムはクライアントからの
メッセージのためのハンドラを含むべきである。典型的
には、ハンドラはアプリケーション論理を呼び出し、生
じたメッセージを送るだろう。それはサーバー通信ライ
ブラリを通してクライアントに戻るデータである。
【0129】ICE−Tアプリケーション実行 ICE−Tアプリケーションは存在するクライアント−
サーバー環境内で作動するように設計されている。それ
らはキー手段の良く知られたクライアント−サーバーア
プリケーションとは異なる。
【0130】典型的にクライアントプログラムは定期的
に開発、維持、及び分散され、長いサイクルの開発時間
がかかり、クライアントに展開するのに時間を要してい
る。分散ルート上のノード上にないユーザーはソフトウ
ェア更新を行わなくてもよい。開発は使用されるツール
又は言語の困難性のため資源を消費することができる。
【0131】コンパイルされたICE−Tプレゼンテー
ションエンジンはサーバー上に導入され、HTTPサー
バーを通して要求によりダウンロードされる。1対の通
信ライブラリはアプリケーションを実行するためのフレ
ークワークとして挙動する。この通信層はクライアント
とサーバーの間で転送されるメッセージデータの整列
(marshaling)及び非整列(unmarshaling)を取扱う。
クライアント及びサーバーはともに遮断イベントを取扱
うための用意をすべきである。ICE−Tはこの目的の
ためデフォルト遮断ハンドラを与え、開発者は彼ら自身
を加えることができる。
【0132】ICE−Tアプリケーションはどのように
して作動するか ICE−Tアプリケーションを開発する前に、あなたは
エンドユーザーの見通しと内部ICE−Tの両方からI
CE−Tアプリケーションはどのようにして作動するか
を理解することは有用であると思うだろう。
【0133】ユーザービュー ICE−Tアプリケーションはアプリケーション実行へ
のクライアントアクセスのために Java 使用可能のweb
ブラウザを使用することができる。開発者はブラウザの
外で開始されるアプリケーションを持つように選択して
もよいが、Webページはアプリケーションを開始するた
めに簡単にインターフェースの使用を与える。
【0134】ユーザーはWeb ページを開き、実行したい
と思うアプリケーションに対してURL上でクリックす
ることによって始める。URLはICE−Tアプリケー
ション開始アプレットを含むWeb ページのためのアドレ
スである。開始アプレットを有するWeb ページはブラウ
ザ中にロードされる。アプレットはユーザーからのアク
セス情報を収集する。アプレットはアプリケーション構
成要素及びアプリケーションネームを持つサーバーのU
RLを含んでいる。この情報はサーバー上で処理され
る。もし、ユーザーネーム、パスワード、及び選択され
たアプリケーションが許可されるなら、サーバーはプレ
ゼンテーションエンジンをユーザーのノードにダウンロ
ードする。
【0135】プレゼンテーションエンジンは、サーバー
プログラム及びデータと対話するためのインターフェー
スをユーザーに与える。どこがサーバープログラム又は
それ自身のデータモデルのいずれかに取扱うためのメッ
セージを受渡すかについても決定する。クライアントプ
ログラムの一つの例はデータベース(例えば従業員デー
タベース)をサーチするサーバープログラムと通信する
ものである。かかるクライアントプログラムはこれらの
ユーザーインターフェース要素を持つ: ・ ユーザーが従業員名前データベースにおいて見つけ
たいと思うファースト又はラストネームを入力するテキ
スト欄 ・ 欄をクリアする(Clear )、アプリケーションを存
在させる(Quit)、及びサーチを始める(Search)ため
のボタン、 ・ 問合せの結果を見るためのスクロールするウィンド
【0136】ユーザーはファースト又はラストネームを
入力し、 Return を押すか又は Search ボタンをクリッ
クする。クライアントプログラムは問合せをサーバーへ
送り、そこでサーバープログラムは一致する名前のため
に従業員データベースをサーチする。もし一致したもの
が見つかれば、サーバーはクライアントにその結果を戻
す。結果はクライアントのウィンドウに表示される。
【0137】ICE−Tビュー ユーザーがICE−Tアプリケーションを始めるとき、
クライアントノードはHTTPを使用するサーバーノー
ドとのWeb 接続を設定する。サーバーはこのWeb 接続を
管理する。ICE−Tアプリケーションはブラウザ、ア
プレットビューワから、又は独立アプリケーションとし
て始めることができる。図26は好ましい例に従ったア
プリケーションURLを始めることに関連する工程を示
したものである。サーバー側上で、ICE−Tアクセス
層( cgi−bin 実行可能)はユーザーデータを認証す
る。もし認証がうまくいくなら、アクセス層はICE−
Tアプリケーション管理者に接触し、アプリケーション
管理者はサーバープログラムを開始し、ネットワークセ
ッションを始める。
【0138】アプリケーション管理者はアプリケーショ
ンのための開始アプレットでHTMLページをダウンロ
ードする。ユーザーが開始アプレットを実行するとき、
アプリケーション管理者はコンパイルされたプレゼンテ
ーションエンジンを選択し、HTTPを使用してクライ
アントにアプレットタグを含むHTMLページをダウン
ロードする。コンパイルされたプレゼンテーションエン
ジンはGUI及びクライアント通信ライブラリのインス
タンスを含み、 Java 使用可能ブラウザに又はJava 仮
想計算機が設置されるどこにおいても実行の準備をして
いる。
【0139】クライアントノードは次いでプレゼンテー
ションエンジンを局所的に実行する。プレゼンテーショ
ンエンジンはサーバープログラムが実行しているサーバ
ーへのTCP/IP接続を作り、クライアント及びサー
バープログラムはアプリケーションを実行するために協
同する。
【0140】ユーザーインターフェースイベントが生じ
るとき−−例えば、ユーザーがテキスト欄にファースト
ネームを入力し、 Search ボタンをクリックするとき−
−ユーザーインターフェースはメッセージをプレゼンテ
ーションエンジンに受渡す。プレゼンテーションエンジ
ンはクライアントによる処理のためにそのデータモデル
にメッセージを送るか、又はサーバープログラムによる
処理のためにサーバーにメッセージを送る。プレゼンテ
ーションエンジンはどのようにしてあなたがメッセージ
ハンドラを登録するかに基づいてクライアント上のどこ
でメッセージが取扱われるかを決定する。サーバープロ
グラムがデータを有するメッセージをクライアントに送
るとき、プレゼンテーションエンジンは結果を表示す
る。
【0141】クライアントとサーバーの間のメッセージ
の交換はICE−T通信層におけるICE−T通信ライ
ブラリを通して取扱われる。クライアントプログラムが
終了するとき、アプリケーション管理者はクライアント
へのソケット接続を閉じ、開始したサーバープロセスの
いずれも終了する。
【0142】ICE−Tタスクサマリ−ビルディングプ
ログラム構成要素 ICE−Tモジュラーアーキテクチャは多数の開発者に
開発タスクを分散することを容易にする。あるいは、単
一の開発者はステージにおいてICE−T開発タスクを
完了することができる。クライアントプログラムを開発
することは Java プレゼンテーションエンジンを作り、
それがサーバープログラムと通信できるようにそれをユ
ーザーインターフェースに及びICE−T通信層に接続
することを要求する。サーバープログラムは存在するプ
ログラム又は新しいプログラムであることができる。そ
れはICE−T通信層と作動できるようにCを呼び出す
ことができる言語で書けなければならない。あなたはI
CE−Tアプリケーションのために新しいサーバープロ
グラムを開発する必要はないが、あなたはサーバープロ
グラムにクライアントからのメッセージを取扱うことが
できるようにしなければならない。
【0143】ICE−Tアプリケーションビルディング
ブロック ICE−Tアプリケーションは通信層を通して通信する
クライアントプログラム及びサーバープログラムからな
る。クライアントプログラムは以下のものからなる: ・ Java で作られたGUI ・ テンプレートを使用して作られた Java プレゼンテ
ーションエンジン これらの構成要素、及びプレゼンテーションエンジンに
よって使用される関連クラスはプレゼンテーションエン
ジンの制御下で単一クライアントとして挙動するために
結合する。プレゼンテーションエンジンはアプレットビ
ューワ又はWebブラウザから始められるアプレットとし
て、又は独立アプリケーションとして与えられてもよ
い。サーバープログラムは、新しいもの又は存在するも
のが開発されるが、開発者は選択する。それはCを呼び
出す言語でなければならず、しかもそれはクライアント
からのメッセージを取扱うためのファンクションを含ま
なければならない。与えられたサーバー通信ライブラリ
へのコールを作る主ルーチンのようにこれらのファンク
ションを有するテンプレートが与えられる。ICE−T
はアプリケーションを開発するためにこれらのテンプレ
ート、ツール及びライブラリを与える: ・ pe_template.java プレゼンテーションエンジンを作動するためのテンプレ
ート ・ ICE−Tパッケージ(標準 Java パッケージへの
補足) ・ server-template.c 及び server_template.cc クライアントへ及びクライアントからのメッセージの受
渡しを定義し使用可能にするサーバープログラムテンプ
レート(C及びC++のそれぞれに対してのもの)。テ
ンプレートはサーバープログラムを開発するための起点
として使用することができ又は存在するアプリケーショ
ンを用いて使用することができる。これらのテンプレー
トはクライアントのために使用されるpe_template に類
似する。 ・ クライアント及びサーバーの両方で同じことを作動
するICE−Tメッセージデータタイプ。 ICE−Tは開発者が変更しないフレームワークも与
え、そこでICE−Tアプリケーションを実行すること
ができる。フレームワークは以下のものを含む: ・ 通信層 クライアントとサーバープログラムの間のネットワーク
通信をサポートする。サーバー通信ライブラリはC A
PIをサーバープログラムに与え、それはこのライブラ
リに連結される。クライアント通信ライブラリは Java
で実現される。 ・ ICE−T例外層 標準システムエラー報告に加えてICE−Tアプリケー
ション(クライアント及びサーバー)から報告する例外
を与える。
【0144】プレゼンテーションエンジン あらゆるプレゼンテーションエンジンは PresentationE
ngine と名付けられたJava クラスを拡張する(から引
き継ぐ)。クライアントプログラムが必要とする全ての
オブジェクトはプレゼンテーションエンジンクラスにあ
るか又はそれによって呼び出される。ICE−Tは Jav
a を拡張するクラスを与え、あなたが作動するプレゼン
テーションエンジンを作るために必要な方法を呼び出
す。
【0145】プレゼンテーションエンジンテンプレート
のためのファイルネームは pe_template.java である、
あなたはTemplates/C 又はTemplates/C++ の下でICE
−Tアプリケーション設置ディレクトリにそれを見つけ
ることができる。ファイルは都合のため Template サブ
ディレクトリのそれぞれに置かれている。pe_template
は両ファイルにおいて同じである。
【0146】図27は抽象 Java クラス、開発のための
テンプレート、及び好ましい例に従ったアプリケーショ
ンにおける実行構成要素としてプレゼンテーションエン
ジンの形を記載している。
【0147】作動するプレゼンテーションエンジンを作
るため、あなたはpe_template ファイルをコピーし、こ
れらの変更を作る: ・ あなた自身のプレゼンテーションエンジンネームを
供給する。 ・ ユーザーインターフェース構成要素を作るか又は J
ava GUIビルダーからそれをマップする。 ・ データモデルを作る(あなたのアプリケーションが
クライアント側処理を必要とする場合)。 ・ メッセージ及びそれらのハンドラを定義する。 ・ メッセージハンドラを登録する。 これらの工程はこの章で記載される。
【0148】プレゼンテーションエンジン実現オプショ
ン ユーザーインターフェースからサーバーにメッセージを
単に送りサーバーがクライアント上で戻すデータを表示
するプレゼンテーションエンジンを作ることができる。
プレゼンテーションエンジン実現のためのオプションは
“PELite ”と称される。プレゼンテーションエンジ
ンの別の実現はプレゼンテーションエンジンのデータモ
デルがどのように呼ばれるかにおいていくつかのローカ
ルデータ記憶装置を取扱う。後者のために、開発者はこ
の章で記載された createModel()法を実施するために要
求される。両オプションはpe_template によってサポー
トされている。
【0149】ICE−Tクラス及びパッケージ ICE−TプレゼンテーションエンジンAPIのための
ドキュメンテーションは Java APIドキュメンテーシ
ョンのようにHTML形で与えられ、下記URLからア
クセス可能である: file:///<ICE-T Installation Directory>/doc/api ここで、<ICE-T Installation Directory>はあなたがI
CE−Tを設置するあなたのシステム上のディレクトリ
の名前である。サーバープログラムによって使用される
C及びC++ヘッダファイルはサーバー下のICE−T
設置ディレクトリである。
【0150】ICE−Tメッセージデータタイプ ICE−Tメッセージデータタイプ: ・ プレゼンテーションエンジンにおいてデータモデル
を構成するために使用できる。 ・ アプリケーション論理に使用するためのサーバープ
ログラムに使用するために利用できる。 ・ クライアント( Java )とサーバー(C)の両方に
ついてアナログを有する。 ・ クライアントとサーバーの両方について基本的に同
じAPIを使用する。 ・ 他のICE−Tデータタイプだけを含むことができ
る。 ・ クライアントからサーバーへ、及びサーバーからク
ライアントへのメッセージに使用され、そこでそれらは
それらの類似タイプのローカルデータ構造として表れる
だろう。
【0151】下の表はクライアント及びサーバー上のプ
リミティブICE−Tメッセージデータタイプ及びそれ
らの類似タイプを記載したものである。接頭語Pe及び
Srvは物を名付ける際のあなたの便宜のために与えら
れている。それらはICE−Tによって同じタイプとし
て取扱われる。 ICE−Tメッセージタイプ(プリミティブ) データタイプ Client(PE) Server(C) Petbar,SrvChar char(Unicode) char(C) 16ビット 8ビット PeString,SrvString string char* PeBoolean ,SrvBoolean Boolean int 16ビット 1バイト PeInteger ,SrvInteger int int 32ビット 32ビット PeLong,SrvLong long long 64ビット 64ビット PeFloat ,StyFloat float float 32ビット 32ビット PeDouble,SrvDouble double double 64ビット 64ビット
【0152】1. ICE−TはASCII(8ビッ
ト)だけを送信する。 ICE−Tは Java ベクトルクラス( java.util.Vecto
r )に基づいた合成データタイプをサポートする。それ
はICE−Tアプリケーションの両側( Javaクライア
ント及びC又はC++サーバープログラム)で作動する
実現を与える Java ベクトルタイプとは異なり、それは
ICE−Tプリミティブデータタイプをとるにすぎな
い。 Table ICE-T Vector Type データタイプ 記述 PeVector, 可変長配列を実現する収集。 StyVector add Element()法で生じる要素を加算する。 その索引によって要素をアクセスする。
【0153】ICE−Tディレクトリ構造を用いて作動
する アプリケーションを開発する前に、与えられたテンプレ
ート及びMakefiles をアプリケーション開発ディレクト
リにコピーする。二つのテンプレートのサブディレクト
リがある。 ・ <ICE-T Installation Directory>/Templates/C Example.mk, pe_template.java,及び server_templat
e.cを含む。 ・ <ICE-T Installation Directory>/Templates/Cplus
plus Example.mk, pe_template.java,及び server_templat
e.cc を含む。
【0154】例えば、サーバープログラムがC++で書
かれているmyAppName と命名されたアプリケーションの
ためのアプリケーションディレクトリを作り、テンプレ
ートをそれにコピーする: % mkdir myAppName % clo<ICE-T Installation Directory>/Templates/C++/
*<ICE-T InstallationDirectory>/Applications/myAppN
ame/.
【0155】ICE−T設置スクリプト及びMakeHierar
chy はICE−T設置ディレクトリの下の二つのレベル
である新しく作られたアプリケーションディレクトリに
依存する。もしあなたが実施例によって提案されたディ
レクトリセットアップに従わないように選択するなら、
あなたはICE−T設置ディレクトリがあなたの作った
ディレクトリと関係があることを示すアーギュメント又
はオプションを供給しなければならないだろう。
【0156】クライアントプログラムを設計する ここにあなたがICE−Tアプリケーションのためにク
ライアントプログラムを開発する前に作るためのいくつ
かの設計決定がある。 ・ グラフィカルユーザーインターフェース(GUI)
ツールキットを使用して、ユーザーインターフェースを
指定及び設計する。 ・ アプリケーションのクライアント及びサーバー構成
要素が取扱うべきイベントを決定する。これらのイベン
トのそれぞれを命名し、それとデータを対応付ける。こ
の工程ではあなたはプレゼンテーションエンジンとユー
ザーインターフェースの間及びプレゼンテーションエン
ジンとサーバーの間でどのようなメッセージが受渡され
るかについての質問に答える。 ・ クライアントプログラムに入れるためのアプリケー
ション論理は何か(もしあれば)を決定する。もしあれ
ば、あなたがクライアントプログラムに取扱うことを望
むデータ処理を決定する。これはあなたがプレゼンテー
ションエンジンにおけるデータ更新のために取扱うイベ
ントを作るか又はユーザーインターフェースとサーバー
データ(“PE Lite ”)の間のメディエーターとして
プレゼンテーションエンジンを使用するかに対して影響
を与える。 ・ プレゼンテーションエンジンがサーバーからメッセ
ージ及びデータを受信するときにどのようにしてユーザ
ーインターフェースは更新されるべきかを指定する。 ・ どのようにしてプレゼンテーションエンジンがサー
バーからデータを受信及び復号するか及びそれが後の検
索のためにデータを記憶するか又はデータを直接表示す
るかを指定する。 ・ もしあなたがプレゼンテーションエンジンにおいて
データを記憶するように選択するなら、どのようにして
それが記憶及び更新されるべきか及びアプリケーション
におけるどの他の構成要素がそのデータに依存するかを
指定する。
【0157】ユーザーインターフェースを開発する あなたがプレゼンテーションエンジンを作ると同時に又
は作る前にあなたはICE−Tアプリケーションのため
のユーザーインターフェースを作ることができる。たと
えそれらが分離できるとしても、プレゼンテーションエ
ンジン及びユーザーインターフェースは一緒に作動し、
従ってそれらの間の対話が計画されるべきである。
【0158】プレゼンテーションエンジンを作る プレゼンテーションエンジンの作成はこのセクションを
通して詳細に記載されている下記の基本的な工程を含
む: 1. もしあなたが既にそうしていないのなら、テンプ
レートサブディレクトリの一つをアプリケーションディ
レクトリにコピーする。ICE−T設置ディレクトリは
開発者が使用するための通信ディレクトリを含む。アプ
リケーションを作るため、あなたが開発する各ICE−
Tアプリケーションのためのアプリケーションの下でサ
ブディレクトリを作る。 2. アプリケーションに適合するために pe_plate フ
ァイルを変更及び再命名する。 3. プレゼンテーションエンジンクラスを作る。pe_t
emplate.javaを使用してあなた自身のプレゼンテーショ
ンエンジン定義を作る。 4. プレゼンテーションエンジンをユーザーインター
フェース(GUI)と統合する。あなたの選択した Jav
a ツールを使用して別のユーザーインターフェースクラ
スを作る。pe_template.javaに見出される createUI()
法を実現することによってGUIをプレゼンテーション
エンジンと統合する。“ICE−Tディレクトリ構造を
用いて作動する”は createUI()を実現する方法に記載
する。 5. プレゼンテーションエンジンとサーバープログラ
ムの間及びプレゼンテーションエンジンとユーザーイン
ターフェースの間で受渡されるべきメッセージイベント
を決定及び定義する。これらのイベントのそれぞれを命
名し、データをそれと対応付ける。各メッセージイベン
トに反応して受渡されるデータのタイプを指名する。
【0159】a. GUI構成要素上のイベントのため
のハンドラを加える。あなたがユーザーインターフェー
スイベントに反応して行うためにアプリケーションに望
む演算を実現する。
【0160】b. プレゼンテーションエンジンにおい
て入力メッセージイベントを取扱うためのコードを書
く。GUIからの入力メッセージのためにプレゼンテー
ションエンジンにおけるハンドラを定義する。サーバー
からの入力メッセージのためにプレゼンテーションエン
ジンにおけるハンドラを定義する。開発者はイベントを
取扱うために別のファイルで別のクラスを書くために選
択することができる。これは命名されたハンドラがプレ
ゼンテーションエンジンフレームワーク自体を変更する
ことなく変更できることを意味する。
【0161】6. イベントが生じるときにどのハンド
ラがどのメッセージを送るかを登録する(メッセージを
ハンドラにマップする)。どのハンドラが各メッセージ
を受信すべきかを指定する。“ハンドラを登録する”は
この工程を記載する。
【0162】7. プレゼンテーションエンジンを作
る。ICE−Tはサーバーとクライアントプログラムの
両方を作るためにmakefileを与える。これらのアクティ
ビティはクライアントと作動するようにサーバープログ
ラムを変更するためにタスクに類似する。クライアント
及びサーバーの両方のプログラムの場合には、ICE−
Tはテンプレートに方法(プレゼンテーションエンジ
ン)及びハンドラを登録するためのファンクション(サ
ーバー)を与える。開発者はアプリケーションに特化し
たメッセージ及びデータだけを与える。
【0163】プレゼンテーションエンジンクラスを作
る。 テンプレートサブディレクトリの一つをアプリケーショ
ンサブディレクトリにコピーする。二つのサブディレク
トリ(一つはCであり、もう一つはC++である)があ
る。例えば、myAppName と命名されたアプリケーション
のためにディレクトリを作る。もしmyAppName のための
サーバープログラムがCで書かれるべきなら、 Templat
e/C ディレクトリからファイルの全てをコピーする: % inkair myAppName % cp<ICE-T Installation Directory>/Templates/C/* <ICE-T Installation Directory>/Applications/myAppN
ame/.
【0164】あなたが作る各プレゼンテーションエンジ
ンのために、抽象 Java クラスプレゼンテーションエン
ジンを拡張するクラスを宣言するように pe_template.j
avaを変更する: public class myPresentationEngine extends Present
ationEngine {//あなたのアプリケーションのための方法 } 注意−必ずクラスとファイルに同じ名前を与えて下さ
い。例えば、もし Presentation Engineクラスが myPre
sentationEnqine と命名されるなら、ファイルはmyPres
entationEnqine.java と命名されるべきである。 pe_template.java はあなたが望むファンクショナリテ
ィを与えるためにあなたが実現するクラス及び方法宣言
を含む。
【0165】その方法は次のものを含まなければならな
い: ・ createuI() ・ createModel() ・ createMessageHandlers() ・ initializeApplication() createModel() 及びinitializeApplication() の実現は
任意である。あなたはあなたのクライアントプログラム
が通信が始まる前に局所的な初期化を要求しない限りin
itializeApplication() を使用しなければならない。
【0166】パッケージを取り入れる pe_template はこれらのICE−Tパッケージ及び標準
Java パッケージを含む適切なパッケージを取り入れ
る: ・ sunsoft.ice.pe ・ sunsoft.ice.pe ・ java.net ・ java.io ・ java.applet ・ java.util ・ java.awt Java 言語パッケージ(java.lang )は暗黙に使用さ
れ、明白に取り入れる必要はない。
【0167】要求されたパッケージを含むため、 Prese
ntationEngine クラスはこれらのインポートステートメ
ントを持たなければならない。pe_template からそれら
を削除してはいけない。 import sunsoft.ice.pe; import java.net.*; import java.io.; import java.applet.*; import java.util.*; import java.awt.*;
【0168】ユーザーインターフェースをプレゼンテー
ションエンジンと統合する ICE−Tアプリケーションはプレゼンテーションエン
ジンがアクセスできる構成要素として利用できるアプリ
ケーションGUIからユーザーインターフェース要素を
作らなければならない。プレゼンテーションエンジンは
ユーザーインターフェースにおけるイベントからデータ
を読みかつ取扱い、サーバーから戻されたデータでユー
ザーインターフェースを更新する。
【0169】プレゼンテーションエンジンから分離した
GUIを作ることは開発者により一層のフレキシビリテ
ィを与える。なぜならばGUIへの更新はプレゼンテー
ションエンジンへの主要な変化を要求しないからであ
る。createUI()法を使用してプレゼンテーションエンジ
ンに利用できるGUI構成要素を作って下さい。
【0170】アプリケーションに特化した演算を用いて
createUI()法を実現するために、あなたが以下のことを
する方法のための本体を書いて下さい: ・ ユーザーインターフェース要素のための変数を宣言
する ・ GUIアプレットを持つためにフレームを作る(任
意) ・ GUIアプレットをインスタンス生成及び初期化す
る ・ ユーザーインターフェース構成要素を得る ・ GUIにおけるフィールドのために初期値を与える
(任意) ・ GUI要素を( PresentationEngine クラスに与え
られた)コンテナオブジェクトに加える
【0171】例えば、ここではラベル及びテキストフィ
ールドのための変数を宣言し、フレームを作り、ユーザ
ーインターフェース要素を PresentationEngine クラス
に定義されたコンテナ構成要素に加えるcreateUI()法か
らコードを除外する。 protected void createUI(){ Label label_1,label_2,label_3; TextField textField_1,textField_2,textField_3; //...付加的な変数 fr = new Frame("My Application Title"); fr.add("Center",ui); fr.pack();fr.show(); //... textField_1.setText(" "); textField_2.setText(" "); //... uiContainer.addObject("firstName", textField_1); uiContainer.addObject("lastName", textField_2); //... }
【0172】プレゼンテーションエンジンにおいてデー
タモデルを作る(任意) クライアントプログラムへの更新はユーザーインターフ
ェースに又はプレゼンテーションエンジンにおけるデー
タモデルに送ることができる。もしあなたのアプリケー
ションがプレゼンテーションエンジンにおいてデータを
保持するために設計されるなら、あなたはcreateMode
l() 法を使用してデータオブジェクト(Observables )
を作り、データを保持しかつ Observer オブジェクトを
それらに接続する。
【0173】createModel() は任意であり、pe_templat
e においてコメントされる。createModel() を使用する
ために: ・ Pe_template において方法をコメントしない ・ サーバーからのデータを保持するために Observabl
e データオブジェクトを作る ・ もし必要なら、Observers をデータオブジェクトに
接続する ・ Observable データオブジェクトをデータモデルに
入れる この例はempvector と命名された PeVector データを初
期化する。 Observer及び Observable 法を使用するこ
とは“オブザーバーをデータオブジェクトに接続する”
に記載されている。 protected void createModel(){ //observableを作る PeVector empVector = new PeVector(); //observerをobservableに接続する empVector.add Observer(new empObserver(model)); //observablesをModelに入れる model.addObservable("empVector", empVector); }
【0174】オブザーバーをデータオブジェクトに接続
する 開発者は単純な PeObject (メッセージに送られるデー
タ項目)又はPeObservable(それと対応付けられた方法
を有するデータ項目)としてモデル内にいずれのデータ
オブジェクトも定義するオプションを持っている。 PeO
bservable はデータが更新されるとき呼び出される対応
付けられた PeObserver ファンクションを有するデータ
オブジェクトである。もしデータオブジェクトが状態を
変化し、あなたがそのデータに依存するいずれのプログ
ラム構成要素も知らせることをアプリケーションに望む
なら、あなたは PeObservable として各データオブジェ
クトを定義し、あなたは PeObserver をそれに接続す
る。
【0175】ICE−Tは PeObservable 及び PeObser
ver クラスを提供する。開発者は observable データオ
ブジェクトをモデルに加え、継承observers を observe
r リストに加えるためにこれらのクラスにおいて方法を
呼び出す。
【0176】イベントを取扱う ICE−Tクライアントプログラムは外部イベントに反
応してメッセージを受信する。クライアントプログラム
開発者は彼らがcreateMessageHandlers() 法を使用して
この情報を受信及び登録するためにプレゼンテーション
エンジンに望むメッセージは何かを指定する必要があ
る。サーバープログラム開発者はメッセージハンドラを
定義しかつそれらのハンドラを登録する類似タスクを有
する。
【0177】ICE−TはGUIとプレゼンテーション
エンジンの間の対話を取扱うために抽象の層を与える。
この層はUIアダプタと称され、それは開発者が与えら
れたように使用する1組の Java クラスである。プレゼ
ンテーションエンジンはメッセージを登録するためにU
Iアダプタへの呼び出しを作る。Pe_template は必要な
方法を含む;開発者はこの章における手順に記載された
ようにメッセージ本体を与える。
【0178】プレゼンテーションエンジンは2種のアプ
リケーションイベントを取扱う: ・ ユーザーインターフェースからのイベント ユーザーインターフェースからプレゼンテーションエン
ジンに入ってくるイベントはサーバー又はプレゼンテー
ションエンジンのデータモデルへのメッセージを生じ
る。 ・ サーバーからのイベント サーバーからプレゼンテーションエンジンに入ってくる
イベントはユーザーインターフェースにおいてデータを
表示するか又はプレゼンテーションエンジンのデータモ
デルにおいてデータを入れることを生じる。
【0179】ユーザーインターフェースからイベントを
取扱う アプリケーションはボタンクリック及びテキストエント
リのようなユーザーインターフェースイベントを取扱
う。 Java はユーザーインターフェース構成要素上のも
ののようにアクションをイベントと対応付けるために a
ction() 法を与える。
【0180】action() 法のための典型的な挙動はユー
ザーインターフェースからデータを得て、メッセージを
それを取扱うために設計されているアプリケーションの
構成要素に送ることである。ICE−Tアプリケーショ
ンでは、それらのメッセージはsendMessage() 法を使用
してプレゼンテーションエンジンに送られる。
【0181】ここにGUIにあるときの action() 法の
例がある。それはユーザーがテキストストリングを入力
した後“Search”ボタンをクリックするイベントを取扱
う。 public boolean action(Event evt,Object arg){ //... if(arg.equals("Search")) { System.out.println("Search event is detected");PeString firstName = new PeString(entry_1.getText()(); PeMessage msg = new PeMessage("Search"); msg.addDataElement(firstName); PeDebug.println("====>msg is:"+msg); //このイベントをUIアダプタに送る pc.sendMessage(msg); } return true; } action() 法は以下に定義されたメッセージを送る: PeMessage msg = new PeMessage("Search");
【0182】PeMessage クラスはメッセージネームとデ
ータをカプセル封じする。addDataElement()法によって
加えられた、このメッセージ内のデータはファーストネ
ームである。sendMessage() 法はメッセージ及びそのデ
ータをPeUIAdaptor (ユーザーインターフェースとプレ
ゼンテーションエンジンの間の通信を取扱うためにIC
E−Tが与えるクラス)を通してプレゼンテーションエ
ンジンに送る。開発者はPeUIAdaptor を変更する必要は
ないが、pe_template によって導かれるようにその中で
方法を呼び出す。
【0183】サーバーからのイベントを取扱う クライアントのためのメッセージを生成するサーバープ
ログラムからのイベントは以下のものによって取扱うこ
とができる: ・ ユーザーインターフェースへの更新 ・ プレゼンテーションエンジンデータモデルへの更新 サーバーからの各イベントのためのハンドラを書いて下
さい。プレゼンテーションエンジンとして同じファイル
に又は別のクラスファイルにそれを含めて下さい。もし
あなたがハンドラのために別のファイルを使用するな
ら、パブリックアクセスでそれを定義することを思い出
して下さい。
【0184】ユーザーインターフェースへの更新のため
のハンドラを作る ユーザーインターフェースを更新するハンドラを作るた
め、PeUIHandler を拡張するクラスを定義するためのテ
ンプレートを使用して下さい。PeUIHandler はユーザー
インターフェースに送られるメッセージのハンドラのた
めの抽象クラスである。
【0185】PeUIHandler におけるコンストラクタ法
(constructor method )はユーザーインターフェース
を更新するため及びuiAdaptor を使用してメッセージを
送るためのuiContainer へのアクセスを与える。pe_tem
plate からのこの例はSampleUIHandler と命名されたク
ラスのための定義を示している。コンストラクタ法はア
ーギュメントとしてadaptor 及びuiContainer を受渡
し、あなたの実行方法にそれらへのアクセスを与える。
【0186】この定義をそのまま使用するが、クラスの
名前を供給し実行方法の本体を加えて下さい: class SampleUIHandler extends PeUIHandler{ public SampleUIHandler(PeUIAdaptor adaptor,PeUI uiContainer){ super(adaptor,uiContainer); } public boolean execute(Object caller,PeMessage message){ //サーバーによって送られた記録を復号する //uiを更新する return true; }
【0187】どのメッセージがSampleUIHandler に送ら
れるかを知るためにプレゼンテーションエンジンを使用
可能にするため、ハンドラの名前及びそれが取扱うデー
タを登録する。この工程は“ユーザーインターフェース
への更新のためのハンドラを登録する”に記載されてい
る。
【0188】モデルへの更新のためのハンドラを作る サーバーからのメッセージはGUIを更新するコード
(上の例にあるような)、又はプレゼンテーションエン
ジンにおいてデータを記憶するコードで取扱うことがで
きる。もしあなたがcreateModel() 法を使用したなら、
あなたはモデルに影響を及ぼすイベントのためのハンド
ラを作らなければならない。
【0189】モデルを更新するハンドラを作るため、以
下のようなクラスを定義するためにテンプレートを使用
する: ・ PeModelHandlerを拡張する PeModelHandlerはあなたがcreateModel() で定義したデ
ータモデルに送られるメッセージのハンドラのための抽
象クラスである。 ・ PeModelHandlerの代わりに新しいクラスネームを使
用する以外、PeModelHandlerのコンストラクタをそのま
ま使用する public PeModelHandler(PeModel model){}
【0190】このコンストラクタはあなたのプレゼンテ
ーションエンジンが更新のためにモデルクラスへのアク
セスを持つようにアーギュメントとしてモデルを受渡
す。pe_template からのこの例はSampleModelHandlerと
命名されたクラスのための定義を示す。この定義をその
まま使用するが、クラスの名前を供給し実行方法の本体
を加える: class SampleModelHandler extends PeModelHandler{ public SampleModelHandler(PeModel model){ super(model); } public boolean execute(Object caller,PeMessage message){ // サーバーによって送られる記録を復号するアプリケーションコード //モデルを更新するアプリケーションコード return true; } }
【0191】createMessageHandler()法において満たす
ことによってどの構成要素がプレゼンテーションエンジ
ンにおけるどのメッセージを取扱うかを登録する。crea
teMessageHandler()はユーザーインターフェース又はモ
デルのいずれかでハンドラを登録するためにpe_templat
e において定義される。定義されたようにこの方法を使
用し、あなたが定義したハンドラ及びメッセージの名前
を供給するためにハンドラを加えるためアーギュメント
を変更する。
【0192】ユーザーインターフェースへの更新のため
のハンドラを登録する pe_template からのコード断片は“ユーザーインターフ
ェースへの更新のためのハンドラを作る”における例に
定義したハンドラを登録する方法を示している。あなた
はその例におけるコードをそのまま使用することに注意
して下さい。あなたはオブジェクトの名前及びそれらを
取扱うメッセージ以外の何も指定する必要はない。あな
たが登録する各ハンドラのために、uiAdaptor.addHandl
er()法への呼び出しを加えて下さい。あなたが定義した
メッセージ及びハンドラの名前を指定するためにuiAdap
tor.addHandler()法にアーギュメントを変更して下さ
い。この例では、メッセージの名前は“sample_ui_mess
age ”であり、そのハンドラの名前はSampleUIHandle
r() である: uiAdaptor 及びuiContainer はプレゼンテーションエン
ジンクラスによって定義される。あなたのハンドラはそ
の実行方法がユーザーインターフェース要素(GUI構
成要素)へのアクセスを持つようにアーギュメントとし
てそれらを受渡す必要がある。
【0193】モデルへの更新のためのハンドラを登録す
る もしメッセージがプレゼンテーションエンジンのデータ
モデルにおいて取扱われるべきなら、モデルにおいてハ
ンドラの名前を登録して下さい。このコードはpe_templ
ate におけるあなたのために定義されている。このコー
ド断片は“モデルへの更新のためのハンドラを作る”に
定義されたハンドラの取扱い方を示している。その例に
おけるコードをそのまま使用して下さい。メッセージの
名前及びそれらを取扱う方法を変更して下さい: protected void createMessageHandlers()throws DuplicateHandlerException { model.addHandler("sample_model_message", new SampleModelHandler(model)); //... }
【0194】遮断イベントを取扱う ICE−Tはデフォルト遮断ハンドラを与える。遮断ハ
ンドラはpe_templateにおいてではなく、プレゼンテー
ションエンジンクラスにおいて定義される。デフォルト
遮断ハンドリングを受けたくない開発者は彼ら自身の遮
断ハンドラを書くことができる。新しいハンドラを加え
るため、開発者は以下のことを行う: ・ ハンドラを書く ・ 同じメッセージネームを使用する(“ICET_SHUTDOW
N ”) ・ サーバープログラム及びプレゼンテーションエンジ
ンにおいてハンドラを登録するために与えられた方法を
使用する
【0195】遮断が起こるとき、通信ライブラリは遮断
ハンドラによってアプリケーションを知らせる。遮断ハ
ンドラは他のメッセージハンドラと同一であるが、事前
設定メッセージネーム(“ICET_SHUTDOWN ”)を有す
る。遮断ハンドラを登録するため、アプリケーションコ
ードは事前設定メッセージネームを使用してaddMessage
Handler() への呼び出しを作る。
【0196】プレゼンテーションエンジンにおいて遮断
ハンドラを登録する アプリケーションはプレゼンテーションエンジンにおい
て二つの遮断ハンドラを登録することができる。一つは
UI Adaptorで、もう一つはモデルで登録することができ
る。プレゼンテーションエンジンにおける遮断ハンドラ
を登録することは任意である。 uiAdaptor 上に遮断ハンドラを登録するために、下記呼
び出しを使用して下さい: uiAdaptor.addHandler("ICET_SHUTDOWN",new shutdownHandlerUI(uiAdaptor,uiContainer)); モデル上に遮断ハンドラを登録するために、下記呼び出
しを使用して下さい: model.addHandler("ICET_SHUTDOWN",new shutdownHandl
erModel(model));
【0197】サーバープログラムにおける遮断ハンドラ
を登録する あなたのアプリケーションはサーバープログラムで一つ
の遮断ハンドラを登録することができる。サーバープロ
グラムにおいて遮断ハンドラを登録するために: SrvComm_addMessageHandler("ICET_SHUTDOWN", <functionPointerToshutdownHandler>); 遮断が起こるときに実行するファンクションの名前を与
える、 (上記例では<functionPointerToshutdownHandler>).
【0198】通信のためにサーバープログラムを作る サーバープログラムを作りクライアントプログラムと通
信するために、開発者はICE−Tの通信層にサーバー
プログラムを“プラグインする(plugs in)”。サーバ
ー通信ライブラリ(それはICE−T通信層の一部であ
る)にサーバープログラムを接続することはプレゼンテ
ーションエンジンにGUIを接続することに類似する。
両方の場合において、開発者はメッセージの交換を可能
にし、これらのメッセージは構成要素(サーバープログ
ラム構成要素とプレゼンテーション構成要素)によって
局所的に取扱われる。
【0199】ICE−Tアプリケーションにおけるサー
バープログラム構成要素はCプログラミング言語を呼び
出すことができるどのような言語においても書けなけれ
ばならない。ICE−Tはメッセージを取扱いサーバー
通信ライブラリへの呼び出しを作るためC及びC++言
語テンプレートを与える。新しいサーバープログラムを
C又はC++で始めるために適切なテンプレートを使用
し、存在するサーバープログラムにテンプレートファン
クションを加えて下さい。 注意−もしあなたが既にそうしてなかったら、テンプレ
ートサブディレクトリの一つをアプリケーションサブデ
ィレクトリにコピーして下さい。二つのサブディレクト
リがある(一つはCに対してであり、もう一つはC++
に対してある)。各ディレクトリはserver_template を
含む(一つはCに対してであり、他はC++に対してで
ある)。
【0200】サーバープログラムとクライアントプログ
ラムの間の通信を可能にするため: ・ あなたがプレゼンテーションエンジンにおいて作っ
たメッセージハンドラに類似するサーバープログラムに
おいてメッセージハンドラを作って下さい。この工程は
“サーバープログラムにおけるメッセージを取扱う”に
記載されている。 ・ ICE−Tサーバー通信ライブラリへの呼び出しを
作って下さい。
【0201】サーバープログラムテンプレートはメッセ
ージ取扱い及び通信のためのファンクションを与える。
開発者はアプリケーションに特化したメッセージネーム
及びそれらのハンドラを供給する。Cのためにサーバー
プログラムはserver_template.C を使用する。C++の
ためにプログラムはserver_template.ccを使用する。テ
ンプレートはTemplates/C 及びTemplates/C++ それぞれ
の下のICE−T設置ディレクトリ内にある。
【0202】各サーバープログラムはデフォルト主ルー
チンを呼び出す。デフォルト主()(ルーチンは都合の
ために与えられる)。もしあなたがあなた自身の主()
ルーチンを書くことを選択するなら、ガイダンスのため
にdefault_main.c又はdefault_main.cc を見て、“デフ
ォルト主ルーチンを変更する(任意)”の工程に従って
下さい。
【0203】図28は、ファンクション開発者はサーバ
ープログラムテンプレートを使用して満たさなければな
らないことを記載する。三つ全てが1(真(TRU
E))又は0(偽(FALSE))の整数値を戻す。1
(TRUE)の戻り値はアプリケーション開始を行うこ
とができることを示している。0(FALSE)の戻り
値は結果としてアプリケーションを停止する問題を示し
ている。サーバープログラムテンプレートにおいて残っ
ているファンクションは与えられたように使用すること
ができる。
【0204】図29は好ましい例に従ったサーバー特性
を示したものである。
【0205】サーバープログラムにおけるメッセージを
取扱う プレゼンテーションエンジンを開発するとき、キータス
クはメッセージを取扱うコードを書いている。同じタス
クはサーバープログラムのために行われる。それは同様
の工程からなる: ・ 入力イベント(典型的にはデータのための要求)を
取扱うコードを書く ・ イベントハンドラを書く
【0206】サーバープログラムにおけるメッセージを
取扱うために: 1. 各入力メッセージを取扱うためにファンクション
を書く。あなたが書く各ファンクションは一つのアーギ
ュメント、SrvMessage()ファンクションをとり、ボイド
リターン型を有する。ファンクションはメッセージから
データを抽出し、次いでそれを処理するためにアプリケ
ーション論理を呼び出すか又はクライアントにメッセー
ジを戻す。
【0207】例えば、ここにデータ(従業員ネーム(emp
Name) 及び従業員ナンバ(empNumber) )を有するメッセ
ージに返答するCにおけるハンドラファンクションがあ
る:
【0208】2. メッセージハンドラを登録する。サ
ーバー通信ライブラリを用いてハンドラを登録するため
にserver_templateにおけるcreateMessageHandler()フ
ァンクションを書き込んで下さい。
【0209】あなたは例におけるコードをそのまま使用
することに注意して下さい。あなたはメッセージの名前
及びそれらを取扱うファンクション以外の何も指定する
必要はない。あなたが登録する各ハンドラのために、Sr
vComm_addMessageHandler()コールを加えて下さい。こ
の例におけるファンクションに対するアーギュメントは
あなたが工程1で定義したメッセージ及びハンドラのア
プリケーションに特化した名前である。
【0210】 int createMessageHandlers(){ SrvComm_addMessageHandler("Double",handleDouble); SrvComm_addMessageHandler("firstNameEntered",handleSearchMessage); //... return 1; }
【0211】デフォルト主ルーチンを変更する(任意) いったんアプリケーションのサーバー構成要素がどのよ
うにしてメッセージを取扱いそれらのハンドラを登録す
るかについての定義を含むと、それはサーバー通信ライ
ブラリを呼び出すことができる。それらの呼び出しはI
CE−Tによって与えられるデフォルト主ルーチンで定
義される:default_main.c及びdefault_main.cc 。defa
ult_main.c及びdefault_main.cc はServer/Main 下のI
CE−T設置ディレクトリにある。
【0212】このセクションはサーバー通信ライブラリ
への呼び出しの命令及び使用法を記載する。もしあなた
があなた自身のmainを作るか又はdefault を変更するな
ら、ICE−T通信層でサーバープログラムが作動でき
る呼び出しを含むためにこのセクションにおける命令に
従って下さい。
【0213】サーバープログラムを通信ライブラリに接
続するため: 1. ICE−Tヘッダーファイルを含ませて下さい。 default_mainファイルはヘッダーファイルを既に含んで
いる: # include “SrvData.h ” # include “SrvComm.h ” # include “SrvMessage.h”
【0214】2. 通信ライブラリのデータ構造を作る
ためにcreat_SrvComm("tcp")を呼び出して下さい。 char *protocol="tcp"; create_SrvComm(protocol);
【0215】3. setSrvCommProperties()を呼び出し
て下さい。(任意)サーバー特性を設定して下さい。se
tSrvCommProperties()ファンクションは作成プロセスの
一部としてサーバープログラムに連結される別のファイ
ルで典型的に実現される。
【0216】4. createMessageHandlers() を呼び出
して下さい。createMessageHandlers() の使用法につい
ての情報のために“サーバープログラムにおけるメッセ
ージを取扱う”を参照して下さい。
【0217】5. リスナーソケットを作りポート番号
を出力するためにSrvComm_createSocket() を呼び出し
て下さい。 注意−あなたがSrvComm_createSocket()呼び出しを作る
前にstdoutに何も書かないで下さい。
【0218】6. アプリケーションを初期化して下さ
い。
【0219】7. クライアントからの接続を受けるた
めにSrvComm_acceptClientConnection()を呼び出して下
さい。工程7及び8の命令を交換してもよいことに注意
して下さい。
【0220】8. 最後に、通信ライブラリのループを
開始するためにSrvComm_start() を呼び出して下さい。
このルーチンは全てが終了するまで戻らない。
【0221】ICE−Tアプリケーションを作成する ICE−Tアプリケーションを作成することはクライア
ント及びサーバープログラムのためのメイクファイルを
変更し、次いでそれを両プログラムを作るために使用す
ることからなる。
【0222】ICE−Tはプレゼンテーションエンジン
及びサーバープログラムの両方のためのメイクファイル
(Example.mk)を与える。Example.mkはTemplates/C 又
はTemplates/C++ 下のICE−T設置ディレクトリにあ
る。これらのファイルはアプリケーションディレクトリ
にコピーされる。
【0223】メイクファイルを使用するため、以下のも
のを指定するためにそれを変更して下さい: ・ コンパイラロケーション ・ ライブラリロケーション ・ ICE−T設置ディレクトリ(任意) ・ クライアント及びサーバーソースファイルロケーシ
ョン及び名前
【0224】1. エディタにおいてExample.mkを開
き、ファイルにおける命令に従って下さい。 2. コンパイラのロケーション、ライブラリを供給し
て下さい。もしあなたがICE−T設置ディレクトリを
動かすなら、その新しいロケーションを供給して下さ
い。ICE−T設置ディレクトリのロケーションを変更
する必要はない。もしあなたがそれを動かすために選択
するなら、ICET-INSTALL-DIRマクロにおけるロケーショ
ンの名前を供給して下さい。
【0225】あなたが値を与えるマクロはコードに示さ
れているように以下に示される: ############################## ### 環 境 構 成 ### ############################## # # あなたのコンパイラのロケーションを示すために下記行を変更して下さい # COMPILER_BIN= COMPILER_LIB= # # (カレントディレクトリに絶対的又は相対的な)ICE−T設置ディレクトリ # のロケーションを示すために下記行を変更して下さい。 # デフォルト値(../..) はあなたが設置階層におけるその場の例を形成すること # を可能にする。 # ICET-INSTALL-DIR=../..
【0226】3. プレゼンテーションエンジンソース
ファイルのためのマクロを変更して下さい。この例はプ
レゼンテーションエンジンテンプレートのための Java
ファイル(pe_template.java)及びmyGui.javaと命名され
たユーザーインターフェースファイルを指定する。あな
たが値を与えるマクロはボールドタイプでここに示され
ている。あなたのアプリケーションに使用するものにフ
ァイルの名前を変更して下さい: ################################ ### PE ### ### (構成可能なマクロ) ### ################################ # # あなたの Java ファイルを加えるために下記マクロを変更して下さい。 # PE_SOURCE5.java=\ myGui.java\ pe_template.java\ #end # # どの Java クラスがトップレベルクラス(即ち、presentationEngineのサブク # ラス)であるかを示すために下記マクロを変更して下さい。 # 注意:全く拡張なしでこのクラスを指定して下さい、例えば: # PE_MAIN_CLASS=myPresentationEngine # PE_MAIN_CLASS=pe_template
【0227】Example.mkはサーバープログラムテンプレ
ート(server_template)のためのファイルを指定する。
あなたが値を与えるマクロはボールドタイプでここで示
されている。Cソースファイルのためのマクロ及びC+
+ソースファイルのためのマクロがある。あなたのアプ
リケーションにおいてサーバープログラムによって使用
されたものにファイルの名前を変更して下さい: ################################# ### サーバー ### ### (構成可能なマクロ) ### ################################# # # .cc(C Plus Plus)ファイルを加えるために下記マクロを変更して下さい。 # SERVER_SOURCES.cc=\ #end # # .c(C)ファイルを加えるため下記マクロを変更して下さい。 # SERVER_SOURCES.c=\ default_main.c\ server_template.c\ #end # # 実行可能なサーバーの名前を示すために下記マクロを変更して下さい。 # SERVER=ServerTemplate
【0228】下記指令でクライアントプログラムを作成
して下さい: % make-fExample.mk pe サーバープログラムを作成して下さい: % make-fExample.mk server pe及びserverはともにメイクファイルであなたのために
定義されている。
【0229】ICE−Tアプリケーションを試験する あなたはプレゼンテーションエンジンを単独又はサーバ
ープログラムを用いて試験することができる。あなたは
それらを試験する前にプログラムを形成しなければなら
ない。 ◆ Java 指令を使用してプレゼンテーションエンジンク
ラスを単独で実行して下さい。例えば:% java myPrese
ntationEngine
【0230】サーバープログラムを用いてプレゼンテー
ションエンジンを試験するため: 1. あなたがサーバープログラムを作った後、ポート
idを得るためにそれを実行して下さい。 この例はmyServerと命名されたサーバープログラムを実
行した結果を示している。 % myServer //ICE LOG メッセージはこの例から削除された。 37526 129.146.79.147 ICE::ApplicationServer:port=37526 ServerIP=129.14
6.79.147
【0231】2. アーギュメントとしてポートid及び
サーバーマシンIPをjava指令に供給して下さい。例え
ば、工程1からマシン及びポートidを使用する:% java
myPresentationEngine 129.146.79.147 37526
【0232】3. デバッグモードでプレゼンテーショ
ンエンジンを試験するために、java指令に対するデバッ
グオプションを使用して下さい。デバッグオプションは
クラスネームの後の最初のアーギュメントであるべきで
ある。 % java myPresentationEngine-debug 129.146.79.147 3
7526
【0233】ICE−Tアプリケーションを構成及び展
開する プレゼンテーションエンジンを開発するためのツールに
加えて、ICE−Tはアプリケーション展開、実行、及
び管理をサポートするためにこれらの構成要素を与え
る。
【0234】・ 設置スクリプト 下記設置スクリプトは/binの下のICE−T設置ディレ
クトリにある: ・ ice-httpd-setup あなたがサーバー上で必要とするディレクトリをセット
アップする ・ ice-install-access サーバー上のアクセス層を設置して下さい。
【0235】・ ice-app-install サーバー上のそれぞれコンパイルされたプレゼンテーシ
ョンエンジン及びサーバープログラムを設置して下さ
い。
【0236】・ アクセス層 クライアントとサーバーノードの間のHTTP通信のた
めのゲートキーパーとして行動して下さい。アクセス層
はユーザーを識別及び認証する実行可能なcgi-bin であ
る。あなたはアクセス層によって使用されたeファイル
を変更し、次いで供給されたmakefile(Access.mk) を使
用してICE−Tサーバーアプリケーションで使用する
ためのカスタマイズされたアクセスプログラムを作成す
ることができる。
【0237】・ アプリケーション開始アプレットテン
プレート( Java ) ICE−Tアプリケーションを開始する Java アプレッ
トを作るためのテンプレート。テンプレートはStartApp
let 下のICE−T設置ディレクトリにある。
【0238】Web サーバー(ユーザーが設置しなければ
ならない) HTTP接続をサポートし、Web アクセス及びICE−
Tアプリケーションを実行するためのブラウザフロント
エンドの使用を可能にする。
【0239】注意−Sun 内部ユーザーは /home/interne
t/CERN/httpd/ からWeb サーバーを設置することができ
る。ディレクトリは設置指令を有するREADMEファイルを
含む。
【0240】ICE−Tアプリケーションの展開及び維
持はこれらの工程を含む: 1. ICE−Tアプリケーションを開始するためにス
タンプアプレット及びHTMLページを使用する 2. Web サーバーをセットアップする 3. アクセス層をカスタマイズ(任意)及び設置する 4. プレゼンテーションエンジン及びサーバープログ
ラムのための設置スクリプトを実行する 5. アプリケーション管理ファイルを作成する
【0241】開始アプレット及びHTMLページを使用
する コンパイルされたプレゼンテーションエンジンは Java
使用可能ブラウザにおけるアプレットとして実行するこ
とができる。ユーザーがブラウザからICE−Tアプリ
ケーションを開始できるようにするため、命名されたI
CE−Tテンプレートを使用して下さい:
【0242】・ 各アプリケーションのために開始アプ
レットを作って下さい。startAppletDevIR.java テンプ
レートを使用して下さい。“開始アプレットを使用す
る”はこの工程を記載する。
【0243】・ 各アプリケーションへのリンクでトッ
プレベルHTMLファイルを作って下さい。このファイ
ルは利用可能なアプリケーションを識別し、かつ各アプ
リケーションのためのHTMLファイルへのリンクを含
む“スプラッシュページ(splash page)”として役立
つ。splashTemplate.html を使用して下さい。“トップ
レベルHTMLファイルを作る”はこの工程を記載す
る。
【0244】・ 各アプリケーションのためのHTML
ファイルを作って下さい。appTemplate.htmlを使用して
下さい。“個別アプリケーションHTMLファイルを作
る”は方法を記載する。
【0245】開始アプレットを使用する 開始アプレットにWeb ページからICE−Tアプリケー
ションを開始するための方法を提供する。開始アプレッ
トは: ・ サーバーへのHTTPアクセスを開始する ・ ユーザーを認証する ・ サーバープログラムを開始する ・ Web ページにアプレットとしてのプレゼンテーショ
ンエンジンをダウンロードするか又は別のユーザーイン
ターフェースウィンドウにおいてアプレットを開く(開
発者の選択)
【0246】あなたはあなたが作ったアプリケーション
を開始する又はあなた自身のアプレットを作るためにst
artAppletDevIR.javaテンプレートを使用することがで
きる。テンプレートはあなたのどのアプリケーションに
対しても使用できるように完全に生成される。あなたは
別のパラメータのアプリケーションネームをアプレット
タグに供給する(“個別アプリケーションHTMLファ
イルを作る”を参照して下さい。)。startAppletDevI
R.java のためにリストされている完全コードは付録B
にある。
【0247】デフォルトによって、開始アプレットは同
じウィンドウにおいてプレゼンテーションエンジンを開
く。プレゼンテーションエンジンを持つために、新しい
ブラウザウィンドウに表示し、StartAp〜letDevIR.java
を開き、ファイル内の命令に従って下さい: AppletContext cont=app.qetAppletContext(); if(cont !=null){ System.err.println("Showing document:["+newURL+"]"); cont.showDocument(newURL); /* * 別のウィンドウにおいてアプレットを表すために、上記行を下 * 記注釈行で置換して下さい。 */ //cont.showDocument(newURL),"new_window"); }
【0248】トップレベルHTMLファイルを作る あなたはアプリケーションレベルHTMLページへのリ
ンクを利用可能なアプリケーションを与えるためにトッ
プレベルHTMLファイル又は“スプラッシュページ”
を必要とする。ユーザーがリンクを選択するとき、リン
クはそれらをアプリケーションレベルHTMLページに
導く。
【0249】ICE−Tは“スプラッシュページ”に対
してデフォルトHTMLファイルを与える。splashTemp
late.html と称されるファイルはStartApplet 下のIC
E−T設置ディレクトリにある。あなたはデフォルトフ
ァイルを使用できるか又はあなた自身のものを作ること
ができる。
【0250】あなたのアプリケーションWeb ページへの
リンクをリストするためのトップレベル Webページを作
るために: 1. splashTemplate.html を別のファイルにコピーし
て下さい。例えば:% cp splashTemplate.html myAppSp
lashPage.html 2. エディタにおいてファイルを開いて下さい。 3. ページのためのタイトル及びあなたがそこにリス
トされたアプリケーションについて含めたいと思うテキ
ストを与えて下さい。
【0251】4. 各リストされたアプリケーションの
ためにアプリケーションレベルHTMLページのURI
及びネームを供給して下さい。例えば、もしあなたがMy
Applicationlと命名されたアプリケーションのためのH
TMLファイルを作るためにappTemplate.htmlを使用し
たなら:
【0252】5. ファイルをあなたのサーバー上の適
当なロケーションにコピーして下さい。結果は命名され
たアプリケーションへのリンクを有するWeb ページであ
る:MyApplication1 ユーザーがこのリンクを選択するとき、ブラウザはアプ
リケーションのための開始アプレットでアプリケーショ
ンレベルHTMLをロードする。
【0253】個別アプリケーションHTMLファイルを
作る プレゼンテーションエンジン開始アプレットとしてアプ
リケーションレベルHTMLを考えて下さい。このペー
ジはダウンロードされたプレゼンテーションエンジンを
生じる開始アプレットを含む。
【0254】ユーザーがスタンプアプレットを開始する
とき、開始アプレットはアプレットパラメータからのア
プリケーションのネーム、ユーザーネーム、及びパスワ
ードをとり、HTTPを使用するこれらをサーバー上の
アクセス層に送る。
【0255】アプリケーションレベルWeb ページを作る
ために: 1. alDIDTemlDlate.html を別のファイルにコピーし
て下さい。例えば:% cp appTemplate.html myAppPage.
html 2. エディタにおいてファイルを開いて下さい。
【0256】3. アプリケーションを開始する方法に
ついてのユーザーへの命令を含ませて下さい(任意)。
startAppletDevIR.java はSendボタン及びユーザーの入
力を取扱うクラス(SendBtn)を定義する。appTemplate.
htmlはSendを使用するためデフォルト命令を含む。もし
あなたがスタンプアプレットでのユーザーの対話を変更
したいと思うなら、あなたはappTemplate.htmlにおける
命令及びSendBtn クラスを変更する必要がある。
【0257】4. 開始アプレットのネームを指定して
下さい もしあなたがstartAiDiDletDevIR.java をコピーし、そ
れに別のネームを与え、それをコンパイルしているな
ら、そのネームをアプレットタグに供給して下さい: <applet code="startAppletDevIR.class"width=400 hei
ght=400>
【0258】5. パラメーターとしてのアプリケーシ
ョンネームをアプレットタグに与えて下さい。例えば: <param name=AppName value="MyApplicationl">
【0259】6. このアプリケーションに対して使用
するためにアクセスプログラムのネームを与えて下さ
い。デフォルト値は“Access”である。あなたはデフォ
ルトアクセスファイルをカスタマイズしそれに別のネー
ムを与えてもよい。もしそうなら、値としてのネームを
アクセスパラメータに与える。 <param name=Access value="Access">
【0260】あなたがappleTemplate.htmlから作るファ
イルがエンドアプレットタグ</applet> を含むことを確
実にして下さい。ここにstartAlppletDevIR を使用する
最小HTIVILファイル、“MyApplicationl”と命名
されたアプリケーション、及びデフォルトアクセスプロ
グラムネームのためのタグがある。
【0261】<html> <blockquote> ユーザーネーム及びパスワードを与え、アプリケーショ
ンを開始するために“Send”ボタンを押して下さい。 </blockquote> <hr> <applet code="startAppletDevIR.class"width=400 hei
ght=400> <param name=AppName value="MyApplicationl"> <param name=Access value="Access"> </applet> </html>
【0262】ユーザーが開始アプレットを開始し、ユー
ザーデータ及びアプリケーションネームをサーバーに送
るとき、ICE−Tのアクセス層は: ・ ユーザーネーム及びパスワードを認証する ・ Web ページにおいてアプレットとしてプレゼンテー
ションエンジンをダウンロードする
【0263】アクセスを決定しプレゼンテーションエン
ジンをダウンロードする方法の一部として、アプリケー
ション層はプログラム構成要素のロケーション及びネー
ムについての情報を与えるためにアプリケーション構成
ファイルに依存する。ICE−Tのアクセス層設置スク
リプトはアプリケーション構成ファイルを自動的に生成
する。その構成はプレゼンテーションエンジンをダウン
ロードするHTMLラッパーファイルを生成するための
基礎である。あなたはデフォルトを受け、あなたのアプ
リケーションを生成したHTMLラッパーに使用させる
ことができ、あるいはあなたはプレゼンテーションエン
ジンを保持するためにカスタマイズされたHTMLファ
イルを生成するようにアプリケーション構成ファイルを
カスタマイズすることができる。さらなる情報のため
“アプリケーションを作成する”を参照して下さい。
【0264】Web サーバーをセットアップする 注意−ICE−Tアプリケーションを設置する前、即ち
ice-app-install を実行する前に次のWeb サーバーセッ
トアップを完了して下さい。
【0265】この工程はクライアントアプリケーション
の引渡し及びアクセスを管理するICE−Tファイルの
ためのWeb サーバーファイル構造を設定する。このファ
イル構造を設定するために、/bin/ice-httpd-setup下の
ICE−T設置ディレクトリに与えられたスクリプトを
実行して下さい。
【0266】あなたがこのサーバーセットアップスクリ
プトを実行する前に、あなたはcgi-bin ディレクトリ及
びhttp-docs ディレクトリへのリンクを設定する。
【0267】UNIXを使用してcgi-bin 及びhttlDd-d
ocs ディレクトリへのシンボリックリンクを作って下さ
い。・ スーパーユーザーになる・ リンクを作る: % in-s <absolute path to cgi-bin> /cgi-bin % in-s <absolute path to httpd-docs> /WWW-docs
【0268】もしあなたがこれらのリンクを作ることが
できないなら、ice-httpd-setup スクリプトへのアーギ
ュメントとしてcgi-bin 及びhttpd-docsに絶対パスネー
ムを与えて下さい。もしあなたがリンクを作れなかった
ら、あなたはcgi-bin 及びhttpd-docsロケーションを指
定するためにアクセス層のデフォルトアクセスプロパテ
ィファイルを変更する必要はない(“アクセス層をカス
マタイズする”を参照して下さい。)。もしあなたがリ
ンクを作ったなら、アーギュメントなしでice-httpd-se
tup を実行して下さい。
【0269】ICE−T設置ディレクトリからice-http
d-setup を実行して下さい。ice-httpd-setup はこれら
のアーギュメントをとる: ・ -cgi-binはc 〜i-bin ディレクトリのロケーション
をとる。デフォルトは/cgi-binである。 ・ -httpd-docs はhttpd/docsディレクトリのロケーシ
ョンをとる。デフォルトは/WWW-docs である。
【0270】注意−ICE−T Webサーバーである各マ
シンのために一度ice-httpd-setup を実行して下さい。
例えば: % cd <ICE-T installation directory> % /bin/ice-httpd-setup ice-httpd-setup は要求されたクライアントアプリケー
ションの引渡し及びアクセスを管理するファイルのため
にWeb サーバーファイル構造を設定する。
【0271】ice-httpd-setup はこれらのタスクを行
う: ・ -cgi-binディレクトリ下でICEディレクトリを作
る ・ httpd-docsディレクトリからcgi-bin/ICE へのリン
クを作る ・ ICEディレクトリ下でアプリケーション開始ディ
レクトリを作る ・ ICEAppRepositoryディレクトリを作る ice-httpd-setup は付加的な任意のアーギュメントをと
る。アーギュメントのリスト及びそれらのデフォルトを
得るためにhelp修飾子でsetup ファイルを実行する: % cd <ICE-T installation directory> % /bin/ice-httpd-setup-help
【0272】アクセス層をカスタマイズする この工程は任意である。アクセス層はICE−Tアプリ
ケーションへのアクセスを管理するために認証及びアク
セス性ファイルを使用する。開発者はICE−Tによっ
て与えられたファイルを使用するか又はそれを変更し
て、それら自身のアクセス要求を指定するか又は異なる
アプリケーションで使用するための多数のアクセスサブ
システムを作ることができる。
【0273】アクセス層は下記のものを使用する: ・ default_authentication.cc default_authentication.cc はアプリケーションネー
ム、ユーザーネーム、及びパスワードをチェックする単
一のデフォルト認証ファンクションを含んでいる。デフ
ォルトによって、全ての使用者が認証される。ユーザー
の認証方法を指定するためにタイトルを変更して下さ
い。 ・ default_access_properties.cc default_access_properties はアクセスディレクトリを
指定するためのファンクションとともにアクセスログタ
イトルプロパティを制御するための幾つかのファンクシ
ョン、及びパスワードスクランブルキーを含んでいる。
【0274】cgi-bin-locationプロパティの例外で、
(下記表参照)これらのタイトルを変更する必要は全く
ないが、あなたは認証及びアクセスプロパティのために
デフォルトを変更するように選択してもよい。ファイル
はICE−T設置ディレクトリにおけるアクセスサブデ
ィレクトリにある。
【0275】下記表はdefault_access_properties.ccで
変更できるプロパティを記載する:
【表1】
【0276】default_uthentication.ccにおいてauthen
ticate()functionを実現するために: 1. ICE−T設置のアクセスディレクトリからファ
イルをコピーして下さい。 2. authenticate()functionを実現するためにファイ
ル内の命令に従って下さい。 3. Access.mk において、このファイルネームをあな
たのものに置き換えて下さい。
【0277】default_access_properties.ccにおいてデ
フォルトを変更するために: 1. ICE−T設置のアクセスディレクトリからファ
イルをコピーし、それにアプリケーションに適するネー
ムを与えて下さい。 2. アプリケーション特定値を供給するためにファイ
ルを変更して下さい。 3. あなたが編集したファイルでデフォルトファイル
ネームを置き換えるためにAccess.mk を編集して下さ
い。Access.mk はアクセスディレクトリにある。ユーザ
ー変更可能なセクションはマークされている。
【0278】default_authentication.cc のために新し
いファイルネームを置換するため、第2行を変更して下
さい: AUTHENTICATION_SOURCES.cc=\ default_authentication.cc\
【0279】default_access_properties.ccのために新
しいファイルネームを置換するため、第2行を変更して
下さい: ACCESS_PROPERTIES_SOURCES.cc=\ default_access_properties.cc\
【0280】4. Access.mk を実行して下さい。 % make-fAccess.mk
【0281】5. あなたはアクセス層を作成した後、
ice-install-accessを実行して下さい。デフォルトによ
って、Access.inkはCustomAccessと命名された実行可能
なネームを作る。もしあなたがアクセスプログラムのデ
フォルトネームを変更したなら、ice-install-accessへ
のソースオプションを使用し、あなたがアクセスプログ
ラムに与えたネームを指定して下さい。例えば:% ice-
install-access-source-myAccess
【0282】アクセスプログラムを設置する ICE−Tアクセスプログラム設置スクリプトは: ・ あなたが指定するcgi-bin ディレクトリにおいてサ
ーバー上でアクセスプログラムを設置する ・ /WWW-docs/ICE/start ディレクトリにおいて開始ア
プレットを設置する
【0283】アクセスプログラムを設置するため、IC
E−T設置ディレクトリからice-install-accessを実行
して下さい: % cd <ICE-T installation directory> % /bin/ice-install-access ice-install-accessは四つの任意のアーギュメントをと
る: ・ -cgi-bin<cgi-bin location>
【0284】デフォルトは/cgi-binである。 ・ -source<Access excecutable name> あなたがコピーしようとしているアクセスプログラムの
ネーム。デフォルトはアクセスである。 ・ -dest<Access excecutable name>
【0285】あなたがコピーしようとするアクセスプロ
グラムのネーム。デフォルトはアクセスである。もしあ
なたが異なるアプリケーションのために異なるアクセス
プログラムを使用したいなら、宛先を変更して下さい。 ・ -help アーギュメント及びそれらのデフォルトを表示する。
【0286】ICE−Tアプリケーションを設置する ICE−Tはアプリケーションを設置するためにスクリ
プトを与える。ice-app-install はこれらのタスクを行
う: ・ アプリケーションのためのクライアント及びサーバ
ー実行可能なファイルを設置する。 ・ アプリケーションディレクトリを作る。 ・ サーバーライブラリを設置する。 ・ Java プレゼンテーションエンジンクラスによって
使用される Java パッケージを設置する。 ・ アプリケーション構成ファイル(appConfigFile )
を作るか、又は特定されたものを設置する。もしあなた
が変更したappConfigFile を既に持っているなら、あな
たはアプリケーション設置にそれをオーバーライトさせ
ることを避けることができる。appConfigFile<file>opt
ion を使用して下さい。 ・ aIDlDConfigFile をアプリケーションディレクトリ
にコピーする。ice-app-install でICE-T Application
を設置する。 注意−あなたが設置したいと思う各アプリケーションの
ためにice-app-installを実行して下さい。
【0287】ICE−T設置ディレクトリから、要求さ
れたアーギュメントでice-app-install を実行して下さ
い。 ・ -appName−−アプリケーションのネーム ・ -peClass−−プレゼンテーションエンジンクラスの
ネーム ・ -peSource −−あなたが設置したいと思うプレゼン
テーションエンジンのロケーション ・ -serverName −−サーバープログラムのネーム ・ -serverSource −−あなたが設置したいと思うサー
バープログラムのロケーション もしpeSource及びserverSourceが同じディレクトリな
ら、あなたはそれらの一つを指定する必要があるにすぎ
ない。
【0288】ice-app-install は付加的な任意のアーギ
ュメントをとる:ice-app-installはICE−Tアプリ
ケーション設置ディレクトリの/binディレクトリにあ
る。あなたはアーギュメントのリスト及びそれらのデフ
ォルトを得るために-help optionでファイルを実行する
ことができる: % cd <ICE-T installation directory> % /bin/ice-app-install-help
【0289】与えられたMakefileでICE−Tアプリケ
ーションを設置する ice-app-install を実行するための代案は完成したアプ
リケーションを設置するためにExample.mk Makefile を
使用することである。ExamiDle.mk はあなたのWeb サー
バー上でアプリケーションを設置するためのターゲット
を定義する。もしあなたが“Web サーバーをセットアッ
プする”に記載されたようなシンボリックリンクを作っ
てWeb サーバーをセットアップするなら、そのときあな
たは下記アーギュメントでExamiDle.mk を使用すること
ができる:% make-fExample.mk app-install
【0290】もしあなたが“Web サーバーをセットアッ
プする”に記載されたようにcgi-bin ディレクトリへの
シンボリックリンクを作らないなら、Example.mkファイ
ルにおいてcgi-bin ロケーションを指定して下さい(CG
I_BIN_LOCATIONマクロを使用し、次いでaIDiD−設置タ
ーゲット上でmakeを実行して下さい):% make-fExampl
e.ink app-install
【0291】アプリケーションを構成する ICE−Tアプリケーション設置スクリプト(ice-app-
install )はデフォルトアプリケーション構成ファイル
(appConfigFile )を生成する。ユーザーが開始アプレ
ットを開始することによってアプリケーションを始める
とき、アクセス層はappConfigFile におけるサーバー及
びクライアントプログラムロケーション及びネームのた
めの値を求めるためにアプリケーション管理者を使用す
る。構成ファイルを使用して、アプリケーション管理者
はWeb ブラウザ実行環境におけるアプレットとしてプレ
ゼンテーションエンジンを与えるためにHTMLラッパ
ーを生成する(ICE−Tアプリケーションのための開
始アプレットを使用する方法についてのより多くの情報
のために“開始アプレット及びHTMLファイルを使用
する”を参照して下さい。)。
【0292】アプリケーションをWeb ブラウザに展開す
るときに最後の工程を完了するために、あなたはHTM
Lラッパーにおいてアプリケーション特定値を供給する
ために二つの方法の一つを使用する: ・ “ICE−Tアプリケーションを設置する”に記載
されたように要求されたアーギュメントでice-app-inst
all を実行し、それにデフォルトaiDiDConfigFile を作
らせて下さい。 ・ あるいは、自動的に生成されたappConfigFile を変
更することによってあなた自身のアプリケーション構成
ファイルを作って下さい。デフォルトによって、ice-ap
p-install は/cgi-bin/ICE/ICEAppRepository ディレク
トリにおいてアプリケーションファイルを作り、それを
<appName>.appconf と命名する。
【0293】ice-app-install によって生成されたappC
onfigFile をカスタマイズするために: 1. エディタにおいて生成した構成ファイル(<appNa
me>.appconf )を開いて下さい。 2. 各appConfigFile における適切なタグにおいて各
アプリケーションのためのネームを供給して下さい。あ
なたはこれらのタグにおいてアプリケーション情報を供
給することが要求される: ・ <peClass> −−プレゼンテーションエンジンクラス
のネーム ・ <serverName>−−サーバープログラムのネーム ・ <PresentationEngine>−−プレゼンテーションエン
ジンがWeb ページ上で表される場所を指定する。 アプリケーション管理者は命名されたプレゼンテーショ
ンエンジン(peClass)を指定するJava<applet>タグで<
PresentationEngine>を置き換える。
【0294】3. ユーザー認証又はアプリケーション
スタンプファイルがうまくいかなかったかどうかをブラ
ウザに戻すためにメッセージを供給して下さい。テンプ
レートは認証失敗及びアプリケーション開始失敗メッセ
ージのためのタグを含む。appConfigFile はあなたがい
かなるWeb ページに対してもするようにWeb ページタイ
トル、見出し、及びテキストを指定するための任意のタ
グを含む。
【0295】アプリケーション管理者はどのアプリケー
ションがクライアントに戻されるかを設定するためにプ
ロパティファイルを使用する。デフォルトによって、ア
プリケーション管理者はアクセス層によってそれに受渡
されたアプリケーションネームを戻す。あなたはdefaul
t_appmgr_properties を変更することによって戻すため
の別のアプリケーションを指定することができる。cc.d
efault_appmgr_properties.cc は“アクセス層をカスタ
マイズする”に記載されている。
【0296】プレゼンテーションエンジンテンプレート ICE−Tはあなたがプレゼンテーションエンジンのた
めのテンプレートとして使用できるヌルアプリケーショ
ンを提供する。あなたは/Templates/pe_template.java
下のICE−Tアプリケーション設置ディレクトリにお
いてテンプレートのためのファイルを見つけることがで
きる。
【0297】 Code Example A-1 pe_template.java Listing import sunsoft.ice.pe.*; import java.net.*; import java.io.*; import java.applet.*; import java.util.*; import java.awt.*;
【0298】 /* * これはICE−Tプレゼンテーションエンジンのサンプルテンプレートである *−、それは作動するPEを作るためにハンドラ及びメッセージの実際のui, *ネームで満たされる必要がある。 */ //PresentationEngineクラスを拡張する public class pe_tempate extends PresentationEngine{ //コンストラクタ public pe_tempate(){ //これが要求される。それは内部PE構成要素をセットアップする。 super(); }
【0299】 Code Example A-1 pe_template.java Listing(Continued) /** *これは現在のアプレットが終わるときに呼び出される。 *それは現在のアプレットの終了を取扱うためにカスタマイズされる必要がある **/ public void terminate(String reason){ super.PEterminate(reason); }
【0300】 /** *これはPEにおいて要求されるかもしれないいかなるローカルイニシャライゼ *ーションをするために使用することができる。全ての接続がサーバーとセット *アップされる前に呼び出され、このファンクションからメッセージを全く送る *べきではない。* / protected void initializeApplication(){} /** *createUIはアプレットのUI構成要素を作る。 *それはSpecJava gui builderによって生成される“gui ”クラスの“ui”を使 *用する。* /
【0301】 /** * このファンクションにおいてアプリケーションのUIを指定して下さい。* / protected void createUI(){ //specJavaによって生成されるものをマップするためにローカルawt 構成要素を //作って下さい。例えば: }
【0302】 /* * createModel はモデルにおいてデータ項目を作る。あるデータ項目をobservab * leすることができる。これらの項目はobservableが更新されるときに呼び出さ * れる関連observerファンクションを持つ。* /
【0303】 //このファンクションは任意である。それはもしアプリケーションがあるクライ //アント側アプリケーション論理をしたいと思う場合に必要にすぎない。もしあ //なたがモデルにおいてクライアント側処理をする計画があるなら下の行をコメ //ントしないで下さい。
【0304】 Code Example A-1 pe_template.java Listing(Continued) protected void createModel(){ //observableオブジェクト(例えばPeHashtable, PeVector, PeString ... ) //observerをobservableに接続して下さい。 //observables をモデルに入れて下さい。 }
【0305】 /** *UI又は通信アダプタからPEへのインバウンドメッセージのためのハンドラ *へのメッセージネームのマッピングを与えて下さい。 *UI及びモデルメッセージのためのハンドラはこのファンクションにおいて与 *えられるべきである。 */
【0306】 //このファンクションが要求される。それはuiAdaptor で登録されたUIイベン //ト及びモデルで登録したモデルイベントのマッピングを保つ。 protected void createMessageHandlers() throws DuplicateHandlerException{ //UIはマップする uiAdaptor.addHandler("sample_ui_message", new SampleUIHandler(uiAdaptor,uiContainer)); //... //Model はマップする model.addHandler("sample_model_message", new SampleModelHandler(model)); //... }
【0307】 /* * mainはスタンドアロンjavaアプリケーションとして実行しているときに使用さ * れ(即ち、ブラウザ環境ではない)、ブラウザがアプレットのために行うこと * の全てを行うことを意図する。 Code Example A-1 pe_template.java Listing(Continued)* * / public static void main(String args[]){ pe_template pe = new pe_template(); pe.isApplet = false; pe.getCommandLineArgs(args); pe.init();pe.start(); } }
【0308】 ////////////////////////UIメッセージハンドラ /////////////////////////////// class SampleUIHandler extends PeUIHandler{ public SampleUIHandler(PeUIAdaptor adaptor,PeUI uiContainer){ super(adaptor,uiContainer); } public boolean execute(Object caller,PeMessage message){ //サーバーによって送られる記録を復号する //uiを更新する return true; } }
【0309】 ////////////////////////モデルメッセージハンドラ /////////////////////////////// class SampleModelHandler extends PeModelHandler{ public SampleModelHandler(PeModel model){ super(model); } public boolean execute(Object caller,PeMessage message){ Code ExampleA-1 pe_template.java Listing(Continued) //サーバーによって送られる記録を復号する //モデルを更新する return true; } }
【0310】 ////////////////////////モデルObservers /////////////////////////////// class SampleObserver extends PeObserver{ public SampleObserver(PeModel model){ super(model); } public void update(Observable o,Object arg){ } }
【0311】開始アプレットテンプレート startAfaIaletDevIR.java はICE−Tアプリケーショ
ンを開始する Java アプレットである。ファイルはいか
なるICE−Tアプリケーションも実行するために生成
される。あなたはアプレットとのユーザーの対話を変更
したいと思わない限り、それを変更する必要はない。ア
プレットはユーザーネーム及びパスワードを一般に求
め、アプリケーションを開始するためにSendボタンを与
える。ファイルは/StartApplet下のICE−T設置ディ
レクトリにある。このファイルの使用方法についての命
令に対して、“開始アプレット及びHTMLファイルを
使用する”を参照して下さい。
【0312】 Code Example B-1 startAppletDevIR.java Listing /** * これはICE−Tアプリケーションを表示する前に特定のユーザー情報を集め * るために使用できるサンプルアプレットである。それは必要なようにカスタマ * イズすることができる。それは与えられたindex.htmlファイルを使用してブラ * ウザにロードされる。* /
【0313】 import java.net.*; import java.io.*; import java.applet.*; import java.util.*; import java.awt.*; import sunsoft.ice.ui.*; public class startAppletDevIR extends Applet{
【0314】 Code ExampleB-1 startAppletDevIR.java Listing(Continued) public startAppletDevIR(){ } public void init(){ setLayout(new ColumnLayout()); Panel fnamep = new Panel(); fnamep.setLayout(new FlowLayout(FlowLayout.LEFT)); fnamep.add(new Label("Username:")); TextField fnameText=new TextField("",20); fnamep.add(fnameText); add(fnamep);
【0315】 Panel passwdp = new Panel(); passwdp.setLayout(new FlowLayout(FlowLayout.LEFT)); passwdp.add(new Label("Password: ")); TextField passwdText=new TextField("",20); passwdText.setEchoCharacter(','); passwdp.add(passwdText); add(passwdp); Panel btnp = new Panel(); btnp.setLayout(new FlowLayout()); AButton cbtn = new Abutton("Send");
【0316】 cbtn.setAction(new sendBtn()); cbtn.addClientData("applet",this); cbtn.addClientData("username",fnameText); cbtn.addClientData("password",passwdText); btnp.add(cbtn); add(btnp); show(); }
【0317】 public String getAppName() { appname = getParameter("AppName"); return appname; } public String getAccessName() { String acc = getParameter("Access");
【0318】 Code ExampleB-1 startAppletDevIR.java Listing(Continued) if(acc == null 11 acc.equals(""))acc="Access"; return acc; } public String getAppHost(){ System.err.println("Applet:"+isApplet); if(isApplet){ URL docBase=getDocumentBase(); System.err.println("Document base:"+docBase);
【0319】 apphost=docBase.getHost(); if(apphost==null)apphost=""; int port=docBase.getPort(); if(port != -1)apphost = apphost + ":"+port; System.err.println("Server is:{"+apphost+"}"); }else{ apphost=""; } return apphost; }
【0320】 public static void main(String agrs[]) { Frame f = new Frame("ICE-T startup applet"); startAppletDevIR tap = new startAppletDevIR(); tap.isApplet=false; tap.init();f.add("Center",tap); f.resize(500,400); f.show(); tap.start(); }
【0321】 public boolean isApplet=true; private String appname = new String(""); private String apphost = new String(""); } /* * sendBtn は“Send”ボタン起動を取扱う。このクラスの実行メンバーは“Send * ”ボタンが押されたときに呼び出される。それは全ての関連ユーザー情報を収 * 集し、それをHTTPを介してサーバーに送る。
【0322】 Code ExampleB-1 startAppletDevIR.java Listing(Continued)* これはサーバーのcgi-bin においてAccessファンクションを実行することによ * ってなされる。* [注意:ユーザーネーム及びパスワードはブラウザのURLフィールドに表示 * されないようにスクランブルされる。]* /
【0323】 class sendBtn extends Activity{ public boolean execute(Object caller,Event event){ AButton btn=(AButton)caller; startAppletDevIR app=(startAppletDevIR)(btn.getClientData("applet")); TextField name = (TextField)(btn.getClientData ("username")); TextField passwd = (TextField)(btn.getClientData ("password")); String servername = app.getAppHost();
【0324】 URL newURL = null; String username=name.getText(); String userpasswd=passwd.getText(); String appname = app.getAppName(); String accessName=app.getAccessName(); AccessScrambler scrambler=new AccessScrambler(); System.err.println("Scrambling("+username+","+ //userpasswd+","+ appname+")"); String scrambled=scrambler.scrambleUser(username,userpasswd,appname); System.err.println(" scrambled ==>["+scrambled+"]");
【0325】 String url ="http://" + servername + "/cgi-bin/"+accessName + "?" + appname + "+" + scrambled; System.err.println(url); try{ newURL = new URL(url); } catch(Exception e){ System.err.println("Exception Getting newURL from("+url+"):"+e); } AppletContext cont = app.getAppletContext(); if(cont != null){
【0326】 Code ExampleB-1 startAppletDevIR.java Listing(Continued) /* * ShowDocumentへの呼び出しはアクセスcgi-bin へのhttpd 要求を実行可能にさ * せる 。* * 単一のウィンドウでPEを示すために一つのアーギュメント(URL)でshow * Documentを呼び出して下さい;新しいブラウザウィンドウにおいてPEを示す * ために二つのアーギュメント(URL ,“new_window”)で呼び出して下さい。 * * 我々はブラウザがjavaアプレットを用いてhtmlページから戻すことを取扱う方 * 法のため、新しいブラウザウィンドウを作るための呼び出しを現在デフォルト * している−−もしあなたが戻りすぎた場合、アプレットは破壊される。我々は * あなたがあなたのブラウザを戻すことを望んでいるが、あなたのPEをキルす * ることは意図していないので戻りすぎる機会を最小にするために新しいウィン * ドウにおいてPEを置く。* * /
【0327】 System.err.println("Showing document in new window:["+newURL+"] in window:("+appname+")"); cont.showDocument(newURL,appname); //cont.showDocument(newURL); //System.err.println("Showing document:["+newURL+"]"); } return true; } }
【0328】サーバープログラムテンプレート この付録は下記テンプレートのためのコードリスティン
グを含む: ・server_template.c ・default_main.c ・server_template.cc ・default_main.cc
【0329】第2章“プログラム構成要素を作成する”
はこれらのテンプレートのロケーション及び使用を記載
する。さらなる情報のため“サーバープログラムにおけ
るメッセージを取扱う”及び“デフォルト主ルーチンを
変更する(任意)”を参照して下さい。 C++ファイル ICE−Tはサーバープログラムを開発するためにC+
+を使用してアプリケーション開発者に対してデフォル
ト主ルーチン及びサーバープログラムテンプレートを与
える。
【0330】 C++サーバープログラムテンプレート Code Example C-1 server_template.cc Listing /* * server_template.cc* * これはC++におけるICE−Tサーバーアプリケーションのテンプレートで * ある。* /
【0331】 #include <stdio.h> #include <string.h> #include <sys/types.h> //これらはサーバー側ICE−T構成要素を得るために要求される #include "SrvData.hh" #include "SrvComm.h" #include "SrvMessage.hh" #define false 0 #define true 1
【0332】 /*********************************** * メッセージハンドラファンクション * *********************************** / /*これは特定されたメッセージがクライアントから受けられるときに呼び出され るメッセージハンドラファンクションである。それはメッセージネーム及びメッ セージデータを含む一つのアーギュメント(msg )だけを持つ。* / void handleMessage(SrvMessage *msg){ /* * 入力データを逆アセンブルする* /
【0333】 Code Example C-1 server_template.cc Listing(Continued) /* SrvData *data; data=message->getDataElement(0);* / /* * アプリケーション"Logic" */ * / /* * 出力データをアセンブルする* /
【0334】 //必要により応答を送る。<replyData>はSrvData.hhに与えられたタイプのもの/ /であることができる。 /* SrvMessage *reply=new SrvMessage("replyMessageName"); reply->addDataElement(<replyMessageData>); SrvComm_sendMessage(reply); * / }
【0335】 //これはサーバー上の遮断ハンドラの例である。 void shutdownHandler(SrvMessage *shutdownMsg){ char *shutdownType=((SrvString *)shutdownMsg->getDataElement(0))- >getValue(); char *reasonString=((SrvString *)shutdownMsg->getDataElement(1))->getVal ue();
【0336】 if(!strcmp(shutdownType,"ICET_CLIENT_SHUTDOWN")){ fprintf(stderr,"shutdownHandler:Detected CLIENT SHUTDOWN event. Reason=%s\n",reasonString); }else if(!strcmp(shutdownType,"ICET_CLIENT_DISCONNECT")){ fprintf(stderr,"shutdownHandler:Detected CLIENT DISCONNECT event. Reason=%s\n,reasonString); }else if(!strcmp(shutdownType,"ICET_SERVER_SHUTDOWN")){ fprintf(stderr,"shutdownHandler:Detected SERVER SHUTDOWN event. Reason=%s\n",reasonString); }else if(!strcmp(shutdownType,"ICET_INTERNAL_SHUTDOWN")){
【0337】 Code Example C-1 server_template.cc Listing(Continued) fprintf(stderr,"shutdownHandler:Detected INTERNAL SHUTDOWN event. Reason=%s\n",reasonString); }else { fprintf(stderr,"Shutdown Handler:unknown msg type(%s). Reason=%s\n", shutdownType,reasonString); } }
【0338】 /************************************************ * * SrvComm library properties(setSrvCommProperties)を設定し * * applicationService(lnitializeApplicationService)を初期化 * * するデフォルトメインによって要求されるファンクション * * * ************************************************* / int setSrvCommProperties(){ /*server timeoutはタイムアウト遮断手順を開始する前にPEから受けとるメッ * セージ間でサーバーが待つ時間である。* / SrvComm_setServerTimeout(300);/* in seconds */
【0339】 /*accept timeoutは遮断する前にクライアントから接続を受けるためにサーバー * が待つ時間である。* / SrvComm_setAcceptTimeout(400);/* in seconds */ return 1; }
【0340】 int createMessageHandlers(){ SrvComm_addMessageHandler("SampleIncomingMessage",handleMessage); SrvComm_addMessageHandler("ICET_SHUTDOWN",shutdownHandler); return 1; //(return 0;もしここで問題がある場合) } int initializeApplication(){ return 1;//(return 0;もしアプリケーションを初期化する問題がある場合) } Default main for C++
【0341】 Code Example C-2 default_main.cc Listing /*************************************************** * default_main.cc * * このファイルは実行可能なICE−Tサーバーによって使用されるdefault ma * in()を実現する。* * このmainの構造はICE-T SrvComライブラリを実行するために必要な全てのファ * ンクションを呼び出し、アプリケーションに特化したコードを含むためにアプ * リケーションライターのための幾つかの場所を与える。これらのファンクショ * ンはアプリケーションライターによって実現され、作成プロセスの一部として * リンクされる別のファイルに通常実現される。*
【0342】* これらのファンクションは全てint valuesを戻し、それらはアプリケーション * の開始が継続されるか又は中断されるかを決定するために使用される。このよ * うにしてアプリケーションコードは何か悪いことが起こったとき(データベー * ス、又は何かに接続できない)を示し、この情報をアプリケーションに受渡し * て開始が継続しなくするためのフックを持つ。* 全てのことがOKであることを示すreturn 1(TRUE)、又はアプリケーション開 * 始を中断することを生じる致命的な問題を示すreturn 0(FALSE) *
【0343】* int setSrvComProperties() * SrvComm ライブラリ上にプロパティを設定するためにこのファンクションに書 * き込んで下さい。このファンクションはSrvComm ライブラリが作られた後でク * ライアントからの接続を受ける前に呼び出される。*
【0344】* int createMessageHandlers() * メッセージハンドラを登録するためにこのファンクションに書き込んで下さい * 。このファンクションはsetSrvCommProperties()後にすぐに呼びだされる。*
【0345】* int initializeApplication() * アプリケーション特定コードを開始するためにこのファンクションに書き込ん * で下さい。それらは接続をクライアントから受けた後でメッセージリーダー及 * びハンドラループを開始する前に呼び出される。*
【0346】* Code Example C-2 default_main.cc Listing(Continued) * * 注意:* このmain()routine はあなたの便宜のために与えられるが、あなたはそれを使 * 用する必要はない。あなたはあなた自身のmain()routine を自由に書く。但し * 、あなたはSrvComm ライブラリへの呼び出しを命令するための条件に従う:* 1. Commライブラリのデータ構造を作るためにcreate-SrvComm("tcp") をまず * 呼び出して下さい。* 2. Commライブラリ上でプロパティを設定し、メッセージハンドラ及び他のハ * ンドラを登録して下さい。* 3. リスナーソケットを作りポート番号を出力するためにSrvComm_createSock * et()を呼び出して下さい。* (注意:この呼び出しをする前にstdoutに何も書かないで下さい)。* 4. アプリケーションを初期化する。* 5. クライアントからの接続を受けるためにSrvComm_acceptClientConnection * ()を呼び出して下さい。* (注意:工程4及び5は交換してもよい)。* 6. Commライブラリのループを開始するためにSrvComm_start() を最後に呼び * 出して下さい。このルーチンは全てが終わるまで戻らない。* *************************************************** /
【0347】 #include <stdio.h> #include <stdlib.h> #include <string.h> #include <sys/types.h> #include "SrvComm.h" extern int setSrvCommProperties(); extern int createMessageHandlers() extern int initializeApplication();
【0348】 /***************************************************** * The default Main * * * * ICE-T はICE-T サーバーアプリケーションのために * * default main()routine を与える。 * * * ***************************************************** /
【0349】 Code Example C-2 default_main.cc Listing(Continued) int main( intargc, char**argv, char**envp ) { char *protocol="tcp"; create_SrvComm(protocol);
【0350】 /* * Commライブラリ上でプロパティを設定するためにユーザー定義ファンクション * を呼び出して下さい。次にメッセージハンドラを作りそれらをCommライブラリ * に加えるためにユーザー定義ファンクションを呼び出して下さい。* * setSrvCommPropertiesファンクションはCommライブラリプロパティが設定され * る場所である。全てのプロパティはリーズナブルなデフォルトを持ち、それら * のどれも設定される必要はない。*
【0351】* createMessageHandlers ファンクションはメッセージハンドラが加えられる場 * 所であり、他のハンドラ(遮断ハンドラ、デフォルトメッセージハンドラなど * )が登録される。* * これらの二つのファンクションについての要求:* 1. これらのファンクションはstdoutに何も書かなくてもよい。なぜならばア * クセス層はstdout上の最初のものがサーバーがクライアント接続のために聞い * ているポート番号であることを期待するからである。* * / if(!setSrvCommProperties()){ exit(0); }
【0352】 if(!createMessageHandlers()){ exit(0); } /* * クライアントが接続するソケットを作って下さい。 Code Example C-2 default_main.cc Listing(Continued) * このルーチンはアクセス層がクライアントアプレット(プレゼンテーションエ * ンジン)にポート番号を受渡すhtmlコードを作成できるようにポート番号を生 * 成する(stdoutに印刷する)ことに責任がある。
【0353】 , * (注意:このルーチンが呼び出される前にstdoutに何も書かないで下さい。し * かしながらstderrに書くことはOK。)* / if(SrvComm_createSocket() !=SRVCOMM_STATUS-OK){ exit(0); }
【0354】 fprintf(stderr,"ICE::ApplicationServer:port=%d ServerIP=%s\n",SrvComm_getPort(),SrvComm_getIPAddress()); fprintf(stderr,"\n\n\n\n"); fflush(stderr);
【0355】 /* * アプリケーションを初期化するためにユーザー定義ファンクションを呼び出し * て下さい。* * このファンクションについての要件:* 1. このファンクションはクライアントからのメッセージを入力するメッセー * ジが取扱われる前に初期化する必要があるアプリケーションにおいていかなる * データ構造も初期化する。* 2. このファンクションは戻らなければならない。これはもしアプリケーショ * ンがデータベースからのメッセージを聞くそれ自身の通知(notifier)ループ * を有する場合、通知ループは新しいスレッドで呼び出さなければならない。* / if(!initializeApplication()){ exit(0); }
【0356】 /* * クライアントからの接続を受けて下さい。* (接続の試みがなされるまで、又はacceptTimeout が満了するまでのブロック ** / if(SrvComm_acceptClientConnection() !=SRVCOMM_STATUS-OK){ exit(0); } /* * 最後に我々はサーバーループを開始する。* このファンクションは全てが終了するまで戻らない。
【0357】 Code Example C-2 default_main.cc Listing(Continued) * / SrvComm_start(); }
【0358】 /** * このファンクションはサーバーがタイムアウトするときに呼び出される。* それはTRUE又はFALSE (int 1又は0)に戻る。TRUEはタイムアウト遮断が行 * われるべきことを示し、FALSE はこのタイムアウトについて何も遮断しないこ * とを示す(タイムアウトはリセットする)。* * /* / #ifdef_cplusplus extern "C"{ #endif int handleServerTimeout(){ return 1; } #ifdef_cplusplus } #endif
【0359】 Cサーバープログラムテンプレート Code Example C-3 server-temp late.c Listing /** * server-template.c* * ICE-T server template. * * / #include <stdio.h> #include <string.h> #include <sys/types.h>
【0360】 #include "SrvData.h" #include "SrvComm.h" #include "SrvMessage.h" #define false 0 #define true 1 /*これはクライアントから特定メッセージを受けるときに呼び出されるメッセー ジハンドラファンクションである。それはメッセージネーム及びメッセージデー タを含む一つのアーギュメント *(msg) を持つにすぎない。* / void handleMessage(SrvMessage *message){ /* * 入力データを逆アセンブルする* / /* SrvData *data;data=SrvMessage-getDataElement(message,0);* /
【0361】 Code Example C-3 server-template.c Listing(Continued) * アプリケーション "Logic",/ 出力データをアセンブルする,/ --データタイプの作り方についてSrvData.h を参照 -- SrvData,replyData;repl yData=create-SrvVector(); SrvVector-addElement(replyData,create-SrvString("Something"));,/ / the SrvMessage struct を作る,/ /reply=create-SrvMessage("replyMessage"); SrvMessage-addDataElement(replyData);,/ /* * メッセージを送る,/ /*SrvComm_sendMessage(reply);,/ /*これはサーバー上の遮断ハンドラの例である*/ void shutdownHandler(SrvMessage,shutdownMsg){ SrvData,shutdownTypeSStr=SrvMessage-getDataElement(shutdownMsg,0); SrvData *reasonSStr=SrvMessage-getDataElement(shutdownMsg,1);char * reasonString=SrvString-getValue(reasonSStr);
【0362】 Code Example C-3 server-template.c Listing(Continued) char *shutdownType=SrvString-getValue(shutdownTypeSStr); if(.'strcmp(shutdownType,"ICET-CLIENT-SHUTDOWN")){ fprintf(stderr,"shutdownHandler:Detected CLIENT SHUTDOWN event. Reason=%s\n",reasonString); }else if(:strcmp(shutdownType,"ICET-CLIENT-DISCONNECT")){ fprintf(stderr,"shutdownHandler:Detected CLIENT DISCONNECT event. Reason=%s\n",reasonString); }else if(!strcmp(shutdownType,"ICET-SERVER-SHUTDOWN")){ fprintf(stderr,"shutdownHandler:Detected SERVER SHUTDOWN event. Reason=%s\n",reasonString); }else if(:strcmp(shutdownType,"ICET-INTERNAL-SHUTDOWN")){ fprintf(stderr,"shutdownHandler:Detected INTERNAL SHUTDOWN event. Reason=%s\n",reasonString); }else { fprintf(stderr,"Shutdown Handler:unknown msg type(%s). Reason=%s\n", shutdownType,reasonString); } }
【0363】************************************************* * * SrvComm library properties(setSrvCommProperties)を設定し * * applicationService(initializeApplicationService)を初期化 * * するdefault-main によって要求されるファンクション * * * ************************************************* / int setSrvCommProperties(){ /*server timeoutはタイムアウト遮断手順を行う前にPEから受けるメッセージ * 間でサーバーが待つ時間である。* /SrvComm-setServerTimeout(300);/,in seconds */ /*accept timeoutはサーバーが遮断する前にクライアントからの接続を受けるの に待つ時間である。* /SrvComm-setAcceptTimeout(400);/* in seconds */ return 1; } int cerateMessageHandlers(){ {SrvComm-addMessageHandler("SampleIncomingMessage",handleMessage); SrvComm-addMessageHandler("ICET-SHUTDOWN",shutdownHandler); return 1; } int initializeApplication(){ return 1; }
【0364】 Default mainfbr C Code Example C-4 default-main.c Listing *********************************************** default-main.c このファイルは実行可能なICE−Tサーバーによって
使用されるdefault main()を実現する。このmainの構造
はICE-T SrvComライブラリを実行するために必要な要求
されるファンクションの全てを呼び出し、アプリケーシ
ョン特定コードを含めるためにアプリケーションライタ
ーに幾つかの場所を与える。これらのファンクションは
アプリケーションライターによって実現されることが要
求され、作成工程の一部としてリンクされる別ファイル
で通常実現される。
【0365】これらのファンクションは全てint values
を戻し、それらはアプリケーションの開始が継続される
べきか又は中断されるべきかを決定するために使用され
る。このようにしてアプリケーションコードは何かが悪
いときを示し(データベースに接続できないなど)この
情報をアプリケーション上に受渡し、開始が継続しない
ことを示すためのフックを持つ。全てがOKであること
を示すreturn 1(TRUE)、又はアプリケーション開始を中
断することを生じる致命的な問題を示すreturn 0(FALS
E) 。int setSrvCommProperties()
【0366】SrvCommライブラリ上のプロパティを設定
するためにこのファンクションに書き込んで下さい。こ
のファンクションはSrvComm ライブラリが作られた後で
クライアントからの接続を受ける前に呼び出される。 int createMessageHandlers() メッセージハンドラを登録するためにこのファンクショ
ンに書き込んで下さい。このファンクションはsetSrvCo
mmProperties() 後にすぐに呼び出される。 int initializeApplication()
【0367】アプリケーション特定コードを開始するた
めにこのファンクションに書き込んで下さい。接続をク
ライアントから受けた後でメッセージリーダー及びハン
ドラループを開始する前に呼び出される。 注意:このmain()routine はあなたの便宜のために与え
られるが、 Code Example C-4 default_main.c Listing(Continued) あなたはそれを使用することは要求されない。あなたは
あなた自身のmain()routine を自由に書く。但し、あな
たはSrvComm ライブラリへの呼び出しを命令するための
条件に従う:
【0368】1. Commライブラリのデータ構造を作るた
めにcreate-SrvComm("tcp") をまず呼び出して下さい。 2. Commライブラリ上にプロパティを設定し、メッセー
ジハンドラ及び他のハンドラを登録して下さい。 3. リスナーソケットを作りポート番号を出力するため
にSrvComm-CreateSockst()を呼び出して下さい。(注
意:この呼び出しをする前にstdoutに何も書かないで下
さい)。 4. アプリケーションを初期化して下さい。 5. クライアントからの接続を受けるためにSrvComm-ac
ceptClientConnection()を呼び出して下さい。(注意:
工程4及び5は交換してもよい)。 6. Commライブラリのループを開始するためにSrvComm-
Start() を最後に呼び出して下さい。このルーチンは全
てが終わるまで戻らない。
【0369】*************************************************** #include <stdio.h> #include <stdlib.h> #include <string.h> #include <sys/types.h> #include "SrvComm.h" extern int setSrvCommProperties(); extern int cerateMessageHandlers(); extern int initializeApplication();
【0370】***************************************************** * The default Main * * * * ICE-T はICE-T サーバーアプリケーションのために * * default main()routine を与える * ***************************************************** int main( intargc, char**argv, char**envp ) { char ,protocol="tcp"; create-SrvComm(protocol); /*
【0371】* 通信ライブラリ上にプロパティを設定するためにユーザー定義ファンクション を呼び出して下さい。* 次いでメッセージハンドラを作りそれらをCommライブ ラリに加えるためにユーザー定義ファンクションを呼び出して下さい。 setSrvCommPropertiesファンクションはCommライブラリプロパティが設定され る場所である。全てのプロパティはリーズナブルなデフォルトを有し、従って それらのどれも設定することを要求されない。 cerateMessageHandlers ファンクションはメッセージハンドラが加えられ他の ハンドラ(遮断ハンドラ、デフォルトメッセージハンドラなど)が登録される 場所である。
【0372】* これらの二つのファンクションについての要求:* 1. これらのファンクションはstdoutに何も書いてはいけない。なぜならばアク セス層はstdout上の最初のものがサーバーがクライアント接続に対して聞い ているポート番号であることを期待するからである。* * /if(:setSrvCommProperties()){ exit(0); } if(!cerateMessageHandlers()){ exit(0); } /*
【0373】* クライアントが接続するソケットを作って下さい。* このルーチンはアクセス層がポート番号をクライアントアプレットに受渡すht * mlコードを生成できるようにポート番号を生成(及びstdoutに印刷)すること * に対して責任がある。
【0374】 Code Example C-4 default-main.c Listing(Continued) * (プレゼンテーションエンジン)* * (NOTE:このルーチンが呼び出される前にstdoutに何も書かないで下さい。* しかし、stderrに書くことはOKです。)* / if(SrvComm-createSocket()!=SRVCOMM-STATUS-OK){ exit(0); fprintf(stderr,"ICE::ApplicationServer:port=%d ServerIP=%s\n",SreComm-getPort(),SrvComm-getIPAddress()); fprintf(stderr,"\n\n\n\n"); fflush(stderr); /*
【0375】* アプリケーションを開始するためにユーザー定義ファンクションを呼び出して * 下さい。* * このファンクションについての要求: * 1. このファンクションはクライアントからのメッセージを入力するメッセ * ージを取扱う前に初期化する必要があるアプリケーションのいかなる構 * 造も初期化する。 * 2. このファンクションは戻らなければならない。これはもしアプリケーシ * ョンがデータベースからのメッセージを聞くそれ自身の通知ループを有 * するなら、通知ループは新しいスレッドにおいて呼び出さなければなら * ない。* /
【0376】 if(!initializeApplication()){ exit(0); } /,* クライアントからの接続を受けて下さい。* (接続の試みがなされるまで、又はacceptTimeout が満了するまでブロックす * る)* /if(SrvComm-acceptClientConnection()!=SRVCOMM-STATUS-OK){ exit(0); /*
【0377】* 最後に我々はサーバーループを開始する。* このファンクションは全てが終了するまで戻らない。 SrvComm-start(); } /** このファンクションはサーバーがタイムアウトするときに呼び出される。 それはTRUE又はFALSE (int 1又は0)を戻す。TRUEはタイムアウト遮断が行わ れるべきことを示し、FALSE はこのタイムアウトで全く遮断されないことを示す (タイムアウトタイマーはリセットされる)。* /
【0378】 #ifdef--cplusplus extern "C" #endif int handleServerTimeout(){ return 1; } #ifdef--cplusplus} #endif
【0379】ICE−T例外カタログD ICE−Tクライアントプログラム例外はプレゼンテー
ションエンジンにおけるモジュールによって見つけられ
る、IcetExcelDtionHandler は例外メッセージを生成す
る。それはNetscape Navigater環境における Java コン
ソールに又は Java が開始されたターミナルに( Java
開発キットの場合)メッセージを印刷することによって
警告及びエラーを発する。
【0380】サーバー(通信ライブラリ)例外は通信層
におけるモジュールによって見つけられる。serverExce
ptionHandlerはメッセージを生成する。それはもしアプ
リケーションがブラウザから開始されるならアプリケー
ションログファイルに又はもしアプリケーションがstan
dAloneを実行するならstdoutにメッセージを印刷するこ
とによって警告及びエラーを発する。
【0381】ここにサンプルメッセージがある: ICET 警告:handled in PresentationEngine.init Attempt to register duplicate handlers.
【0382】図30は好ましい例に従ったクライアント
及びサーバー側例外の表である。本発明は特定のシステ
ム環境において好ましい例に関して記載されているが、
当業者は添付の特許請求の範囲及び精神内であれば他の
異なるハードウェア及びソフトウェア環境において変更
して実行できることを認識するだろう。
【図面の簡単な説明】
【図1】アプリケーションプログラム、オペレーティン
グシステム、スクリーンバッファ及びディスプレイモニ
タの関係を示す従来技術のコンピューターシステムの概
略的ブロック図である。
【図2】同時に実行している幾つかのアプリケーション
プログラムをスクリーンディスプレイに生成できる、図
1に示された従来技術のシステムの変形例の概略的ブロ
ック図である。
【図3】本発明のオブジェクト指向ウィンドウ管理者が
操作するコンピューターシステム(例えばパーソナルコ
ンピューターシステム)の概略的ブロック図である。
【図4】好ましい例に従ったブロック図である。
【図5】サーバー中央方策の設定及び実現を容易にする
ためにどのようにして好ましい例が Java をてこ入れす
るかを示したものである。
【図6】好ましい例に従ったアプリケーション開始と組
合される処理を示したものである。
【図7】好ましい例に従ったアプリケーションの基本的
な三つの構成要素を示したものである。
【図8】好ましい例によってサポートされたものへの存
在するクライアント−サーバーアプリケーションの移行
を示したものである。
【図9】好ましい例に従ったPE960を示すブロック
図である。
【図10】好ましい例に従った従来技術のクライアント
サーバーアーキテクチャのブロック図である。
【図11】別の例に従ったアプリケーションを示したも
のである。
【図12】別の例に従ったクライアント1200との接
触を設定するサーバー1210を示したものである。
【図13】別の例に従った疎結合されたクライアント−
サーバーアプリケーションを示したものである。
【図14】好ましい例に従ったアプリケーション143
0を開発するために必要なシステム統合タスクを示した
ものである。
【図15】好ましい例に従ったクライアントアプリケー
ションのモジュラー設計を示すブロック図である。
【図16】別の例に従ったフレームワークのブロック図
である。
【図17】別の例に従った基本的なビルディングブロッ
クを示したものである。
【図18】好ましい例に従ったフレームワークを拡張す
るために利用される工程を強調したブロック図である。
【図19】好ましい例に従ったPEオブジェクトの図で
ある。
【図20】好ましい例に従ったUIイベント及び入力メ
ッセージを取扱うためにビューによって使用されるPE
イベントハンドラ2000の図である。
【図21】好ましい例に従ったPEInfoオブジェクト21
00データを示したものである。
【図22】好ましい例に従ったモデルへの入力メッセー
ジフローを示したものである。
【図23】好ましい例に従ったモデルにUIをマップす
る入力メッセージを示したものである。
【図24】好ましい例に従ったメッセージにモデルをマ
ップする出力メッセージを示したものである。
【図25】好ましい例に従ったUIにモデルをマップす
る出力メッセージを示したものである。
【図26】好ましい例に従ったアプリケーションURL
を開始することに組合される工程を示したものである。
【図27】好ましい例に従ったアプリケーションにおけ
る抽象 Java クラス、開発のためのテンプレート、及び
実行可能な構成要素としてプレゼンテーションエンジン
の形態を記載したものである。
【図28】好ましい例に従ったサーバープログラムテン
プレートを使用して開発者が書き込まなければならない
ファンクションを記載したものである。
【図29】好ましい例に従ったサーバープロパティを示
したものである。
【図30】好ましい例に従ったクライアント及びサーバ
ー側例外の表である。
─────────────────────────────────────────────────────
【手続補正書】
【提出日】平成9年11月7日
【手続補正1】
【補正対象書類名】明細書
【補正対象項目名】発明の名称
【補正方法】変更
【補正内容】
【発明の名称】 クライアント−サーバーアプリケー
ション使用可能なシステムのためのオブジェクト指向シ
ステム、方法及び製品

Claims (21)

    【特許請求の範囲】
  1. 【請求項1】 下記(a)〜(c)を含む、分散形コン
    ピューターシステム: (a)クライアントコンピューターノードに常駐するク
    ライアントコンピューターコードセグメント; (b)クライアントコンピューターノードに結合された
    サーバーコンピューターノードに常駐するサーバーコン
    ピューターコードセグメント; (c)クライアントコンピューターコードセグメントと
    サーバーコンピューターコードセグメントの間のイベン
    ト駆動メッセージ転送を容易にするためにクライアント
    コードセグメントとサーバーコードセグメントを結合す
    るように構成された実行フレームワークコードセグメン
    ト;実行フレームワークコードセグメント、クライアン
    トコンピューターノードは下記(1)を含む: (1)クライアントコンピューターノードに常駐するユ
    ーザーインターフェース;クライアントコンピューター
    コードセグメントはユーザーインターフェースと実行フ
    レームワークコードセグメントの間で結合されたユーザ
    ー構成可能ユーザーインターフェースアダプタを含む。
  2. 【請求項2】実行フレームワークコードセグメントは交
    信プロトコル上で層をなしている請求項1記載の分散形
    コンピューターシステム。
  3. 【請求項3】 交信プロトコルが Transmission Contr
    ol Protocol/Internet Protocol(TCP/IP)を
    含む請求項2記載の分散形コンピューターシステム。
  4. 【請求項4】 クライアントコンピューターからサーバ
    ーコンピューターへの通信を容易にするウェブ接続を含
    む請求項1記載の分散形システムのためのサーバー。
  5. 【請求項5】 クライアントコンピューター及びサーバ
    ーコンピューター上の通信ライブラリによってサポート
    されるクライアントコードセグメント及びサーバーコー
    ドセグメントに相当する交信プロトコルを含む請求項1
    記載の分散形システムのためのサーバー。
  6. 【請求項6】 クライアントコードセグメントをダウン
    ロードして安全通信を開始する前にクライアントコンピ
    ューターから初期要求を認証するコードセグメントを含
    む請求項1記載の分散形システムのためのサーバー。
  7. 【請求項7】 ウェブがインターネットである請求項4
    記載の分散形システムのためのサーバー。
  8. 【請求項8】 クライアントコンピューターコードセグ
    メントとサーバーコンピューターコードセグメントの間
    のイベント駆動メッセージ転送にクライアントコードセ
    グメント及びサーバーコードセグメントに結合するよう
    に構成された実行フレームワークコードセグメントを記
    憶する工程を含み、実行フレームワークコードセグメン
    ト、クライアントコンピューターノードが下記(1)を
    含む、ネットワークによって結合されたクライアントコ
    ンピューターシステムとサーバーコンピューターシステ
    ムの間のコンピューティングを分散するための方法: (1)クライアントコンピューターノードに常駐するユ
    ーザーインターフェース;クライアントコンピューター
    コードセグメントはユーザーインターフェースと実行フ
    レームワークコードセグメントの間で結合されたユーザ
    ー構成可能ユーザーインターフェースアダプタを含む。
  9. 【請求項9】 実行フレームワークコードセグメントは
    交信プロトコル上で層をなしている請求項8記載の方
    法。
  10. 【請求項10】 交信プロトコルが Transmission Con
    trol Protocol/Internet Protocol(TCP/IP)
    を含む請求項9記載の分散形コンピューターシステム。
  11. 【請求項11】 クライアントコンピューターからサー
    バーコンピューターへの通信を容易にするウェブ接続を
    開始にする工程を含む請求項8記載の方法。
  12. 【請求項12】 クライアントコンピューターとサーバ
    ーコンピューター上で通信ライブラリによってサポート
    されるクライアントコードセグメントとサーバーコード
    セグメントに相当する交信プロトコルを利用する工程を
    含む請求項8記載の方法。
  13. 【請求項13】 クライアントコードセグメントをダウ
    ンロードして安全通信を開始する前にクライアントコン
    ピューターから初期要求を認証する工程を含む請求項8
    記載の方法。
  14. 【請求項14】 ウェブがインターネットである請求項
    11記載の方法。
  15. 【請求項15】 下記(a),(b)を含む、分散形コ
    ンピューターシステムを使用可能にするコンピューター
    読取り可能媒体で具体化されるコンピュータープログラ
    ム: (a)クライアントコンピューターシステムからサーバ
    ーコンピューターシステムへの要求に応答するためのコ
    ードセグメント; (b)下記(1)〜(3)を含む、ネットワークを介し
    てサーバーコンピューターとクライアントコンピュータ
    ーを結合するように構成された実行フレームワークコー
    ドセグメント: (1)サーバー上に常駐する多数のクライアントコンピ
    ューターコードセグメント(それぞれは結合を開始する
    ためにクライアントコンピューターにネットワーク上で
    伝送するためのものである); (2)特別な交信プロトコルを介して通信するために伝
    送されたクライアントコンピューターコードセグメント
    を利用する特別なクライアントとのネットワークを介す
    る結合の開始に反応してサーバー上で実施するサーバー
    に常駐する多数のサーバーコンピューターコードセグメ
    ント; (3)下記のものを含むクライアントコンピューターコ
    ードセグメント: (a1)クライアントコンピューターノードに常駐する
    ユーザーインターフェース; (a2)ユーザーインターフェースと実行フレームワー
    クコードセグメントの間で結合されたユーザー構成可能
    ユーザーインターフェースアダプタ。
  16. 【請求項16】 実行フレームワークコードセグメント
    が交信プロトコル上で層をなしている請求項15記載の
    分散形コンピューターシステムを使用可能にするための
    コンピューター読取り可能媒体上で具体化されるコンピ
    ュータープログラム。
  17. 【請求項17】 交信プロトコルが Transmission Con
    trol Protocol/Internet Protocol(TCP/IP)
    を含む請求項16記載の分散形コンピューターシステム
    を使用可能にするためのコンピューター読取り可能媒体
    上で具体化されるコンピュータープログラム。
  18. 【請求項18】 クライアントコンピューターからサー
    バーコンピューターへの通信を容易にするウェブ接続を
    含む請求項16記載の分散形コンピューターシステムを
    使用可能にするコンピューター読取り可能媒体で具体化
    されるコンピュータープログラム。
  19. 【請求項19】 クライアントコンピューター及びサー
    バーコンピューター上の通信ライブラリによってサポー
    トされるクライアントコードセグメント及びサーバーコ
    ードセグメントに相当する交信プロトコルを含む請求項
    15記載の分散形コンピューターシステムを使用可能に
    するコンピューター読取り可能媒体で具体化されるコン
    ピュータープログラム。
  20. 【請求項20】 クライアントコードセグメントをダウ
    ンロードして安全通信を開始する前にクライアントコン
    ピューターから初期要求を認証する請求項15記載の分
    散形コンピューターシステムを使用可能にするコンピュ
    ーター読取り可能媒体で具体化されるコンピュータープ
    ログラム。
  21. 【請求項21】 ウェブがインターネットである請求項
    15記載の分散形コンピューターシステムを使用可能に
    するコンピューター読取り可能媒体で具体化されるコン
    ピュータープログラム。
JP9211114A 1996-07-01 1997-07-01 クライアント−サーバーアプリケーション使用可能なシステムのためのオブジェクト指向システム、方法及び製品 Pending JPH10312284A (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US08/675235 1996-07-01
US08/675,235 US5768510A (en) 1996-07-01 1996-07-01 Object-oriented system, method and article of manufacture for a client-server application enabler system

Publications (1)

Publication Number Publication Date
JPH10312284A true JPH10312284A (ja) 1998-11-24

Family

ID=24709605

Family Applications (1)

Application Number Title Priority Date Filing Date
JP9211114A Pending JPH10312284A (ja) 1996-07-01 1997-07-01 クライアント−サーバーアプリケーション使用可能なシステムのためのオブジェクト指向システム、方法及び製品

Country Status (3)

Country Link
US (1) US5768510A (ja)
EP (1) EP0822488A3 (ja)
JP (1) JPH10312284A (ja)

Families Citing this family (179)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20010042089A1 (en) * 1996-01-22 2001-11-15 Tobin William J. Method and system for customizing marketing services on networks Communicating with hypertext tagging conventions
US6141666A (en) * 1996-01-22 2000-10-31 Internet Consultants Llc Method and system for customizing marketing services on networks communicating with hypertext tagging conventions
IL126909A0 (en) * 1996-05-07 1999-09-22 Webline Communications Corp Method and apparatus for coordinating internet multi-media content with telephone and audio communications
US6272555B1 (en) * 1996-07-01 2001-08-07 Sun Microsystems, Inc. Object-oriented system, method and article of manufacture for a client-server-centric interprise computing framework system
US6253282B1 (en) 1996-07-01 2001-06-26 Sun Microsystems, Inc. Object-oriented system, method and article of manufacture for a client-server with a client program cache
US6233620B1 (en) 1996-07-02 2001-05-15 Sun Microsystems, Inc. Object-oriented system, method and article of manufacture for a presentation engine in an interprise computing framework system
US6434598B1 (en) * 1996-07-01 2002-08-13 Sun Microsystems, Inc. Object-oriented system, method and article of manufacture for a client-server graphical user interface (#9) framework in an interprise computing framework system
US5999972A (en) * 1996-07-01 1999-12-07 Sun Microsystems, Inc. System, method and article of manufacture for a distributed computer system framework
US5987245A (en) 1996-07-01 1999-11-16 Sun Microsystems, Inc. Object-oriented system, method and article of manufacture (#12) for a client-server state machine framework
US5848246A (en) 1996-07-01 1998-12-08 Sun Microsystems, Inc. Object-oriented system, method and article of manufacture for a client-server session manager in an interprise computing framework system
US6038590A (en) 1996-07-01 2000-03-14 Sun Microsystems, Inc. Object-oriented system, method and article of manufacture for a client-server state machine in an interprise computing framework system
US6052711A (en) * 1996-07-01 2000-04-18 Sun Microsystems, Inc. Object-oriented system, method and article of manufacture for a client-server session web access in an interprise computing framework system.
US6266709B1 (en) 1996-07-01 2001-07-24 Sun Microsystems, Inc. Object-oriented system, method and article of manufacture for a client-server failure reporting process
US6424991B1 (en) * 1996-07-01 2002-07-23 Sun Microsystems, Inc. Object-oriented system, method and article of manufacture for a client-server communication framework
US6304893B1 (en) 1996-07-01 2001-10-16 Sun Microsystems, Inc. Object-oriented system, method and article of manufacture for a client-server event driven message framework in an interprise computing framework system
TW359800B (en) * 1996-08-19 1999-06-01 Ibm Device independent and transfer optimised interactive client-server dialog system and method for performing interactive applications therein
EP0825506B1 (en) 1996-08-20 2013-03-06 Invensys Systems, Inc. Methods and apparatus for remote process control
US5937189A (en) * 1996-11-12 1999-08-10 International Business Machines Corporation Object oriented framework mechanism for determining configuration relations
US5909540A (en) * 1996-11-22 1999-06-01 Mangosoft Corporation System and method for providing highly available data storage using globally addressable memory
US6647393B1 (en) 1996-11-22 2003-11-11 Mangosoft Corporation Dynamic directory service
US5987506A (en) * 1996-11-22 1999-11-16 Mangosoft Corporation Remote access and geographically distributed computers in a globally addressable storage environment
US6148377A (en) * 1996-11-22 2000-11-14 Mangosoft Corporation Shared memory computer networks
US7136903B1 (en) 1996-11-22 2006-11-14 Mangosoft Intellectual Property, Inc. Internet-based shared file service with native PC client access and semantics and distributed access control
US6802061B1 (en) * 1996-12-12 2004-10-05 Microsoft Corporation Automatic software downloading from a computer network
US20060195595A1 (en) * 2003-12-19 2006-08-31 Mendez Daniel J System and method for globally and securely accessing unified information in a computer network
US6131116A (en) * 1996-12-13 2000-10-10 Visto Corporation System and method for globally accessing computer services
US6708221B1 (en) * 1996-12-13 2004-03-16 Visto Corporation System and method for globally and securely accessing unified information in a computer network
US7287271B1 (en) 1997-04-08 2007-10-23 Visto Corporation System and method for enabling secure access to services in a computer network
US6185625B1 (en) 1996-12-20 2001-02-06 Intel Corporation Scaling proxy server sending to the client a graphical user interface for establishing object encoding preferences after receiving the client's request for the object
US6272523B1 (en) * 1996-12-20 2001-08-07 International Business Machines Corporation Distributed networking using logical processes
US6058423A (en) 1996-12-23 2000-05-02 International Business Machines Corporation System and method for locating resources in a distributed network
US6549952B1 (en) * 1997-01-28 2003-04-15 International Business Machines Corporation Passing environment variables from an hypertext protocol server application programming interface
US5842221A (en) * 1997-02-19 1998-11-24 Wisdomware, Inc. Dynamic frequently asked questions (FAQ) system
US6353923B1 (en) 1997-03-12 2002-03-05 Microsoft Corporation Active debugging environment for debugging mixed-language scripting code
US6275868B1 (en) * 1997-03-12 2001-08-14 Microsoft Corporation Script Engine interface for multiple languages
US5940834A (en) * 1997-03-13 1999-08-17 Mitel Corporation Automatic web page generator
US6189047B1 (en) * 1997-03-20 2001-02-13 Sun Microsystems, Inc. Apparatus and method for monitoring event queue operations with pluggable event queues
US6421733B1 (en) 1997-03-25 2002-07-16 Intel Corporation System for dynamically transcoding data transmitted between computers
US6237031B1 (en) * 1997-03-25 2001-05-22 Intel Corporation System for dynamically controlling a network proxy
US6215774B1 (en) 1997-03-25 2001-04-10 Intel Corporation System for dynamically determining effective speed of a communication link
US6311215B1 (en) 1997-03-25 2001-10-30 Intel Corporation System for dynamic determination of client communications capabilities
US6396805B2 (en) 1997-03-25 2002-05-28 Intel Corporation System for recovering from disruption of a data transfer
US6345300B1 (en) 1997-03-25 2002-02-05 Intel Corporation Method and apparatus for detecting a user-controlled parameter from a client device behind a proxy
US6345303B1 (en) 1997-03-25 2002-02-05 Intel Corporation Network proxy capable of dynamically selecting a destination device for servicing a client request
US6304904B1 (en) 1997-03-27 2001-10-16 Intel Corporation Method and apparatus for collecting page-level performance statistics from a network device
US6892226B1 (en) * 1997-03-27 2005-05-10 Intel Corporation System for delivery of dynamic content to a client device
US6742047B1 (en) 1997-03-27 2004-05-25 Intel Corporation Method and apparatus for dynamically filtering network content
US6263377B1 (en) * 1997-03-28 2001-07-17 International Business Machines Corporation Method for managing distributed applications and distributed application manager
US6067579A (en) * 1997-04-22 2000-05-23 Bull Hn Information Systems Inc. Method for reducing message translation and traffic through intermediate applications and systems in an internet application
US9098297B2 (en) * 1997-05-08 2015-08-04 Nvidia Corporation Hardware accelerator for an object-oriented programming language
US6023578A (en) * 1997-05-09 2000-02-08 International Business Macines Corporation Systems, methods and computer program products for generating an object oriented application for an object oriented environment
US5987247A (en) * 1997-05-09 1999-11-16 International Business Machines Corporation Systems, methods and computer program products for building frameworks in an object oriented environment
US6457054B1 (en) 1997-05-15 2002-09-24 Intel Corporation System for reducing user-visibility latency in network transactions
US6772200B1 (en) 1997-05-15 2004-08-03 Intel Corporation System for providing non-intrusive dynamic content to a client device
US5847957A (en) * 1997-06-16 1998-12-08 Base Ten Systems, Inc. Web access for a manufacturing execution system
US6604144B1 (en) * 1997-06-30 2003-08-05 Microsoft Corporation Data format for multimedia object storage, retrieval and transfer
US5878418A (en) * 1997-08-12 1999-03-02 Intervoice Limited Partnership Auto definition of data sets and provisioning interfaces for call automation
US5926637A (en) * 1997-08-20 1999-07-20 Bea Systems, Inc. Service interface repository code generation data
JP3544457B2 (ja) * 1997-08-22 2004-07-21 インターナショナル・ビジネス・マシーンズ・コーポレーション 電子メール又はエージェントを利用してクライアント上でguiを作成する方法及び装置、そのためのプログラムを記録した記録媒体
US6222533B1 (en) * 1997-08-25 2001-04-24 I2 Technologies, Inc. System and process having a universal adapter framework and providing a global user interface and global messaging bus
US7043537B1 (en) * 1997-09-05 2006-05-09 Cisco Technology, Inc System and method for remote device management
US6247050B1 (en) 1997-09-12 2001-06-12 Intel Corporation System for collecting and displaying performance improvement information for a computer
US6078321A (en) * 1997-09-30 2000-06-20 The United States Of America As Represented By The Secretary Of The Navy Universal client device for interconnecting and operating any two computers
US6005568A (en) * 1997-09-30 1999-12-21 The United States Of America As Represented By The Secretary Of The Navy Computer system providing platform independent universal client device
US6061721A (en) * 1997-10-06 2000-05-09 Sun Microsystems, Inc. Bean-based management system
US5933144A (en) * 1997-11-12 1999-08-03 International Business Machines Corporation Utility for providing printing support to graphical Java applications
US6788315B1 (en) * 1997-11-17 2004-09-07 Fujitsu Limited Platform independent computer network manager
US6664978B1 (en) * 1997-11-17 2003-12-16 Fujitsu Limited Client-server computer network management architecture
US6064382A (en) * 1997-11-19 2000-05-16 International Business Machines Corporation Object oriented apparatus and method for providing a graphical user interface for host-based software applications
US6016496A (en) * 1997-11-20 2000-01-18 International Business Machines Corporation Method and apparatus for an object-oriented object for retrieving information from local and remote databases
US6289395B1 (en) * 1997-11-24 2001-09-11 International Business Machines Corporation Generic Java-based event processor for scripting Java beans
US6247020B1 (en) * 1997-12-17 2001-06-12 Borland Software Corporation Development system with application browser user interface
US6295645B1 (en) * 1997-12-22 2001-09-25 Texas Instruments Incorporated Method and apparatus for providing downloadable functionality to an embedded coprocessor
US6216121B1 (en) * 1997-12-29 2001-04-10 International Business Machines Corporation Web page generation with subtemplates displaying information from an electronic post office system
US6785784B1 (en) 1997-12-30 2004-08-31 Intel Corporation Method for protective cache replacement
US6088803A (en) * 1997-12-30 2000-07-11 Intel Corporation System for virus-checking network data during download to a client device
US6101328A (en) * 1997-12-31 2000-08-08 Intel Corporation System for preventing multiple instances of the same dynamic executable module
EP1049996A4 (en) * 1998-01-30 2001-04-25 Ematrix Corp SYSTEM AND METHOD FOR CREATING AND HANDLING DYNAMIC REGISTER INFORMATION CONTAINERS
US7010536B1 (en) * 1998-01-30 2006-03-07 Pattern Intelligence, Inc. System and method for creating and manipulating information containers with dynamic registers
US6047324A (en) * 1998-02-05 2000-04-04 Merrill Lynch & Co. Inc. Scalable distributed network controller
US6484214B1 (en) * 1998-03-05 2002-11-19 Mcdonnell Douglas Helicopter Company Method for distributed object communications based on dynamically acquired and assembled software components
US6125363A (en) * 1998-03-30 2000-09-26 Buzzeo; Eugene Distributed, multi-user, multi-threaded application development method
US6161125A (en) * 1998-05-14 2000-12-12 Sun Microsystems, Inc. Generic schema for storing configuration information on a client computer
US6202206B1 (en) * 1998-05-14 2001-03-13 International Business Machines Corporation Simultaneous installation and configuration of programs and components into a network of server and client computers
US6430571B1 (en) * 1998-07-16 2002-08-06 International Business Machines Corporation Multi-frame output form that facilitates internet search and update in a hierarchical database
US6418464B1 (en) * 1998-09-25 2002-07-09 Apple Compunter, Inc. Method and apparatus for coordination of client/server processes
US6199194B1 (en) * 1998-09-25 2001-03-06 Adaptec, Inc. Method and system for programming firmware over a computer network
US6272136B1 (en) 1998-11-16 2001-08-07 Sun Microsystems, Incorporated Pseudo-interface between control and switching modules of a data packet switching and load balancing system
US6510164B1 (en) * 1998-11-16 2003-01-21 Sun Microsystems, Inc. User-level dedicated interface for IP applications in a data packet switching and load balancing system
US6424621B1 (en) 1998-11-17 2002-07-23 Sun Microsystems, Inc. Software interface between switching module and operating system of a data packet switching and load balancing system
US6272522B1 (en) 1998-11-17 2001-08-07 Sun Microsystems, Incorporated Computer data packet switching and load balancing system using a general-purpose multiprocessor architecture
EP1135723A4 (en) * 1998-11-30 2005-02-16 Siebel Systems Inc DEVELOPMENT TOOL, METHOD AND SYSTEM FOR CUSTOMER SERVICE APPLICATIONS
US6263498B1 (en) * 1998-12-03 2001-07-17 International Business Machines Corporation Method and apparatus for enabling server side distributed object modification
US6507867B1 (en) 1998-12-22 2003-01-14 International Business Machines Corporation Constructing, downloading, and accessing page bundles on a portable client having intermittent network connectivity
US6505343B1 (en) * 1998-12-31 2003-01-07 Intel Corporation Document/view application development architecture applied to ActiveX technology for web based application delivery
US20060010136A1 (en) * 1999-01-28 2006-01-12 Deangelo Michael System and method for creating and manipulating information containers with dynamic registers
US6529937B1 (en) 1999-01-29 2003-03-04 International Business Machines Corporation System and method for communicating client IP addresses to server applications
US7111231B1 (en) 1999-02-24 2006-09-19 Intellisync Corporation System and methodology for dynamic application environment employing runtime execution templates
US6526412B1 (en) * 1999-04-22 2003-02-25 International Business Machines Corporation Use of adapter key to increase performance when updating a value referenced by a data access object
US6560607B1 (en) * 1999-05-11 2003-05-06 Microsoft Corporation Client side bulk updates on the world wide web
US7089530B1 (en) 1999-05-17 2006-08-08 Invensys Systems, Inc. Process control configuration system with connection validation and configuration
WO2000070417A1 (en) 1999-05-17 2000-11-23 The Foxboro Company Process control configuration system with parameterized objects
US6754885B1 (en) 1999-05-17 2004-06-22 Invensys Systems, Inc. Methods and apparatus for controlling object appearance in a process control configuration system
US6501995B1 (en) 1999-06-30 2002-12-31 The Foxboro Company Process control system and method with improved distribution, installation and validation of components
US6788980B1 (en) 1999-06-11 2004-09-07 Invensys Systems, Inc. Methods and apparatus for control using control devices that provide a virtual machine environment and that communicate via an IP network
US7908602B2 (en) 1999-06-30 2011-03-15 Blackboard Inc. Internet-based education support system, method and medium providing security attributes in modular, extensible components
US6988138B1 (en) 1999-06-30 2006-01-17 Blackboard Inc. Internet-based education support system and methods
US6823523B1 (en) 1999-07-29 2004-11-23 International Business Machines Corporations Process and system for blocking unnecessary callbacks to empty paint methods of graphical user interface components
WO2001009690A1 (en) 1999-07-29 2001-02-08 The Foxboro Company Methods and apparatus for object-based process control
WO2001013257A1 (en) * 1999-08-17 2001-02-22 Bullant Technology Pty. Ltd. A distributed system for computer interaction
US6636242B2 (en) * 1999-08-31 2003-10-21 Accenture Llp View configurer in a presentation services patterns environment
US6640249B1 (en) * 1999-08-31 2003-10-28 Accenture Llp Presentation services patterns in a netcentric environment
US7092948B1 (en) 1999-09-09 2006-08-15 The Regents Of The University Of California Method and system of integrating information from multiple sources
US6687745B1 (en) 1999-09-14 2004-02-03 Droplet, Inc System and method for delivering a graphical user interface of remote applications over a thin bandwidth connection
US6473660B1 (en) 1999-12-03 2002-10-29 The Foxboro Company Process control system and method with automatic fault avoidance
US7702719B1 (en) * 2000-02-08 2010-04-20 International Business Machines Corporation Methods and apparatus for reducing the number of server interactions in network-based applications using a dual-MVC approach
US8397223B2 (en) * 2000-03-17 2013-03-12 Gutenberg Printing Llc Web application generator
US6363417B1 (en) * 2000-03-31 2002-03-26 Emware, Inc. Device interfaces for networking a computer and an embedded device
JP2001344105A (ja) * 2000-03-31 2001-12-14 Hitachi Software Eng Co Ltd Webアプリケーション開発方法、開発支援システム、および該方法に係るプログラムを記憶した記憶媒体
US6598036B1 (en) * 2000-04-04 2003-07-22 Ford Global Technologies, Llc Method for serving engineering rules on a network through servlet and applet
US8086697B2 (en) 2005-06-28 2011-12-27 Claria Innovations, Llc Techniques for displaying impressions in documents delivered over a computer network
US7475404B2 (en) 2000-05-18 2009-01-06 Maquis Techtrix Llc System and method for implementing click-through for browser executed software including ad proxy and proxy cookie caching
US20010049796A1 (en) * 2000-06-01 2001-12-06 Roth Mark L. Authentication-technology independent, non-programmatic method and apparatus for bootstrapping a user database from the WEB tier
US7032227B2 (en) * 2000-08-14 2006-04-18 Twin Communications Of America, Inc. Portable operating environment for information devices
US7899690B1 (en) 2000-08-18 2011-03-01 The Crawford Group, Inc. Extended web enabled business to business computer system for rental vehicle services
US7275038B1 (en) * 2000-08-18 2007-09-25 The Crawford Group, Inc. Web enabled business to business operating system for rental car services
US8600783B2 (en) 2000-08-18 2013-12-03 The Crawford Group, Inc. Business to business computer system for communicating and processing rental car reservations using web services
US6728698B2 (en) * 2000-09-14 2004-04-27 Benq Corporation Method and system for interaction between a browser engine and an application
US7225231B2 (en) * 2000-09-20 2007-05-29 Visto Corporation System and method for transmitting workspace elements across a network
US6886094B1 (en) * 2000-09-28 2005-04-26 International Business Machines Corporation Apparatus and method for detecting and handling exceptions
US6799262B1 (en) 2000-09-28 2004-09-28 International Business Machines Corporation Apparatus and method for creating instruction groups for explicity parallel architectures
WO2002027485A1 (en) * 2000-09-28 2002-04-04 Curl Corporation Integrated content language for use on the web
US6883165B1 (en) 2000-09-28 2005-04-19 International Business Machines Corporation Apparatus and method for avoiding deadlocks in a multithreaded environment
US6912647B1 (en) 2000-09-28 2005-06-28 International Business Machines Corportion Apparatus and method for creating instruction bundles in an explicitly parallel architecture
KR20020032786A (ko) * 2000-10-27 2002-05-04 이채홍 온라인 데이터 복구 서비스 방법 및 시스템
US6950850B1 (en) * 2000-10-31 2005-09-27 International Business Machines Corporation System and method for dynamic runtime partitioning of model-view-controller applications
US7051319B1 (en) * 2001-03-27 2006-05-23 Siebel Systems, Inc. Method, system, and product for upgrading software objects using inherency
US7203756B2 (en) * 2001-04-27 2007-04-10 International Business Machines Corporation Mechanism to cache references to Java RMI remote objects implementing the unreferenced interface
JP3707407B2 (ja) * 2001-08-28 2005-10-19 セイコーエプソン株式会社 パスワードを投写するプロジェクタ
KR20070064684A (ko) * 2001-11-23 2007-06-21 리서치 인 모션 리미티드 확장가능 마크업 언어 문서를 처리하는 시스템 및 방법
US8147334B2 (en) * 2003-09-04 2012-04-03 Jean-Marie Gatto Universal game server
WO2003089995A2 (en) 2002-04-15 2003-10-30 Invensys Systems, Inc. Methods and apparatus for process, factory-floor, environmental, computer aided manufacturing-based or other control system with real-time data distribution
US7421490B2 (en) * 2002-05-06 2008-09-02 Microsoft Corporation Uniquely identifying a crashed application and its environment
US7293071B2 (en) * 2002-05-27 2007-11-06 Seiko Epson Corporation Image data transmission system, process and program, image data output device and image display device
US7444302B2 (en) * 2002-06-14 2008-10-28 Ellie Mae, Inc. Online system for fulfilling loan applications from loan originators
US20040039612A1 (en) 2002-06-14 2004-02-26 Neil Fitzgerald Method and apparatus for customer direct on-line reservation of rental vehicles
US8108231B2 (en) 2002-06-14 2012-01-31 The Crawford Group, Inc. Method and apparatus for improved customer direct on-line reservation of rental vehicles
US7472089B2 (en) 2002-08-15 2008-12-30 Ellie Mae, Inc. Loan origination system interface for online loan application processing
US7143106B2 (en) * 2002-09-24 2006-11-28 International Business Machines Corporation Reclaiming resources in response to forced state transitions
US7603341B2 (en) 2002-11-05 2009-10-13 Claria Corporation Updating the content of a presentation vehicle in a computer network
AU2003290678B2 (en) 2002-11-08 2009-12-24 Arbitration Forums, Inc. A system and process for electronic subrogation, inter-organization workflow management, inter-organization transaction processing and optimized web-baser user interaction
US7117449B1 (en) * 2002-12-31 2006-10-03 Siebel Systems, Inc. Method and apparatus to present an integrated process modeler
US9754038B2 (en) * 2003-02-05 2017-09-05 Open Text Sa Ulc Individually deployable managed objects and system and method for managing the same
JP2004287160A (ja) 2003-03-24 2004-10-14 Seiko Epson Corp 画像表示システム、プロジェクタ、画像表示方法、プロジェクタ制御方法、画像表示プログラムおよびプロジェクタ制御プログラム
US7124134B2 (en) 2003-05-08 2006-10-17 Eugene Buzzeo Distributed, multi-user, multi-threaded application development system and method
WO2005017697A2 (en) * 2003-08-15 2005-02-24 Blackboard Inc. Content system and associated methods
US20050065938A1 (en) * 2003-09-18 2005-03-24 International Business Machines Corporation Object oriented framework mechanism and method for product configuration selection determination
JP2005208823A (ja) 2004-01-21 2005-08-04 Seiko Epson Corp プロジェクタのネットワークシステム
US7761923B2 (en) 2004-03-01 2010-07-20 Invensys Systems, Inc. Process control methods and apparatus for intrusion detection, protection and network hardening
US20060069753A1 (en) * 2004-06-18 2006-03-30 Limin Hu Automatic web-based client-server application program update system
US8990254B2 (en) * 2004-07-02 2015-03-24 Ellie Mae, Inc. Loan origination software system for processing mortgage loans over a distributed network
US8078602B2 (en) 2004-12-17 2011-12-13 Claria Innovations, Llc Search engine for a computer network
US8255413B2 (en) 2004-08-19 2012-08-28 Carhamm Ltd., Llc Method and apparatus for responding to request for information-personalization
US7693863B2 (en) 2004-12-20 2010-04-06 Claria Corporation Method and device for publishing cross-network user behavioral data
US8073866B2 (en) 2005-03-17 2011-12-06 Claria Innovations, Llc Method for providing content to an internet user based on the user's demonstrated content preferences
US8326659B2 (en) * 2005-04-12 2012-12-04 Blackboard Inc. Method and system for assessment within a multi-level organization
US8271309B2 (en) 2006-03-16 2012-09-18 The Crawford Group, Inc. Method and system for providing and administering online rental vehicle reservation booking services
WO2007123753A2 (en) 2006-03-30 2007-11-01 Invensys Systems, Inc. Digital data processing apparatus and methods for improving plant performance
US20070250295A1 (en) * 2006-03-30 2007-10-25 Subx, Inc. Multidimensional modeling system and related method
JP5040341B2 (ja) 2006-04-04 2012-10-03 セイコーエプソン株式会社 プロジェクタシステム
US7950027B2 (en) * 2007-06-15 2011-05-24 Microsoft Corporation Mutable application experience and user interface
US8600798B1 (en) 2007-09-21 2013-12-03 Ellie Mae, Inc. Loan screening
WO2009155483A1 (en) 2008-06-20 2009-12-23 Invensys Systems, Inc. Systems and methods for immersive interaction with actual and/or simulated facilities for process, environmental and industrial control
US8463964B2 (en) 2009-05-29 2013-06-11 Invensys Systems, Inc. Methods and apparatus for control configuration with enhanced change-tracking
US8127060B2 (en) 2009-05-29 2012-02-28 Invensys Systems, Inc Methods and apparatus for control configuration with control objects that are fieldbus protocol-aware
US9571416B2 (en) 2012-11-08 2017-02-14 Ingersoll Rand Company Server and computer interaction via local shared objects
US10417612B2 (en) * 2013-12-04 2019-09-17 Microsoft Technology Licensing, Llc Enhanced service environments with user-specific working sets
WO2018235224A1 (ja) 2017-06-22 2018-12-27 株式会社東芝 ウェブアプリケーションシステム、サーバ装置、端末装置、およびプログラム
CN113342356B (zh) * 2021-05-18 2023-03-28 浪潮软件股份有限公司 一种客户端框架运行及管理配置方法

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CA2095779A1 (en) * 1992-05-11 1993-11-12 Snorri Agnarsson User interface system for computers
US5544320A (en) * 1993-01-08 1996-08-06 Konrad; Allan M. Remote information service access system based on a client-server-service model
US5544315A (en) * 1993-05-10 1996-08-06 Communication Broadband Multimedia, Inc. Network multimedia interface
US5553242A (en) * 1993-11-03 1996-09-03 Wang Laboratories, Inc. Client/server connection sharing
US5499343A (en) * 1993-12-17 1996-03-12 Taligent, Inc. Object-oriented networking system with dynamically configurable communication links
US5548726A (en) * 1993-12-17 1996-08-20 Taligeni, Inc. System for activating new service in client server network by reconfiguring the multilayer network protocol stack dynamically within the server node
US5491800A (en) * 1993-12-20 1996-02-13 Taligent, Inc. Object-oriented remote procedure call networking system
US5560005A (en) * 1994-02-25 1996-09-24 Actamed Corp. Methods and systems for object-based relational distributed databases
US5596723A (en) * 1994-06-23 1997-01-21 Dell Usa, Lp Method and apparatus for automatically detecting the available network services in a network system
US5572643A (en) * 1995-10-19 1996-11-05 Judson; David H. Web browser with dynamic display of information objects during linking

Also Published As

Publication number Publication date
US5768510A (en) 1998-06-16
EP0822488A2 (en) 1998-02-04
EP0822488A3 (en) 2003-05-28

Similar Documents

Publication Publication Date Title
US6304893B1 (en) Object-oriented system, method and article of manufacture for a client-server event driven message framework in an interprise computing framework system
US6434598B1 (en) Object-oriented system, method and article of manufacture for a client-server graphical user interface (#9) framework in an interprise computing framework system
US6272556B1 (en) Object-oriented system, method and article of manufacture for migrating a client-server application (#5)
JPH10312284A (ja) クライアント−サーバーアプリケーション使用可能なシステムのためのオブジェクト指向システム、方法及び製品
US6052711A (en) Object-oriented system, method and article of manufacture for a client-server session web access in an interprise computing framework system.
JPH10254706A (ja) クライアント−サーバーステートマシーンフレームワークのためのオブジェクト指向システム、方法及び製品
US6424991B1 (en) Object-oriented system, method and article of manufacture for a client-server communication framework
JPH10228438A (ja) インタープライズコンピューティングフレームワークシステムにおけるクライアント−サーバーセッション管理プログラムのためのオブジェクト指向システム、方法及び製品
JPH10254702A (ja) インタープライズコンピューティングフレームワークシステムにおけるクライアント−サーバーステートマシンのためのオブジェクト指向システム、方法及び製品
US5999972A (en) System, method and article of manufacture for a distributed computer system framework
US6253282B1 (en) Object-oriented system, method and article of manufacture for a client-server with a client program cache
US6266709B1 (en) Object-oriented system, method and article of manufacture for a client-server failure reporting process
US6272555B1 (en) Object-oriented system, method and article of manufacture for a client-server-centric interprise computing framework system
US6064382A (en) Object oriented apparatus and method for providing a graphical user interface for host-based software applications
US8578333B2 (en) Method and system for client-side user interface enhancement to enable application integration and portalisation
US6233620B1 (en) Object-oriented system, method and article of manufacture for a presentation engine in an interprise computing framework system
Bodhuin et al. Using grid technologies for web-enabling legacy systems
Baclit et al. X Window System
Henriksson Java Based Picture Editing and Monitoring for Power Control Systems