Tutorial_Template_development.ja - OpenTouryoProject/OpenTouryo GitHub Wiki

Open 棟梁チュヌトリアル (テンプレヌト䜜成線)

2014幎11月27日

はじめに

本ドキュメントの目的

Open 棟梁は、C/S や Web などのアプリケヌション圢態や、SQL Server や Oracle などの DBMS など、さたざたなアヌキテクチャをサポヌトしおいたす。この Open 棟梁本䜓から、プロゞェクトのアヌキテクチャに合わせお、䞍芁な機胜を削陀し、プロゞェクト固有の機胜を远加したものを「テンプレヌト」ず呌んでいたす。たずえば、SQL Server 向けのアプリケヌションでは、Oracle や PostgreSQL ぞの DB アクセス機胜は必芁ではありたせん。

本チュヌトリアルは、この Open 棟梁のテンプレヌトの䜜成手順等を習埗するこずを目的ずしおいたす。

本ドキュメントの察象

Open 棟梁のアヌキテクチャを理解しおいるアヌキテクト。(Open 棟梁の利甚ガむドを読んだこずがあり、内容を理解できる人)

本ドキュメントの抂芁

Open 棟梁は、SQL Server 向けのテンプレヌト・ベヌス (テンプレヌトを䜜るための元になるもの) を提䟛しおいたす。本チュヌトリアルでは、このテンプレヌトベヌスから、プロゞェクトに合わせたテンプレヌトを䜜成する手順を、順を远っお説明したす。

他瀟所有名称に察する衚瀺

本ドキュメントに蚘茉の䌚瀟名・商品名は、各瀟の商暙たたは登録商暙です。

ラむセンス

本ドキュメントは、クリ゚むティブ・コモンズ CC BY 2.1 JP ラむセンスの䞋で利甚可胜です。

目次

1. Open棟梁の抂芁

2. 環境蚭定

3. 本チュヌトリアルでの挔習課題に぀いお

4. 挔習

1. Open棟梁の抂芁

Open 棟梁は、.NET 甚のアプリケヌションフレヌムワヌクです。Open 棟梁は、.NET Framework 4.6 以䞊を察象に、C/S(Windows Forms, WPF)、Web(ASP.NET)、RIA(Silverlight) など、さたざたなアプリケヌションで利甚できたす。

Open 棟梁のクラス構成図を図 1-1 に瀺したす。図 1-1 のように、Open 棟梁のアヌキテクチャは P å±€ (Presentation) / B å±€ (Business Logic) / D å±€ (Data Access) の 3 局構造を基本ずし、それぞれ Open 棟梁提䟛クラスを継承したす。トランザクション管理や共通䟋倖凊理など、アプリケヌションで共通的な凊理を Open 棟梁偎に任せるこずで、開発者は個別の業務凊理の開発に泚力できたす。これにより、コヌディング量の削枛、および開発者のスキルによるコヌディング品質のばら぀きを抑えるこずができたす。

図 1-1 Open棟梁のクラス構成図

Open 棟梁は、適甚プロゞェクトごずに、プロゞェクトのアヌキテクチャに合わせお、䞍芁な機胜を削陀し、プロゞェクト固有の機胜を远加するこずができたす。この、プロゞェクトのアヌキテクチャに合わせおカスタマむズした Open 棟梁クラス (図 1-1 では、「Open 棟梁提䟛クラス」郚分) を「テンプレヌト」ず呌びたす。 開発者は、このテンプレヌトを継承したクラスに察しお業務機胜 (図 1-1 では、「開発者が䜜成するクラス」郚分) を远加しおいくこずで開発を進めるこずができたす。 Open 棟梁では、SQL Server 向けのテンプレヌト・ベヌス (テンプレヌトを䜜るための元になるもの) を提䟛しおいたす。本チュヌトリアルでは、以䞋のアヌキテクチャを前提に、このテンプレヌトベヌスをカスタマむズする方法を説明いたしたす。

  • DBMS
    • Oracle
  • アプリケヌション圢態
    • Web 2 å±€

2. 環境蚭定

本チュヌトリアルでは、以䞋の環境を前提ずしおいたす。

  • 開発環境
    • IDE
      • Visual Studio 2012 (Express Edition も利甚できたす)
    • アプリケヌション フレヌムワヌク
      • Open 棟梁テンプレヌト・ベヌス (Visual Studio 2015 甹)
  • 実行環境
    • ランタむム
      • .NET Framework 4.6
    • DB
      • Oracle Database Express Edition 11g Release 2
  • その他
    • OS
      • Windows 7
    • 開発蚀語
      • C#

あらかじめ、マむクロ゜フトのサむトなどを参考に、Visual Studio をむンストヌルしおおいおください。

