- 追加された行はこの色です。
- 削除された行はこの色です。
Open棟梁 wiki
「[[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,各レイヤ)
各レイヤの構成方法については、「[[モジュール構成]]」を参照。
*引数・戻り値クラス [#v18f3866]
[[B層>#kda3e339]]の呼び出しに必要な引数、戻り値。
#ref(ParamAndReturn.png,left,nowrap,引数、戻り値クラスのクラス構造)
*P層 [#o229cb29]
画面処理を実装するレイヤ。
画面処理を実装するレイヤ。「[[画面の構成]]」も参考にできる。
-単項目のチェック処理を除く業務処理はB層
-データアクセス処理はD層に実装する。
**デザイン ベース [#qe6113be]
-ASP.NETの場合、マスタページ
-Windows Formsの場合、ベースFormクラス
#ref(Presentation.png,left,nowrap,P層クラスのクラス構造)
を使用して、枠のデザイン・処理の共通化を図る。
またOpen棟梁では「デザイン ベース」中の~
コントロールのイベント処理を「個別デザイン」でオーバーライドして処理を変更できる。
**個別デザイン [#bd397b73]
**画面デザイン [#bd397b73]
-ASP.NETの場合Page
-Windows Formsの場合Form、
-WPFの場合Window / Page
を使用して、個別デザインを実装する。
**ユーザ コントロール [#f5cab22c]
[[ASP.NET Web Forms]]、[[Windows Forms]]、[[WPF]]などで~
**デザイン ベース [#qe6113be]
またOpen棟梁では「デザイン ベース」中の~
コントロールのイベント処理を「個別デザイン」で~
オーバーライドして処理を変更できる。
***マスタページ [#u7846190]
ASP.NETの場合、マスタページを使用して、枠のデザイン・処理の共通化を図る。
***ベースFormクラス [#a8cca4cc]
Windows Formsの場合、ベースFormクラスを使用して、枠のデザイン・処理の共通化を図る。
**コントロール [#n7f3429a]
***ユーザ コントロール [#f5cab22c]
ASP.NET Web Forms、Windows Forms、WPFなどで~
複数のコントロールを集約しパーツ化して、デザイン・処理の共通化を図ることができる。
またOpen棟梁では~
「ユーザ コントロール」中のコントロールのイベント処理を~
[[「個別デザイン」でオーバーライドして処理を変更できる>ボタンレイアウトの共通化]]。
**カスタム コントロール [#d9583d9a]
[[ASP.NET Web Forms]]、[[Windows Forms]]、[[WPF]]の~
***カスタム コントロール [#d9583d9a]
ASP.NET Web Forms、Windows Forms、WPFの~
標準のコントロールを継承し、動作をカスタマイズできる。
**HTMLヘルパー [#o0ea9e4d]
※[[ASP.NET MVC]]で使用
***HTMLヘルパー [#o0ea9e4d]
※ASP.NET MVCで使用
従来の[[ASP.NET Web Forms]]では、コントロールを使用して、ラベルやテキストボックスなどのコントロールを表示していたが、[[ASP.NET MVC]]では、コントロールは使用できない。その代わりに、[[ASP.NET MVC]]では HTMLヘルパーを使用する。
従来のASP.NET Web Formsでは、コントロールを使用して、ラベルやテキストボックスなどのコントロールを表示していたが、~
ASP.NET MVCでは、コントロールは使用できない。その代わりに、ASP.NET MVCでは HTMLヘルパーを使用する。
**コード・ビハインド [#mab2f1f4]
-ページのデザインとプログラム コードを分離して記述する、~
コード ビハインド モデルにおける、プログラム実装側のモジュール。
-なお、デザインは、前述の
--「[[画面デザイン>#bd397b73]]」
--「[[デザイン ベース>#qe6113be]]」
--「[[コントロール>#n7f3429a]]」
>に実装する。
**[[コード・ビハインド>#mab2f1f4]]の構造 [#s19f8cdc]
***画面コード親クラス1 [#j60074a5]
[[ベースクラス1]]相当
***画面コード親クラス2 [#g96b7cf4]
[[ベースクラス2]]相当
***画面コード クラス [#m5b680ac]
派生の末端。
*B層 [#kda3e339]
業務処理を実装するレイヤ。
-画面処理はP層
-データアクセス処理はD層に実装する。
**トランザクション ルート [#x6e0a757]
#ref(Business.png,left,nowrap,B層クラスのクラス構造)
**トランザクション [#j969ead8]
***トランザクション ルート(Tx-Root) [#x6e0a757]
トランザクション ルートとなるB層
-トランザクション ルートなのでB層からネストして呼び出すことはできない。
-コネクション管理処理にて生成したデータ アクセス制御クラス(Dam)を保持する。
-コネクション管理処理にて生成した[[データ アクセス制御クラス(Dam)>#s38b7c07]]を保持する。
-ファサード パターンで、処理を集約する(3層C/S方式でも1イベント、1リクエストに集約しトラフィックを軽減)
-共通化 処理の共通化を行うためのB層追加レイヤ
--トランザクション ルートでないのでB層からネストして呼び出すことができる。
--コネクション管理処理にて生成したデータ アクセス制御クラス(Dam)を、別途持ち回る必要がある。
***共通処理 [#db913772]
処理の共通化を行うためのクラス
-トランザクション ルートでないのでB層からネストして呼び出すことができる。
-コネクション管理処理にて生成した[[データ アクセス制御クラス(Dam)>#s38b7c07]]を、別途持ち回る必要がある。
**Tx-Rootの構造 [#bebcaef2]
***業務コード親クラス1 [#o7312e84]
[[ベースクラス1]]相当
***業務コード親クラス2 [#sc1ea1e7]
[[ベースクラス2]]相当
***業務コード クラス [#hebeea91]
派生の末端。
*D層 [#x5a04b9f]
データ アクセス処理を実装するレイヤ。
-画面処理はP層
-業務処理はB層に実装する。
**データ アクセス オブジェクト [#u87dd1e7]
#ref(DataAccess.png,left,nowrap,B層クラスのクラス構造)
**データ アクセス オブジェクト(Dao) [#o009664d]
-データ アクセスのためのオブジェクト
-コンストラクタからデータ アクセス制御クラス(Dam)を渡す必要がある。
-コンストラクタから[[データ アクセス制御クラス(Dam)>#s38b7c07]]を渡す必要がある。
**自作 Dao [#k5f9a0e9]
***自作 Dao [#k5f9a0e9]
任意の複数のSQLの実行、テーブルへのアクセスを実装できる。
**汎用 Dao [#fa1bb49d]
***汎用 Dao [#fa1bb49d]
-汎用Daoは呼び出し元が指定したSQLを処理可能。
-主に「参照系」の処理を実行する際に利用する。
**自動生成 Dao [#e057cc96]
***自動生成 Dao [#e057cc96]
-自動生成Daoは1つのテーブルへのCRUD処理が可能。
-主に「更新系」の処理を実行する際に利用する。
**Dao集約層 [#ad3600ab]
-汎用Dao、自動生成Daoを集約し、論理的なデータ アクセスを構成するD層追加レイヤ
***Dao集約層 [#ad3600ab]
[[汎用Dao、自動生成Daoを集約し、論理的なデータ アクセスを構成するD層追加レイヤ。>モジュール構成#ld4383a0]]
*データ アクセス制御クラス(Dam) [#s38b7c07]
動的SQLなど、各種D層機能を実装するデータ プロバイダのラッパークラス。
**[[Dao>#o009664d]]の構造 [#y7e814a3]
業務処理で複数の接続が必要な場合は、前述のコネクション管理処理において複数のDamを生成・保持する必要がある。また、複数のDBMS(データプロバイダ)に対応させる場合は、コネクション管理処理にてDBMS(データプロバイダ)毎に用意された指定の型でDamを生成・保持し、以降の処理ではDamをベースの型で扱うようにしてDBMS(データプロバイダ)固有型(機能)の使用を局所化する必要がある。
***データアクセス親クラス1 [#u023f4af]
[[ベースクラス1]]相当
***データアクセス親クラス2 [#i0867c1e]
[[ベースクラス2]]相当
***データアクセス クラス [#b452922a]
派生の末端。
**データ アクセス制御クラス(Dam) [#s38b7c07]
***概要 [#b910b559]
[[動的パラメタライズド・クエリ]]など、各種D層機能を実装するデータ プロバイダのラッパークラス。
-業務処理で複数の接続が必要な場合は、前述のコネクション管理処理において複数のDamを生成・保持する必要がある。
-また、複数のDBMS(データプロバイダ)に対応させる場合は、~
コネクション管理処理にてDBMS(データプロバイダ)毎に用意された指定の型でDamを生成・保持し、~
以降の処理ではDamをベースの型で扱うようにしてDBMS(データプロバイダ)固有型(機能)の使用を局所化する必要がある。
***種類 [#v366357e]
-同梱Dam
--DamSqlSvr~
System.Data.SqlClient用(SQLServer)
--DamOLEDB~
System.Data.OleDb用(OLEDB)
--DamODBC~
System.Data.Odbc用(ODBC)
-NuGet有り(OSS)
--DamMySQL~
MySql.Data.MySqlClient用(MySQL)
--DamPstGrS~
Npgsql用(PostgreSQL)
--DamManagedOdp~
Oracle.ManagedDataAccess.Client用(Oracle)
-Legacy
--DamDB2~
DB2用
--DamHiRDB~
HiRDB用
--DamOraOdp~
Oracle.DataAccess.Client用(Oracle)
-Discon
--DamOraClient~
System.Data.OracleClient用(Oracle)
-その他
--DamSqlDbWithMultiShard