2005年08月13日

自己記述型データを名前でアクセスする方法

あなたがクライアント/サーバー型の
アプリケーションをつくる場合、
アプリケーション間で送受信するメッセージの
データ構造はどのように設計し実装していますか?
そんな迷えるあなたに、
自己記述型のデータ構造(Self Describe Data)!
ちょいとかじってみますか。

ひと昔前のプログラムが扱うメッセージのデータ構造は、
データだけを順に連ねたとてもシンプルな構造でした。
このメッセージを送受信するプログラムは、
データ構造を解釈するために、
データ構造をあらわす構造体をデータに被せ、
各項目にアクセスしていました。

このデータ構造はデータ自身から、
その構造を求めることが出来ず、
必ずデータ構造をあらわす入れ物が必要になると同時に、
各項目の並びや長さが厳密に規定されているため、
データ構造の変更に柔軟に対応できませんでした。

最近では、SOAPのXMLやSEMIのSECSといった
データ構造に代表される通り、
データがデータの中身である値と、その構造をあらわす
自己記述型のデータ構造が主流となっています。
今回はこの自己記述型のデータ構造を
実現するサンプルプログラムをDelphiでご紹介します。

サンプルプログラムの作成に当り、
2つのキーとなるクラスを作成しています。
「TDatumNode」はデータ構造内の
1項目(要素)をあらわすオブジェクト、
「TContainerNode」は
「TDatumNode」のオブジェクトや、
「TDatumNode」の派生である
「TContainerNode」のオブジェクトを
複数格納するコンテナオブジェクトとして機能します。
丁度、OSファイルシステムの
「ファイル」と「ディレクトリィ」の概念に相当します。
「ファイル」が「TDatumNode」に、
「ファイル」や「ディレクトリィ」を格納する
「ディレクトリィ」が「TContainerNode」に、
それぞれ対応するイメージだと思ってください。

それでは、お疲れ様です。
じっくりソースを解析し、色々と試して下さい。

全ソースは【続きを読む】をクリック!

尚、サンプルプログラムは
「TContainerNode」オブジェクトのデータを
ストリームに保存したり、読込んだりする
メソッドは実装しておりません。
データ構造内の1項目(要素)をあらわす
「TDatumNode」オブジェクトに、
格納できるデータは便宜上文字型のみとしています。
必要あらば、あなた自身で追加してください。(笑い)

【クラスダイアグラム】

DatumClass.gif

【画面イメージ】

DatumClassTester.gif

関連書籍


Copyright guy@かしらもんじ でぇ〜

続きを読む
posted by guy at 07:22 | 通信編

広告


この広告は60日以上更新がないブログに表示がされております。

以下のいずれかの方法で非表示にすることが可能です。

・記事の投稿、編集をおこなう
・マイブログの【設定】 > 【広告設定】 より、「60日間更新が無い場合」 の 「広告を表示しない」にチェックを入れて保存する。


×

この広告は1年以上新しい記事の投稿がないブログに表示されております。