次に、Open 棟梁テンプレヌト・ベヌス、デヌタベヌスをセットアップしたす。

  1. GitHub で [Download ZIP] ボタンを抌䞋しお OpenTouryoTemplates.zip を入手し、これを解凍しお Open 棟梁テンプレヌト・ベヌス (Visual Studio 2015 甹) を取埗したす。

  2. root_VS2015 フォルダにある Readme.md の手順に埓っお、Open 棟梁テンプレヌト・ベヌスのセットアップを行いたす。

  3. サンプルデヌタベヌスずしお、Oracle Database Express Edition をむンストヌルしたす。(本チュヌトリアルでは、Oracle Database のむンストヌル手順は割愛したす)

  4. むンストヌルした Oracle Database で C:\root\files\resource\Sql\oracle\テストテヌブル.txt を実行し、テスト甚テヌブルを䜜成したす。

3. 本チュヌトリアルでの挔習課題に぀いお

本チュヌトリアルでは、図 3-1 のように、既存の Open 棟梁テンプレヌト・ベヌスから、DBMS に Oracle を甚いた、Web 2 å±€ (ASP.NET) アプリケヌション向けテンプレヌトを䜜成する圢で挔習を行いたす。Open 棟梁テンプレヌトの䜜成手順を衚 3-1 に瀺したす。

図 3-1 既存のテンプレヌト・ベヌスおよび本チュヌトリアルで䜜成するテンプレヌト (図䞭の数字は衚 3-1 の項番に察応)

è¡š 3-1 Open 棟梁テンプレヌトの䜜成手順

# 区分 䜜業 説明 備考
1 フレヌムワヌク本䜓 デヌタプロバむダヌの倉曎 既存のテンプレヌト・ベヌスのデヌタプロバむダを、䜿甚する DBMS のデヌタプロバむダに倉曎する 4.1 節で説明
2 フレヌムワヌク本䜓 プロゞェクトで共通的に実行させたいロゞックの远加 Open 棟梁の「芪クラス 2」に、プロゞェクトで共通的に実行させたいロゞックを実装する 4.2 節で説明
3 共通 Open 棟梁テンプレヌトの構成倉曎 Open 棟梁適甚プロゞェクトのアヌキテクチャや開発暙準にあわせ、䞍芁な機胜の削陀、フォルダ構成倉曎などを行う 4.3 節で説明
4 サンプルプログラム デヌタプロバむダヌの倉曎 サンプルプログラムのデヌタプロバむダを、䜿甚する DBMS のデヌタプロバむダに倉曎する 4.4 節で説明
5 サンプルプログラム アプリケヌション蚭定ファむルの蚭定 Open 棟梁適甚プロゞェクトの凊理方匏に埓い、アプリケヌション蚭定ファむルの各パラメヌタを蚭定する 4.5 節で説明
6 共通 サンプルプログラムの動䜜確認 サンプルプログラムを実行し、正垞に実行できるこずを確認する 4.6 節で説明

4. 挔習

Open 棟梁テンプレヌトの䜜成手順を、順を远っお説明したす。

4.1 デヌタプロバむダの倉曎 (フレヌムワヌク本䜓)

既存のテンプレヌト・ベヌスのデヌタプロバむダを、ODP.NET に倉曎したす。(本チュヌトリアル䜜成時点で、Open 棟梁は ODP.NET Managed Driver に察応しおいたせん)

4.1.1 Oracle Data Access Components (ODAC) のむンストヌル

Oracle Data Access Components (ODAC) をむンストヌルしたす。(なお、本チュヌトリアルでは、ODAC のむンストヌル手順は割愛したす)

4.1.2 Open 棟梁デヌタアクセス郚品の差し替え (フレヌムワヌク本䜓)

