JPH10240532A - クライアント−サーバー−中央のインタープライズコンピューティングフレームワークシステムのためのオブジェクト指向システム、方法及び製品 - Google Patents

クライアント−サーバー−中央のインタープライズコンピューティングフレームワークシステムのためのオブジェクト指向システム、方法及び製品

Info

Publication number
JPH10240532A
JPH10240532A JP9211128A JP21112897A JPH10240532A JP H10240532 A JPH10240532 A JP H10240532A JP 9211128 A JP9211128 A JP 9211128A JP 21112897 A JP21112897 A JP 21112897A JP H10240532 A JPH10240532 A JP H10240532A
Authority
JP
Japan
Prior art keywords
server
client
computer
application
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
JP9211128A
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 JPH10240532A publication Critical patent/JPH10240532A/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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/20Software design
    • G06F8/24Object-oriented
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/38Creation or generation of source code for implementing user interfaces

Landscapes

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

Abstract

(57)【要約】 【課題】 好適なクライアント−中央−サーバーインタ
ープライズコンピューティングフレームワークシステム
のためのオブジェクト指向システムを提供する。 【解決手段】 下記(a)〜(d)を含む、分散形シス
テムのためのサーバー: (a)クライアントコンピューター; (b)サーバーコンピューター; (c)サーバーコンピューターにクライアントコンピュ
ーターを接続するネットワーク; (d)下記(1),(2)を含む、ネットワークを介し
てサーバーコンピューターとクライアントコンピュータ
ーを結合するように構成された実行フレームワークコー
ドセグメント: (1)サーバー上に常駐する多数のクライアントコンピ
ューターコードセグメント; (2)特別な交信プロトコルを介して通信するために伝
送されたクライアントコンピューターコードセグメント
を利用する特別なクライアントとのネットワークを介す
る結合の開始に反応してサーバー上で実施するサーバー
上に常駐する多数のサーバーコンピューターコードセグ
メント。

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に連結できるようにP
E960フレームワークに与えられる。
【0092】(2)PEフレームワークテンプレート
(960)を拡張する。 図9はどのようにしてPEフレームワーク960アーキ
テクチャが好ましい例に従った2種の外部イベントを容
易にするように配置されているかを示したものである。
2種の外部イベントは実行フレームワークからのメッセ
ージイベント及びUIイベントである。フレームワーク
は Java 実現通信ライブラリ構成要素、Comm アダプタ
950を含んでいる。PEフレームワーク960はUI
アダプタ910を介してUI900にインターフェース
し、 Comm アダプタ950を介してサーバーTCP/I
P接続にインターフェースする。メディエーター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_template.cを含む。 ・ <ICE-T Installation Directory>/Templates/Cplusplus Example.mk, pe_template.java,及び server_template.cc を含む。
【0154】例えば、サーバープログラムがC++で書
かれているmyAppName と命名されたアプリケーションの
ためのアプリケーションディレクトリを作り、テンプレ
ートをそれにコピーする: % mkdir myAppName % clo<ICE-T Installation Directory>/Templates/C++/*<ICE-T Installation Directory>/Applications/myAppName/.
【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_template.javaを使用してあなた自身のプレゼンテー
ションエンジン定義を作る。 4. プレゼンテーションエンジンをユーザーインター
フェース(GUI)と統合する。 あなたの選択した Java ツールを使用して別のユーザー
インターフェースクラスを作る。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/myAppName/.
【0164】あなたが作る各プレゼンテーションエンジ
ンのために、抽象 Java クラスプレゼンテーションエン
ジンを拡張するクラスを宣言するように pe_template.j
avaを変更する: public class myPresentationEngine extends PresentationEngine {//あなたのアプリケーションのための方法 } 注意−必ずクラスとファイルに同じ名前を与えて下さ
い。例えば、もし Presentation Engineクラスが myPre
sentationEnqine と命名されるなら、ファイルはmyPres
entationEnqine.java と命名されるべきである。pe_tem
plate.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 shutdownHandlerModel (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 myPresentationEngine
【0230】サーバープログラムを用いてプレゼンテー
ションエンジンを試験するため: 1. あなたがサーバープログラムを作った後、ポート
idを得るためにそれを実行して下さい。 この例はmyServerと命名されたサーバープログラムを実
行した結果を示している。 % myServer //ICE LOG メッセージはこの例から削除された。 37526 129.146.79.147 ICE::ApplicationServer:port=37526 ServerIP=129.146.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 37526
【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 myAppSplashPage.html 2. エディタにおいてファイルを開いて下さい。 3. ページのためのタイトル及びあなたがそこにリス
トされたアプリケーションについて含めたいと思うテキ
ストを与えて下さい。
【0251】4. 各リストされたアプリケーションの
ためにアプリケーションレベルHTMLページのURI
及びネームを供給して下さい。 例えば、もしあなたがMyApplicationlと命名されたアプ
リケーションのためのHTMLファイルを作るためにap
pTemplate.htmlを使用したなら: <html>・・・ <a href="MyApplicationl.html"> MyApplicationl </a>・・・ </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 height=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 height=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 を既に持っている
なら、あなたはアプリケーション設置にそれをオーバー
ライトさせることを避けることができる。appConfigFil
e<file>option を使用して下さい。 ・ 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-fExample.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-app-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 (24)

    【特許請求の範囲】
  1. 【請求項1】 下記(a)〜(d)を含む、分散形シス
    テムのためのサーバー: (a)クライアントコンピューター; (b)サーバーコンピューター; (c)サーバーコンピューターにクライアントコンピュ
    ーターを接続するネットワーク; (d)下記(1),(2)を含む、ネットワークを介し
    てサーバーコンピューターとクライアントコンピュータ
    ーを結合するように構成された実行フレームワークコー
    ドセグメント: (1)サーバー上に常駐する多数のクライアントコンピ
    ューターコードセグメント(それぞれは結合を開始する
    ためにクライアントコンピューターにネットワーク上で
    伝送するためのものである); (2)特別な交信プロトコルを介して通信するために伝
    送されたクライアントコンピューターコードセグメント
    を利用する特別なクライアントとのネットワークを介す
    る結合の開始に反応してサーバー上で実施するサーバー
    上に常駐する多数のサーバーコンピューターコードセグ
    メント。
  2. 【請求項2】 多数のクライアントコンピューターコー
    ドセグメントを定義する多数の定義を含み、多数の定義
    のそれぞれがクライアントコンピューターによる要求に
    反応してアプリケーションに多数のクライアントコンピ
    ューターコードセグメント及び多数のサーバーコンピュ
    ーターコードセグメントを対応付ける方法を定義する請
    求項1記載の分散形システムのためのサーバー。
  3. 【請求項3】 サーバーコンピューターコードセグメン
    トは多数のサーバーコンピューターコードセグメントの
    うち対応付けされたものを実行フレームワークコードセ
    グメントに結合するために構成された通信ライブラリコ
    ードセグメントの少なくとも一つのインスタンスを含
    み、クライアントコンピューターはクライアントコンピ
    ューターに伝送された多数のクライアントコードセグメ
    ントの対応付けされたものを実行フレームワークコード
    セグメントに結合するために構成された通信ライブラリ
    コードセグメントの少なくとも一つのインスタンスを含
    む請求項1記載の分散形システムのためのサーバー。
  4. 【請求項4】 クライアントコンピューターからサーバ
    ーコンピューターへの通信を容易にするウェブ接続を含
    む請求項1記載の分散形システムのためのサーバー。
  5. 【請求項5】 クライアントコンピューター及びサーバ
    ーコンピューター上の通信ライブラリによってサポート
    されるクライアントコードセグメント及びサーバーコー
    ドセグメントに相当する交信プロトコルを含む請求項1
    記載の分散形システムのためのサーバー。
  6. 【請求項6】 クライアントコードセグメントをダウン
    ロードして安全通信を開始する前にクライアントコンピ
    ューターから初期要求を認証するコードセグメントを含
    む請求項1記載の分散形システムのためのサーバー。
  7. 【請求項7】 ウェブがインターネットである請求項4
    記載の分散形システムのためのサーバー。
  8. 【請求項8】 サーバーが全ての通信の中央制御を行う
    請求項4記載の分散形システムのためのサーバー。
  9. 【請求項9】 下記(a)及び(b)の工程を含む、ネ
    ットワークによって結合されたクライアントコンピュー
    ターシステムとサーバーコンピューターシステムの間の
    コンピューティングを分散するための方法: (a)クライアントコンピューターシステムからサーバ
    ーコンピューターシステムへの要求に応答する; (b)下記(1),(2)を含む、ネットワークを介し
    てサーバーコンピューターとクライアントコンピュータ
    ーを結合するように構成された実行フレームワークコー
    ドセグメントをダウンロードする; (1)サーバー上に常駐する多数のクライアントコンピ
    ューターコードセグメント(それぞれは結合を開始する
    ためにクライアントコンピューターにネットワーク上で
    伝送するためのものである); (2)特別な交信プロトコルを介して通信するために伝
    送されたクライアントコンピューターコードセグメント
    を利用する特別なクライアントとのネットワークを介す
    る結合の開始に反応してサーバー上で実施するサーバー
    に常駐する多数のサーバーコンピューターコードセグメ
    ント。
  10. 【請求項10】 多数のクライアントコンピューターコ
    ードセグメントを定義する多数の定義を創成する工程を
    含み、多数の定義のそれぞれがクライアントコンピュー
    ターによる要求に反応してアプリケーションに多数のク
    ライアントコンピューターコードセグメント及び多数の
    サーバーコンピューターコードセグメントを対応付ける
    方法を定義する請求項9記載のネットワークによって結
    合されたクライアントコンピューターシステムとサーバ
    ーコンピューターシステムの間のコンピューティングを
    分散するための方法。
  11. 【請求項11】 サーバーコンピューターコードセグメ
    ントが多数のサーバーコンピューターコードセグメント
    のうち対応付けされたものを実行フレームワークコード
    セグメントに結合するために構成された通信ライブラリ
    コードセグメントの少なくとも一つのインスタンスを含
    み、クライアントコンピューターがクライアントコンピ
    ューターに伝送された多数のクライアントコードセグメ
    ントのうち対応付けされたものを実行フレームワークコ
    ードセグメントに結合するために構成された通信ライブ
    ラリコードセグメントの少なくとも一つのインスタンス
    を含む請求項9記載のネットワークによって結合された
    クライアントコンピューターシステムとサーバーコンピ
    ューターシステムの間のコンピューティングを分散する
    ための方法。
  12. 【請求項12】 クライアントコンピューターからサー
    バーコンピューターへの通信を容易にするウエブ接続を
    含む請求項9記載のネットワークによって結合されたク
    ライアントコンピューターシステムとサーバーコンピュ
    ーターシステムの間のコンピューティングを分散するた
    めの方法。
  13. 【請求項13】 クライアントコンピューター及びサー
    バーコンピューター上の通信ライブラリによってサポー
    トされるクライアントコードセグメント及びサーバーコ
    ードセグメントに相当する交信プロトコルを含む請求項
    9記載のネットワークによって結合されたクライアント
    コンピューターシステムとサーバーコンピューターシス
    テムの間のコンピューティングを分散するための方法。
  14. 【請求項14】 クライアントコードセグメントをダウ
    ンロードして安全通信を開始する前にクライアントコン
    ピューターから初期要求を認証するコードセグメントを
    含む請求項9記載のネットワークによって結合されたク
    ライアントコンピューターシステムとサーバーコンピュ
    ーターシステムの間のコンピューティングを分散するた
    めの方法。
  15. 【請求項15】 ウェブがインターネットである請求項
    12記載のネットワークによって結合されたクライアン
    トコンピューターシステムとサーバーコンピューターシ
    ステムの間のコンピューティングを分散するための方
    法。
  16. 【請求項16】 サーバーが全ての通信の中央制御を行
    う請求項12記載のネットワークによって結合されたク
    ライアントコンピューターシステムとサーバーコンピュ
    ーターシステムの間のコンピューティングを分散するた
    めの方法。
  17. 【請求項17】 下記(a),(b)を含む、分散形コ
    ンピューターシステムを使用可能にするコンピューター
    読取り可能媒体で具体化されるコンピュータープログラ
    ム: (a)クライアントコンピューターシステムからサーバ
    ーコンピューターシステムへの要求に応答するためのコ
    ードセグメント; (b)下記(1)〜(2)を含む、ネットワークを介し
    てサーバーコンピューターとクライアントコンピュータ
    ーを結合するように構成された実行フレームワークコー
    ドセグメント: (1)サーバー上に常駐する多数のクライアントコンピ
    ューターコードセグメント(それぞれは結合を開始する
    ためにクライアントコンピューターにネットワーク上で
    伝送するためのものである); (2)特別な交信プロトコルを介して通信するために伝
    送されたクライアントコンピューターコードセグメント
    を利用する特別なクライアントとのネットワークを介す
    る結合の開始に反応してサーバー上で実施するサーバー
    に常駐する多数のサーバーコンピューターコードセグメ
    ント。
  18. 【請求項18】 多数のクライアントコンピューターコ
    ードセグメントを定義する多数の定義を含み、多数の定
    義のそれぞれがクライアントコンピューターによる要求
    に反応してアプリケーションに多数のクライアントコン
    ピューターコードセグメント及び多数のサーバーコンピ
    ューターコードセグメントを対応付ける方法を定義する
    請求項17記載の分散形コンピューターシステムを使用
    可能にするコンピューター読取り可能媒体で具体化され
    るコンピュータープログラム。
  19. 【請求項19】 サーバーコンピューターコードセグメ
    ントが多数のサーバーコンピューターコードセグメント
    のうち対応付けされたものを実行フレームワークコード
    セグメントに結合するために構成された通信ライブラリ
    コードセグメントの少なくとも一つのインスタンスを含
    み、クライアントコンピューターがクライアントコンピ
    ューターに伝送された多数のクライアントコードセグメ
    ントのうち対応付けされたものを実行フレームワークコ
    ードセグメントに結合するために構成された通信ライブ
    ラリコードセグメントの少なくとも一つのインスタンス
    を含む請求項17記載の分散形コンピューターシステム
    を使用可能にするコンピューター読取り可能媒体で具体
    化されるコンピュータープログラム。
  20. 【請求項20】 クライアントコンピューターからサー
    バーコンピューターへの通信を容易にするウエブ接続を
    含む請求項17記載の分散形コンピューターシステムを
    使用可能にするコンピューター読取り可能媒体で具体化
    されるコンピュータープログラム。
  21. 【請求項21】 クライアントコンピューター及びサー
    バーコンピューター上の通信ライブラリによってサポー
    トされるクライアントコードセグメント及びサーバーコ
    ードセグメントに相当する交信プロトコルを含む請求項
    17記載の分散形コンピューターシステムを使用可能に
    するコンピューター読取り可能媒体で具体化されるコン
    ピュータープログラム。
  22. 【請求項22】 クライアントコードセグメントをダウ
    ンロードして安全通信を開始する前にクライアントコン
    ピューターから初期要求を認証するコードセグメントを
    含む請求項17記載の分散形コンピューターシステムを
    使用可能にするコンピューター読取り可能媒体で具体化
    されるコンピュータープログラム。
  23. 【請求項23】 ウエブがインターネットである請求項
    20記載の分散形コンピューターシステムを使用可能に
    するコンピューター読取り可能媒体で具体化されるコン
    ピュータープログラム。
  24. 【請求項24】 サーバーが全ての通信の中央制御を行
    う請求項20記載の分散形コンピューターシステムを使
    用可能にするコンピューター読取り可能媒体で具体化さ
    れるコンピュータープログラム。
JP9211128A 1996-07-01 1997-07-01 クライアント−サーバー−中央のインタープライズコンピューティングフレームワークシステムのためのオブジェクト指向システム、方法及び製品 Pending JPH10240532A (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US08/673,946 US6272555B1 (en) 1996-07-01 1996-07-01 Object-oriented system, method and article of manufacture for a client-server-centric interprise computing framework system
US08/673946 1996-07-01

Publications (1)

Publication Number Publication Date
JPH10240532A true JPH10240532A (ja) 1998-09-11

Family

ID=24704723

Family Applications (1)

Application Number Title Priority Date Filing Date
JP9211128A Pending JPH10240532A (ja) 1996-07-01 1997-07-01 クライアント−サーバー−中央のインタープライズコンピューティングフレームワークシステムのためのオブジェクト指向システム、方法及び製品

Country Status (3)

Country Link
US (1) US6272555B1 (ja)
EP (1) EP0827073A3 (ja)
JP (1) JPH10240532A (ja)

Families Citing this family (28)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FI972718A0 (fi) * 1996-07-02 1997-06-24 More Magic Software Mms Oy Foerfaranden och arrangemang foer distribution av ett anvaendargraenssnitt
ES2235386T3 (es) * 1998-01-09 2005-07-01 Siemens Aktiengesellschaft Dispositivo y procedimiento para externalizar una parte de un progrma de logica de servicio en una red inteligente.
KR100531348B1 (ko) * 1998-12-31 2006-02-28 엘지전자 주식회사 분산멀티미디어데이터 처리를 위한 소프트웨어 프레임웍의 구조
US6658167B1 (en) * 1999-01-31 2003-12-02 Hewlett-Packard Development Company, L.P. On the fly server for modifying data characteristics for client-server network applications
US7117172B1 (en) 1999-03-11 2006-10-03 Corecard Software, Inc. Methods and systems for managing financial accounts
US6345306B1 (en) * 1999-05-05 2002-02-05 International Business Machines Corporation Packager apparatus and method for physically and logically packaging and distributing items in a distributed environment
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
US6985967B1 (en) 2000-07-20 2006-01-10 Rlx Technologies, Inc. Web server network system and method
US6711731B2 (en) * 2000-08-23 2004-03-23 Pri Automation, Inc. Web based tool control in a semiconductor fabrication facility
US20020073141A1 (en) * 2000-12-12 2002-06-13 Dewhurst Sebastian John Computational fluid dynamics software
EP1402352A4 (en) * 2001-02-22 2010-08-25 Accenture Global Services Gmbh DISTRIBUTED DEVELOPMENT ENVIRONMENT FOR BUILDING INTERNET APPLICATIONS BY DEVELOPERS AT DISCONTINUED LOCATIONS
US20020188718A1 (en) * 2001-05-04 2002-12-12 Rlx Technologies, Inc. Console information storage system and method
US20020188709A1 (en) * 2001-05-04 2002-12-12 Rlx Technologies, Inc. Console information server system and method
US20030065715A1 (en) * 2001-08-20 2003-04-03 Burdick William R. System and method of a wireless thin-client, server-centric framework
US20040059850A1 (en) * 2002-09-19 2004-03-25 Hipp Christopher G. Modular server processing card system and method
US7143106B2 (en) * 2002-09-24 2006-11-28 International Business Machines Corporation Reclaiming resources in response to forced state transitions
JP2005070835A (ja) * 2003-08-25 2005-03-17 Fujitsu Ltd テスト支援プログラムおよびテスト支援方法
US7721283B2 (en) * 2004-05-24 2010-05-18 Sap Ag Deploying a variety of containers in a Java 2 enterprise edition-based architecture
US8762981B2 (en) * 2004-05-24 2014-06-24 Sap Ag Application loading and visualization
US7562341B2 (en) * 2004-05-24 2009-07-14 Sap Ag Deploy callback system with bidirectional containers
US7735097B2 (en) * 2004-05-24 2010-06-08 Sap Ag Method and system to implement a deploy service to perform deployment services to extend and enhance functionalities of deployed applications
US7747698B2 (en) * 2004-05-25 2010-06-29 Sap Ag Transaction model for deployment operations
US7877735B2 (en) * 2004-05-25 2011-01-25 Sap Ag Application cloning
US7882502B2 (en) * 2004-05-25 2011-02-01 Sap Ag Single file update
US7441188B1 (en) 2004-08-04 2008-10-21 Sprint Communications Company L.P. Web construction framework presentation tier
US7496843B1 (en) * 2004-08-04 2009-02-24 Sprint Communications Company L.P. Web construction framework controller and model tiers
US20110185353A1 (en) * 2010-01-27 2011-07-28 Jack Matthew Mitigating Problems Arising From Incompatible Software
US9531637B2 (en) 2012-11-08 2016-12-27 Ingersoll-Rand Company System, apparatus, and methods for server and computer interaction via web cookies

Family Cites Families (344)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3946503A (en) 1974-03-20 1976-03-30 Robert R. C. Buchan Audio-visual apparatus and method of using the apparatus for obtaining computer compatible data from an individual
US4200867A (en) 1978-04-03 1980-04-29 Hill Elmer D System and method for painting images by synthetic color signal generation and control
US4798543A (en) 1983-03-31 1989-01-17 Bell & Howell Company Interactive training method and system
US4588074A (en) 1983-08-29 1986-05-13 Microsoft Corporation Holder for storing and supporting articles
US4866602A (en) 1983-11-02 1989-09-12 Microsoft Corporation Power supply for a computer peripheral device which positions a cursor on a computer display
US5125077A (en) 1983-11-02 1992-06-23 Microsoft Corporation Method of formatting data from a mouse
JPS60177888A (ja) 1984-02-22 1985-09-11 フアナツク株式会社 視覚センサ処理装置とロボツト制御装置との結合方式
US4739477A (en) 1984-08-30 1988-04-19 International Business Machines Corp. Implicit creation of a superblock data structure
US5027273A (en) 1985-04-10 1991-06-25 Microsoft Corporation Method and operating system for executing programs in a multi-mode microprocessor
US4779187A (en) 1985-04-10 1988-10-18 Microsoft Corporation Method and operating system for executing programs in a multi-mode microprocessor
US4825358A (en) 1985-04-10 1989-04-25 Microsoft Corporation Method and operating system for executing programs in a multi-mode microprocessor
US4954818A (en) 1985-10-18 1990-09-04 Hitachi, Ltd. Multi-window display control system
US4800488A (en) 1985-11-12 1989-01-24 American Telephone And Telegraph Company, At&T Bell Laboratories Method of propagating resource information in a computer network
US4682957A (en) 1986-02-24 1987-07-28 Young Gordon W Teleconferencing and teaching method and apparatus
US4897781A (en) 1987-02-13 1990-01-30 International Business Machines Corporation System and method for using cached data at a local node after re-opening a file at a remote node in a distributed networking environment
US4803643A (en) 1987-08-10 1989-02-07 Oclc Online Computer Library Center Incorporated System and method for creating memory-retained, formatted pages of text, tabulation, and graphic data
US4990907A (en) 1987-08-19 1991-02-05 Hitachi, Ltd. Method and apparatus for data transfer
US4829468A (en) 1987-09-18 1989-05-09 Hitachi, Ltd. Print control system
US4933880A (en) 1988-06-15 1990-06-12 International Business Machines Corp. Method for dynamically processing non-text components in compound documents
US5283892A (en) 1988-08-24 1994-02-01 Hitachi, Ltd. Method and apparatus for file operation
US5357605A (en) 1988-09-13 1994-10-18 Microsoft Corporation Method and system for displaying patterns using a bitmap display
US5021974A (en) 1988-09-13 1991-06-04 Microsoft Corporation Method for updating a display bitmap with a character string or the like
US4974159A (en) 1988-09-13 1990-11-27 Microsoft Corporation Method of transferring control in a multitasking computer system
US4967378A (en) 1988-09-13 1990-10-30 Microsoft Corporation Method and system for displaying a monochrome bitmap on a color display
US5125087A (en) 1988-11-07 1992-06-23 Microsoft Corporation Method of resetting sequence of access to extended memory disrupted by interrupt processing in 80286 compatible system using code segment register
US5113341A (en) 1989-02-24 1992-05-12 International Business Machines Corporation Technique for creating and expanding element marks in a structured document
US5224038A (en) 1989-04-05 1993-06-29 Xerox Corporation Token editor architecture
US5214755A (en) 1989-04-25 1993-05-25 Microsoft Corporation Document processing method and system
US5305440A (en) 1989-05-15 1994-04-19 International Business Machines Corporation File extension by clients in a distributed data processing system
US5255356A (en) 1989-05-31 1993-10-19 Microsoft Corporation Method for hiding and showing spreadsheet cells
JP2845946B2 (ja) 1989-06-14 1999-01-13 株式会社日立製作所 画像データ変換装置
US5430876A (en) 1989-06-27 1995-07-04 Digital Equipment Corporation Remote procedure callback system and method
US5257369A (en) 1990-10-22 1993-10-26 Skeen Marion D Apparatus and method for providing decoupling of data exchange details for providing high performance communication between software processes
DE69032649T2 (de) 1989-08-01 1999-05-06 Silicon Graphics Inc Mountain Dateiveränderungsmonitor für rechner-, betriebs- und dateiverwaltungssysteme
US5155842A (en) 1989-08-14 1992-10-13 Microsoft Corporation Logical event notification method and apparatus
US5265261A (en) 1989-08-14 1993-11-23 Microsoft Corporation Method and system for network communications using raw mode protocols
US5261051A (en) 1989-08-14 1993-11-09 Microsoft Corporation Method and system for open file caching in a networked computer system
US5363487A (en) 1989-08-29 1994-11-08 Microsoft Corporation Method and system for dynamic volume tracking in an installable file system
US5257370A (en) 1989-08-29 1993-10-26 Microsoft Corporation Method and system for optimizing data caching in a disk-based computer system
US5371885A (en) 1989-08-29 1994-12-06 Microsoft Corporation High performance file system
US5109433A (en) 1989-10-13 1992-04-28 Microsoft Corporation Compressing and decompressing text files
US4955066A (en) 1989-10-13 1990-09-04 Microsoft Corporation Compressing and decompressing text files
US5187468A (en) 1989-10-23 1993-02-16 Microsoft Corporation Pointing device with adjustable clamp attachable to a keyboard
JPH04502679A (ja) 1989-10-23 1992-05-14 マイクロソフト コーポレイション キーボードに取り付け可能な調節自在のクランプを備えたポインティングデバイス
US5504500A (en) 1989-10-23 1996-04-02 Microsoft Corporation User programmable orientation of cursor movement direction
US5268675A (en) 1989-10-23 1993-12-07 Microsoft Corporation Computer command and pointing device with multi-axis engagement assembly
US5146580A (en) 1989-10-25 1992-09-08 Microsoft Corporation Method and system for using expanded memory for operating system buffers and application buffers
US5138303A (en) 1989-10-31 1992-08-11 Microsoft Corporation Method and apparatus for displaying color on a computer output device using dithering techniques
US5247658A (en) 1989-10-31 1993-09-21 Microsoft Corporation Method and system for traversing linked list record based upon write-once predetermined bit value of secondary pointers
US5287514A (en) 1990-01-08 1994-02-15 Microsoft Corporation Method and system for customizing a user interface in a computer system
US5220675A (en) 1990-01-08 1993-06-15 Microsoft Corporation Method and system for customizing a user interface in an integrated environment
US5204960A (en) 1990-01-08 1993-04-20 Microsoft Corporation Incremental compiler
US5124989A (en) 1990-01-08 1992-06-23 Microsoft Corporation Method of debugging a computer program
US5191615A (en) 1990-01-17 1993-03-02 The Drummer Group Interrelational audio kinetic entertainment system
US5261101A (en) 1990-02-28 1993-11-09 Microsoft Corporation Method for calling and returning from subroutine that is invoked by either a near call or a far call
US5231577A (en) 1990-04-06 1993-07-27 Microsoft Corporation Method and system for processing formatting information in a spreadsheet
US5272628A (en) 1990-04-16 1993-12-21 Microsoft Corporation Method and system for aggregating tables having dissimilar formats
US5218697A (en) 1990-04-18 1993-06-08 Microsoft Corporation Method and system for networking computers having varying file architectures
CA2036859C (en) 1990-04-30 1994-04-05 Eric M. Hesse System and method for editing a structured document to modify emphasis characteristics
US5276793A (en) 1990-05-14 1994-01-04 International Business Machines Corporation System and method for editing a structured document to preserve the intended appearance of document elements
US5485558A (en) 1990-05-22 1996-01-16 Microsoft Corporation Method and system for displaying color on a computer output device using dithering techniques
US5497492A (en) 1990-09-04 1996-03-05 Microsoft Corporation System and method for loading an operating system through use of a fire system
CA2048306A1 (en) 1990-10-02 1992-04-03 Steven P. Miller Distributed configuration profile for computing system
US5552982A (en) 1990-10-31 1996-09-03 Microsoft Corporation Method and system for processing fields in a document processor
US5557723A (en) 1990-11-30 1996-09-17 Microsoft Corporation Method and system for customizing forms in an electronic mail system
US5133051A (en) 1990-12-13 1992-07-21 Handley George E Automatic high speed publishing system
US5297284A (en) 1991-04-09 1994-03-22 Microsoft Corporation Method and system for implementing virtual functions and virtual base classes and setting a this pointer for an object-oriented programming language
JP2741969B2 (ja) 1991-06-12 1998-04-22 富士通株式会社 メッセージベースのデータ処理装置
US5550930A (en) 1991-06-17 1996-08-27 Microsoft Corporation Method and system for training a handwriting recognizer at the time of misrecognition
CA2048039A1 (en) 1991-07-19 1993-01-20 Steven Derose Data processing system and method for generating a representation for and random access rendering of electronic documents
JP3489119B2 (ja) 1991-08-09 2004-01-19 富士ゼロックス株式会社 文書処理装置
US5195135A (en) 1991-08-12 1993-03-16 Palmer Douglas A Automatic multivariate censorship of audio-video programming by user-selectable obscuration
US5301326A (en) 1991-09-24 1994-04-05 Microsoft Corporation Method and system for controlling the execution of an application program
JP2665089B2 (ja) 1991-09-26 1997-10-22 三菱電機株式会社 分散環境下におけるコンパイル方式
US5274751A (en) 1991-10-15 1993-12-28 Microsoft Corporation System and method for printing graphic objects
US5510980A (en) 1991-11-27 1996-04-23 Microsoft Corporation Method and system for selecting and executing arithmetic functions and the like
US5542068A (en) 1991-12-10 1996-07-30 Microsoft Corporation Method and system for storing floating point numbers to reduce storage space
DE69231176T2 (de) 1991-12-23 2000-11-23 Microsoft Corp Verfahren zum Integrieren eines diskreten Unterprogramms in ein Hauptprogramm
US5481667A (en) 1992-02-13 1996-01-02 Microsoft Corporation Method and system for instructing a user of a computer system how to perform application program tasks
US5418956A (en) 1992-02-26 1995-05-23 Microsoft Corporation Method and system for avoiding selector loads
EP0559221B1 (en) 1992-03-06 1999-05-12 Microsoft Corporation Method for storing programs
CA2091074A1 (en) 1992-03-06 1993-09-07 Eric Straub Method for loading programs
US5369729A (en) 1992-03-09 1994-11-29 Microsoft Corporation Conversionless digital sound production
US5287507A (en) 1992-03-27 1994-02-15 Sun Microsystems, Inc. Method and apparatus for portable object handles that use local caches
US5432936A (en) 1992-04-09 1995-07-11 Microsoft Corporation Method for implementing pointers to members in a compiler for an object-oriented programming language
US5371891A (en) 1992-04-09 1994-12-06 Microsoft Corporation Method for object construction in a compiler for an object-oriented programming language
WO1993021605A1 (en) 1992-04-20 1993-10-28 Microsoft Corporation A system and method of transferring a bit-mapped image using raster columns
WO1993022871A1 (en) 1992-05-06 1993-11-11 Microsoft Corporation Method and system of color halftone reproduction
US5327562A (en) 1992-05-06 1994-07-05 Microsoft Corporation Method for implementing virtual function tables in a compiler for an object-oriented programming language
US5359430A (en) 1992-05-15 1994-10-25 Microsoft Corporation Block-halftoning method and system with compressed error image
JP3220560B2 (ja) 1992-05-26 2001-10-22 シャープ株式会社 機械翻訳装置
US5357603A (en) 1992-06-15 1994-10-18 Microsoft Corporation Method and system for changing a shape type while maintaining existing graphic characteristics
ES2154647T3 (es) 1992-07-01 2001-04-16 Ericsson Telefon Ab L M Metodo y sistema de especificacion de interfaz independiente de la implementacion.
US5363479A (en) 1992-07-02 1994-11-08 Microsoft Corporation System and method for rendering bezier splines
US5367617A (en) 1992-07-02 1994-11-22 Microsoft Corporation System and method of hybrid forward differencing to render Bezier splines
US5506983A (en) 1992-07-06 1996-04-09 Microsoft Corporation Method and system for transactioning of modifications to a tree structured file
EP0930566A3 (en) 1992-07-06 2006-07-05 Microsoft Corporation Method and system for composing objects
US5604850A (en) 1992-07-06 1997-02-18 Microsoft Corporation Method and system for dynamically generating computer instructions for performing a logical operation on bitmaps
US5577173A (en) 1992-07-10 1996-11-19 Microsoft Corporation System and method of printer banding
US5337258A (en) 1992-07-10 1994-08-09 Microsoft Corporation Cost metrics
US5471563A (en) 1992-07-10 1995-11-28 Microsoft Corporation System and method for automatic resolution reduction
US5467435A (en) 1992-07-10 1995-11-14 Microsoft Corporation System and method for mode switching
US5471564A (en) 1992-07-10 1995-11-28 Microsoft Corporation System and method for dynamic printer timeout
US5469533A (en) 1992-07-10 1995-11-21 Microsoft Corporation Resource-oriented printer system and method of operation
JPH06511582A (ja) 1992-07-24 1994-12-22 マイクロソフト コーポレイション メモリを割り当てそして解放するコンピュータ方法及びシステム
US5412807A (en) 1992-08-20 1995-05-02 Microsoft Corporation System and method for text searching using an n-ary search tree
US5437036A (en) 1992-09-03 1995-07-25 Microsoft Corporation Text checking application programming interface
US5287417A (en) 1992-09-10 1994-02-15 Microsoft Corporation Method and system for recognizing a graphic object's shape, line style, and fill pattern in a pen environment
US5371847A (en) 1992-09-22 1994-12-06 Microsoft Corporation Method and system for specifying the arrangement of windows on a display
US5497463A (en) 1992-09-25 1996-03-05 Bull Hn Information Systems Inc. Ally mechanism for interconnecting non-distributed computing environment (DCE) and DCE systems to operate in a network system
US5495571A (en) 1992-09-30 1996-02-27 Microsoft Corporation Method and system for performing parametric testing of a functional programming interface
US5613123A (en) 1992-09-30 1997-03-18 Microsoft Corporation Method and system for configuring and executing device drivers based on configuration requirements
US5416726A (en) 1992-10-06 1995-05-16 Microsoft Corporation Method and system for placing a computer in a reduced power state
US5414445A (en) 1992-10-07 1995-05-09 Microsoft Corporation Ergonomic pointing device
US5339432A (en) 1992-10-13 1994-08-16 Microsoft Corporation Method and system for providing user control of device driver configuration
US5432941A (en) 1992-10-13 1995-07-11 Microsoft Corporation Method and system for dynamically configuring a software system using configuration groups
US5602981A (en) 1992-10-21 1997-02-11 Microsoft Corporation Quickselect icon button on a computer display which redisplays the last view style activated by the icon button
US5423042A (en) 1992-10-23 1995-06-06 International Business Machines Corporation Remote procedure execution
US5432932A (en) 1992-10-23 1995-07-11 International Business Machines Corporation System and method for dynamically controlling remote processes from a performance monitor
US5592670A (en) 1992-11-02 1997-01-07 Microsoft Corporation Avoidance of deadlocks in a demand paged video adapter
US5369770A (en) 1992-11-02 1994-11-29 Microsoft Corporation Standardized protected-mode interrupt manager
US5596755A (en) 1992-11-03 1997-01-21 Microsoft Corporation Mechanism for using common code to handle hardware interrupts in multiple processor modes
US5432928A (en) 1992-11-10 1995-07-11 Microsoft Corporation Updating objects stored in a permanent container while preserving logical contiguity
JPH09502547A (ja) 1992-11-13 1997-03-11 マイクロソフト コーポレイション 遠隔手続き呼び出しのためのインターフェイスポインタをマーシャリングする方法及びシステム
US5434776A (en) 1992-11-13 1995-07-18 Microsoft Corporation Method and system for creating multi-lingual computer programs by dynamically loading messages
EP0669023A1 (en) 1992-11-16 1995-08-30 Microsoft Corporation Method and system for loading device drivers; method for organizing a read only memory unit to be used in a computer system operable without a storage disk
US5469532A (en) 1992-11-16 1995-11-21 Microsoft Corporation System and method for font wrapping printer data
US5471576A (en) 1992-11-16 1995-11-28 International Business Machines Corporation Audio/video synchronization for application programs
GB9224224D0 (en) 1992-11-19 1993-01-06 Int Computers Ltd Data processing system
US5510811A (en) 1992-11-25 1996-04-23 Microsoft Corporation Apparatus and method for controlling cursor movement
EP0820008A3 (en) 1992-12-01 2006-05-24 Microsoft Corporation A method and system for in-place interaction with embedded objects
US5590347A (en) 1992-12-07 1996-12-31 Microsoft Corporation Method and system for specifying alternate behavior of a software system using alternate behavior indicia
US5300946A (en) 1992-12-08 1994-04-05 Microsoft Corporation Method for outputting transparent text
US5461701A (en) 1992-12-18 1995-10-24 Microsoft Corporation System and method for peripheral data transfer
US5581669A (en) 1992-12-18 1996-12-03 Microsoft Corporation System and method for peripheral data transfer
US5426760A (en) 1992-12-18 1995-06-20 Microsoft Corporation Method and system for storing index information using a base number of bits
US5375241A (en) 1992-12-21 1994-12-20 Microsoft Corporation Method and system for dynamic-link library
US5381347A (en) 1992-12-21 1995-01-10 Microsoft Corporation Method and system for displaying images on a display device using an offscreen video memory
US5452447A (en) 1992-12-21 1995-09-19 Sun Microsystems, Inc. Method and apparatus for a caching file server
US5513315A (en) 1992-12-22 1996-04-30 Microsoft Corporation System and method for automatic testing of computer software
US5467134A (en) 1992-12-22 1995-11-14 Microsoft Corporation Method and system for compressing video data
US5455600A (en) 1992-12-23 1995-10-03 Microsoft Corporation Method and apparatus for mapping colors in an image through dithering and diffusion
US5551055A (en) 1992-12-23 1996-08-27 Taligent, Inc. System for providing locale dependent user interface for presenting control graphic which has different contents or same contents displayed in a predetermined order
US5530864A (en) 1992-12-23 1996-06-25 Taligent Command object system for an object-oriented software platform
US5434965A (en) 1992-12-23 1995-07-18 Taligent, Inc. Balloon help system
WO1994015282A1 (en) 1992-12-23 1994-07-07 Taligent, Inc. Dialog system
US5394518A (en) 1992-12-23 1995-02-28 Microsoft Corporation Luminance sensitive palette
US5604843A (en) 1992-12-23 1997-02-18 Microsoft Corporation Method and system for interfacing with a computer output device
US5390325A (en) 1992-12-23 1995-02-14 Taligent, Inc. Automated testing system
US5341464A (en) 1992-12-23 1994-08-23 Microsoft Corporation Luminance emphasized color image rendering
US5579223A (en) 1992-12-24 1996-11-26 Microsoft Corporation Method and system for incorporating modifications made to a computer program into a translated version of the computer program
US5442389A (en) 1992-12-28 1995-08-15 At&T Corp. Program server for interactive television system
US5450536A (en) 1993-01-07 1995-09-12 Microsoft Corporation Technique for automatically resizing tables
US5603030A (en) 1993-01-07 1997-02-11 Microsoft Corporation Method and system for destruction of objects using multiple destructor functions in an object-oriented computer system
US5544320A (en) 1993-01-08 1996-08-06 Konrad; Allan M. Remote information service access system based on a client-server-service model
US5394523A (en) 1993-01-22 1995-02-28 Taligent, Inc. Polymorphic graphic device
US5428718A (en) 1993-01-22 1995-06-27 Taligent, Inc. Tessellation system
US5437006A (en) 1993-01-27 1995-07-25 Microsoft Corporation Spreadsheet command/function capability from a dynamic-link library
US5557714A (en) 1993-01-29 1996-09-17 Microsoft Corporation Method and system for rotating a three-dimensional model about two orthogonal axes
US5544286A (en) 1993-01-29 1996-08-06 Microsoft Corporation Digital video data compression technique
US5530895A (en) 1993-02-25 1996-06-25 Microsoft Corporation System and method for computer interface board identification by serially comparing identification address bits and asserting complementary logic patterns for each match
US5303151A (en) 1993-02-26 1994-04-12 Microsoft Corporation Method and system for translating documents using translation handles
US5519862A (en) 1993-02-26 1996-05-21 Taligent, Inc. Concurrent processing apparatus with incremental command objects
US5442793A (en) 1993-02-26 1995-08-15 Microsoft Corporation Method and system for locating an inherited virtual function member of a derived class
US5446842A (en) 1993-02-26 1995-08-29 Taligent, Inc. Object-oriented collaboration system
US5537623A (en) 1993-03-01 1996-07-16 International Business Machines Corporation Multiple group address recognition
US5499334A (en) 1993-03-01 1996-03-12 Microsoft Corporation Method and system for displaying window configuration of inactive programs
US5475835A (en) 1993-03-02 1995-12-12 Research Design & Marketing Inc. Audio-visual inventory and play-back control system
US5455577A (en) 1993-03-12 1995-10-03 Microsoft Corporation Method and system for data compression
US5369766A (en) 1993-03-25 1994-11-29 Taligent, Inc. Object-oriented loader system with support for different load formats
US5485373A (en) 1993-03-25 1996-01-16 Taligent, Inc. Language-sensitive text searching system with modified Boyer-Moore process
CA2120461C (en) 1993-04-01 2009-09-22 Aaron R. Reynolds Common name space for long and short filenames
US5414854A (en) 1993-04-05 1995-05-09 Taligent, Inc. Object-oriental system for managing shared libraries
AU5989494A (en) 1993-04-05 1994-10-24 Taligent, Inc. Text input font system
WO1994023379A1 (en) 1993-04-05 1994-10-13 Taligent, Inc. Font selection system
US5459865A (en) 1993-04-05 1995-10-17 Taligent Inc. Runtime loader
US5528742A (en) 1993-04-09 1996-06-18 Microsoft Corporation Method and system for processing documents with embedded fonts
US5432948A (en) 1993-04-26 1995-07-11 Taligent, Inc. Object-oriented rule-based text input transliteration system
US5544315A (en) 1993-05-10 1996-08-06 Communication Broadband Multimedia, Inc. Network multimedia interface
US5596696A (en) 1993-05-10 1997-01-21 Object Technology Licensing Corp. Method and apparatus for synchronizing graphical presentations
US5452406A (en) 1993-05-14 1995-09-19 Microsoft Corporation Method and system for scalable borders that provide an appearance of depth
US5381521A (en) 1993-05-14 1995-01-10 Microsoft Corporation System and method of rendering curves
CA2121612A1 (en) * 1993-05-21 1994-11-22 Chung-Hwa Herman Rao Methods and apparatus for making and using distributed applications
US5524190A (en) 1993-06-04 1996-06-04 Taligent, Inc. Command object logging system for restoring documents
TW228631B (en) 1993-06-07 1994-08-21 Microsoft Corp Facsimile user interface and method of use
TW237588B (ja) 1993-06-07 1995-01-01 Microsoft Corp
US5495561A (en) 1993-06-21 1996-02-27 Taligent, Inc. Operating system with object-oriented printing interface
US5583560A (en) 1993-06-22 1996-12-10 Apple Computer, Inc. Method and apparatus for audio-visual interface for the selective display of listing information on a display
US5594509A (en) 1993-06-22 1997-01-14 Apple Computer, Inc. Method and apparatus for audio-visual interface for the display of multiple levels of information on a display
US5452353A (en) 1993-06-24 1995-09-19 Microsoft Corporation Canonical telephone numbers
US5325533A (en) 1993-06-28 1994-06-28 Taligent, Inc. Engineering system for modeling computer programs
US5519866A (en) 1993-06-28 1996-05-21 Taligent, Inc. Method and apparatus of incrementally linking components of a modeled computer program
US5471568A (en) 1993-06-30 1995-11-28 Taligent, Inc. Object-oriented apparatus and method for scan line conversion of graphic edges
US5467264A (en) 1993-06-30 1995-11-14 Microsoft Method and system for selectively interdependent control of devices
CA2125607A1 (en) 1993-06-30 1994-12-31 David Thielen Method and system for buffering transient data
US5550972A (en) 1993-06-30 1996-08-27 Microsoft Corporation Method and apparatus for efficient transfer of data to memory
DE69415593T2 (de) 1993-06-30 1999-05-20 Microsoft Corp Verfahren zur Überprüfung eines nachrichtengesteuerten Betriebssystems
US5490274A (en) 1993-06-30 1996-02-06 Microsoft Corporation Modified buddy system for managing disk space
US5487145A (en) 1993-07-09 1996-01-23 Taligent, Inc. Method and apparatus for compositing display items which minimizes locked drawing areas
US5519867A (en) 1993-07-19 1996-05-21 Taligent, Inc. Object-oriented multitasking system
US5404529A (en) 1993-07-19 1995-04-04 Taligent, Inc. Object-oriented interprocess communication system interface for a procedural operating system
US5379432A (en) 1993-07-19 1995-01-03 Taligent, Inc. Object-oriented interface for a procedural operating system
US5455951A (en) 1993-07-19 1995-10-03 Taligent, Inc. Method and apparatus for running an object-oriented program on a host computer with a procedural operating system
US5473777A (en) 1993-07-19 1995-12-05 Moeller; Christopher P. Wrapper for enabling an object otented application to maintain virtual memory using procedural function calls
DE69409445D1 (de) 1993-07-27 1998-05-14 Ibm Prozessüberwachung in einem Mehrfachverarbeitungsanbieter
US5471675A (en) 1993-07-27 1995-11-28 Taligent, Inc. Object oriented video framework system
US5479589A (en) 1993-08-04 1995-12-26 Taligent, Inc. Object-oriented system for selecting a graphic image on a display
US5379430A (en) 1993-08-04 1995-01-03 Taligent, Inc. Object-oriented system locator system
US5566278A (en) 1993-08-24 1996-10-15 Taligent, Inc. Object oriented printing system
CA2128828C (en) 1993-08-24 2001-01-02 David Michael Silver Multilingual standard resources
US5500929A (en) 1993-08-30 1996-03-19 Taligent, Inc. System for browsing a network resource book with tabs attached to pages
US5428744A (en) 1993-08-30 1995-06-27 Taligent, Inc. Object-oriented system for building a graphic image on a display
US5651676A (en) 1993-09-02 1997-07-29 Microsoft Corporation Method of organizing and storing simulated scenery in a flight simulation system
US5566068A (en) 1993-09-15 1996-10-15 Microsoft Corporation Method and system for locating field breaks within input data
US5446887A (en) 1993-09-17 1995-08-29 Microsoft Corporation Optimal reorganization of a B-tree
US5414526A (en) 1993-10-21 1995-05-09 Microsoft Corp. System and method for encoding facsimile data
US5455854A (en) 1993-10-26 1995-10-03 Taligent, Inc. Object-oriented telephony system
US5565886A (en) 1993-11-01 1996-10-15 Microsoft Corporation Method and system for rapidly transmitting multicolor or gray scale display data having multiple bits per pixel to a display device
US5553242A (en) 1993-11-03 1996-09-03 Wang Laboratories, Inc. Client/server connection sharing
US5485574A (en) 1993-11-04 1996-01-16 Microsoft Corporation Operating system based performance monitoring of programs
US5428722A (en) 1993-11-05 1995-06-27 Taligent, Inc. Object-oriented painter maker
US5473691A (en) 1993-11-05 1995-12-05 Microsoft Corporation System and method for computer data transmission
US5442751A (en) 1993-11-09 1995-08-15 Microsoft Corporation Method and apparatus for processing data through a register portion by portion
US5537526A (en) 1993-11-12 1996-07-16 Taugent, Inc. Method and apparatus for processing a display document utilizing a system level document framework
JP3246140B2 (ja) 1993-11-16 2002-01-15 ソニー株式会社 対物レンズ駆動装置
US5590318A (en) 1993-11-18 1996-12-31 Microsoft Corporation Method and system for tracking files pending processing
US5473362A (en) 1993-11-30 1995-12-05 Microsoft Corporation Video on demand system comprising stripped data across plural storable devices with time multiplex scheduling
US5572589A (en) 1993-12-09 1996-11-05 Microsoft Corporation Disc serialization
US5432924A (en) 1993-12-15 1995-07-11 Microsoft Corporation Method and system for selectively applying an appropriate object ownership model
US5398120A (en) 1993-12-16 1995-03-14 Microsoft Corporation Ordered dither image rendering with non-linear luminance distribution palette
US5530799A (en) 1993-12-17 1996-06-25 Taligent Inc. Rendering cache in an object oriented system
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
US5515508A (en) 1993-12-17 1996-05-07 Taligent, Inc. Client server system and method of operation including a dynamically configurable protocol stack
US5548723A (en) 1993-12-17 1996-08-20 Taligent, Inc. Object-oriented network protocol configuration system utilizing a dynamically configurable protocol stack
US5499343A (en) 1993-12-17 1996-03-12 Taligent, Inc. Object-oriented networking system with dynamically configurable communication links
US5594921A (en) 1993-12-17 1997-01-14 Object Technology Licensing Corp. Authentication of users with dynamically configurable protocol stack
US5491800A (en) 1993-12-20 1996-02-13 Taligent, Inc. Object-oriented remote procedure call networking system
US5371884A (en) 1993-12-21 1994-12-06 Taligent, Inc. Processor fault recovery system
US5379431A (en) 1993-12-21 1995-01-03 Taligent, Inc. Boot framework architecture for dynamic staged initial program load
US5566346A (en) 1993-12-21 1996-10-15 Taligent, Inc. System for constructing hardware device interface software systems independent of operating systems including capability of installing and removing interrupt handlers
US5548779A (en) 1993-12-21 1996-08-20 Taligent System for providing system services for a device to a client using stack definition and stack description of a stack having top, intermediate, and bottom service objects
AU7511794A (en) 1993-12-22 1995-07-10 Taligent, Inc. Input methods framework
US5586318A (en) 1993-12-23 1996-12-17 Microsoft Corporation Method and system for managing ownership of a released synchronization mechanism
US5504889A (en) 1993-12-28 1996-04-02 Microsoft Corporation Method and system for monitoring file attributes using bitmaps to determine group membership of files and to determine which files have been processed
US5465363A (en) 1993-12-30 1995-11-07 Orton; Debra L. Wrapper system for enabling a non-multitasking application to access shared resources in a multitasking environment
US5524200A (en) 1993-12-30 1996-06-04 Taligent, Inc. Object-oriented non-rectilinear viewing framework
US5555368A (en) 1993-12-30 1996-09-10 Taligent Object-oriented multi-tasking view framework
US5544301A (en) 1993-12-30 1996-08-06 Taligent, Inc. Object-oriented view layout system
US5557440A (en) 1994-01-05 1996-09-17 Microsoft Corporation Noise-insensitive optoencoding techniques with compensation for device variations
US5473344A (en) 1994-01-06 1995-12-05 Microsoft Corporation 3-D cursor positioning device
US5548718A (en) 1994-01-07 1996-08-20 Microsoft Corporation Method and system for determining software reliability
US5588147A (en) 1994-01-14 1996-12-24 Microsoft Corporation Replication facility
US5519855A (en) 1994-01-14 1996-05-21 Microsoft Corporation Summary catalogs
JPH07210558A (ja) 1994-01-20 1995-08-11 Fujitsu Ltd 機械翻訳装置
US5604887A (en) 1994-01-21 1997-02-18 Microsoft Corporation Method and system using dedicated location to share information between real and protected mode device drivers
CA2140164A1 (en) 1994-01-27 1995-07-28 Kenneth R. Robertson System and method for computer cursor control
US5499109A (en) 1994-02-18 1996-03-12 Microsoft Corporation System for transferring messages between input and output devices in a communication device
US5560005A (en) 1994-02-25 1996-09-24 Actamed Corp. Methods and systems for object-based relational distributed databases
US5594898A (en) 1994-03-25 1997-01-14 Microsoft Corporation Method and system for joining database tables using compact row mapping structures
US5546583A (en) 1994-04-05 1996-08-13 International Business Machines Corporation Method and system for providing a client/server interface in a programming language
US5467472A (en) 1994-04-15 1995-11-14 Microsoft Corporation Method and system for generating and maintaining property sets with unique format identifiers
US5608909A (en) 1994-04-15 1997-03-04 Microsoft Corporation Method and system for caching presentation data of a source object in a presentation cache
EP0678812A1 (en) 1994-04-20 1995-10-25 Microsoft Corporation Replication verification
US5504591A (en) 1994-04-25 1996-04-02 Microsoft Corporation System and method for compressing graphic images
US5539471A (en) 1994-05-03 1996-07-23 Microsoft Corporation System and method for inserting and recovering an add-on data signal for transmission with a video signal
US5577187A (en) 1994-05-20 1996-11-19 Microsoft Corporation Method and system for tiling windows based on previous position and size
US5541942A (en) 1994-06-14 1996-07-30 Microsoft Corporation Method and system for testing memory utilizing specific bit patterns
US5493649A (en) 1994-06-21 1996-02-20 Microsoft Corporation Detecting corruption in a computer program at execution time using a checksum
US5512921A (en) 1994-06-22 1996-04-30 Microsoft Corporation Visual display system having low energy data storage subsystem with date compression capabilities, and method for operating same
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
US5473343A (en) 1994-06-23 1995-12-05 Microsoft Corporation Method and apparatus for locating a cursor on a computer screen
US5559943A (en) 1994-06-27 1996-09-24 Microsoft Corporation Method and apparatus customizing a dual actuation setting of a computer input device switch
US5565887A (en) 1994-06-29 1996-10-15 Microsoft Corporation Method and apparatus for moving a cursor on a computer screen
US5559884A (en) 1994-06-30 1996-09-24 Microsoft Corporation Method and system for generating and auditing a signature for a computer program
US5537589A (en) 1994-06-30 1996-07-16 Microsoft Corporation Method and system for efficiently performing database table aggregation using an aggregation index
US5526515A (en) 1994-06-30 1996-06-11 Taligent, Inc. Hardware-driven clock with object-oriented interface
US5548759A (en) 1994-07-05 1996-08-20 Microsoft Corporation System for storing executable code within a resource data section of an executable file
US5572206A (en) 1994-07-06 1996-11-05 Microsoft Corporation Data compression method and system
US5517324A (en) 1994-07-15 1996-05-14 Microsoft Corporation Method and system for increasing the compatibility of a fax machine
US5586186A (en) 1994-07-15 1996-12-17 Microsoft Corporation Method and system for controlling unauthorized access to information distributed to users
US5581736A (en) 1994-07-18 1996-12-03 Microsoft Corporation Method and system for dynamically sharing RAM between virtual memory and disk cache
US5583868A (en) 1994-07-25 1996-12-10 Microsoft Corporation Method and system for combining data from multiple servers into a single continuous data stream using a switch
US5604839A (en) 1994-07-29 1997-02-18 Microsoft Corporation Method and system for improving speech recognition through front-end normalization of feature vectors
US5485460A (en) 1994-08-19 1996-01-16 Microsoft Corporation System and method for running multiple incompatible network protocol stacks
US5530794A (en) 1994-08-29 1996-06-25 Microsoft Corporation Method and system for handling text that includes paragraph delimiters of differing formats
US5574840A (en) 1994-08-29 1996-11-12 Microsoft Corporation Method and system for selecting text utilizing a plurality of text using switchable minimum granularity of selection
US5588099A (en) 1994-09-01 1996-12-24 Microsoft Corporation Method and system for automatically resizing tables
US5519818A (en) 1994-09-19 1996-05-21 Taligent, Inc. Object-oriented graphic picking system
US5553215A (en) 1994-09-21 1996-09-03 Microsoft Corporation Method and system of sharing common formulas in a spreadsheet program and of adjusting the same to conform with editing operations
US5535324A (en) 1994-09-22 1996-07-09 Microsoft Corporation Method and system for dragging and plotting new data onto an embedded graph
US5598520A (en) 1994-09-26 1997-01-28 Microsoft Corporation Methods and apparatus for hinting a font for controlling stem width as font size and resolution of output device vary
US5542078A (en) 1994-09-29 1996-07-30 Ontos, Inc. Object oriented data store integration environment for integration of object oriented databases and non-object oriented data facilities
US5602974A (en) 1994-10-05 1997-02-11 Microsoft Corporation Device independent spooling in a print architecture
US5551024A (en) 1994-10-13 1996-08-27 Microsoft Corporation System for identifying data records in a database using a data structure with linked parameters in a search range
US5604856A (en) 1994-10-13 1997-02-18 Microsoft Corporation Motion compensated noise reduction method and system for computer generated images
US5526485A (en) 1994-10-13 1996-06-11 Microsoft Corporation Just-in-time debugging system and methods under the windows 3.0 and windows 3.1 operating systems
US5838906A (en) * 1994-10-17 1998-11-17 The Regents Of The University Of California Distributed hypermedia method for automatically invoking external application providing interaction and display of embedded objects within a hypermedia document
US5586328A (en) 1994-10-21 1996-12-17 Microsoft Corporation Module dependency based incremental compiler and method
US5574920A (en) 1994-10-25 1996-11-12 Microsoft Corporation Method for controlling power down of a hard disk drive in a computer
US5590336A (en) 1994-10-25 1996-12-31 Microsoft Corporation Method and apparatus for performing overlapping service of multiple IDE peripheral devices
US5598519A (en) 1994-11-08 1997-01-28 Microsoft Corporation Method and system for direct cell formatting in a spreadsheet
US5537415A (en) 1994-11-08 1996-07-16 Microsoft Corporation Multi-channel personal messaging unit
US5600368A (en) 1994-11-09 1997-02-04 Microsoft Corporation Interactive television system and method for viewer control of multiple camera viewpoints in broadcast programming
US5613122A (en) 1994-11-14 1997-03-18 Object Technology Licensing Corp. Object-oriented operating system
US5495566A (en) 1994-11-22 1996-02-27 Microsoft Corporation Scrolling contents of a window
US5574907A (en) 1994-11-30 1996-11-12 Microsoft Corporation Two-pass defragmentation of compressed hard disk data with a single data rewrite
US5553282A (en) 1994-12-09 1996-09-03 Taligent, Inc. Software project history database and method of operation
US5561751A (en) 1994-12-13 1996-10-01 Microsoft Corporation System and method for displaying a color image using vector error diffusion
US5577224A (en) 1994-12-13 1996-11-19 Microsoft Corporation Method and system for caching data
US5630066A (en) * 1994-12-20 1997-05-13 Sun Microsystems, Inc. System and method for locating object view and platform independent object
US5530852A (en) 1994-12-20 1996-06-25 Sun Microsystems, Inc. Method for extracting profiles and topics from a first file written in a first markup language and generating files in different markup languages containing the profiles and topics for use in accessing data described by the profiles and topics
US5634122A (en) 1994-12-30 1997-05-27 International Business Machines Corporation System and method for multi-level token management for distributed file systems
US5546518A (en) 1995-01-06 1996-08-13 Microsoft Corporation System and method for composing a display frame of multiple layered graphic sprites
US5596318A (en) 1995-01-12 1997-01-21 Microsoft Corporation Method for operating a two-way messaging system to extend battery life
US5752159A (en) 1995-01-13 1998-05-12 U S West Technologies, Inc. Method for automatically collecting and delivering application event data in an interactive network
US5608853A (en) 1995-01-19 1997-03-04 Microsoft Corporation System and method for graphics scaling and localized color enhancement
US5594847A (en) 1995-01-27 1997-01-14 Microsoft Corporation System and method for selecting free form objects associated with a selection region displayed by a computer
US5822585A (en) * 1995-02-21 1998-10-13 Compuware Corporation System and method for cooperative processing using object-oriented framework
US5611060A (en) 1995-02-22 1997-03-11 Microsoft Corporation Auto-scrolling during a drag and drop operation
US5517257A (en) 1995-03-28 1996-05-14 Microsoft Corporation Video control user interface for interactive television systems and method for controlling display of a video movie
US5594227A (en) 1995-03-28 1997-01-14 Microsoft Corporation System and method for protecting unauthorized access to data contents
US5802291A (en) * 1995-03-30 1998-09-01 Sun Microsystems, Inc. System and method to control and administer distributed object servers using first class distributed objects
US5611040A (en) 1995-04-05 1997-03-11 Microsoft Corporation Method and system for activating double click applications with a single click
US5594905A (en) 1995-04-12 1997-01-14 Microsoft Corporation Exception handler and method for handling interrupts
US5594462A (en) 1995-05-05 1997-01-14 Microsoft Corporation Calibrating data transmission line spacing on a frame-scanning display device for optically transmitting data to a portable programmable device
US5585838A (en) 1995-05-05 1996-12-17 Microsoft Corporation Program time guide
US5713045A (en) * 1995-06-29 1998-01-27 Object Technology Licensing Corporation System for processing user events with input device entity associated with event producer which further links communication from event consumer to the event producer
US5826085A (en) * 1995-07-12 1998-10-20 Oracle Corporation Object oriented computer interface supporting interactive networked applications
US5682534A (en) 1995-09-12 1997-10-28 International Business Machines Corporation Transparent local RPC optimization
US5790800A (en) * 1995-10-13 1998-08-04 Digital Equipment Corporation Client application program mobilizer
US5572643A (en) * 1995-10-19 1996-11-05 Judson; David H. Web browser with dynamic display of information objects during linking
US5696966A (en) 1995-11-17 1997-12-09 Mci Communications Corp. Service order system having staged databases which perform request validation and conflict recognition
US5715453A (en) * 1996-05-31 1998-02-03 International Business Machines Corporation Web server mechanism for processing function calls for dynamic data queries in a web page
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
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
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
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
US5999972A (en) * 1996-07-01 1999-12-07 Sun Microsystems, Inc. System, method and article of manufacture for a distributed computer system framework
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.
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
US6272556B1 (en) * 1996-07-01 2001-08-07 Sun Microsystems, Inc. Object-oriented system, method and article of manufacture for migrating a client-server application (#5)
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
US5768510A (en) * 1996-07-01 1998-06-16 Sun Microsystems, Inc. Object-oriented system, method and article of manufacture for a client-server application enabler system

Also Published As

Publication number Publication date
US6272555B1 (en) 2001-08-07
EP0827073A2 (en) 1998-03-04
EP0827073A3 (en) 2004-04-14

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)
US6052711A (en) Object-oriented system, method and article of manufacture for a client-server session web access in an interprise computing framework system.
US6424991B1 (en) Object-oriented system, method and article of manufacture for a client-server communication framework
US5987245A (en) Object-oriented system, method and article of manufacture (#12) for a client-server state machine framework
US6253282B1 (en) Object-oriented system, method and article of manufacture for a client-server with a client program cache
US5999972A (en) System, method and article of manufacture for a distributed computer system framework
US6038590A (en) Object-oriented system, method and article of manufacture for a client-server state machine in an interprise computing framework system
US5768510A (en) Object-oriented system, method and article of manufacture for a client-server application enabler system
JPH10228438A (ja) インタープライズコンピューティングフレームワークシステムにおけるクライアント−サーバーセッション管理プログラムのためのオブジェクト指向システム、方法及び製品
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
US20070006121A1 (en) Development activity recipe
JP2006276939A (ja) 仮想マシンのプログラム起動方法およびクライアントサーバシステム
Bodhuin et al. Using grid technologies for web-enabling legacy systems
Henriksson Java Based Picture Editing and Monitoring for Power Control Systems