n階層システム設計の考慮点

第7回 データレイヤの設計について

この記事を読むのに必要な時間:およそ 6.5 分

② データアクセスロジックコンポーネントのインターフェイス

データアクセスロジックコンポーネントのインターフェイスとしては,第5回「④ ビジネスエンティティの設計についての注意点およびノウハウについて」でも説明したように,さまざまなデータ形式が利用できます。ここではそれぞれのデータ形式の利点と欠点について説明します。

まずはビジネスエンティティと同様のものが記述できる場合です。

XML

W3C(World Wide Web Consortium)標準準拠のため,プラットフォームに依存しない。XML スキーマ定義言語(以降XSDと略します)で定義すれば厳密な型の指定ができる。また,データストアとは非接続で使用できるため,データストアとの接続時間は短い。

ただし,XML内のタグ情報などの冗長部分が多いため,メモリなどのリソースの使用量は多い。また,XML内のエレメントへの追加・更新・削除などがあった場合のトランザクション制御は難しくなる。

DataReader

データストアへの接続効率がよく,必要なデータのみを取得するため,リソースの消費が少ない。

ただし,データストアと接続時のみデータが読みとれるため,接続時間が長くなる可能性がある。その場合はデータリソースが占有されるため,読み取り時の排他設定により,ほかのアプリケーションに影響が出る場合がある。また,データ取得のみ可能で,出力はできない。

データ型の型は基本的にデータストアのデータ型に依存する。

型なしDataSet

データストアとは非接続で使用できるため,データストアとの接続時間は短く,データの入出力が可能。型なしDataSetは内部構造を自由で定義できるため,さまざまなデータの集合体としてオブジェクト型でのやり取りができる。

型なしDataSetはシリアル化に対応しているが,厳密な型指定はできない。呼び出し元がデータ型を指定している場合は,データアクセスロジックコンポーネント内で型変換が必要となる。

データ量が少ない(単一行や1カラムのみ)の場合,DataSetの定義部があるため,リソースの使用量は多くなる。

型付DataSet

データストアとは非接続で使用できるため,データストアとの接続時間は短く,データの入出力が可能。型付DataSetは基本的にデータストアで定義されたデータ構造に依存する場合が多い。

型付DataSetはシリアル化に対応しており,厳密な型指定ができる。この場合,XSDなどで型指定をする必要がある。

データ量が少ない(単一行や1カラムのみ)の場合,DataSetの定義部があるため,リソースの使用量は多くなる。

型付DataSetはXSDなどで厳密に型指定されているため,データの受け渡し側に変更が発生した場合は再作成する必要がある。

カスタムビジネスエンティティ

データストアとは非接続で使用できるため,データストアとの接続時間は短く,データの入出力が可能。データ量が少ない(単一行や1カラムのみ)場合でも必要なデータのみをやり取りできるため,リソースの使用量は少ない。

カスタムビジネスエンティティは個別に作成するソース内で厳密に型指定するため,開発工数が大きい。また,厳密に型指定されているため,データの受け渡し側がすべてのデータ項目の型を意識する必要がある。

カスタムビジネスエンティティは厳密に型指定されているため,データの受け渡し側に変更が発生した場合は再作成する必要がある。

ビジネスエンティティにはない,スカラー値について説明します。

スカラー値

データストアへの接続効率がよく,必要なデータのみをやり取りするため,リソースの消費が少ない。データはシリアル化に対応しており,入出力が可能。データ量が少ない(単一行や1カラムのみ)の場合でも必要なデータのみをやり取りできるためリソースの使用量は少ない。

データストアと接続時のみデータがやり取りできるが,ほとんどの場合,データ量が少ないため,接続時間が長くなる可能性は少ない。

私のこれらの選択基準としては,以下のようにしています。

読み込み以外の操作の有無

データの読み込み操作しかない場合,スカラー値またはDataReader,型なしDataSetを採用しています。ただし,スカラー値はデータ量が少ない場合のみ採用しています。

データの読み込み以外の操作がある場合は,型付DataSetもしくはカスタムビジネスエンティティを採用しています。

データの多様性

データにさまざまな型指定がされている場合,型付DataSet,XMLもしくはカスタムビジネスエンティティを採用しています。

データに特に型指定がない場合,型なしDataSet,XMLおよびスカラー値を採用しています。

汎用性

汎用性を求められるならば,XMLまたはカスタムビジネスエンティティを採用します。

著者プロフィール

露木敏博(つゆきとしひろ)

1966年神奈川県横浜市生まれ。1990年,株式会社日立システムアンドサービス(旧日立システムエンジニアリング株式会社)に入社。

流通系SE,営業所駐在SEなどを経て,2003年から生産技術部門で.NET技術に関する技術支援業務に携り,.NET技術に関する各種基準書および標準化,設計ガイドなどを作成。

マイクロソフトMVPアワードプログラムよりDevelopment Platforms - ASP/ASP.NETのカテゴリで2008年7月よりMVPアワードを受賞。