JP2000187587A - ジェネリックメインオブジェクトによって実現されるインタ―プリティブネットワ―クデ―モン - Google Patents
ジェネリックメインオブジェクトによって実現されるインタ―プリティブネットワ―クデ―モンInfo
- Publication number
- JP2000187587A JP2000187587A JP11356461A JP35646199A JP2000187587A JP 2000187587 A JP2000187587 A JP 2000187587A JP 11356461 A JP11356461 A JP 11356461A JP 35646199 A JP35646199 A JP 35646199A JP 2000187587 A JP2000187587 A JP 2000187587A
- Authority
- JP
- Japan
- Prior art keywords
- service
- main
- generic
- generic main
- file
- 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.)
- Abandoned
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/448—Execution paradigms, e.g. implementations of programming paradigms
- G06F9/4488—Object-oriented
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
- Computer And Data Communications (AREA)
Abstract
(57)【要約】
【課題】ソフトウェアドメインから独立し、ドメイン固
有のダイナミックリンクライブラリにより実行時に動的
に構築あるいは再構築することのできるメインモジュー
ルを提供する。 【解決手段】オブジェクト指向コンピュータプログラム
のメインモジュールは、ソフトウェアドメインから独立
し、ドメイン固有のダイナミックリンク・ライブラリに
よって実行時に動的に構築あるいは再構築することがで
きる。このメインモジュールは、サービスコンフィギュ
レータにより構築されるジェネリックメインである。フ
レームワークコネクタは通信構成部品および同期/非同
期管理構成部品として提供される。
有のダイナミックリンクライブラリにより実行時に動的
に構築あるいは再構築することのできるメインモジュー
ルを提供する。 【解決手段】オブジェクト指向コンピュータプログラム
のメインモジュールは、ソフトウェアドメインから独立
し、ドメイン固有のダイナミックリンク・ライブラリに
よって実行時に動的に構築あるいは再構築することがで
きる。このメインモジュールは、サービスコンフィギュ
レータにより構築されるジェネリックメインである。フ
レームワークコネクタは通信構成部品および同期/非同
期管理構成部品として提供される。
Description
【0001】
【発明の属する技術分野】本発明は実行時に動的に構築
されるジェネリック(汎用)メインコンピュータプログラ
ムモジュールに関し、特に、ネットワークコンピューテ
ィング環境においてジェネリックメインオブジェクトを
構築するためのサービス構築(configuration)パターン
を生成するネットワークデーモンに関する。
されるジェネリック(汎用)メインコンピュータプログラ
ムモジュールに関し、特に、ネットワークコンピューテ
ィング環境においてジェネリックメインオブジェクトを
構築するためのサービス構築(configuration)パターン
を生成するネットワークデーモンに関する。
【0002】
【従来の技術】本明細書中で参照文献として援用されて
いる米国特許第5,499,365号明細書に記載されているよ
うに、“オブジェクト指向コンピューティング環境”と
も言われるオブジェクト指向プログラミングシステムお
よびプロセスは、近年研究と関心の的となっている。当
業者には周知の事実であるが、オブジェクト指向プログ
ラミングシステムは多数の“オブジェクト”から構成さ
れている。オブジェクトは“フレーム”とも呼ばれるこ
とのあるデータ構造体であり、オペレーションあるいは
関数の集合は“メソッド”と呼ばれ、そのメソッドはデ
ータ構造体にアクセスすることができる。フレームはス
ロットを持ち、各スロットはその中にあるデータの属性
を含む。属性は、(整数あるいはストリングといった)
プリミティブであるか、あるいは他のオブジェクトへの
ポインタであるオブジェクト参照である。同一のデータ
構造体と共通動作を備えるオブジェクトは一つのクラス
として分類され、包括的に識別される。
いる米国特許第5,499,365号明細書に記載されているよ
うに、“オブジェクト指向コンピューティング環境”と
も言われるオブジェクト指向プログラミングシステムお
よびプロセスは、近年研究と関心の的となっている。当
業者には周知の事実であるが、オブジェクト指向プログ
ラミングシステムは多数の“オブジェクト”から構成さ
れている。オブジェクトは“フレーム”とも呼ばれるこ
とのあるデータ構造体であり、オペレーションあるいは
関数の集合は“メソッド”と呼ばれ、そのメソッドはデ
ータ構造体にアクセスすることができる。フレームはス
ロットを持ち、各スロットはその中にあるデータの属性
を含む。属性は、(整数あるいはストリングといった)
プリミティブであるか、あるいは他のオブジェクトへの
ポインタであるオブジェクト参照である。同一のデータ
構造体と共通動作を備えるオブジェクトは一つのクラス
として分類され、包括的に識別される。
【0003】定義された各オブジェクトクラスは、通常
多数のインスタンスとして表される。各インスタンス
は、オブジェクトの特定例を実現するための特定のデー
タ構造体を含む。オブジェクト指向コンピューティング
環境では、あるオブジェクトにメッセージを送り、その
オブジェクトにメソッドの一つを実行するよう要求する
ことによってデータが処理される。メッセージを受け取
ったオブジェクトはメッセージ名を実現するメソッドを
選択し、選択したメソッドを対応する名前のついたイン
スタンス上で実行し、呼び出しを行ったハイレベルルー
チンにメソッドの実行結果と共に制御を返すことによ
り、送られたメッセージに応答する。従来、クラス、オ
ブジェクト,インスタンスの関係は、“ビルドタイム”
あるいはオブジェクト指向コンピューティング環境の生
成中に確立されていた。すなわちそれらの関係は、オブ
ジェクト指向コンピューティング環境のランタイムある
いは実行の前に確立されてきた。
多数のインスタンスとして表される。各インスタンス
は、オブジェクトの特定例を実現するための特定のデー
タ構造体を含む。オブジェクト指向コンピューティング
環境では、あるオブジェクトにメッセージを送り、その
オブジェクトにメソッドの一つを実行するよう要求する
ことによってデータが処理される。メッセージを受け取
ったオブジェクトはメッセージ名を実現するメソッドを
選択し、選択したメソッドを対応する名前のついたイン
スタンス上で実行し、呼び出しを行ったハイレベルルー
チンにメソッドの実行結果と共に制御を返すことによ
り、送られたメッセージに応答する。従来、クラス、オ
ブジェクト,インスタンスの関係は、“ビルドタイム”
あるいはオブジェクト指向コンピューティング環境の生
成中に確立されていた。すなわちそれらの関係は、オブ
ジェクト指向コンピューティング環境のランタイムある
いは実行の前に確立されてきた。
【0004】上述したクラス、オブジェクト、インスタ
ンス間の関係に加えて、最初のクラスが二番目のクラス
の“親”であり、二番目のクラスが最初のクラスの
“子”であるとみなされるといった継承関係も、二つの
クラスあるいはそれ以上のクラス間において存在する。
換言すれば、最初のクラスは二番目のクラスの祖先であ
り、二番目のクラスは最初のクラスの子孫であり、例え
ば二番目のクラス(子孫)は最初のクラス(祖先)から
継承すると表現される。子クラスのデータ構造体は親ク
ラスのすべての属性を含む。
ンス間の関係に加えて、最初のクラスが二番目のクラス
の“親”であり、二番目のクラスが最初のクラスの
“子”であるとみなされるといった継承関係も、二つの
クラスあるいはそれ以上のクラス間において存在する。
換言すれば、最初のクラスは二番目のクラスの祖先であ
り、二番目のクラスは最初のクラスの子孫であり、例え
ば二番目のクラス(子孫)は最初のクラス(祖先)から
継承すると表現される。子クラスのデータ構造体は親ク
ラスのすべての属性を含む。
【0005】本明細書中にはさらに詳細な一般的背景を
記述している記事を二つ参照用に援用している:"The S
tructure of "THE" Multi programming System" (E.W.D
ijkstra著、Communications of the ACM 1968年5月11巻
No.5 pp.341-346) 及び"Monitors: Operating Systems
Structuring Concepts" (C.A.R. Hoare著、Communicati
ons of the ACM 1974年10月17巻No.10 pp.549-557)。前
者はプリミティブを使って同期をとる方法とセマフォ
(許可信号)の使い方を記述し、後者はBrinch-Hansen
のモニタの概念を、オペレーティングシステムを構築す
る方法として発展させている。特に、後者は処理を同期
させる形態、セマフォを使って実現し得る方法を記述
し、また例を図示して使い方を示している。
記述している記事を二つ参照用に援用している:"The S
tructure of "THE" Multi programming System" (E.W.D
ijkstra著、Communications of the ACM 1968年5月11巻
No.5 pp.341-346) 及び"Monitors: Operating Systems
Structuring Concepts" (C.A.R. Hoare著、Communicati
ons of the ACM 1974年10月17巻No.10 pp.549-557)。前
者はプリミティブを使って同期をとる方法とセマフォ
(許可信号)の使い方を記述し、後者はBrinch-Hansen
のモニタの概念を、オペレーティングシステムを構築す
る方法として発展させている。特に、後者は処理を同期
させる形態、セマフォを使って実現し得る方法を記述
し、また例を図示して使い方を示している。
【0006】後者に記載されているように、オペレーテ
ィングシステムの第一の目的は、そのリソースに予想外
の要求をする多くのプログラム間でコンピュータのイン
ストレーションを共有することである。したがってプロ
グラム設計者の第一の仕事は、様々な種類のリソース
(例えば主記憶装置、ドラム記憶装置、磁気テープハン
ドラ、コンソールなど)用のスケジューリングアルゴリ
ズムを使ってリソース割り当てを設計することである。
この仕事を簡単にするために、プログラマはリソースの
各クラス用に別々のスケジューラを構築しようとするで
あろう。したがって各スケジューラは、リソースを獲得
し開放しようとするプログラムによって呼び出されるプ
ロシジャや関数に加えて、かなりの量のローカル管理デ
ータで構成されることになる。このような関連データと
プロシジャの集合体は、モニタとして知られている。
ィングシステムの第一の目的は、そのリソースに予想外
の要求をする多くのプログラム間でコンピュータのイン
ストレーションを共有することである。したがってプロ
グラム設計者の第一の仕事は、様々な種類のリソース
(例えば主記憶装置、ドラム記憶装置、磁気テープハン
ドラ、コンソールなど)用のスケジューリングアルゴリ
ズムを使ってリソース割り当てを設計することである。
この仕事を簡単にするために、プログラマはリソースの
各クラス用に別々のスケジューラを構築しようとするで
あろう。したがって各スケジューラは、リソースを獲得
し開放しようとするプログラムによって呼び出されるプ
ロシジャや関数に加えて、かなりの量のローカル管理デ
ータで構成されることになる。このような関連データと
プロシジャの集合体は、モニタとして知られている。
【0007】適応通信環境 (ACE:Adaptive Communicati
on Environment)は、ワシントン大学エンジニアリング&
応用科学学校、コンピュータサイエンス学科助教授Doug
lasC. Schmidtによって開発されたオブジェクト指向型
のネットワークプログラミングシステムである。ACEは
ユーザレベルのユニットとWIN32(Windows NTおよびWin
dows 95)のOSメカニズムをタイプ固有で効率的なオブ
ジェクト指向インターフェースを介してカプセル化して
いる。
on Environment)は、ワシントン大学エンジニアリング&
応用科学学校、コンピュータサイエンス学科助教授Doug
lasC. Schmidtによって開発されたオブジェクト指向型
のネットワークプログラミングシステムである。ACEは
ユーザレベルのユニットとWIN32(Windows NTおよびWin
dows 95)のOSメカニズムをタイプ固有で効率的なオブ
ジェクト指向インターフェースを介してカプセル化して
いる。
【0008】IPCメカニズム−インターネットドメイン
及びUNIXドメインソケット,TLI、名前の付いたパイプ
(UNIXとWin 32用)とSTREAMパイプ ・イベント多重−UNIXのselect()、poll()及びWin32のW
aitForMultipleObjectsを使用 ・Solarisスレッド、POSIX Pスレッド、Win 32スレッ
ド ・明示的動的リンク機能 − 例えばUNIXのdlopen/dls
ym/dlclose及びWin32のLoadLibrary/GetProc ・メモリマップされたファイル ・システムVIPC − 共有メモリ,セマフォ、メッセー
ジキュー、 ・Sun RPC (GNU rpc++)
及びUNIXドメインソケット,TLI、名前の付いたパイプ
(UNIXとWin 32用)とSTREAMパイプ ・イベント多重−UNIXのselect()、poll()及びWin32のW
aitForMultipleObjectsを使用 ・Solarisスレッド、POSIX Pスレッド、Win 32スレッ
ド ・明示的動的リンク機能 − 例えばUNIXのdlopen/dls
ym/dlclose及びWin32のLoadLibrary/GetProc ・メモリマップされたファイル ・システムVIPC − 共有メモリ,セマフォ、メッセー
ジキュー、 ・Sun RPC (GNU rpc++)
【0009】さらに、ACEは、ローレベルのC++ラッ
パを統合し拡張するために、多数のハイレベルのクラス
カテゴリとネットワークプログラミングフレームワーク
を含んでいる。ACEのハイレベル構成部品(コンポーネ
ント)は、アプリケーションサービスで構成される並行
ネットワークデーモンの動的な構築をサポートする。AC
Eは、ATMシグナリングソフトウェア製品、PBXモニタリ
ングアプリケーション、移動体通信システム用ネットワ
ーク管理と汎用ゲートウェイ通信、及び企業内分散医療
システムを含む多くの製品に現在使用されている。ACE
に関する情報と文書は、次の汎用リソースロケータによ
り次のwww上で閲覧することができる。 http:www.cs.wustl.edu/~Schmidt/ACE-overview.html.
パを統合し拡張するために、多数のハイレベルのクラス
カテゴリとネットワークプログラミングフレームワーク
を含んでいる。ACEのハイレベル構成部品(コンポーネ
ント)は、アプリケーションサービスで構成される並行
ネットワークデーモンの動的な構築をサポートする。AC
Eは、ATMシグナリングソフトウェア製品、PBXモニタリ
ングアプリケーション、移動体通信システム用ネットワ
ーク管理と汎用ゲートウェイ通信、及び企業内分散医療
システムを含む多くの製品に現在使用されている。ACE
に関する情報と文書は、次の汎用リソースロケータによ
り次のwww上で閲覧することができる。 http:www.cs.wustl.edu/~Schmidt/ACE-overview.html.
【0010】このアプリケーションでは、以下に挙げる
短縮形を使用している。 ・スレッド − プロセス内の並列実行単位。スレッド
は、全てモニタを介して保護されている一つのオブジェ
クトの関数を呼び出すが、モニタはそれらのスレッドが
同時に動く並列アクセスを、強制逐次実行を行うことに
より同期させる。 ・同期−プリミティブ − 並行動作を相互調整するた
めのオペレーティングシステムの手段 ・セマフォ(許可信号) − 並列動作させるための同
期−プリミティブ ・ミューテックス − 並列動作のための相互排除を目
的とした特別な同期−プリミティブであり、クリティカ
ルなコード領域を含む。 ・条件キュー ― ある条件下での並列動作のためのイ
ベント待ち行列 ・ゲートロック − 各エントリ関数のためのモニタの
ミューテックスであり、オブジェクトを保護するため
に、一度に一つの並列動作だけにオブジェクトのEntry-
Routineを使うことを許可する。 ・長期スケジューリング − 条件待ち行列あるいは並
列動作のイベント待ち行列内における一つの並列動作の
長時間にわたる遅延 ・ブローカー − ディストリビュータ
短縮形を使用している。 ・スレッド − プロセス内の並列実行単位。スレッド
は、全てモニタを介して保護されている一つのオブジェ
クトの関数を呼び出すが、モニタはそれらのスレッドが
同時に動く並列アクセスを、強制逐次実行を行うことに
より同期させる。 ・同期−プリミティブ − 並行動作を相互調整するた
めのオペレーティングシステムの手段 ・セマフォ(許可信号) − 並列動作させるための同
期−プリミティブ ・ミューテックス − 並列動作のための相互排除を目
的とした特別な同期−プリミティブであり、クリティカ
ルなコード領域を含む。 ・条件キュー ― ある条件下での並列動作のためのイ
ベント待ち行列 ・ゲートロック − 各エントリ関数のためのモニタの
ミューテックスであり、オブジェクトを保護するため
に、一度に一つの並列動作だけにオブジェクトのEntry-
Routineを使うことを許可する。 ・長期スケジューリング − 条件待ち行列あるいは並
列動作のイベント待ち行列内における一つの並列動作の
長時間にわたる遅延 ・ブローカー − ディストリビュータ
【0011】さらに、この中では以下の頭字語を使用し
ている。 AFM Asynchronous Function Manager SESAM Service & Event Synchronous Asynchronous Manager PAL Programmable Area Logic API Application Programmers Interface IDL Interface Definition Language ATOMIC Asynchron Tranport Optimizing observer-pattern-like system supporting several Modes (client/server-push/pull ) for an IDL-less Communication subsystem (この中で説明されている) XDR External Data Representation I/O Input/Output IPC Inter Process Communication CSA Common Software Architecture (SeimensのAGコンピューティングシステム規約) SW Software
ている。 AFM Asynchronous Function Manager SESAM Service & Event Synchronous Asynchronous Manager PAL Programmable Area Logic API Application Programmers Interface IDL Interface Definition Language ATOMIC Asynchron Tranport Optimizing observer-pattern-like system supporting several Modes (client/server-push/pull ) for an IDL-less Communication subsystem (この中で説明されている) XDR External Data Representation I/O Input/Output IPC Inter Process Communication CSA Common Software Architecture (SeimensのAGコンピューティングシステム規約) SW Software
【0012】
【発明が解決しようとする課題】本発明は、ソフトウェ
アドメインから独立し、ドメイン固有のダイナミックリ
ンクライブラリにより実行時に動的に構築あるいは再構
築することのできるメインモジュールを提供する。
アドメインから独立し、ドメイン固有のダイナミックリ
ンクライブラリにより実行時に動的に構築あるいは再構
築することのできるメインモジュールを提供する。
【0013】
【課題を解決するための手段】この課題は本発明によれ
ば、コンピュータにおける操作のためのオブジェクト指
向コンピュータプログラムであって、ジェネリックメイ
ンと、実行時に前記ジェネリックメインを構築する構築
構成部品と、構成部品間の通信を提供するフレームワー
クコネクタと、を備えることを特徴とするオブジェクト
指向コンピュータプログラムによって解決される。
ば、コンピュータにおける操作のためのオブジェクト指
向コンピュータプログラムであって、ジェネリックメイ
ンと、実行時に前記ジェネリックメインを構築する構築
構成部品と、構成部品間の通信を提供するフレームワー
クコネクタと、を備えることを特徴とするオブジェクト
指向コンピュータプログラムによって解決される。
【0014】マイクロソフトWindows NTといった最近の
オペレーティングシステムは、動的に構築可能なカーネ
ルレベルのディバイスドライバをサポートしている。同
様に、CSA (Common Software Architecture: Siemensの
AGコンピューティングシステム規約)は、OCXフォーマッ
トでいろいろと異なるプログラム構成部品を提供する。
これらのプログラム構成部品は、動的にアプリケーショ
ンにリンクでき、またアンリンクすることができる。こ
の結果、新しい構成部品を再コンパイル及びリンクせず
に、アプリケーションを再構築することが可能になる。
オペレーティングシステムは、動的に構築可能なカーネ
ルレベルのディバイスドライバをサポートしている。同
様に、CSA (Common Software Architecture: Siemensの
AGコンピューティングシステム規約)は、OCXフォーマッ
トでいろいろと異なるプログラム構成部品を提供する。
これらのプログラム構成部品は、動的にアプリケーショ
ンにリンクでき、またアンリンクすることができる。こ
の結果、新しい構成部品を再コンパイル及びリンクせず
に、アプリケーションを再構築することが可能になる。
【0015】このことは、サービス構築パターンを使用
すれば、サービスに対しても同様なことが実現されるこ
とになる。このサービス構築パターンにより以下の要求
を満たすことができる。
すれば、サービスに対しても同様なことが実現されるこ
とになる。このサービス構築パターンにより以下の要求
を満たすことができる。
【0016】サービスの特定の種類あるいは実現方法を
設計段階の最終局面で選択できるようにする必要性。こ
れにより、設計者は特定のサービスに対する構築を気に
せずにサービスの機能性に集中することができる。サー
ビスの構築をその機能性から分離することで、サービス
構築パターンはシステムの構築ポリシーと機能メカニズ
ムを独立させてアプリケーションを改良することができ
る。
設計段階の最終局面で選択できるようにする必要性。こ
れにより、設計者は特定のサービスに対する構築を気に
せずにサービスの機能性に集中することができる。サー
ビスの構築をその機能性から分離することで、サービス
構築パターンはシステムの構築ポリシーと機能メカニズ
ムを独立させてアプリケーションを改良することができ
る。
【0017】・複数の独立して開発されたサービスを組
み合わせて完全なアプリケーションあるいはシステムを
構築する必要性。サービス構築パターンは、全てのサー
ビスが同一のインターフェースを持つことを要求する。
この結果、サービスを、大きいアプリケーションの構成
部品として簡単に結合することのできるビルディングブ
ロックとして扱うことができる。全サービスに共通のイ
ンターフェースにより、サービスがどのように構築され
ているかを“見て感じる”ことができ、このことにより
アプリケーションの開発が容易になる。
み合わせて完全なアプリケーションあるいはシステムを
構築する必要性。サービス構築パターンは、全てのサー
ビスが同一のインターフェースを持つことを要求する。
この結果、サービスを、大きいアプリケーションの構成
部品として簡単に結合することのできるビルディングブ
ロックとして扱うことができる。全サービスに共通のイ
ンターフェースにより、サービスがどのように構築され
ているかを“見て感じる”ことができ、このことにより
アプリケーションの開発が容易になる。
【0018】・実行時におけるサービスの動作を最適
化、再構築、制御する必要性。サービスの機能実現をそ
の構築から分離することで、サービスの構築パラメータ
を適宜調整することができる。例えば、ハードウェアと
オペレーティングシステム上で実行可能な並列処理に依
存して、一つ以上のサービスが別々のスレッドあるいは
プロセス上で多少なりとも効率的に実行されることにな
る。サービスを最適化するためにより多くの情報が使え
る場合、サービス構築パターンを使用すれば、アプリケ
ーションが実行時にこれらの並行動作を利用して制御さ
れることになる。
化、再構築、制御する必要性。サービスの機能実現をそ
の構築から分離することで、サービスの構築パラメータ
を適宜調整することができる。例えば、ハードウェアと
オペレーティングシステム上で実行可能な並列処理に依
存して、一つ以上のサービスが別々のスレッドあるいは
プロセス上で多少なりとも効率的に実行されることにな
る。サービスを最適化するためにより多くの情報が使え
る場合、サービス構築パターンを使用すれば、アプリケ
ーションが実行時にこれらの並行動作を利用して制御さ
れることになる。
【0019】
【発明の実施の形態】図1は本発明によるgeneric main
( )10を示している。generic main 10はサービス
コンフィギュレータ12、main ( )構成部品14、(本
明細書中で参照用に援用され、1996年7月3日出願の米国
特許出願第08/676,859号明細書に詳細が記載されてい
る)ATOMIC構成部品16、(本明細書中で参照用に援用
され、1996年7月3日出願の米国特許出願第08/675,616号
明細書に詳細が記載されている)SESAM構成部品18,
及びフレームワークコネクタ構成部品20を含む。
( )10を示している。generic main 10はサービス
コンフィギュレータ12、main ( )構成部品14、(本
明細書中で参照用に援用され、1996年7月3日出願の米国
特許出願第08/676,859号明細書に詳細が記載されてい
る)ATOMIC構成部品16、(本明細書中で参照用に援用
され、1996年7月3日出願の米国特許出願第08/675,616号
明細書に詳細が記載されている)SESAM構成部品18,
及びフレームワークコネクタ構成部品20を含む。
【0020】また、図1はgeneric main( )10のサー
ビスコンフィギュレータ構成部品12の拡大図も示して
いる。サービスコンフィギュレータは、DLL(ダイナミ
ックリンクライブラリ)をgeneric main ( )10に動的
にリンクする。サービスコンフィギュレータ12内でブ
ロックとして示されているオブジェクトが、点線で示さ
れているメソッド起動によりリンクされる。ネットワー
ク22はサービスディスパッチャ24を介してサービス
コンフィギュレータ12と通信を行い、サービスオブジ
ェクト・リモートコントロール26はサービスマネジャ
28を介して、サービスコンフィギュレータ12の外か
ら通信を行う。スクリプティングトークン30は単独オ
ブジェクト(singleton objects)であるサービスオブジ
ェクトを定義する。スクリプトを生成すると、実行可能
サービス構築ファイル32に格納される。図中の実行可
能サービス構築ファイルには、メソッド、static、dyna
mic(二回)、さらにremoveが示されている。図示され
たサービスコンフィギュレータ内のメソッドは次のもの
を含む:サービスディスパッチャ24とサービスマネジ
ャ28間の"register service"と"handle service",サ
ービスコンフィギュレータ25からサービスレポジトリ
27への"insert"、サービスレポジトリ27からサービ
スマネジャ28への"info list"、サービスコンフィギ
ュレータ25から実行可能サービス構築ファイル32へ
の"read"、サービスコンフィギュレータ25からメモリ
内DLL38への"activate"と"remove"、サービスコンフ
ィギュレータ25からサービスオブジェクト34への"c
reate"、及びDLL38とスクリプティングトークン30
間の"handle service"と"register service"。
ビスコンフィギュレータ構成部品12の拡大図も示して
いる。サービスコンフィギュレータは、DLL(ダイナミ
ックリンクライブラリ)をgeneric main ( )10に動的
にリンクする。サービスコンフィギュレータ12内でブ
ロックとして示されているオブジェクトが、点線で示さ
れているメソッド起動によりリンクされる。ネットワー
ク22はサービスディスパッチャ24を介してサービス
コンフィギュレータ12と通信を行い、サービスオブジ
ェクト・リモートコントロール26はサービスマネジャ
28を介して、サービスコンフィギュレータ12の外か
ら通信を行う。スクリプティングトークン30は単独オ
ブジェクト(singleton objects)であるサービスオブジ
ェクトを定義する。スクリプトを生成すると、実行可能
サービス構築ファイル32に格納される。図中の実行可
能サービス構築ファイルには、メソッド、static、dyna
mic(二回)、さらにremoveが示されている。図示され
たサービスコンフィギュレータ内のメソッドは次のもの
を含む:サービスディスパッチャ24とサービスマネジ
ャ28間の"register service"と"handle service",サ
ービスコンフィギュレータ25からサービスレポジトリ
27への"insert"、サービスレポジトリ27からサービ
スマネジャ28への"info list"、サービスコンフィギ
ュレータ25から実行可能サービス構築ファイル32へ
の"read"、サービスコンフィギュレータ25からメモリ
内DLL38への"activate"と"remove"、サービスコンフ
ィギュレータ25からサービスオブジェクト34への"c
reate"、及びDLL38とスクリプティングトークン30
間の"handle service"と"register service"。
【0021】36として示されるように、実行時にDLL
を実行可能generic mainに読み込むサービスオブジェク
ト34が生成される。38はメモリ内DLLの内部の例を
示している。この例では、DLLに配置フックを提供し、
構成部品オブジェクトを生成するためにDLLを起動するi
nit関数を使用し、生成した構成部品ブジェクトを削除
するためにfini関数を使用し、最終的にDLLをアンリン
クするプログラム記述が含まれている。
を実行可能generic mainに読み込むサービスオブジェク
ト34が生成される。38はメモリ内DLLの内部の例を
示している。この例では、DLLに配置フックを提供し、
構成部品オブジェクトを生成するためにDLLを起動するi
nit関数を使用し、生成した構成部品ブジェクトを削除
するためにfini関数を使用し、最終的にDLLをアンリン
クするプログラム記述が含まれている。
【0022】サービスコンフィギュレータ12とジェネ
リックメイン10間は、図示してあるようにリンク40
により接続される。最初にopen関数が起動され、次にru
n eventループが呼び出される。
リックメイン10間は、図示してあるようにリンク40
により接続される。最初にopen関数が起動され、次にru
n eventループが呼び出される。
【0023】本発明はこのようにサービス構築パターン
に基づいている。サービス構築パターンの利点は以下の
とおりである。
に基づいている。サービス構築パターンの利点は以下の
とおりである。
【0024】・集中型管理:サービス構築パターンは一
つ以上のサービスを単一の管理ユニットに統合する。こ
れによりファイルのオープンやクローズといったサービ
スに共通の初期化や終了動作が自動的に行われるので開
発が容易になる。また、初期化、一時停止、再開、終了
などの同一の構築オペレーションセットを使用すること
によりネットワーク管理を集中化することができ、また
アプリケーション構成部品に問い合わせをすることがで
きる。
つ以上のサービスを単一の管理ユニットに統合する。こ
れによりファイルのオープンやクローズといったサービ
スに共通の初期化や終了動作が自動的に行われるので開
発が容易になる。また、初期化、一時停止、再開、終了
などの同一の構築オペレーションセットを使用すること
によりネットワーク管理を集中化することができ、また
アプリケーション構成部品に問い合わせをすることがで
きる。
【0025】・モジュール化と再使用性の促進:サービ
ス構築パターンはサービスの機能実現と構築を分離する
のに役立ち、モジュール化と再使用性を高める。全ての
サービスは、サービスを構築し再使用を促進するための
共通インターフェースを持つ。
ス構築パターンはサービスの機能実現と構築を分離する
のに役立ち、モジュール化と再使用性を高める。全ての
サービスは、サービスを構築し再使用を促進するための
共通インターフェースを持つ。
【0026】・構築ダイナミズムの促進:サービス構築
パターンで、既存のコードを修正、再コンパイル、再リ
ンクせずに構成部品を動的に再構築することができる。
また、周辺に存在している他の構成部品に影響を与えず
に、構成部品を再構築することができる。
パターンで、既存のコードを修正、再コンパイル、再リ
ンクせずに構成部品を動的に再構築することができる。
また、周辺に存在している他の構成部品に影響を与えず
に、構成部品を再構築することができる。
【0027】・調整と最適化の機会の増加:サービス構
築パターンにより、開発者に対する構築オプションが増
加する。サービスの機能性は、サービスを起動するため
に使われるジェネリックメインである実行エージェント
とは分離される。開発者は、クライアントの要求を満た
すために、その要求に応じてデーモンへの並行レベルを
調整することができる。オプションの例としては、クラ
イアント要求の到着時あるいは生成時のスレッドあるい
はプロセスの生成が挙げられる。
築パターンにより、開発者に対する構築オプションが増
加する。サービスの機能性は、サービスを起動するため
に使われるジェネリックメインである実行エージェント
とは分離される。開発者は、クライアントの要求を満た
すために、その要求に応じてデーモンへの並行レベルを
調整することができる。オプションの例としては、クラ
イアント要求の到着時あるいは生成時のスレッドあるい
はプロセスの生成が挙げられる。
【0028】・グローバルデータの使用の抑制による実
行可能ファイルのセキュリティの促進:ユーザは、初期
化と終了フックを持つ構成部品においてのみ、機能をジ
ェネリックメインに付加することができる。
行可能ファイルのセキュリティの促進:ユーザは、初期
化と終了フックを持つ構成部品においてのみ、機能をジ
ェネリックメインに付加することができる。
【0029】図2は、基本的なイベント通信メカニズム
あるいはATOMICからのgeneric main( )の継承方法を示
す図である。DLL (ダイナミック・リンクライブラリ)と
してディスクから読み込まれたDLL構成部品を含む実行
可能テンプレートが図示されている。アプリケーション
構成部品42上には、図1で説明した関数suspend, rem
ove, init, info, finiを具備したサービスオブジェク
トを含むボックスが図示されている。アプリケーション
オブジェクトはサービスオブジェクトから派生するアプ
リケーション50も図示されている。さらに、クラス5
4として識別されたオブジェクト中の二つはコネクタブ
ル(接続可能)56とリモート58であって、図示され
たリンクを介して外部と接続されている。コネクタブル
リンク56は供給側であり、リモートリンク58は消費
側である。これらのリンクの接続を示すために雌雄のコ
ネクタがリンクの端に表示されている。アプリケーショ
ン構成部品42は、ASCIIファイルである実行可能サー
ビス構築スクリプト32を生成する。
あるいはATOMICからのgeneric main( )の継承方法を示
す図である。DLL (ダイナミック・リンクライブラリ)と
してディスクから読み込まれたDLL構成部品を含む実行
可能テンプレートが図示されている。アプリケーション
構成部品42上には、図1で説明した関数suspend, rem
ove, init, info, finiを具備したサービスオブジェク
トを含むボックスが図示されている。アプリケーション
オブジェクトはサービスオブジェクトから派生するアプ
リケーション50も図示されている。さらに、クラス5
4として識別されたオブジェクト中の二つはコネクタブ
ル(接続可能)56とリモート58であって、図示され
たリンクを介して外部と接続されている。コネクタブル
リンク56は供給側であり、リモートリンク58は消費
側である。これらのリンクの接続を示すために雌雄のコ
ネクタがリンクの端に表示されている。アプリケーショ
ン構成部品42は、ASCIIファイルである実行可能サー
ビス構築スクリプト32を生成する。
【0030】他のページ44,46には多くのDLL構成
部品が含まれている。本発明はこのようにコンポーネン
トウェアの概念を採用している。構成部品42、44、
46はそれぞれ実行可能ファイルに書き込みを行い、リ
ンク48で図示されるようにgeneric main ( )を使って
読み込まれる。generic main ( )は図1で説明した構成
部品を含む。サービスコンフィギュレータ12は実行可
能サービス構築ファイル32に対して"open( )"関数を
実行することができる。ACE(Adaptive Communication E
xecutive)49がコンパイル時にリンクされ、ジェネリ
ックメインに対するフレームワークとして設けられてい
る。
部品が含まれている。本発明はこのようにコンポーネン
トウェアの概念を採用している。構成部品42、44、
46はそれぞれ実行可能ファイルに書き込みを行い、リ
ンク48で図示されるようにgeneric main ( )を使って
読み込まれる。generic main ( )は図1で説明した構成
部品を含む。サービスコンフィギュレータ12は実行可
能サービス構築ファイル32に対して"open( )"関数を
実行することができる。ACE(Adaptive Communication E
xecutive)49がコンパイル時にリンクされ、ジェネリ
ックメインに対するフレームワークとして設けられてい
る。
【0031】図3は通信構成部品"commu"16を示して
いる。この構成部品は動的に構築可能なイベントサービ
スパターンを提供する。共有メモリ62は、ストリング
名であるパターンが読み込み/書き込みされことによっ
てアクセスされる。これらストリング名のついたパター
ンは、共有メモリ内の名前空間に格納される。書き込み
はスーパーバイザ関数を実行するプロセスマネジャを介
して行われる。コミュニケータ16は、ソフトウェアic
sを使用し、これによってフレームワークを介して簡単
な通信が可能となる。ローカルリモート、ホストリモー
ト、ネットリモートは消費側であり、ローカルコネクタ
ブル、ホストコネクタブル、ネットコネクタブルは供給
側である。
いる。この構成部品は動的に構築可能なイベントサービ
スパターンを提供する。共有メモリ62は、ストリング
名であるパターンが読み込み/書き込みされことによっ
てアクセスされる。これらストリング名のついたパター
ンは、共有メモリ内の名前空間に格納される。書き込み
はスーパーバイザ関数を実行するプロセスマネジャを介
して行われる。コミュニケータ16は、ソフトウェアic
sを使用し、これによってフレームワークを介して簡単
な通信が可能となる。ローカルリモート、ホストリモー
ト、ネットリモートは消費側であり、ローカルコネクタ
ブル、ホストコネクタブル、ネットコネクタブルは供給
側である。
【0032】これらリモートとコネクタブル間の通信
は、キュー66を介して行われる。供給側と消費側のそ
れぞれのルータとキューはソケット68上に示されてお
り、マシンバウンダリを介して通信を提供する。uパイ
プ70は内部通信機能として設けられ、nパイプ72
は、構成部品バウンダリを介してはいるものの、オペレ
ーティングシステム内のノードローダ通信用に設けられ
ている。通信は別々のスレッド内で行われる。スレッド
が上流/下流どちらの方向であるかは矢印74により示
される。
は、キュー66を介して行われる。供給側と消費側のそ
れぞれのルータとキューはソケット68上に示されてお
り、マシンバウンダリを介して通信を提供する。uパイ
プ70は内部通信機能として設けられ、nパイプ72
は、構成部品バウンダリを介してはいるものの、オペレ
ーティングシステム内のノードローダ通信用に設けられ
ている。通信は別々のスレッド内で行われる。スレッド
が上流/下流どちらの方向であるかは矢印74により示
される。
【0033】アクセプタファクトリ76(ACEツール)
は通信を可能にするためにアクセプタ78を提供する。
アクセプタファクトリ76は、init, fini, info関数を
構成部品として実現することができる。リアクタは通信
部を制御する。
は通信を可能にするためにアクセプタ78を提供する。
アクセプタファクトリ76は、init, fini, info関数を
構成部品として実現することができる。リアクタは通信
部を制御する。
【0034】図4は、本明細書中で参照文献として援用
され、1996年7月3日に出願された米国特許出願第
08/675,616号明細書に記載されている同期/非同期管理
パターンSESAMによって展開されたジェネリックメイン
を示している。SESAMシグナリングディスパッチャ80
はリアクタであり、SESAMディスパッチャ85は非同期
タイマハンドラである。スレッド84はオペレーション
を並行実行するために実行可能ファイル内で並列に動
く。メインスレッド86が実行される。メインディスパ
ッチャ88はイベントループ90と共に実行可能ファイ
ル内での動作を規制し、SESAMは起動とコールバックに
よりアプリケーション/オペレーティングシステムイン
ターフェースにおける同期/非同期動作へのゲートを提
供する。オペレーションの制御は、呼び出しをされるの
ではなく呼び出しをする、"don't call us, we'll call
you"として周知なハリウッド方式を使用する従来の制
御とは逆のものとなっている。
され、1996年7月3日に出願された米国特許出願第
08/675,616号明細書に記載されている同期/非同期管理
パターンSESAMによって展開されたジェネリックメイン
を示している。SESAMシグナリングディスパッチャ80
はリアクタであり、SESAMディスパッチャ85は非同期
タイマハンドラである。スレッド84はオペレーション
を並行実行するために実行可能ファイル内で並列に動
く。メインスレッド86が実行される。メインディスパ
ッチャ88はイベントループ90と共に実行可能ファイ
ル内での動作を規制し、SESAMは起動とコールバックに
よりアプリケーション/オペレーティングシステムイン
ターフェースにおける同期/非同期動作へのゲートを提
供する。オペレーションの制御は、呼び出しをされるの
ではなく呼び出しをする、"don't call us, we'll call
you"として周知なハリウッド方式を使用する従来の制
御とは逆のものとなっている。
【0035】同期/非同期パターンによって、関数の非
同期実行、同期/非同期タイマのスケジューリング、例
外処理、通信イベントのための汎用同期インターフェー
スの提供、イベントリストの待ち、複数ディスパッチャ
の同期が可能になる。
同期実行、同期/非同期タイマのスケジューリング、例
外処理、通信イベントのための汎用同期インターフェー
スの提供、イベントリストの待ち、複数ディスパッチャ
の同期が可能になる。
【0036】ジェネリックメインの目的には二つある。
すなわちフレームワーク(ACEとMFC)の相互接続とアプ
リケーションプログラマが変更することのできないメイ
ンプログラムの作成(create)である。図5はMFCとACEメ
インメッセージポンプの連結を示している。各スレッド
はそれ自身のメッセージポンプを保持している。MFCの
メッセージポンプは表面から隠れており、一方ACEのメ
ッセージポンプはACE#Taskオブジェクトに付属してい
る。
すなわちフレームワーク(ACEとMFC)の相互接続とアプ
リケーションプログラマが変更することのできないメイ
ンプログラムの作成(create)である。図5はMFCとACEメ
インメッセージポンプの連結を示している。各スレッド
はそれ自身のメッセージポンプを保持している。MFCの
メッセージポンプは表面から隠れており、一方ACEのメ
ッセージポンプはACE#Taskオブジェクトに付属してい
る。
【0037】この例では、MFCジェネリックメインはキ
ュー92に接続されているMFCウィンドウスレッドを含
んでいる。MFCスレッドメッセージポンプはこのスレッ
ドでループとして動作する。OLE(Object Linking and E
mbedding)イベントとwindowsイベントはキュー92で受
信され、CSAとMFCの要求と応答は、ACEメインスレッド
を実行しているCSAジェネリックメイン構成部品内のキ
ュー94を介して対話する。すなわち、図5は二つのメ
ッセージキューを介して実行されるフレームワークの対
話を示している。
ュー92に接続されているMFCウィンドウスレッドを含
んでいる。MFCスレッドメッセージポンプはこのスレッ
ドでループとして動作する。OLE(Object Linking and E
mbedding)イベントとwindowsイベントはキュー92で受
信され、CSAとMFCの要求と応答は、ACEメインスレッド
を実行しているCSAジェネリックメイン構成部品内のキ
ュー94を介して対話する。すなわち、図5は二つのメ
ッセージキューを介して実行されるフレームワークの対
話を示している。
【0038】MFCからACEへの通信は以下の場合に起こり
うる。抽象ベースクラスは、このクラスから派生する付
加機能を導き出すことによって拡張が可能となるジェネ
リックメインの基本機能を実現する。ジェネリックメイ
ンベースクラスのフック機能は両方とも便利である。一
番目のフックはディスパッチループが起動する前に挿入
され、また二番目のフックはディスパッチループが実行
可能になった後に呼び出される。
うる。抽象ベースクラスは、このクラスから派生する付
加機能を導き出すことによって拡張が可能となるジェネ
リックメインの基本機能を実現する。ジェネリックメイ
ンベースクラスのフック機能は両方とも便利である。一
番目のフックはディスパッチループが起動する前に挿入
され、また二番目のフックはディスパッチループが実行
可能になった後に呼び出される。
【0039】MFCフレームワークの機能が使用されてお
り、この中味の重要な点はpostmessageメソッドであ
る。このメソッドは例えば以下のようにして示される。 BOOL PostMessage ( HWND hWnd, /handle of destination window UINT Msg,//message to post WPARAM wParam,// first message parameter LPARAM lParam// second message parameter ) パラメータは以下のように定義される。 HWND hWnd: 受信者側のハンドル UINT Msg: ユーザ定義メッセージの識別子 WPARAM wParam: メッセージの最初のパラメータ LPARAM lParam: 読み込んだ構成部品をACEからMFCに
転送するのに使用したメッセージの二番目のパラメータ
り、この中味の重要な点はpostmessageメソッドであ
る。このメソッドは例えば以下のようにして示される。 BOOL PostMessage ( HWND hWnd, /handle of destination window UINT Msg,//message to post WPARAM wParam,// first message parameter LPARAM lParam// second message parameter ) パラメータは以下のように定義される。 HWND hWnd: 受信者側のハンドル UINT Msg: ユーザ定義メッセージの識別子 WPARAM wParam: メッセージの最初のパラメータ LPARAM lParam: 読み込んだ構成部品をACEからMFCに
転送するのに使用したメッセージの二番目のパラメータ
【0040】次にDLLおよびOCX構成部品のサービス構築
を説明する。ACEフレームワークのサービスコンフィギ
ュレータは、全てのソフトウェア構成部品を読み込むた
めに使用される。
を説明する。ACEフレームワークのサービスコンフィギ
ュレータは、全てのソフトウェア構成部品を読み込むた
めに使用される。
【0041】OCX構成部品を読み込むには、OCXプロジェ
クトのコードを修正する必要がある。これによりマイク
ロソフトのコンポーネントウェアも読み込むことが可能
になる。
クトのコードを修正する必要がある。これによりマイク
ロソフトのコンポーネントウェアも読み込むことが可能
になる。
【0042】基本的なステップは以下のとおりである。 1.ACE#SERVICE#OBJECT(図6a参照)から派生した付加
クラスを定義する。 2.initとfiniメソッドは空白のままにする。 3.infoメソッドが最も重要な部分であり、各OCXはシ
ステムレジストリ内で、その構成部品自身を識別する名
前を持つ。名前はinfo-メソッドにより返されなければ
ならない。例えば、 int MySecondServiceObject::into(char**name, size#t) const [ strcpy(*name, "SECONDOCX.SecondOCXCtrl.1"); return(0); ]
クラスを定義する。 2.initとfiniメソッドは空白のままにする。 3.infoメソッドが最も重要な部分であり、各OCXはシ
ステムレジストリ内で、その構成部品自身を識別する名
前を持つ。名前はinfo-メソッドにより返されなければ
ならない。例えば、 int MySecondServiceObject::into(char**name, size#t) const [ strcpy(*name, "SECONDOCX.SecondOCXCtrl.1"); return(0); ]
【0043】また、サービス構築ファイルのエントリも
入力する必要があるが、これについては後で説明する。
入力する必要があるが、これについては後で説明する。
【0044】図6bはマイクロソフトNTプラットフォー
ムのメイン/コントロールパネル/システムにおけるDL
LとOCXのパスを指定するWindowsダイアログボックスを
示している。ランタイムリンカは探索を行うためにパス
環境変数を使用する。構成部品のパスをパス変数に入力
する必要がある。
ムのメイン/コントロールパネル/システムにおけるDL
LとOCXのパスを指定するWindowsダイアログボックスを
示している。ランタイムリンカは探索を行うためにパス
環境変数を使用する。構成部品のパスをパス変数に入力
する必要がある。
【0045】図7はOCXをローディングするためのメカ
ニズムを示している。このメカニズムにより、サードパ
ーティのメインモジュールをサポートする場合にジェネ
リックメイン構成部品をローディングするためのプロト
コルが提供される。スレッド間のpostmessage関数の使
い方に注意のこと。
ニズムを示している。このメカニズムにより、サードパ
ーティのメインモジュールをサポートする場合にジェネ
リックメイン構成部品をローディングするためのプロト
コルが提供される。スレッド間のpostmessage関数の使
い方に注意のこと。
【0046】図8は、様々な構成部品DLLにより構築さ
れた異なるジェネリックメインを実行するコンピュータ
を示している。ビジュアルベーシックコントローラ96
はマシン全体を監視している。実行可能サービス構築フ
ァイルは、矢印で示されるように多数の異なる構成部品
に読み込まれる。
れた異なるジェネリックメインを実行するコンピュータ
を示している。ビジュアルベーシックコントローラ96
はマシン全体を監視している。実行可能サービス構築フ
ァイルは、矢印で示されるように多数の異なる構成部品
に読み込まれる。
【0047】サービス構築フレームワークは、プロセス
の構築と再構築動作を指示するためにsvc.confなどの構
築ファイルを使用する。したがって、これらの処理はそ
れぞれ構築ファイルに関連していなければならない。
の構築と再構築動作を指示するためにsvc.confなどの構
築ファイルを使用する。したがって、これらの処理はそ
れぞれ構築ファイルに関連していなければならない。
【0048】構築ファイル中の各サービスconfig entry
は、実行される動作を指定するservice config指令(デ
ィレクティブ)で始まる。各エントリは動的にリンクさ
れたオブジェクトの共有オブジェクトファイルのロケー
ションとパラメータを示す属性を含んでいる。後者は実
行時にサービスを初期化するために必要とされる。Conf
igファイル中の基本的な構文エレメントは、以下に示す
ようにBackus/Naurフォーマット(EBNF)で表される。 <svc-config-entries> : : =svc-config-entries svc-c
onfig-entry |NULL <svc-config-entry> : : = <dynamic> |<static>| <sus
pend>| <resume>|<remove>|<stream>|<remote> <dynamic> : : = DYNAMIC <svc-location>[parameters-
opt>] <static> : : = STATIC <svc-name> [<parameters-opt
>] <suspend> : : = SUSPEND <svc-name> <resume> : : = RESUME <svc-name> <remove> : := REMOVE <svc-name> <stream#ops> : : <dynamic> | <static> <remote> : : = STRING '[' <svc-config-entry>']' <module-list> : : <module-list> <module> | NULL <module> : : <dynamic> | <static> |<suspend> | <re
sume> | <remove> <svc-location> : : <svc-name> <type> <svc-initiali
zer> <status> <type> : : = SERVIC OBJECT '*'|MODULE '*' |STREAM
'*'|NULL <svc-initializer> : : <object-name> | <function-na
me> <object-name> : : PATHNAME '*' IDENT <function-name> : : PATHNAME ':' IDENT '(' ') ' <status> : : ACTIVE | INACTIVE | NULL <parameters-opt> : : = STRING | NULL
は、実行される動作を指定するservice config指令(デ
ィレクティブ)で始まる。各エントリは動的にリンクさ
れたオブジェクトの共有オブジェクトファイルのロケー
ションとパラメータを示す属性を含んでいる。後者は実
行時にサービスを初期化するために必要とされる。Conf
igファイル中の基本的な構文エレメントは、以下に示す
ようにBackus/Naurフォーマット(EBNF)で表される。 <svc-config-entries> : : =svc-config-entries svc-c
onfig-entry |NULL <svc-config-entry> : : = <dynamic> |<static>| <sus
pend>| <resume>|<remove>|<stream>|<remote> <dynamic> : : = DYNAMIC <svc-location>[parameters-
opt>] <static> : : = STATIC <svc-name> [<parameters-opt
>] <suspend> : : = SUSPEND <svc-name> <resume> : : = RESUME <svc-name> <remove> : := REMOVE <svc-name> <stream#ops> : : <dynamic> | <static> <remote> : : = STRING '[' <svc-config-entry>']' <module-list> : : <module-list> <module> | NULL <module> : : <dynamic> | <static> |<suspend> | <re
sume> | <remove> <svc-location> : : <svc-name> <type> <svc-initiali
zer> <status> <type> : : = SERVIC OBJECT '*'|MODULE '*' |STREAM
'*'|NULL <svc-initializer> : : <object-name> | <function-na
me> <object-name> : : PATHNAME '*' IDENT <function-name> : : PATHNAME ':' IDENT '(' ') ' <status> : : ACTIVE | INACTIVE | NULL <parameters-opt> : : = STRING | NULL
【0049】分散型アプリケーション開発を単純化する
ために実際にどのようにサービス構築フレームワークが
使われているかを説明するために、次のconfig ファイ
ルの例を使って構築ファイルの基本的アーキテクチャを
示す。 # example file static ACE#Svc#Manager "-d -p 3333" dynamic MySegmentObject1 Service#Object * ocx#NEU.ocx: #alloc() "Segment" dynamic MyBrowserobject1 Service#Object * Browser.ocx: #alloc() "Browser"
ために実際にどのようにサービス構築フレームワークが
使われているかを説明するために、次のconfig ファイ
ルの例を使って構築ファイルの基本的アーキテクチャを
示す。 # example file static ACE#Svc#Manager "-d -p 3333" dynamic MySegmentObject1 Service#Object * ocx#NEU.ocx: #alloc() "Segment" dynamic MyBrowserobject1 Service#Object * Browser.ocx: #alloc() "Browser"
【0050】このサンプルファイルは最初にコメント行
を含んでいる。ACE#Svc#Managerが静的に読み込まれ、
二つのオブジェクトSegmentviewerとPatientbrowserが
動的にリンクされる。これらのオブジェクトは、アプリ
ケーションを新たにコンパイルやリンクせずに、削除あ
るいは他のオブジェクト(すなわち新しいオブジェクト)
で置換することができる。これを実現するために、指令
remove MysegmentObject1を発行し、フレームワークに
この指令を読み込ませて処理させる必要がある。
を含んでいる。ACE#Svc#Managerが静的に読み込まれ、
二つのオブジェクトSegmentviewerとPatientbrowserが
動的にリンクされる。これらのオブジェクトは、アプリ
ケーションを新たにコンパイルやリンクせずに、削除あ
るいは他のオブジェクト(すなわち新しいオブジェクト)
で置換することができる。これを実現するために、指令
remove MysegmentObject1を発行し、フレームワークに
この指令を読み込ませて処理させる必要がある。
【0051】ここで、SVCman (サービス構築マネジャ)
のプログラム記述を説明する。サービス構築マネジャは
快適にService Configファイルを作成/修正することが
できるソフトウェアツールである。プロセスサービス構
築マネジャを表示しているコンピュータモニタのウィン
ドウを図示している図9を参照のこと。サービス構築フ
レームワークに準じて、SVCmanは以下のservice config
指令をサポートしている。
のプログラム記述を説明する。サービス構築マネジャは
快適にService Configファイルを作成/修正することが
できるソフトウェアツールである。プロセスサービス構
築マネジャを表示しているコンピュータモニタのウィン
ドウを図示している図9を参照のこと。サービス構築フ
レームワークに準じて、SVCmanは以下のservice config
指令をサポートしている。
【0052】
【表1】
【0053】また、SVCmanはプロセスマネジャと一緒に
動作するように設計されており、ある固有のプロセスの
構築を動的に定義し変更することができる。
動作するように設計されており、ある固有のプロセスの
構築を動的に定義し変更することができる。
【0054】もし現在のService Configファイルの対応
するプロセスが動いていなくても、全く問題にはならな
い。この場合、Service Configファイルはディスクに書
き込まれるだけで、変更部分は次にプロセスが起動され
たときに有効となる。このとき古いファイルは*.old fi
leとしてセーブされる。
するプロセスが動いていなくても、全く問題にはならな
い。この場合、Service Configファイルはディスクに書
き込まれるだけで、変更部分は次にプロセスが起動され
たときに有効となる。このとき古いファイルは*.old fi
leとしてセーブされる。
【0055】プロセスが現在実行中でその変更が事前に
有効になってしまう場合には、別のファイルを作成する
必要がある。SVCmanは、Service Configuration フレー
ムワークを変更した状態にするために必要な指令を格納
するDeltaファイル(*.delta)を生成する。プロセスが次
に起動した場合には、無論新しいService Configファイ
ルに対応するように定義される。
有効になってしまう場合には、別のファイルを作成する
必要がある。SVCmanは、Service Configuration フレー
ムワークを変更した状態にするために必要な指令を格納
するDeltaファイル(*.delta)を生成する。プロセスが次
に起動した場合には、無論新しいService Configファイ
ルに対応するように定義される。
【0056】− 新しいconfigファイルの作成の仕方 SVCmanが起動されると、作業領域が開放され、新しいフ
ァイルを編集することができるようになる。作成したフ
ァイルをディスクにセーブする時に、ファイル名を指定
する必要がある。ファイルの読み込み等の理由で作業領
域が空いていない場合には、Clear allボタンをクリッ
クする。 − configファイルの編集 Add Service このボタンをクリックすると、サービスを付加するため
のフォームがオープンされる。バックグラウンドでは、
新しいServiceエントリが表示される。マークをつけた
エントリの後、サービスがファイル中に付加される。こ
の様子は"Add new service"という名前のダイアログボ
ックスとして図10に示されている。ここでPropertyフ
ォームのエントリを書き込むことにより、付加したいサ
ービスを指定することができる。以下のテーブルに含ま
れるエントリの意味を参照のこと。
ァイルを編集することができるようになる。作成したフ
ァイルをディスクにセーブする時に、ファイル名を指定
する必要がある。ファイルの読み込み等の理由で作業領
域が空いていない場合には、Clear allボタンをクリッ
クする。 − configファイルの編集 Add Service このボタンをクリックすると、サービスを付加するため
のフォームがオープンされる。バックグラウンドでは、
新しいServiceエントリが表示される。マークをつけた
エントリの後、サービスがファイル中に付加される。こ
の様子は"Add new service"という名前のダイアログボ
ックスとして図10に示されている。ここでPropertyフ
ォームのエントリを書き込むことにより、付加したいサ
ービスを指定することができる。以下のテーブルに含ま
れるエントリの意味を参照のこと。
【0057】
【表2】
【0058】・EnterキーはWindow-Closeボタンと同じ
ように機能し、フォームをクローズするので注意のこ
と。エントリフィールドの最後でEnterを押す必要はな
い。変更を加えると、いずれの場合にも更新される。 ・Browseボタンを使って、指定されたパス上で現在使う
ことのできるライブラリリストを表示し、適切なライブ
ラリ名を見つけることができる。 ・ネーミング規約に従い、名前フィールドではブランク
スペース(SPACE)は使うことができないので、使用を
避けること。 ・Service Configurator フレームワークはダブルクォ
ーテーション(")を使ってパラメータの始まりと終わり
を示すので、パラメータフィールド内にダブルクォーテ
ーションを使うことはできない。従ってダブルクォーテ
ーションの使用を避けること。 ・サービスを正しく定義するために、フォーム内の全て
のフィールドを入力する必要がある。サービスのうちい
くつかのタイプは、わずかに一つか二つエントリが必要
なだけである。必要のないものはプログラムにより無効
にされる。 ・Service Propertyフォームの編集中は,メインフォー
ムが無効にされる。
ように機能し、フォームをクローズするので注意のこ
と。エントリフィールドの最後でEnterを押す必要はな
い。変更を加えると、いずれの場合にも更新される。 ・Browseボタンを使って、指定されたパス上で現在使う
ことのできるライブラリリストを表示し、適切なライブ
ラリ名を見つけることができる。 ・ネーミング規約に従い、名前フィールドではブランク
スペース(SPACE)は使うことができないので、使用を
避けること。 ・Service Configurator フレームワークはダブルクォ
ーテーション(")を使ってパラメータの始まりと終わり
を示すので、パラメータフィールド内にダブルクォーテ
ーションを使うことはできない。従ってダブルクォーテ
ーションの使用を避けること。 ・サービスを正しく定義するために、フォーム内の全て
のフィールドを入力する必要がある。サービスのうちい
くつかのタイプは、わずかに一つか二つエントリが必要
なだけである。必要のないものはプログラムにより無効
にされる。 ・Service Propertyフォームの編集中は,メインフォー
ムが無効にされる。
【0059】図11はAdd Commentを示している。Add C
ommentでコメント行にマークをつけることができ、conf
igファイル内のエントリにコメントを付け加えることが
できる。これにより、ファイルの判読性を高める。
ommentでコメント行にマークをつけることができ、conf
igファイル内のエントリにコメントを付け加えることが
できる。これにより、ファイルの判読性を高める。
【0060】Toggle Comment 入力したエントリをコメントとして宣言することにより
無効にし、完全に削除しないようにすることができる。
このボタンをクリックすることにより、指定されたサー
ビスの種類に関係なくマークをつけた行はコメントにな
る。再度ボタンをクリックすると、コメントが削除され
元のエントリに戻る。
無効にし、完全に削除しないようにすることができる。
このボタンをクリックすることにより、指定されたサー
ビスの種類に関係なくマークをつけた行はコメントにな
る。再度ボタンをクリックすると、コメントが削除され
元のエントリに戻る。
【0061】Add Stream SVCmanでデーモンへの上流/下流のストリームを生成す
ることができる。ストリームは他のいくつかの定義され
たサービスをカプセル化する。このボタンを使ってマー
クをつけた位置の後に新しいストリームが挿入される。 ・サービスを定義されたストリームに付加するには、Ad
d streamボタンを使用する。 ・ストリームは静的あるいは動的にのみ呼び出すことが
できる。 ・ストリーム内に他のモジュールを存在させることはで
きない。すなわちストリームの中にストリームは存在し
ない。
ることができる。ストリームは他のいくつかの定義され
たサービスをカプセル化する。このボタンを使ってマー
クをつけた位置の後に新しいストリームが挿入される。 ・サービスを定義されたストリームに付加するには、Ad
d streamボタンを使用する。 ・ストリームは静的あるいは動的にのみ呼び出すことが
できる。 ・ストリーム内に他のモジュールを存在させることはで
きない。すなわちストリームの中にストリームは存在し
ない。
【0062】Add to stream 上に述べたように、ストリームはいくつかのサービスを
保持することのできるモジュールといったものを定義す
る。ストリームにサービスを付加するには、ストリーム
を選択し、Add to stream ボタンを押す。モジュール内
にサービスがあれば、新しいエントリを入力する位置の
前にマークをつけることもできる。・モジュール内のサ
ービスエントリはツリーとして表示される。
保持することのできるモジュールといったものを定義す
る。ストリームにサービスを付加するには、ストリーム
を選択し、Add to stream ボタンを押す。モジュール内
にサービスがあれば、新しいエントリを入力する位置の
前にマークをつけることもできる。・モジュール内のサ
ービスエントリはツリーとして表示される。
【0063】Edit service このボタンをダブルクリックするだけで、サービスエン
トリを簡単に編集、変更することができる。Service Pr
opertyフォームが起動され、仕様を変更することができ
る。
トリを簡単に編集、変更することができる。Service Pr
opertyフォームが起動され、仕様を変更することができ
る。
【0064】Remove service service configファイルからサービスを削除するには、
削除したいサービスを指定してRemove Serviceボタンを
押す。本当に削除してもいいかどうかを聞いてくる。YE
Sを選択すると削除され、CANCELを選択すると,元に戻
る。 ・UNDELETEはないので注意のこと。 ・ストリームにマークをつけると、モジュールを含むス
トリーム全体が削除される。 ・モジュール内のサービスが選択されると、このサービ
スのみがストリームモジュールから削除される。
削除したいサービスを指定してRemove Serviceボタンを
押す。本当に削除してもいいかどうかを聞いてくる。YE
Sを選択すると削除され、CANCELを選択すると,元に戻
る。 ・UNDELETEはないので注意のこと。 ・ストリームにマークをつけると、モジュールを含むス
トリーム全体が削除される。 ・モジュール内のサービスが選択されると、このサービ
スのみがストリームモジュールから削除される。
【0065】Clear all 全てのエントリをクリアしリセットするにはこのボタン
を使う。 ・ UNDELETEはないので注意のこと。 ・ファイル名もクリアされるので、ファイルをセーブす
る際には新しいファイル名を定義する必要がある。
を使う。 ・ UNDELETEはないので注意のこと。 ・ファイル名もクリアされるので、ファイルをセーブす
る際には新しいファイル名を定義する必要がある。
【0066】Save a config file configファイルの編集あるいは変更後に、このファイル
をディスクにセーブすることができる。共通Windowsダ
イアログボックスがオープンされたら、パスとファイル
名を指定する必要がある。図12はこの様子を示してい
る。ファイルはデフォルトでsvc.confとして格納され
る。 ・異なるファイル名を指定すると、実行可能ファイルに
は-f FILEPATH-FILENAMEがつくか、Process Startパラ
メータが付く。 ・ディスク上に既存のファイルがある場合には、*.old
とリネームされ、削除されないのでリストアすることが
できる。 注: 上記のようにSVCmanはProcessManagerと一緒に動
作するようにも設計されているので、固有のプロセスの
構築を動的に定義することが可能になる。したがって、
変更を加えたService Configファイルの対応するプロセ
スが実行されると、変更を前もって有効にするかどうか
を聞いてくる。
をディスクにセーブすることができる。共通Windowsダ
イアログボックスがオープンされたら、パスとファイル
名を指定する必要がある。図12はこの様子を示してい
る。ファイルはデフォルトでsvc.confとして格納され
る。 ・異なるファイル名を指定すると、実行可能ファイルに
は-f FILEPATH-FILENAMEがつくか、Process Startパラ
メータが付く。 ・ディスク上に既存のファイルがある場合には、*.old
とリネームされ、削除されないのでリストアすることが
できる。 注: 上記のようにSVCmanはProcessManagerと一緒に動
作するようにも設計されているので、固有のプロセスの
構築を動的に定義することが可能になる。したがって、
変更を加えたService Configファイルの対応するプロセ
スが実行されると、変更を前もって有効にするかどうか
を聞いてくる。
【0067】Load a config file Loadボタンをクリックすることにより、他のServic Con
figファイルをSVCmanに読み込むことができる。他のフ
ァイルを編集中に読み込みを行うと、古い方のファイル
を最初にセーブするかどうかを聞いてくる。図13はSa
ve Asダイアログボックスを示している。 ・読み込むファイルが正しい意味形式になっていない場
合には、SVCmanが正しく読み込むことができない。その
結果、エラー“Cannot read file"になる。 ・通常、サービスエントリの異なるオブジェクト間には
一つの“空白(SPACE)”が必要である。それより多い
“空白”は無視される。 ・指定したファイルがディスク上に見つからない場合に
は、エラー"File not found"となる。 ・SVCmanは、オプションのコマンドラインパラメータを
使って呼び出すこともできる。指定されたファイルが最
初に読み込まれる。
figファイルをSVCmanに読み込むことができる。他のフ
ァイルを編集中に読み込みを行うと、古い方のファイル
を最初にセーブするかどうかを聞いてくる。図13はSa
ve Asダイアログボックスを示している。 ・読み込むファイルが正しい意味形式になっていない場
合には、SVCmanが正しく読み込むことができない。その
結果、エラー“Cannot read file"になる。 ・通常、サービスエントリの異なるオブジェクト間には
一つの“空白(SPACE)”が必要である。それより多い
“空白”は無視される。 ・指定したファイルがディスク上に見つからない場合に
は、エラー"File not found"となる。 ・SVCmanは、オプションのコマンドラインパラメータを
使って呼び出すこともできる。指定されたファイルが最
初に読み込まれる。
【0068】Cut/PasteおよびDrag & Drop ・INSとDELキーを使ってカットアンドペーストを実行す
ることができる。また行をある位置から他の位置にドラ
ッグするだけで、ファイル内のエントリの位置を変更す
ることができる。 ・モジュール内ではカットアンドペーストを使うことは
できない。 ・挿入は、選択した位置の前で常に行うことができる。
ることができる。また行をある位置から他の位置にドラ
ッグするだけで、ファイル内のエントリの位置を変更す
ることができる。 ・モジュール内ではカットアンドペーストを使うことは
できない。 ・挿入は、選択した位置の前で常に行うことができる。
【0069】図14〜図31は本発明のジェネリックメ
インのC++プログラムコードのリストである。このリス
トに含まれている構成部品は次のものを含む。ジェネリ
ックメインの定義、ジェネリックメインへの付加機能及
びジェネリックメイン機能の実現方法である。ジェネリ
ックメインは、サービスコンフィギュレータとフレーム
ワークの対話と共に、本発明の利点を実現する。
インのC++プログラムコードのリストである。このリス
トに含まれている構成部品は次のものを含む。ジェネリ
ックメインの定義、ジェネリックメインへの付加機能及
びジェネリックメイン機能の実現方法である。ジェネリ
ックメインは、サービスコンフィギュレータとフレーム
ワークの対話と共に、本発明の利点を実現する。
【0070】以上のように、本発明はジェネリックメイ
ンオブジェクトによって実現されるインタープリティブ
・ネットワークデーモンを提供する。以下の特徴を含む
バイナリの実行可能形式のみが提供される。 ― オブジェクト指向である。 ― 以下に対して、プロセス内の単独オブジェクトの隠
れたインスタンス化を適切に行う。 ATOMICにおける基本的ネットワーク通信の特徴 SESAMを使用した基本的な同期/非同期管理 ダイナミックリンク・ライブラリ構成部品DLLを使用す
る基本的 ダイナミックリンクの特徴 基本的なネットワーク内ネーミングサポート 基本的なネットワーク内タイムベースサポート 基本的なネットワーク内リソース監視サポート 基本的なネットワーク内メッセージロギングサポート 基本的オペレーティングシステム・アブストラクション
・レイヤ(OSAL) システム構築コントロールへの基本的インターフェース
(SCCM) ― 完全二重イベントおよび要求/応答チャネルのため
のサポートを行う ― メッセージポンプ相互接続プロトコル(MPIP)を使用
した、支配的GUIフレームワークでサポートされたmai
n()プログラムへの一般的接続 ― ディバイスドライバへの一般的接続を提供する。 ― オブジェクトdipデータベース(デバッグポート)の
一般的サポートを行う。
ンオブジェクトによって実現されるインタープリティブ
・ネットワークデーモンを提供する。以下の特徴を含む
バイナリの実行可能形式のみが提供される。 ― オブジェクト指向である。 ― 以下に対して、プロセス内の単独オブジェクトの隠
れたインスタンス化を適切に行う。 ATOMICにおける基本的ネットワーク通信の特徴 SESAMを使用した基本的な同期/非同期管理 ダイナミックリンク・ライブラリ構成部品DLLを使用す
る基本的 ダイナミックリンクの特徴 基本的なネットワーク内ネーミングサポート 基本的なネットワーク内タイムベースサポート 基本的なネットワーク内リソース監視サポート 基本的なネットワーク内メッセージロギングサポート 基本的オペレーティングシステム・アブストラクション
・レイヤ(OSAL) システム構築コントロールへの基本的インターフェース
(SCCM) ― 完全二重イベントおよび要求/応答チャネルのため
のサポートを行う ― メッセージポンプ相互接続プロトコル(MPIP)を使用
した、支配的GUIフレームワークでサポートされたmai
n()プログラムへの一般的接続 ― ディバイスドライバへの一般的接続を提供する。 ― オブジェクトdipデータベース(デバッグポート)の
一般的サポートを行う。
【0071】当業者により他の修正及び変更は示唆され
るであろうが、本明細書において記載した特許請求の範
囲内で具体化することが発明者の意図するところであ
り、全ての変更及び修正は本発明者が寄与したこの技術
の範囲内に含まれるものである。
るであろうが、本明細書において記載した特許請求の範
囲内で具体化することが発明者の意図するところであ
り、全ての変更及び修正は本発明者が寄与したこの技術
の範囲内に含まれるものである。
【図1】ジェネリックメインのサービスコンフィギュレ
ータ(構築)構成部品の分解図を含むジェネリックメイ
ンを示すブロック図である。
ータ(構築)構成部品の分解図を含むジェネリックメイ
ンを示すブロック図である。
【図2】ジェネリックメインに読み込まれたサービスオ
ブジェクトと対話するアプリケーションの詳細を示すブ
ロック図である。
ブジェクトと対話するアプリケーションの詳細を示すブ
ロック図である。
【図3】本発明のATOMICエレメントの通信部分"commu
“を示すブロック図である。
“を示すブロック図である。
【図4】本発明のSESAM構成部品を示すブロック図であ
る。
る。
【図5】本発明のフレームワークコネクタ構成部品を示
すブロック図である。
すブロック図である。
【図6】aはオブジェクトの関係を示すブロック図、b
はサービス構築のローディングを示すダイアログウィン
ドウを示す図である。
はサービス構築のローディングを示すダイアログウィン
ドウを示す図である。
【図7】OCX構成部品のローディングを示すブロック図
である。
である。
【図8】種々の構成部品でジェネリックメインを使用す
るマシン全体の構成を示すブロック図である。
るマシン全体の構成を示すブロック図である。
【図9】サービス構築マネジャを使用するWindowsオペ
レーティングシステムのダイアログボックスを示す図で
ある。
レーティングシステムのダイアログボックスを示す図で
ある。
【図10】サービス構築マネジャを使用するWindowsオ
ペレーティングシステムのダイアログボックスを示す図
である。
ペレーティングシステムのダイアログボックスを示す図
である。
【図11】サービス構築マネジャを使用するWindowsオ
ペレーティングシステムのダイアログボックスを示す図
である。
ペレーティングシステムのダイアログボックスを示す図
である。
【図12】サービス構築マネジャを使用するWindowsオ
ペレーティングシステムのダイアログボックスを示す図
である。
ペレーティングシステムのダイアログボックスを示す図
である。
【図13】サービス構築マネジャを使用するWindowsオ
ペレーティングシステムのダイアログボックスを示す図
である。
ペレーティングシステムのダイアログボックスを示す図
である。
【図14】本発明のジェネリックメインのC++プログラ
ムコードのリストを示す図である。
ムコードのリストを示す図である。
【図15】本発明のジェネリックメインのC++プログラ
ムコードのリストを示す図である。
ムコードのリストを示す図である。
【図16】本発明のジェネリックメインのC++プログラ
ムコードのリストを示す図である。
ムコードのリストを示す図である。
【図17】本発明のジェネリックメインのC++プログラ
ムコードのリストを示す図である。
ムコードのリストを示す図である。
【図18】本発明のジェネリックメインのC++プログラ
ムコードのリストを示す図である。
ムコードのリストを示す図である。
【図19】本発明のジェネリックメインのC++プログラ
ムコードのリストを示す図である。
ムコードのリストを示す図である。
【図20】本発明のジェネリックメインのC++プログラ
ムコードのリストを示す図である。
ムコードのリストを示す図である。
【図21】本発明のジェネリックメインのC++プログラ
ムコードのリストを示す図である。
ムコードのリストを示す図である。
【図22】本発明のジェネリックメインのC++プログラ
ムコードのリストを示す図である。
ムコードのリストを示す図である。
【図23】本発明のジェネリックメインのC++プログラ
ムコードのリストを示す図である。
ムコードのリストを示す図である。
【図24】本発明のジェネリックメインのC++プログラ
ムコードのリストを示す図である。
ムコードのリストを示す図である。
【図25】本発明のジェネリックメインのC++プログラ
ムコードのリストを示す図である。
ムコードのリストを示す図である。
【図26】本発明のジェネリックメインのC++プログラ
ムコードのリストを示す図である。
ムコードのリストを示す図である。
【図27】本発明のジェネリックメインのC++プログラ
ムコードのリストを示す図である。
ムコードのリストを示す図である。
【図28】本発明のジェネリックメインのC++プログラ
ムコードのリストを示す図である。
ムコードのリストを示す図である。
【図29】本発明のジェネリックメインのC++プログラ
ムコードのリストを示す図である。
ムコードのリストを示す図である。
【図30】本発明のジェネリックメインのC++プログラ
ムコードのリストを示す図である。
ムコードのリストを示す図である。
【図31】本発明のジェネリックメインのC++プログラ
ムコードのリストを示す図である。
ムコードのリストを示す図である。
図1: 12 サービスコンフィギュレータ 20 フレームコネクタ 22 ネットワーク 24 サービスディスパッチャ 25 サービスコンフィギュレータ 26 サービスオブジェクトリモートコントロール 27 サービスレポジトリ 28 サービスマネジャ 30 スクリプティングトークン 34 サービスオブジェクト 38 メモリ内DLL (1) ジェネリックメインへのDLLの読み込み (2) スクリプティング 図2: 20 フレームワークコネクタ 28 サービスマネジャ 49 アダプティブコミュニケーションエグゼクティブ 50 アプリケーション 52 サービスオブジェクト 56 コネクタブル 58 リモート (1) アプリケーション (2) クラス 図3: (1) リアクタ (2) 供給側ルータ (3) 消費側ルータ (4) 供給側ハンドラ (5) 消費側ハンドラ (6) ローカルアクセプタ (7) ホストアクセプタ (8) ネットアクセプタ (9) ローカルリモート (10) ホストリモート (11) ネットリモート (12) ローカルコネクタブル (13) ホストコネクタブル (14) ネットコネクタブル 12 サービスコンフィギュレータ 20 フレームワークコネクタ 62 共有メモリ 69 プロセスマネジャ 76 アクセプタファクトリ 78 アクセプタ 図4: (1) OSプロセスの構成 (2) アプリケーション (3) OSインターフェースレベル (4) メインスレッド実行 (5) スレッド (6) 例外 12 サービスコンフィギュレータ 20 フレームワークコネクタ 80 SESAMシグナリングディスパッチャ 85 SESAMディスパッチャ 88 メインディスパッチャ 90 イベントループ 図5: (1) MFC-ACEフレームワーク対話 (2) MFC ウィンドウスレッド (3) MFCスレッドメッセージポンプ (4) CSAジェネリックメイン構成部品 (5) ACEメインスレッド (6) ACEランイベントループ 12 サービスコンフィギュレータ 図7: (1) MFCウィンドウ (2) ACEタスク (3) ディスパッチ (4) メインフレームのハンドラコード (5) ビュークラスのハンドラコード 27 サービスレポジトリ 32 Service Configファイル 図8: (1) インストール (2) アプリケーション (3) クラス 20 フレームワークコネクタ 26 サービスオブジェクト 28 サービスマネジャ 48 アダプティブコミュニケーションエグゼクティ
ブ 50 アプリケーション 52 サービス 96 ビジュアルベーシックコントローラ
ブ 50 アプリケーション 52 サービス 96 ビジュアルベーシックコントローラ
フロントページの続き (72)発明者 ディートリッヒ クヴェール ドイツ連邦共和国 91052 エルランゲン ニュルンベルガー シュトラーセ 83 (72)発明者 デトレフ ベッカー ドイツ連邦共和国 91096 メーレンドル フ ヴァッサーヴェルクシュトラーセ 10 (72)発明者 クリスチャン シャルフ ドイツ連邦共和国 91085 ワイゼンドル フ アム アルテン シュポルトプラッツ 40 (72)発明者 ダグラス シー シュミット アメリカ合衆国 ミズーリ セントルイス ワン ブルーニング ドライブ
Claims (5)
- 【請求項1】コンピュータにおける操作のためのオブジ
ェクト指向コンピュータプログラムであって、 ジェネリックメインと、 実行時に前記ジェネリックメインを構築する構築構成部
品と、 構成部品間の通信を提供するフレームワークコネクタ
と、を備えることを特徴とするオブジェクト指向コンピ
ュータプログラム。 - 【請求項2】 前記構築構成部品はサービスコンフィギ
ュレータと、 サービスディスパッチャと、 サービスマネジャと、 サービスレポジトリと、を含むことを特徴とする請求項
1記載のオブジェクト指向コンピュータプログラム。 - 【請求項3】 前記ジェネリックメインは、前記構築構
成部品に構築されるまで、前記コンピュータのオペレー
ティングシステムからは独立していることを特徴とする
請求項1記載のオブジェクト指向コンピュータプログラ
ム。 - 【請求項4】 前記フレームワークコネクタはマシン境
界を越えて通信を可能にするソケットと、 内部通信のための"u"パイプと、 構成部品間の通信のための"n"パイプと、を含むことを
特徴とする請求項1記載のオブジェクト指向コンピュー
タプログラム。 - 【請求項5】 コンピュータを操作する方法であって、 ジェネリックメイン構成部品を提供し、 ダイナミックリンク・ライブラリ(DLL)を使って、サー
ビス構築ファイルを生成し、前記ダイナミックリンク・
ライブラリを前記ジェネリックメインに読み込むことに
より前記ジェネリックメインを実行時に構築し、 前記サービス構築ファイルにしたがって構築された前記
ジェネリックメインを、前記コンピュータ上で動作して
いるプログラムに挿入するステップを備えるコンピュー
タ操作方法。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US09/215,732 US7523471B1 (en) | 1998-12-18 | 1998-12-18 | Interpretive network daemon implemented by generic main object |
US09/215732 | 1998-12-18 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2000187587A true JP2000187587A (ja) | 2000-07-04 |
Family
ID=22804155
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP11356461A Abandoned JP2000187587A (ja) | 1998-12-18 | 1999-12-15 | ジェネリックメインオブジェクトによって実現されるインタ―プリティブネットワ―クデ―モン |
Country Status (3)
Country | Link |
---|---|
US (1) | US7523471B1 (ja) |
EP (1) | EP1037142A3 (ja) |
JP (1) | JP2000187587A (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2009054146A (ja) * | 2007-07-27 | 2009-03-12 | Canon Inc | 情報処理方法、情報処理装置及びプログラム |
Families Citing this family (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6996832B2 (en) | 2001-05-30 | 2006-02-07 | Bea Systems, Inc. | System and method for software component plug-in framework |
US20040004612A1 (en) * | 2002-07-08 | 2004-01-08 | Lockheed Martin Corporation | Method and system for processing graphics simulation data |
US7328426B2 (en) * | 2003-08-13 | 2008-02-05 | International Business Machines Corporation | Editor with commands for automatically disabling and enabling program code portions |
DE102005041628B4 (de) | 2005-09-01 | 2012-12-27 | Siemens Ag | Vorrichtung und Verfahren zur Verarbeitung von Daten unterschiedlicher Modalitäten |
JP2008041038A (ja) * | 2006-08-10 | 2008-02-21 | Mitsubishi Electric Corp | ソフトウエア作成方法 |
WO2008052207A2 (en) * | 2006-10-27 | 2008-05-02 | Wms Gaming, Inc. | Processing wagering game events |
DE102006051188A1 (de) * | 2006-10-30 | 2008-05-08 | Siemens Ag | Flexibles Verschaltungssystem |
US9361330B2 (en) | 2012-03-12 | 2016-06-07 | Oracle International Corporation | System and method for consistent embedded search across enterprise applications with an enterprise crawl and search framework |
US10430179B1 (en) * | 2019-03-07 | 2019-10-01 | Capital One Services, Llc | Methods and systems for managing application configurations |
CN111580860A (zh) * | 2020-05-13 | 2020-08-25 | 吕家明 | 一种不同版本配置文件自动兼容方法及装置 |
Family Cites Families (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5175828A (en) * | 1989-02-13 | 1992-12-29 | Hewlett-Packard Company | Method and apparatus for dynamically linking subprogram to main program using tabled procedure name comparison |
US5761739A (en) * | 1993-06-08 | 1998-06-02 | International Business Machines Corporation | Methods and systems for creating a storage dump within a coupling facility of a multisystem enviroment |
US5634114A (en) * | 1993-11-18 | 1997-05-27 | Intel Corporation | Dynamic link library version negotiation |
US5491800A (en) * | 1993-12-20 | 1996-02-13 | Taligent, Inc. | Object-oriented remote procedure call networking system |
US5850518A (en) * | 1994-12-12 | 1998-12-15 | Northrup; Charles J. | Access-method-independent exchange |
US5625783A (en) * | 1994-12-13 | 1997-04-29 | Microsoft Corporation | Automated system and method for dynamic menu construction in a graphical user interface |
CA2143488C (en) * | 1995-02-27 | 2000-01-11 | Robert Paul Duncan | Dynamic link libraries without linker or loader support |
US5781902A (en) * | 1996-07-12 | 1998-07-14 | Microsoft Corporation | Method, computer program product, and system for extending the capabilities of an existing process to store and display foreign data |
US5913061A (en) * | 1997-01-08 | 1999-06-15 | Crossroads Software, Inc. | Modular application collaboration |
US5893106A (en) * | 1997-07-11 | 1999-04-06 | International Business Machines Corporation | Object oriented server process framework with interdependent-object creation |
US6047324A (en) * | 1998-02-05 | 2000-04-04 | Merrill Lynch & Co. Inc. | Scalable distributed network controller |
US6434740B1 (en) * | 1998-07-15 | 2002-08-13 | International Business Machines Corporation | Apparatus and method for visual construction simplification |
US6158049A (en) * | 1998-08-11 | 2000-12-05 | Compaq Computer Corporation | User transparent mechanism for profile feedback optimization |
-
1998
- 1998-12-18 US US09/215,732 patent/US7523471B1/en not_active Expired - Fee Related
-
1999
- 1999-12-15 JP JP11356461A patent/JP2000187587A/ja not_active Abandoned
- 1999-12-17 EP EP99125234A patent/EP1037142A3/en not_active Withdrawn
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2009054146A (ja) * | 2007-07-27 | 2009-03-12 | Canon Inc | 情報処理方法、情報処理装置及びプログラム |
Also Published As
Publication number | Publication date |
---|---|
EP1037142A2 (en) | 2000-09-20 |
US7523471B1 (en) | 2009-04-21 |
EP1037142A3 (en) | 2007-11-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Schmidt | Applying patterns and frameworks to develop object-oriented communication software | |
Schmidt et al. | Applying patterns to develop extensible ORB middleware | |
US6038590A (en) | Object-oriented system, method and article of manufacture for a client-server state machine in an interprise computing framework system | |
US7159211B2 (en) | Method for executing a sequential program in parallel with automatic fault tolerance | |
US6052711A (en) | Object-oriented system, method and article of manufacture for a client-server session web access in an interprise computing framework system. | |
US6253282B1 (en) | Object-oriented system, method and article of manufacture for a client-server with a client program cache | |
US6272555B1 (en) | Object-oriented system, method and article of manufacture for a client-server-centric interprise computing framework system | |
MacIntyre et al. | Language-level support for exploratory programming of distributed virtual environments | |
Fay-Wolfe et al. | Real-time CORBA | |
JPH0635709A (ja) | オブジェクトクラス規定装置、ウィジェット及びその実現方法 | |
JP2000187587A (ja) | ジェネリックメインオブジェクトによって実現されるインタ―プリティブネットワ―クデ―モン | |
Silvestre et al. | Flexibility and coordination in event-based, loosely coupled, distributed systems | |
Shen | Discrete-event simulation on the internet and the web | |
Buck et al. | Ptolemy: A mixed-paradigm simulation/prototyping platform in C++ | |
Arief et al. | Automatic generation of distributed system simulations from UML | |
Schmidt et al. | Experience using design patterns to evolve communication software across diverse os platforms | |
Brugali et al. | Service component architectures in robotics: The sca-orocos integration | |
Krauweel et al. | Simpler coordination of JavaScript web workers | |
Aguirre et al. | MCSARCH: An architecture for the development of manufacturing control systems | |
Kelter et al. | Constructing distributed SDEs using an active repository | |
Johnsen et al. | Inheritance in the presence of asynchronous method calls | |
Zalila et al. | Generating distributed high integrity applications from their architectural description | |
MacDonald | Design patterns in enterprise. | |
Serain | Client/server: Why? What? How? | |
Bhatt et al. | A methodology and toolset for the design of parallel embedded systems |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20061114 |
|
A762 | Written abandonment of application |
Free format text: JAPANESE INTERMEDIATE CODE: A762 Effective date: 20071226 |