このサンプルコードは Moca.NET Framework を使った Web フォームアプリケーションの作成方法を示します。
- Db プロジェクトをスタートアッププロジェクトに設定して F5 キーを押して実行します。(Db が配置される)
- MocaDemo プロジェクトの接続文字列をDbプロジェクトの「プロパティ」-「デバッグ」-「ターゲット接続文字列」に合わせます。
- MocaDemo プロジェクトをスタートアッププロジェクトに設定して F5 キーを押して実行します。(ブラウザが起動してデモが動作する)
動作しないときはDBの配置が出来ていないと思われるので、デモ用にDBを作成して接続文字列を変更後、再度実行してください。
通常通りに新規にプロジェクトを作成してください。
※VB.NET の場合は、Moca.NETのプロジェクトテンプレートを使うこともできます。
Nuget にて Moca のライブラリを追加します。
- Web の場合、『Moca.NET Project Template Web Form』
※Moca.NETのプロジェクトテンプレートを使ったときは既に追加されているため不要です。
追加した Moca のライブラリを最新にします。
WebConfigTransformAssemblyInfo.(vb or cs) ファイルの log4net 部分のアセンブリ属性を有効にする。
C# : Properties\WebConfigTransformAssemblyInfo.cs
[assembly: log4net.Config.XmlConfigurator(ConfigFile=@"log4net.config", Watch=true)]
VB : My Project\WebConfigTransformAssemblyInfo.vb
<Assembly: log4net.Config.XmlConfigurator(ConfigFile:="log4net.config", Watch:=True)>
WebConfigTransformAssemblyInfo.(vb or cs) ファイルの Moca 部分のアセンブリ属性を有効にし、暗号種別、暗号化(複合化)したいセクション名を入力する。
C# :
[assembly: Moca.Configuration.SectionProtection(Moca.Configuration.ProtectionProviderType.DPAPI, "Section Name")]
VB :
<Assembly: Moca.Configuration.SectionProtection(Moca.Configuration.ProtectionProviderType.DPAPI, "Section Name")>
プログラムの起動時に次のメソッドを実行する。 ここまで手順通りであれば、MocaAssemblyInfo.(vb or cs) ファイルにて WebActivator を利用して実行するようになっています。
Moca.Configuration.SectionProtector.Protect()
WebActivator を利用して初期化・終了処理を行っています。 アセンブリ属性は MocaAssemblyInfo.(vb or cs) ファイルに定義してあります。
Moca.NET テンプレートの 「Web フォーム」から作成してください。
※ フォームの継承先が Page から Moca.Web.UI.MocaPage に変更されて作成されます。
なお、マスターページ、ユーザーコントロール、APIコントローラークラスも同様に Moca のクラスを継承するように作成されます。
Moca.NET テンプレートの 「Web Session インタフェース」を使って作成します。
インタフェースへセッション変数名でプロパティを定義します。
セッションを利用するページで Protected 以上でインタフェースを使ったフィールドを定義します。
※ 実装クラスは不要です。Moca.NET で実行時に自動的にセッションを割り当てます。
Moca.NET テンプレートの 「Web Cookie インタフェース」を使って作成します。
インタフェースには HttpCookie を返す読み取り専用プロパティを定義し、インタフェースを使う時はスニペットの ICookie を使ってフィールドを定義します。
クエリー文字列を取得するためのインタフェースを定義します。
<Moca.Web.Attr.QueryString()>
Public Interface IQueryStrings
<Moca.Web.Attr.QueryStringName("c")>
Property Count As String
End Interface
ビューステートを使うページで IViewState スニペットを使ってインタフェースを定義します。 ビューステートを利用するページで Protected 以上でインタフェースを使ったフィールドを定義します。
Moca.NET では、データベースアクセスクラスを作成してアクセスします。
Moca.NET テンプレートの「Entity クラス」で作成します。
ウィザード形式で、接続先DBを選択しSQLステートメントを実行することでクラスを作成します。
Moca.NET テンプレートの「Dao クラス」で作成でき、インタフェースと実装クラスの構成で作成されます。 接続先はインタフェース毎の指定となり、Dao 属性の引数に設定ファイル(Config)の connectionStrings キーを指定することでインタフェース内のメソッドがデータベースへアクセスできるようになります。 メソッド内のコードはスニペット(DAODelete、DAOInsert、DAOSelect、DAOStoredPrepare、DAOStoredSelect、DAOStoredUpd、DAOUpdate)を使ってください。
更新系のSQLステートメントを実行するときは、インタフェースのメソッドへ Transaction 属性を付けてください。 この属性を付けると、トランザクションの開始、コミット、例外発生時のロールバックを自動で行います。 TransactionScope(MSDTC)を使うときは設定ファイルの moca セクションの transaction タグの Type 属性へ scope を指定し、使わないときは local を指定してください。
クラスのフィールドとして Protected 以上で定義してください。 インスタンス化はライブラリで自動で行うので New しないでください。
Moca.NET では、アスペクト属性を使ってインターセプターを割り込ませることができます。 アスペクト属性を付けたメソッドを持つクラスは、使う側のクラスをインジェクト(Moca.Di.MocaInjector.Inject())してください。 インターセプタークラスは「AOP メソッドインターセプタークラス」テンプレートを使って作成します。 DaoクラスでDBをメインに使ったインターセプターは「AOP Daoインターセプタークラス」テンプレートを使用してください。
Moca.NET では透過プロキシを使っています。Visual Studio 2015で透過型プロキシの値をウォッチしても現状だと見ることができません。下記を参考にオプションの設定を変更することで見ることができるようになります。