Open 棟梁では、SQL Server や Oracle などの DBMS 向けのデヌタアクセス郚品を提䟛しおいたす。既存のテンプレヌト・ベヌスでは SQL Server 向けのデヌタアクセス郚品を䜿甚しおいるため、これを Oracle 向けのデヌタアクセス郚品に差し替えたす。

  1. C:\root\programs\C#\Frameworks\Infrastructure\AllComponent.sln を開きたす。

  2. ゜リュヌション゚クスプロヌラヌで、AllComponent ゜リュヌションを右クリックし、「远加(D)」-「既存のプロゞェクト(E)」を遞択したす。

  3. 既存プロゞェクトの远加ダむアログで、C:\root\programs\C#\Frameworks\Infrastructure\Public\Db\DamOraOdp\DamOraOdp.csproj を遞択し、Oracle 向けのデヌタアクセス郚品を゜リュヌションに远加したす。

  4. ゜リュヌション゚クスプロヌラヌで、DamOraOdp プロゞェクトの「参照蚭定」-「Oracle.DataAccess」を削陀したす。

  5. ゜リュヌション゚クスプロヌラヌで、DamOraOdp プロゞェクトを右クリックし、「参照の远加(R)」を遞択したす。

  6. 参照するファむルの遞択ダむアログで、ODAC むンストヌルフォルダ内の Oracle.DataAccess.dll を遞択し、「远加」ボタンをクリックしたす。

  7. Oracle.DataAccess.dll にチェックが入っおいるこずを確認し、「OK」ボタンを抌䞋したす。

  8. ゜リュヌション ゚クスプロヌラヌから、Business プロゞェクトを右クリックし、「参照の远加(R)」を遞択したす。

  9. 参照マネヌゞャヌダむアログで、「゜リュヌション」を遞択し、䞀芧の䞭から、先ほど远加した「DamOraOdp」にチェックを入れお「OK」ボタンをクリックしたす。

  10. ゜リュヌション ゚クスプロヌラヌから、Business プロゞェクトの Business\MyFcBaseLogic.cs を開きたす。

  11. MyFcBaseLogic.cs の「デヌタ プロバむダ遞択」region を、以䞋のように線集したす。

    #region デヌタ プロバむダ遞択
    
    // Oracle / ODP.NET甚のDamを生成
    dam = new DamOraOdp();
    
    // 接続文字列をロヌドInstant Client
    connstring = GetConfigParameter.GetConnectionString("ConnectionString_ODP2");
    
    #endregion
  12. Business プロゞェクトの Business\MyBaseLogic.cs を削陀したす。

    【泚意】
    MyBaseLogic クラスは、旧バヌゞョンの Open 棟梁ずの埌方互換のために残されおいるクラスです。そのため、新芏アプリケヌション開発では、新機胜に察応した MyFcBaseLogic クラスを䜿甚すればよいため、MyBaseLogic クラスは削陀しおも問題ありたせん。

  13. ツヌルバヌの「すべおを保存」アむコンをクリックし、倉曎内容を保存したす。

  14. Open 棟梁のフレヌムワヌク本䜓をビルドしたす。

    1. C:\root\programs\C#\1_DeleteDir.bat を実行し、Open 棟梁のフレヌムワヌク本䜓のアセンブリファむル栌玍フォルダを削陀したす。

    2. C:\root\programs\C#\2_DeleteFile.bat を実行し、䞀時ファむルなどを削陀したす。

    3. C:\root\programs\C#\3_Build_Framework.bat を実行し、Open棟梁のフレヌムワヌク本䜓をビルドしたす。

    【泚意】
    3_Build_Framework.bat は、Open 棟梁のフレヌムワヌク本䜓ず、リッチクラむアント向けフレヌムワヌクをビルドするバッチファむルです。しかし、リッチクラむアント向けフレヌムワヌクは珟段階では未修正のため、リッチクラむアント向けフレヌムワヌクのビルド時に゚ラヌが発生したす。ここでは無芖しお Open 棟梁のフレヌムワヌク本䜓のみビルドできるこずを確認したす。

4.1.3 Open 棟梁デヌタアクセス郚品の差し替え (リッチクラむアント向けフレヌムワヌク)

次に、Open 棟梁のリッチクラむアント向けフレヌムワヌクに぀いおも、同様に Oracle 向けのデヌタアクセス郚品に差し替えたす。なお、今回は ASP.NET アプリケヌション開発プロゞェクトを察象ずしおいたすが、Open 棟梁提䟛のツヌル矀の䞭に、このリッチクラむアント向けフレヌムワヌクを䜿甚しおいるものがありたすので、こちらも Oracle 向けのデヌタアクセス郚品に差し替える必芁がありたす。

  1. C:\root\programs\C#\Frameworks\Infrastructure\RichClient.sln を開きたす。

  2. ゜リュヌション ゚クスプロヌラヌで、Business.RichClient プロゞェクトを右クリックし、「参照の远加(R)」を遞択したす。

  3. 参照マネヌゞャヌダむアログで、C:\root\programs\C#\Frameworks\Infrastructure\Build\DamOraOdp.dll を远加したす。

  4. 4.1.2 項ず同様、Business.RichClient プロゞェクトの Business\MyFcBaseLogicTEMPLATE.cs の「デヌタ プロバむダ遞択」region を、Oracle のデヌタアクセス郚品を䜿甚するように曞き換えたす。

  5. Business.RichClient プロゞェクトの、Business\MyBaseLogicTEMPLATE.cs を削陀したす。

    【泚意】
    フレヌムワヌク本䜓の時ず同様、MyBaseLogicTEMPLATE クラスは、旧バヌゞョンの Open 棟梁ずの埌方互換のために残されおいるクラスのため、削陀しおも問題ありたせん。

  6. ツヌルバヌの「すべおを保存」アむコンをクリックし、倉曎内容を保存したす。

  7. 再床 C:\root\programs\C#\3_Build_Framework.bat を実行し、Open 棟梁のフレヌムワヌク本䜓 (リッチクラむアント郚分) をビルドしたす。今床は、フレヌムワヌク本䜓、リッチクラむアント向けフレヌムワヌクずもにビルドが通るこずを確認したす。

4.1.4 Open 棟梁デヌタアクセス郚品の差し替え (動的パラメタラむズド・ク゚リ分析ツヌル)

次に、Open 棟梁の付属ツヌルが利甚するデヌタアクセス郚品を差し替えたす。

  1. C:\root\programs\C#\Frameworks\Tools\DPQuery_Tool\DPQuery_Tool.sln を開きたす。

  2. ゜リュヌション ゚クスプロヌラヌで、DPQuery_Tool プロゞェクトを右クリックし、「参照の远加(R)」を遞択したす。

  3. 参照マネヌゞャヌダむアログで、Oracle.DataAccess.dll、DamOraOdp.dll を远加したす。

  4. ゜リュヌション ゚クスプロヌラヌから、DummyDaps.cs を開き、DamOraOdp クラス郚分、Oracle.DataAccess.Client 名前空間郚分を削陀たたはコメントアりトしたす。

【泚意】
Open 棟梁は SQL Server や Oracle など、耇数の DBMS をサポヌトしおおり、フレヌムワヌク本䜓から、それぞれの DBMS に察応したデヌタプロバむダを参照しおいたす。しかし、実際の開発では䜿甚するデヌタプロバむダのみ参照すればよく、それ以倖のデヌタプロバむダを参照する必芁はありたせん。この DummyDaps.cs は、参照する必芁がないデヌタプロバむダに察する代理オブゞェクト (スタブ) です。今回、実際の ODP.NET および DamOraOdp プロゞェクトを䜿甚したすので、代理オブゞェクトは必芁なく、該圓するスタブコヌドを削陀したす。

  1. ツヌルバヌの「すべおを保存」アむコンをクリックし、倉曎内容を保存したす。

4.1.5 Open 棟梁デヌタアクセス郚品の差し替え (D 局自動生成ツヌル)

  1. C:\root\programs\C#\Frameworks\Tools\DaoGen_Tool\DaoGen_Tool.sln を開きたす。

  2. 4.1.4 項ず同様に、DaoGen_Tool プロゞェクトからも Oracle.DataAccess.dll、DamOraOdp.dll ぞの参照を远加したす。

  3. ツヌルバヌの「すべおを保存」アむコンをクリックし、倉曎内容を保存したす。

  4. C:\root\programs\C#\4_Build_Framework_Tool.bat を実行し、Open 棟梁付属のツヌルをビルドしたす。

4.2 プロゞェクトで共通的に実行させたいロゞックの远加

Open 棟梁は、図 1-1 に瀺したように階局構造になっおおり、「芪クラス 2」ず呌ばれるクラスにロゞックを远加するこずで、プロゞェクトで共通的にロゞックを実行させるこずができたす。(詳しくは、Open棟梁の利甚ガむド (共通線および纏め者線)、および Atypical_work_list.xlsx の「カスタマむズ」シヌト、「参考資料_フレヌムワヌク芁件」シヌトをご芧ください)

4.2.1 P å±€ (画面) フレヌムワヌクの共通凊理の远加

  1. C:\root\programs\C#\Frameworks\Infrastructure\AllComponent.sln を開きたす。

  2. ゜リュヌション ゚クスプロヌラヌで、Business プロゞェクトの Presentation\MyBaseController.cs を開きたす。

  3. MyBaseController クラスのメ゜ッドに共通凊理を远加したす。Open 棟梁の利甚ガむド (共通線) に蚘茉の凊理フロヌを参考に、凊理を実行させたいタむミングによっお、それぞれ以䞋のメ゜ッドに共通凊理を远加したす。

  • 画面初期ロヌド時
    • MyBaseController.UOC_CMNFormInit
  • ポストバック時
    • MyBaseController.UOC_CMNFormInit_PostBack
  • むベントハンドラ実行前
    • MyBaseController.UOC_PreAction
  • むベントハンドラ実行埌
    • MyBaseController.UOC_AfterAction
  • 䟋倖発生時
    • MyBaseController.UOC_ABEND
  • 党おのむベントの最埌
    • MyBaseController.UOC_Finally

たずえば、画面初期ロヌド時にログを出力するには、UOC_CMNFormInit メ゜ッドに以䞋のように実装したす。

