「[[Open棟梁 wiki>https://opentouryo.osscons.jp]]」は、「[[Open棟梁Project>https://github.com/OpenTouryoProject/]]」,「[[OSSコンソーシアム .NET開発基盤部会>https://www.osscons.jp/dotNetDevelopmentInfrastructure/]]」によって運営されています。 -[[戻る>アプリケーション設計のポイント]] *目次 [#l74a6582] #contents *概要 [#fa1e3b66] 各レイヤについて説明します。 #ref(fx_image_s.png,left,nowrap,各レイヤ) 各レイヤの構成方法については、「[[モジュール構成]]」を参照。 *P層 [#o229cb29] 画面処理を実装するレイヤ。「[[画面の構成]]」も参考にできる。 -単項目のチェック処理を除く業務処理はB層 -データアクセス処理はD層に実装する。 **デザイン ベース [#qe6113be] -ASP.NETの場合、マスタページ -Windows Formsの場合、ベースFormクラス を使用して、枠のデザイン・処理の共通化を図る。 またOpen棟梁では「デザイン ベース」中の~ コントロールのイベント処理を「個別デザイン」でオーバーライドして処理を変更できる。 **個別デザイン [#bd397b73] -ASP.NETの場合Page -Windows Formsの場合Form、 -WPFの場合Window / Page を使用して、個別デザインを実装する。 **ユーザ コントロール [#f5cab22c] ASP.NET Web Forms、Windows Forms、WPFなどで~ 複数のコントロールを集約しパーツ化して、デザイン・処理の共通化を図ることができる。 またOpen棟梁では~ 「ユーザ コントロール」中のコントロールのイベント処理を~ [[「個別デザイン」でオーバーライドして処理を変更できる>ボタンレイアウトの共通化]]。 **カスタム コントロール [#d9583d9a] ASP.NET Web Forms、Windows Forms、WPFの~ 標準のコントロールを継承し、動作をカスタマイズできる。 **HTMLヘルパー [#o0ea9e4d] ※ASP.NET MVCで使用 従来のASP.NET Web Formsでは、コントロールを使用して、ラベルやテキストボックスなどのコントロールを表示していたが、~ ASP.NET MVCでは、コントロールは使用できない。その代わりに、ASP.NET MVCでは HTMLヘルパーを使用する。 *B層 [#kda3e339] 業務処理を実装するレイヤ。 -画面処理はP層 -データアクセス処理はD層に実装する。 **トランザクション ルート [#x6e0a757] トランザクション ルートとなるB層 -トランザクション ルートなのでB層からネストして呼び出すことはできない。 -コネクション管理処理にて生成したデータ アクセス制御クラス(Dam)を保持する。 -ファサード パターンで、処理を集約する(3層C/S方式でも1イベント、1リクエストに集約しトラフィックを軽減) -共通化 処理の共通化を行うためのB層追加レイヤ --トランザクション ルートでないのでB層からネストして呼び出すことができる。 --コネクション管理処理にて生成したデータ アクセス制御クラス(Dam)を、別途持ち回る必要がある。 *D層 [#x5a04b9f] データ アクセス処理を実装するレイヤ。 -画面処理はP層 -業務処理はB層に実装する。 **データ アクセス オブジェクト [#u87dd1e7] -データ アクセスのためのオブジェクト -コンストラクタからデータ アクセス制御クラス(Dam)を渡す必要がある。 **自作 Dao [#k5f9a0e9] 任意の複数のSQLの実行、テーブルへのアクセスを実装できる。 **汎用 Dao [#fa1bb49d] -汎用Daoは呼び出し元が指定したSQLを処理可能。 -主に「参照系」の処理を実行する際に利用する。 **自動生成 Dao [#e057cc96] -自動生成Daoは1つのテーブルへのCRUD処理が可能。 -主に「更新系」の処理を実行する際に利用する。 **Dao集約層 [#ad3600ab] -汎用Dao、自動生成Daoを集約し、論理的なデータ アクセスを構成するD層追加レイヤ *データ アクセス制御クラス(Dam) [#s38b7c07] 動的SQLなど、各種D層機能を実装するデータ プロバイダのラッパークラス。 -業務処理で複数の接続が必要な場合は、前述のコネクション管理処理において複数のDamを生成・保持する必要がある。 -また、複数のDBMS(データプロバイダ)に対応させる場合は、~ コネクション管理処理にてDBMS(データプロバイダ)毎に用意された指定の型でDamを生成・保持し、~ 以降の処理ではDamをベースの型で扱うようにしてDBMS(データプロバイダ)固有型(機能)の使用を局所化する必要がある。