- PR -

Windowsアプリケーションの階層化

1
投稿者投稿内容
会議室デビュー日: 2009/03/03
投稿数: 3
投稿日時: 2009-03-03 14:15
設計の経験が浅いので、標記に関してご意見をいただきたいと思います。

開発環境:Visual Studio 2005
DB環境:SQL Server 2000 or 2005

上記環境にて Windows アプリケーションを階層立てて作りたいと思いますが、
以下の点をクリアしないといいものができそうにありません。

1.データアクセス層にて、TableAdapter, 型付DataSet をどのように使用
すればよいのか(業務、テーブルの数だけ無数に増えていく気がする。。)
2.DataGritView で使うために、型付DataSet を UI 層で使えば、
階層化しても DB 変更のたびに修正が発生しそう。
3.ビジネス層とデータアクセス層やビジネス層と UI 層をつなぐパラメータは
一般的にどういう作りにすればよいのか。

ネットや本にいろいろ情報はありますが、逆に多すぎて何を採用すべきか
判断に苦しみます。。

1.が特に分かりませんので、ご意見よろしくお願いします。
よこけん
大ベテラン
会議室デビュー日: 2006/01/31
投稿数: 216
投稿日時: 2009-03-03 17:26
引用:
5さんの書き込み (2009-03-03 14:15) より:
1.データアクセス層にて、TableAdapter, 型付DataSet をどのように使用
すればよいのか(業務、テーブルの数だけ無数に増えていく気がする。。)



DataTable はテーブルと1対1に用意する必要があるので、テーブルの数が増えれば DataTable も増えますね。

引用:
5さんの書き込み (2009-03-03 14:15) より:
2.DataGritView で使うために、型付DataSet を UI 層で使えば、
階層化しても DB 変更のたびに修正が発生しそう。



DB 変更のたびに (UI 層に) 修正が発生しないようにしたいのならば、
UI と DB の構造の違いをビジネス層で吸収 (隠蔽) するのが妥当かと思います。

引用:
5さんの書き込み (2009-03-03 14:15) より:
3.ビジネス層とデータアクセス層やビジネス層と UI 層をつなぐパラメータは
一般的にどういう作りにすればよいのか。



パラメータというのはなんのことですか?

_________________
C#と諸々
会議室デビュー日: 2009/03/03
投稿数: 3
投稿日時: 2009-03-04 00:51
よこけん さん、ご意見ありがとうございます。

1.についてですが、
引用:

DataTable はテーブルと1対1に用意する必要があるので、テーブルの数が増えれば DataTable も増えますね。


テーブルと1対1で用意して、さらに例えば受注テーブルと受注明細テーブルと顧客テーブルを
結合した結果データを使用するといった場合にも、型付DataSet を使用するのであれば、
どんどん増えるので、どう管理するのだろうと思った次第です。。
(それとも DB に View で先に用意しておくのでしょうか)

2.についてですが、
引用:

DB 変更のたびに (UI 層に) 修正が発生しないようにしたいのならば、
UI と DB の構造の違いをビジネス層で吸収 (隠蔽) するのが妥当かと思います。


吸収するというのは、例えば型付DataSet でデータを取得したら、別な形のクラスで
UI には引き渡すということなのでしょうか??

3.についてですが、
引用:

パラメータというのはなんのことですか?


各層で必要な情報を受け渡すクラスのことです。
以前参加させてもらったプロジェクトでそう言われていたのでそのまま書いてしまいました。。
分かり辛くてすいません。。

実践的な VB2005 の各層のサンプルがあるとより助かります。。(本でも)
PetShop は Web のサンプルでしたし、TableAdapter が使われていなかったので、
いまいち使えそうにありませんでした。
よこけん
大ベテラン
会議室デビュー日: 2006/01/31
投稿数: 216
投稿日時: 2009-03-04 01:32
引用:
5さんの書き込み (2009-03-04 00:51) より:
テーブルと1対1で用意して、さらに例えば受注テーブルと受注明細テーブルと顧客テーブルを
結合した結果データを使用するといった場合にも、型付DataSet を使用するのであれば、
どんどん増えるので、どう管理するのだろうと思った次第です。。
(それとも DB に View で先に用意しておくのでしょうか)



必要に応じて用意することになるかと思います。DB にビューを用意するかどうかに関わらず DataSet は必要ですし。


引用:
5さんの書き込み (2009-03-04 00:51) より:
吸収するというのは、例えば型付DataSet でデータを取得したら、別な形のクラスで
UI には引き渡すということなのでしょうか??



普通のクラス (ドメインモデル) を用意する方法も取れますし、DataSet を更に用意するという方法も (やったことないですが) 取れると思います。


引用:
5さんの書き込み (2009-03-04 00:51) より:
各層で必要な情報を受け渡すクラスのことです。
以前参加させてもらったプロジェクトでそう言われていたのでそのまま書いてしまいました。。
分かり辛くてすいません。。



上位層が下位層のクラスを使えばいいだけだと思うのですが、何か気になることがあるのでしょうか?


引用:
5さんの書き込み (2009-03-04 00:51) より:
実践的な VB2005 の各層のサンプルがあるとより助かります。。(本でも)
PetShop は Web のサンプルでしたし、TableAdapter が使われていなかったので、
いまいち使えそうにありませんでした。



この手の情報を探す場合、言語は VB に限定せず、C# や Java も視野に入れた方が良いと思います。
おすすめとしてはこの辺でしょうか。

[MSDN]
.NET のアプリケーション アーキテクチャ : アプリケーションとサービスの設計 (AAfN)

[書籍]
エンタープライズアプリケーションアーキテクチャ (PofEAA)
ドメイン駆動
実践!ソフトウェアアーキテクチャ

5さんが行おうとしているのは PofEAA で紹介されている「テーブルモジュール」や AAfN に近いのかな、と思います。(僕はあまり AAfN について詳しくないので違うかもしれません。)


_________________
C#と諸々

[ メッセージ編集済み 編集者: よこけん 編集日時 2009-03-04 01:33 ]
会議室デビュー日: 2009/03/03
投稿数: 3
投稿日時: 2009-03-05 00:03
よこけんさん、ご意見ありがとうございます。

まだ完全に晴れたわけではありませんが、そもそもの基礎知識が足りないので、
ご紹介いただいた本などを参考に、パターンを押さえながら実践する際に
出てきた疑問等を質問するようにしたいと思います。

ありがとうございました!
1

スキルアップ/キャリアアップ(JOB@IT)