三層アーキテクチャの学習法について への返答

投稿で使用できる特殊コードの説明。(別タブで開きます。)
本名は入力しないようにしましょう。
投稿した後で削除するときに使うパスワードです。返答があった後は削除できません。
返答する人が目安にします。相手が小学生か社会人かで返答の仕方も変わります。
最初の投稿が質問の場合、質問者が解決時にチェックしてください。(以降も追加書き込み・返信は可能です。)
※「過去ログ」について書くときはその過去ログのURLも書いてください。

以下の返答は逆順(新しい順)に並んでいます。

投稿者 刈谷勇  (社会人) 投稿日時 2009/7/16 20:11:03
るしぇさん、ありがとうございます。

>レイヤー 【layer】層。階層。
>頭痛が痛いって言ってますね。。。

たしかに、そうですね。
現在、私が参考にしている(といってもまだ、斜め読みしかしてないのですが)ページで
そのような書き方をしていたので使っていました。

n階層システム設計の考慮点
http://gihyo.jp/dev/serial/01/hdesign/0002

>DataTable = データ層では無いと思ってます。
たしかに、DataTableはただの入れ物で階層うんぬんとは関係ないですね。
最近の暑さと変な迷路に迷い込んで少し壊れ気味です。
(何を入力していたのかわからない誤字もありますし)


教えていただいたリンクも参考にさせていただいて、勉強したいと思います。
 
投稿者 るしぇ  (社会人) 投稿日時 2009/7/16 04:30:54
ざっと検索しててMSDNにそれらしい記述があるんだって
知って情報展開。
[n 層データ アプリケーション]
http://msdn.microsoft.com/ja-jp/library/bb384587.aspx
投稿者 るしぇ  (社会人) 投稿日時 2009/7/16 04:25:52
レイヤー 【layer】層。階層。
頭痛が痛いって言ってますね。。。

>メンテしやすそうかなと思ったので、質問してみました。
それでいいのでは?つまり三層アーキテクチャを採用して
メンテし難かったら『目的に合っていない』と判断が入る
のですね?
目的を見失って部品だけどうこうしようとしてるように
見えたので聞いてみました。

>combboxのDatasourceにDataTableを競っているのは、いいのか
>プレゼンテーションレイヤ層とデータレイヤ層とでやり取りをしてしまっている
特に調べずに回答してるので見当外れかもしれませんが、DataTable は
ただのデータの入れ物でしかなく、それが内部で使えなくなるとデータの
取得自体できなくなるのでは?

クラス設計のレベルの話なので、社員名簿取得ロジックと営業成績
取得ロジックが外部に定義されており、その戻り値が DataTable で
定義されていて、ローカルでは表示するだけといったイメージでは?

DataTable を外部に出したとして、そこから combbox には何で
繋ぐのですか?自作のクラス?逆に combbox の何かを外部に公開?
普通に常識で考えてインターフェースで分割する意味が無いのでは?
下手に部品にこだわらない方が良いというか、サーバ上でPL/SQLを
実行したり、その結果だけを返すサービスを作ったり、具体的な
部品は目的に合ったものを後から探すとか、無ければ作ることなので
関係ないって思います。

DataTable = データ層では無いと思ってます。
データ層の部品としての DataTable
プレゼンテーション層の部品としての DataTable
…あると思ってます。

もっと上流のVBを知らなくてもできる、VBに依存しないレベルの
設計を意識したほうが良いと思います。
で、上のボクの認識が合ってる、間違ってる、
分かり易く教えてください。
投稿者 刈谷勇  (社会人) 投稿日時 2009/7/16 01:45:02
るしぇさん、ありがとうございます。
>3階層に分ける目的はあるの? 

別に特別な目的は無いです。
JSPの本を読んでいて、三層アーキテクチャの話が触り程度で書いてあり、メンテしやすそうかなと
思ったので、質問してみました。
多分、さわり程度しか読んでいない為、間違った認識をしている部分もあると思うので、るきおさん
に教えていただいた本を読んでみたいと思います。
投稿者 るしぇ  (社会人) 投稿日時 2009/7/15 22:55:53
3階層に分ける目的はあるの?
投稿者 刈谷勇  (社会人) 投稿日時 2009/7/15 22:12:36
るきおさん、ありがとうございます。

早速、週末に本屋に行って見ます。

>3階層以上のアーキテクチャはWebアプリケーション向きだと思いますよ。
どおりで検索したHPの説明がWebアプリケーションの説明が多かったのですね。

自分が思っていた3階層は、
プレゼンテーションレイヤー層は、基本的な入力のチェック。(数値入力のところに文字が入っていないか等)
ビジネスロジックレイヤー層は、論理的なチェックや計算。
データレイヤー層は、データのアクセス系。
になるのかなと思っていました。


ありがとうございました。
投稿者 るきお  (社会人) 投稿日時 2009/7/15 21:53:54
こんにちは。
私のお奨めは赤間伸幸さんの「Webアプリケーション構築技法」です。
タイトルにあるようにWindowsアプリではありませんが、実践的な考え方が具体的なコード例とともにわかりやすく説かれているのが気に入っています。第9章で2階層、第10章で3階層を扱っています。
ISBN 4-89100-515-7

3階層以上のアーキテクチャはWebアプリケーション向きだと思いますよ。

個人的にはN階層アーキテクチャにはあまりこだわっていません。プログラム効率が下がる場合があるからです。N階層だと後から画面に項目1つ追加するのも大変です。Windowsアプリで3階層以上をやろうとするとWebサービスなどを使用することになるでしょうか。
でも、メンテしやすいように考えながら作っていると自然と2階層のようにはなります。
投稿者 刈谷勇  (社会人) 投稿日時 2009/7/14 23:51:58
いつもお世話になっております。

現在、Windowsアプリでシステム開発しています。
前々から三層アーキテクチャを学習しようと思っていたのですが、何かお勧めの本やHPはありますか?

いろいろ調べてみたのですがいまいちピンとこなく、たとえば「combboxのDatasourceにDataTableを競っているのは、いいのか」(プレゼンテーションレイヤ層とデータレイヤ層とでやり取りをしてしまっている)とか、.net固有の使い方と絡めて説明されているものがあれば教えていただきたいです。(勉強した手で間違っているかも知れませんが)

出来れば概論の説明があり、それを元に小さなシステムを作っていくような感じの本があればと思います。
よろしくお願いいたします。
(区分は、技術じゃなくてその他のほうがいいのかな?)