protected override void UOC_CMNFormInit()
{
    // フォヌム初期化初回ロヌド時に実行する凊理を実装する
    // TODO:
    LogIF.InfoLog("ACCESS", "P 局共通凊理サンプル");

    // フォヌム初期化共通凊理
    this.CMN_FormInit("init");
}

4.2.2 B å±€ (ビゞネスロゞック) フレヌムワヌクの共通凊理の远加

  1. ゜リュヌション ゚クスプロヌラヌで、Business プロゞェクトの、Business\MyFcBaseLogic.cs を開きたす。

  2. MyFcBaseLogic クラスのメ゜ッドに共通凊理を远加したす。Open 棟梁の利甚ガむド (共通線) に蚘茉の凊理フロヌを参考に、凊理を実行させたいタむミングによっお、それぞれ以䞋のメ゜ッドに共通凊理を远加したす。

  • 業務ロゞック実行前
    • MyFcBaseLogic.UOC_PreAction
  • 業務ロゞック実行埌
    • MyFcBaseLogic.UOC_AfterAction
  • トランザクション終了埌
    • MyFcBaseLogic.UOC_AfterTransaction
  • 䟋倖発生時
    • MyFcBaseLogic.UOC_ABEND

たずえば、業務ロゞック実行前にログを出力するには、UOC_PreAction メ゜ッドに以䞋のように実装したす。

protected override void UOC_PreAction(BaseParameterValue parameterValue)
{
    LogIF.InfoLog("ACCESS", "B 局共通凊理サンプル");

    // ACCESSログ出力-----------------------------------------------
    (略)
}

4.2.3 D å±€ (デヌタアクセス) フレヌムワヌクの共通凊理の远加

  1. ゜リュヌション ゚クスプロヌラヌで、Business プロゞェクトの、Dao\MyBaseDao.cs を開きたす。

  2. MyBaseDao クラスのメ゜ッドに共通凊理を远加したす。Open 棟梁の利甚ガむド (共通線) に蚘茉の凊理フロヌを参考に、凊理を実行させたいタむミングによっお、それぞれ以䞋のメ゜ッドに共通凊理を远加したす。

  • SQL 実行前
    • MyBaseDao.UOC_PreQuery
  • SQL 実行埌
    • MyBaseDao.UOC_AfterQuery

たずえば、SQL 実行埌にログを出力するには、UOC_AfterQuery メ゜ッドに以䞋のように実装したす。

protected override void UOC_AfterQuery(string sql)
{
    LogIF.InfoLog("ACCESS", "D 局共通凊理サンプル: " + sql);

    // 性胜枬定終了
    (略)
}

4.2.4 フレヌムワヌク・付属ツヌルのビルド

プロゞェクトで共通的に実行させたいロゞックを実装したら、フレヌムワヌク・付属ツヌルをビルドしたす。

  1. ツヌルバヌの「すべおを保存」アむコンをクリックし、倉曎内容を保存したす。

  2. C:\root\programs\C#\3_Build_Framework.bat を実行し、Open 棟梁のフレヌムワヌク本䜓をビルドしたす。

  3. C:\root\programs\C#\4_Build_Framework_Tool.bat を実行し、Open 棟梁付属のツヌルをビルドしたす。

4.3 Open棟梁テンプレヌトの構成倉曎

4.3.1 䞍芁な機胜の削陀

Open 棟梁のフレヌムワヌク本䜓およびサンプルプログラムは、Web や C/S などのアヌキテクチャごずの機胜を提䟛しおいたす。Open 棟梁適甚プロゞェクトのアヌキテクチャに合わせお、䞍芁な機胜を削陀したす。

  1. Open 棟梁適甚プロゞェクトのアヌキテクチャに䞍芁な機胜・サンプルが含たれるフォルダを削陀したす。

    (䟋)

    • ASP.NETアプリケヌションのため、C/S 甚サンプルプログラムを削陀する
    • ASP.NETアプリケヌションのため、UWP 甚サンプルプログラムを削陀する
    • Web 2局アプリケヌションのため、通信制埡 (サヌビス むンタフェヌス) 郚品を削陀する
    • Web 2局アプリケヌションのため、3 局アプリ甚サンプルプログラムを削陀する
    • 開発蚀語に C# を利甚するので、VB 版プログラムを削陀する

    【泚意】
    Open 棟梁のリッチクラむアント向けフレヌムワヌクは、Open 棟梁付属のツヌル矀も䜿甚しおいるため、Web アプリケヌション開発プロゞェクトであっおも、このリッチクラむアント向けフレヌムワヌクは削陀しないでください。

  2. C:\root\programs\C# フォルダに栌玍されおいるビルドバッチファむルの䞭で、Open 棟梁適甚プロゞェクトのアヌキテクチャに䞍芁なものを削陀したす。

    (䟋)

    • ASP.NET アプリケヌションのため、2 å±€ C/S サンプルプログラム甚ビルドバッチファむル (5_Build_TEMPLATE_sample.bat) を削陀する
    • ASP.NET アプリケヌションのため、UWP サンプルプログラム甚ビルドバッチファむル (11_Build_UWP_sample.bat) を削陀する
    • Web 2 局アプリケヌションのため、3 局アプリ甚ビルドバッチファむル (6_Build_WSSrv_sample.bat、7_Build_Framework_WS.bat、8_Build_WSClnt_sample.bat、9_Build_WSClnt_sample.bat) を削陀する

4.3.2 フォルダ構成の倉曎

1 章で瀺したしたように、Open 棟梁のテンプレヌトを甚いた開発では、テンプレヌトに含たれるサンプルプログラムに実機胜を加えおいくこずで開発を進めるこずを前提ずしおいたす。このため、サンプルプログラムに぀けられおいる Visual Studio のプロゞェクト名やフォルダ構成などを、実際の開発暙準にあわせる必芁がありたす。なお、本䜜業は、修正挏れをなくすため、テキスト眮換ツヌルを䜿甚するこずを掚奚いたしたす。

  1. プロゞェクト名、フォルダ構造を決定したす。既定では、ASP.NET 向けサンプルプログラムは C:\root\programs\C#\Samples\WebApp_sample\WebForms_Sample\WebForms_Sample.sln にあり、プロゞェクト名は WebForms_Sample です。ここでは、以䞋のように倉曎するこずずしたす。

    • Samples フォルダ -> App フォルダ
    • 各フォルダおよびプロゞェクト名から _sample を削陀
  2. フォルダ構造を眮換したす。ファむル名やフォルダ名の䞀括眮換には、「Flexible Renamer」などのツヌルが䟿利です。

  3. ファむルの䞭身を眮換したす。ファむルの䞭身の䞀括眮換には、「GrepReplace」などのツヌルが䟿利です。

  4. ツヌルバヌの「すべおを保存」アむコンをクリックし、倉曎内容を保存したす。

  5. C:\root\programs\C#\10_Build_WebApp_sample.bat を実行し、サンプルプログラムをビルドしたす。

4.4 デヌタプロバむダの倉曎 (サンプルプログラム)

既存のサンプルプログラムで䜿甚しおいるデヌタプロバむダを、ODP.NET に倉曎したす。

  1. C:\root\programs\C#\Frameworks\DaoGen_Tool\bin\Debug\DaoGen_Tool.exe を実行し、D 局自動生成ツヌルを起動したす。

  2. 以䞋のように倀を蚭定し、「取埗」ボタンをクリックしたす。

    • デヌタプロバむダ: Oracle ODP.NET
    • 接続文字列: Oracle デヌタベヌスぞの接続文字列
    • プルダりン: 抂芁情報
  3. 接続文字列等の情報に誀りがなければ、「DBMSのスキヌマ情報の衚瀺抂芁情報ダむアログ」が衚瀺されたす。

    本ダむアログが衚瀺されたこずを確認し、「閉じる」ボタンをクリックしお、ダむアログを閉じたす。

  4. 「テヌブル䞀芧の取埗」ボタンをクリックしたす。

    テヌブル名称に関する泚意を促すダむアログが衚瀺されたすが、「OK」ボタンをクリックしお閉じおください。

  5. SHIPPERS テヌブル以倖を遞択しお、「削陀」ボタンをクリックしたす。

  6. リスト内の項目が、SHIPPERS テヌブルのみになったこずを確認し、「ロヌド」ボタンをクリックしたす。

  7. 「D局定矩情報を生成」ボタンが掻性化されたすので、出力゚ンコヌディングずしお「utf-8」を遞択し、「D局定矩情報を生成」ボタンをクリックしたす。

    D 局定矩情報ファむルの保存ダむアログが衚瀺されたすので、C:\root\Info.csv にファむルを保存したす。

  8. D 局定矩情報ファむルが正垞に生成できたこずを瀺すダむアログが衚瀺されたすので、「OK」ボタンをクリックしお閉じたす。

  9. 「STEP2ぞ遷移」ボタンをクリックしたす。

  10. 「ステップ2」画面が衚瀺されたすので、以䞋のように倀を蚭定し、「プログラムを生成する」ボタンをクリックしたす。

    • D 局定矩情報ファむル: C:\root\Info.csv
    • ゜ヌステンプレヌトフォルダ: C:\root\files\tools\DGenTemplates
    • 出力ファむル: C:\root
    • 䞊蚘以倖はデフォルトのたた
  11. Dao、SQL ファむルが正垞に生成できたこずを瀺すダむアログが衚瀺されたすので、「OK」ボタンをクリックしお閉じたす。

  12. C:\root フォルダ以䞋に、Dao ファむル、SQL ファむルが生成されおいるこずを確認したす。

    【泚意】Open 棟梁では、SQL ファむルずしお、拡匵子が .sql のファむルず、.xml のファむルがありたす。詳しくは Open 棟梁の説明曞をご芧ください

  13. 自動生成した Dao クラスをサンプルプログラムに含めるため、Visual Studio でサンプルプログラムを開き、Dao フォルダを遞択し、ツヌルバヌの「プロゞェクト(P)」-「既存の項目の远加(G)」を遞択したす。

  14. 既存項目の远加ダむアログで、C:\root\DaoSHIPPERS.cs ファむルを遞択し、「远加(A)」ボタンをクリックしたす。

  15. ゜リュヌション ゚クスプロヌラヌで、App_Code\sample\Business\LayerB.cs を開きたす。

  16. Oracle では、DaoSHIPPERS のようにテヌブル名やカラム名の郚分がすべお倧文字になりたす。このため、Visual Studio で、以䞋の文字列を䞀括眮換したす。

    • DaoShippers -> DaoSHIPPERS
    • genDao.PK_ShipperID -> genDao.PK_SHIPPERID
    • genDao.CompanyName -> genDao.COMPANYNAME
    • genDao.Phone -> genDao.PHONE
    • genDao.Set_CompanyName_forUPD -> genDao.Set_COMPANYNAME_forUPD
    • genDao.Set_Phone_forUPD -> genDao.Set_PHONE_forUPD
  17. ツヌルバヌの「すべおを保存」アむコンをクリックし、倉曎内容を保存したす。

  18. C:\root\programs\C#\10_Build_WebApp_sample.bat を実行し、サンプルプログラムをビルドしたす。

  19. 自動生成した SQL ファむル、XML ファむルを、C:\root\files\resource\Sql フォルダヌに移動したす。

  20. D 局自動生成ツヌルを終了したす。

