- - PR -
Windowsアプリケーションの階層化
1
投稿者 | 投稿内容 | ||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 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.が特に分かりませんので、ご意見よろしくお願いします。 | ||||||||||||||||
|
投稿日時: 2009-03-03 17:26
DataTable はテーブルと1対1に用意する必要があるので、テーブルの数が増えれば DataTable も増えますね。
DB 変更のたびに (UI 層に) 修正が発生しないようにしたいのならば、 UI と DB の構造の違いをビジネス層で吸収 (隠蔽) するのが妥当かと思います。
パラメータというのはなんのことですか? _________________ C#と諸々 | ||||||||||||||||
|
投稿日時: 2009-03-04 00:51
よこけん さん、ご意見ありがとうございます。
1.についてですが、
テーブルと1対1で用意して、さらに例えば受注テーブルと受注明細テーブルと顧客テーブルを 結合した結果データを使用するといった場合にも、型付DataSet を使用するのであれば、 どんどん増えるので、どう管理するのだろうと思った次第です。。 (それとも DB に View で先に用意しておくのでしょうか) 2.についてですが、
吸収するというのは、例えば型付DataSet でデータを取得したら、別な形のクラスで UI には引き渡すということなのでしょうか?? 3.についてですが、
各層で必要な情報を受け渡すクラスのことです。 以前参加させてもらったプロジェクトでそう言われていたのでそのまま書いてしまいました。。 分かり辛くてすいません。。 実践的な VB2005 の各層のサンプルがあるとより助かります。。(本でも) PetShop は Web のサンプルでしたし、TableAdapter が使われていなかったので、 いまいち使えそうにありませんでした。 | ||||||||||||||||
|
投稿日時: 2009-03-04 01:32
必要に応じて用意することになるかと思います。DB にビューを用意するかどうかに関わらず DataSet は必要ですし。
普通のクラス (ドメインモデル) を用意する方法も取れますし、DataSet を更に用意するという方法も (やったことないですが) 取れると思います。
上位層が下位層のクラスを使えばいいだけだと思うのですが、何か気になることがあるのでしょうか?
この手の情報を探す場合、言語は VB に限定せず、C# や Java も視野に入れた方が良いと思います。 おすすめとしてはこの辺でしょうか。 [MSDN] ・.NET のアプリケーション アーキテクチャ : アプリケーションとサービスの設計 (AAfN) [書籍] ・エンタープライズアプリケーションアーキテクチャ (PofEAA) ・ドメイン駆動 ・実践!ソフトウェアアーキテクチャ 5さんが行おうとしているのは PofEAA で紹介されている「テーブルモジュール」や AAfN に近いのかな、と思います。(僕はあまり AAfN について詳しくないので違うかもしれません。) _________________ C#と諸々 [ メッセージ編集済み 編集者: よこけん 編集日時 2009-03-04 01:33 ] | ||||||||||||||||
|
投稿日時: 2009-03-05 00:03
よこけんさん、ご意見ありがとうございます。
まだ完全に晴れたわけではありませんが、そもそもの基礎知識が足りないので、 ご紹介いただいた本などを参考に、パターンを押さえながら実践する際に 出てきた疑問等を質問するようにしたいと思います。 ありがとうございました! |
1