- PR -

RDBアプリケーションのためのパターン

投稿者投稿内容
未記入
大ベテラン
会議室デビュー日: 2006/05/19
投稿数: 125
投稿日時: 2006-09-29 14:22
今までVB.NETで業務アプリケーションの開発に3本参加しました。
規模は小、中、大とそれぞれです。

今までは与えられた設計方針でRDBへのデータ取得・更新を行ってきましたが
3本とも共通して言えるのは
RDBとのやりとりをいろいろ工夫してクラス化しているが業務処理の複雑さなどから破綻してしまうということです。

自分なりにサイトを調べたり、本を読んだりしているのですが
パフォーマンスに優れ、保守性の高い、複雑な処理でも対応できる、
エレガントなクラス設計方法に辿りつけません。
先人たちが作った優れたRDBアプリケーションのためのパターンがどこかにあるはずだと
信じているのですが、そもそも無いのでしょうか?


具体的な情報のあるサイトやお勧めの参考書などがありましたら
ご教授ください。
また皆様がRDBへの永続化をされるときどのような方法を採用されているのか
できれば具体的に教えていただけないでしょうか?


最近読んだ参考書「マイクロソフト公式解説書 プログラミングADO.NET」

ぷさいくろう
ぬし
会議室デビュー日: 2006/08/30
投稿数: 1034
投稿日時: 2006-09-29 14:25
ORマッピング
未記入
大ベテラン
会議室デビュー日: 2006/05/19
投稿数: 125
投稿日時: 2006-09-29 14:39
ORマッピングツールは何をお使いでしょうか?
vincent
大ベテラン
会議室デビュー日: 2004/07/09
投稿数: 142
投稿日時: 2006-09-29 14:41
規模によって最適な方法は違うので、いわゆる銀の弾丸的なものは
ないといってよいでしょう。ADO.NETの設計思想についてはやはり、
お読みになった「プログラミングADO.NET」が詳しいと思います。

.NETのデータアクセスはJavaでよくやるような「ドメインオブジェクト」を作らず、
素直にRDBのスキーマを利用してDataSet/DataTableを基本に考えるのが定石です。
(まあそれが仇になっている部分もあるわけですが)

次の.NET FrameworkではLinqも使えるようになりますし、
ADO.NET vNext(次期バージョン)ではO/Rマッピング的な要素も
入ってくる予定です。
たつごろー
ぬし
会議室デビュー日: 2004/10/25
投稿数: 496
投稿日時: 2006-09-29 14:53
引用:

先人たちが作った優れたRDBアプリケーションのためのパターンがどこかにあるはずだと



完璧だと思うものにはなかなかたどり着けないでしょう。
ある瞬間には完璧に見えるものも、視点を変えると問題点がみえてくるものです。

MSもデータアクセスの方法を変えつづけています。
変わりすぎるのを嫌う方もいらっしゃいますが、私は、なにも提案がなく放置されるより
もかなりいいと思っています。


引用:

最近読んだ参考書「マイクロソフト公式解説書 プログラミングADO.NET」



では、次に読む本として、私は、通称「赤間本」と呼ばれているシリーズをお勧めします。

「.NET エンタープライズWebアプリケーション開発技術大全」シリーズ5巻
http://www.atmarkit.co.jp/fdotnet/entwebapp/entwebapp01/entwebapp01_01.html

「Visual Studio 2005によるWebアプリケーション構築技法 ASP.NET2.0上での参照系・更新系アプリケーションの設計」

.NETでASP.NETですが、それ以外の開発のためにも非常に役に立ちます。

_________________
たつごろー
codeseek
こみゅぷらす
未記入
大ベテラン
会議室デビュー日: 2006/05/19
投稿数: 125
投稿日時: 2006-09-29 15:00
vincent様
DataSet/DataTableを使用しようと考えています。

「プログラミングADO.NET」を読んで考えたのは
共通するプロジェクトにDBのテーブルに対応するクラスを作成し、
InsertCommand,UpdateCommand,DeleteCommandのパラメータ設定などを行う。
データ取り出しは結合クエリを使わず単体クエリを複数回発行しDataSetでリレーションを張る。

簡単な画面では比較的スムーズに行くと予想しますが
結合クエリーを使用せず単体クエリーの複数回発行にやはり反対があがりました。
またDataTable/DataSetでの更新だけではなくExcuteNonQueryでInsert/Update/Delete文を発行したいなどの要望があり、全てに対応できるようには作れないなというのが現時点での状況です。
vincent
大ベテラン
会議室デビュー日: 2004/07/09
投稿数: 142
投稿日時: 2006-09-29 15:03
RDBネタというよりアーキテクチャネタとして
考えたほうがいいかもしれませんね。

そうするとPatterns and Practicesシリーズなんかがよろしいかと。
「.NETのアプリケーションアーキテクチャ―アプリケーションとサービスの設計」
「Microsoft.NETによるエンタープライズソリューションパターン」

あとはMartin FowlerのPofEAAとか。
vincent
大ベテラン
会議室デビュー日: 2004/07/09
投稿数: 142
投稿日時: 2006-09-29 15:28
引用:

結合クエリーを使用せず単体クエリーの複数回発行にやはり反対があがりました。
またDataTable/DataSetでの更新だけではなくExcuteNonQueryでInsert/Update/Delete文を発行したいなどの要望があり、全てに対応できるようには作れないなというのが現時点での状況です。


私もADO.NETのこの考え方は大いに納得できるのですが、従来型データアクセスに
慣れた人から見ると強い違和感があるのも事実です。また、単体クエリーの集合を
データバインドするのも慣れが必要なので、開発現場で反対意見があがるのも
理解できます。.NETに習熟したメンバーが集まらないと厳しいでしょうね。

ついついアーキテクチャの美しさを追求しがちですが、実際は開発現場の
レベルに合わせた仕組みの導入が重要だと思っています。

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