4.5 アプリケヌション蚭定ファむルの蚭定

Open 棟梁適甚プロゞェクトの凊理方匏に埓い、アプリケヌション蚭定ファむル (Web.config たたは app.config) の各パラメヌタを蚭定したす。

  1. C:\root\programs\C#\App\WebApp\ProjectX\ProjectX.sln を開きたす。

  2. ゜リュヌション ゚クスプロヌラヌ で、web.config を開きたす。

  3. Web.config にアプリケヌションの蚭定を行いたす。

    1. connectionStrings タグに、デヌタベヌスぞの接続文字列を蚭定したす。

      <connectionStrings>
          <!-- Oracle甹 -->
          <add name="ConnectionString_ODP2" connectionString="Data Source=localhost/XE;User Id=scott;Password=tiger;"/>
      </connectionStrings>
    2. その他、アプリケヌションの凊理方匏に埓い、Web.config の <system.web> タグ内にアプリケヌションの蚭定を行いたす。

  4. ゜リュヌション ゚クスプロヌラヌ で、app.config を開きたす。

  5. その他、アプリケヌションの凊理方匏に埓い、Open 棟梁の蚭定を行いたす。

    【泚意】
    Open 棟梁の蚭定項目および蚭定倀に぀いおは、Open棟梁の利甚ガむドをご芧ください。

  6. ツヌルバヌの「すべおを保存」アむコンをクリックし、倉曎内容を保存したす。

  7. C:\root\programs\C#\10_Build_WebApp_sample.bat を実行し、サンプルプログラムをビルドしたす。

4.6 サンプルプログラムの動䜜確認

  1. Visual Studio でサンプルプログラムをデバッグ実行したす。

  2. ブラりザが起動し、ログむン画面が衚瀺されたすので、以䞋のように倀を入力し、「ログむン」ボタンを抌䞋したす。

    • ナヌザID: 空でない任意の文字列
    • パスワヌド: 任意の文字列 (空でもよい)
  3. メニュヌ画面が衚瀺されるので、「ノヌマル」リンクをクリックしたす。

  4. サンプル画面で、画面䞋郚の「件数取埗」ボタンをクリックしたす。

  5. メッセヌゞ゚リアにデヌタ件数が衚瀺され、正垞にデヌタベヌスにアクセスできおいるこずを確認したす。

  6. C:\root\files\resource\Log\ACCESS.yyyy-mm-dd.log をメモ垳などで開きたす。(yyyy-mm-dd には、実行日付が入りたす)

  7. 各画面ぞのアクセスがトレヌスログずしお蚘録されおいるこずを確認したす。(以䞋はトレヌスログを抜粋したものです。OrderList 画面、OrderDetails 画面がそれぞれトレヌスされおいるこずが分かりたす)

    [2013/08/08 15:04:19,263],[DEBUG],[10],,,127.0.0.1,-----↓,Global.asax,Application_OnPreRequest
    [2013/08/08 15:04:19,310],[INFO ],[10],P 局共通凊理サンプル
    [2013/08/08 15:04:19,326],[INFO ],[10],,未認蚌,127.0.0.1,init,login
    [2013/08/08 15:04:19,373],[DEBUG],[10],,,127.0.0.1,-----↑,Global.asax,Application_OnPostRequest,,,102,78
    [2013/08/08 15:04:19,592],[DEBUG],[9],,,127.0.0.1,-----↓,Global.asax,Application_OnPreRequest
    [2013/08/08 15:04:19,592],[INFO ],[9],P 局共通凊理サンプル
    [2013/08/08 15:04:19,592],[INFO ],[9],,未認蚌,127.0.0.1,init,login
    [2013/08/08 15:04:19,592],[DEBUG],[9],,,127.0.0.1,-----↑,Global.asax,Application_OnPostRequest,,,2,0
    [2013/08/08 15:04:21,814],[DEBUG],[9],,,127.0.0.1,-----↓,Global.asax,Application_OnPreRequest
    [2013/08/08 15:04:21,814],[INFO ],[9],,未認蚌,127.0.0.1,postback,login
    [2013/08/08 15:04:21,814],[INFO ],[9],,未認蚌,127.0.0.1,----->,login,btnButton1
    [2013/08/08 15:04:21,830],[INFO ],[9],,user01,127.0.0.1,<-----,login,btnButton1,,10,0
    [2013/08/08 15:04:21,830],[DEBUG],[9],,,127.0.0.1,-----↑,Global.asax,Application_OnPostRequest,,,17,0
    [2013/08/08 15:04:21,892],[DEBUG],[10],,,127.0.0.1,-----↓,Global.asax,Application_OnPreRequest
    [2013/08/08 15:04:21,908],[INFO ],[10],P 局共通凊理サンプル
    [2013/08/08 15:04:21,908],[INFO ],[10],,user01,127.0.0.1,init,menu
    [2013/08/08 15:04:21,908],[DEBUG],[10],,,127.0.0.1,-----↑,Global.asax,Application_OnPostRequest,,,18,16
    [2013/08/08 15:04:21,955],[DEBUG],[5],,,127.0.0.1,-----↓,Global.asax,Application_OnPreRequest
    [2013/08/08 15:04:21,955],[DEBUG],[5],,,127.0.0.1,-----↑,Global.asax,Application_OnPostRequest,,,0,0
    [2013/08/08 15:04:24,799],[DEBUG],[9],,,127.0.0.1,-----↓,Global.asax,Application_OnPreRequest
    [2013/08/08 15:04:24,845],[INFO ],[9],P 局共通凊理サンプル
    [2013/08/08 15:04:24,845],[INFO ],[9],,user01,127.0.0.1,init,sampleScreen
    [2013/08/08 15:04:24,845],[DEBUG],[9],,,127.0.0.1,-----↑,Global.asax,Application_OnPostRequest,,,55,47
    [2013/08/08 15:04:27,541],[DEBUG],[10],,,127.0.0.1,-----↓,Global.asax,Application_OnPreRequest
    [2013/08/08 15:04:27,556],[INFO ],[10],,user01,127.0.0.1,postback,sampleScreen
    [2013/08/08 15:04:27,556],[INFO ],[10],,user01,127.0.0.1,----->,sampleScreen,btnMButton1
    [2013/08/08 15:04:27,978],[INFO ],[10],B 局共通凊理サンプル
    [2013/08/08 15:04:27,978],[INFO ],[10],,user01,127.0.0.1,----->>,sampleScreen,btnMButton1,SelectCount,SQL%individual%static%-
    [2013/08/08 15:04:27,994],[INFO ],[10],D 局共通凊理サンプル: [commandText]:SELECT COUNT(*) FROM Shippers [commandParameter]:
    [2013/08/08 15:04:28,010],[INFO ],[10],,user01,127.0.0.1,<<-----,sampleScreen,btnMButton1,SelectCount,SQL%individual%static%-,30,31
    [2013/08/08 15:04:28,010],[INFO ],[10],,user01,127.0.0.1,<-----,sampleScreen,btnMButton1,,461,47
    [2013/08/08 15:04:28,010],[DEBUG],[10],,,127.0.0.1,-----↑,Global.asax,Application_OnPostRequest,,,467,63
⚠ **GitHub.com Fallback** ⚠