C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[1]: ビジネス・ロジック層とデータ・アクセス層の境界


(過去ログ 43 を表示中)

[トピック内 7 記事 (1 - 7 表示)]  << 0 >>

■22958 / inTopicNo.1)  ビジネス・ロジック層とデータ・アクセス層の境界
  
□投稿者/ やじゅ (519回)-(2008/08/06(Wed) 13:48:36)
やじゅ さんの Web サイト

分類:[設計/仕様] 

やっと階層を意識して、プログラムを組むようになったのですが、
それまでフォーム内にまとめることが多かった・・・反省w

ビジネス・ロジック層とデータ・アクセス層の境界がいまいち
分かってません。

SQL文は書くのはどっち?

ExecuteQueryメソッドなどデータ取得は、共通ライブラリ側で作成
してしまっているので、基本的にSQL文記述して呼ぶだけなんだよね。

引用返信 編集キー/
■22974 / inTopicNo.2)  Re[1]: ビジネス・ロジック層とデータ・アクセス層の境界
□投稿者/ もょもと (2回)-(2008/08/06(Wed) 15:57:47)
> SQL文は書くのはどっち?

SQL文を発行するのは、データ・アクセス層ではないでしょうか。

引用返信 編集キー/
■23000 / inTopicNo.3)  Re[1]: ビジネス・ロジック層とデータ・アクセス層の境界
□投稿者/ 小春 (77回)-(2008/08/06(Wed) 19:11:58)
No22958 (やじゅ さん) に返信
Javaをかじった小春です。

お世話になってるやじゅさんには恐れ多いことですが、
私も非常に興味があることですし、私がJavaをした経験で学んだことを…ご参考までに…。

Javaの開発モデルとして、Model・View・Controller(MVC)という手法があるそうです。
よくあるC#にSql文のみXml化されたり、ストアド化されたり、、
というのは全部ここから来てるのかと思いました。

思い出をポロポロ書き出したらキリがないので割愛しますが、

> ExecuteQueryメソッドなどデータ取得は、共通ライブラリ側で作成
> してしまっているので、基本的にSQL文記述して呼ぶだけなんだよね。

この部分はModelの一部に分類されるのかと。
なので、SQL文を記述する場所だけが切り出される形になり、
データアクセス層になると思います。

ですが、ただ切り出すだけ(オブジェクト化するだけ)では、
今後そのシステムに携わる人たちが苦労するので(苦労した人→私)、
一工夫、二工夫、いや、トンチかなぁ?がいると思います。

ちなみに、MVCはJavaの開発モデルとして推奨されているとのことなので、
あくまでWebアプリケーションの話になるのかなぁ…。
Windowsアプリケーションならではのオブジェクト指向設計が必要かと、
最近思ってみたりしてます(^^
この辺りは皆様はどう思ってらっしゃるのでしょう???

引用返信 編集キー/
■23001 / inTopicNo.4)  Re[1]: ビジネス・ロジック層とデータ・アクセス層の境界
□投稿者/ シャノン (560回)-(2008/08/06(Wed) 19:38:20)
No22958 (やじゅ さん) に返信
> やっと階層を意識して、プログラムを組むようになったのですが、
> それまでフォーム内にまとめることが多かった・・・反省w
>
> ビジネス・ロジック層とデータ・アクセス層の境界がいまいち
> 分かってません。
>
> SQL文は書くのはどっち?
>
> ExecuteQueryメソッドなどデータ取得は、共通ライブラリ側で作成
> してしまっているので、基本的にSQL文記述して呼ぶだけなんだよね。

全然層分けできていない俺が言うのもアレですけども…

SQL を書くのはデータ層だと思いますが、ではどんな SQL を書くのか? というと、それはビジネスの知識がないと書けないんですよね。
必然的に、SELECT した結果を受け取るデータ構造も、ビジネスの知識に基づいた構造になりますね。
そのため、「データ層はビジネス層に対する依存関係を持たない」ってのは実現可能なのか? と思ってしまいます。
引用返信 編集キー/
■23007 / inTopicNo.5)  Re[1]: ビジネス・ロジック層とデータ・アクセス層の境界
□投稿者/ 紅の豚118 (7回)-(2008/08/06(Wed) 21:37:42)
No22958 (やじゅ さん) に返信
> ビジネス・ロジック層とデータ・アクセス層の境界がいまいち
> 分かってません。
>
> SQL文は書くのはどっち?
>
> ExecuteQueryメソッドなどデータ取得は、共通ライブラリ側で作成
> してしまっているので、基本的にSQL文記述して呼ぶだけなんだよね。

素人考えで申し訳ないのですが・・・データ・アクセス層かなと思います。

マルチデータベース対応を仮定したとき、利用するSQL文によっては、そのデータベースに依存する記述がでてくると思います。その違いを吸収する場所をビジネス・ロジックにしてしまうと、ビジネス・ロジックがデータベースの種類を気にしないといけなくなります。データ・アクセス層で吸収しておけば、ビジネス・ロジックに手をいれることなく、複数のデータベースに対応できる気がするのです。
引用返信 編集キー/
■23008 / inTopicNo.6)  Re[1]: ビジネス・ロジック層とデータ・アクセス層の境界
□投稿者/ THREE-ONE (9回)-(2008/08/06(Wed) 23:46:50)
THREE-ONE さんの Web サイト
> ExecuteQueryメソッドなどデータ取得は、共通ライブラリ側で作成
> してしまっているので、基本的にSQL文記述して呼ぶだけなんだよね。
この共通ライブラリがデータアクセス層でもいいような気がする。
モデルを多用するなら、そこに SQL を書いた方がいいかもしれないけど、一律 DataTable, DataSet を使うなら別にさらにデータアクセス層を作らなくてもいいかなぁと思います。
引用返信 編集キー/
■23012 / inTopicNo.7)  Re[2]: ビジネス・ロジック層とデータ・アクセス層の境界
□投稿者/ やじゅ (520回)-(2008/08/07(Thu) 00:30:19)
やじゅ さんの Web サイト
コメントを頂いたみなさま、ありがとうございます。

SQL文は、データ・アクセス層で良さそうですね。
現状そのように作成しております。

マルチデータベース対応を仮定した場合、その違いを吸収する旨は
他の開発者に説明する上で納得できそうな話ですね。

各層の開発
http://www.atmarkit.co.jp/fdotnet/vblab/bizappbasic02/bizappbasic02_02.html

解決とさせて頂きます。
解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -