.NET 開発基盤部会 Blog

.NET 開発基盤部会 Blog >> 記事詳細

2017/03/27

Open 棟梁の使い方(実践編)第6回

Tweet ThisSend to Facebook | by:nishino

第 6 回 Open 棟梁でクラウドアプリ開発 (2)

こんにちは!今回は、前回に引き続き、Microsoft Azure の PaaS 環境である「Web Apps」に Open 棟梁の Web アプリケーションを展開する方法をご紹介していきたいと思います。

Open 棟梁の設定ファイル、SQL ファイルの移行

Open 棟梁には、以下のようなさまざまな設定ファイルが存在します。

  • 画面遷移や通信制御などの設定ファイル
    既定ではC:\root\files\resource\Xml フォルダに格納
  • ログ出力の設定ファイル
    既定ではC:\root\files\resource\Log フォルダに格納
また、データベースアクセスに使用する SQL ファイルは、既定ではC:\root\files\resource\Sql フォルダに格納されます。

Azure Web Apps では、このパスが見えないので、以下の修正が必要です。

  • 設定ファイルをサンプル Web アプリケーションに含める
  • [ソリューション エクスプローラー] で設定ファイルを選択し、[プロパティ] ペインの [ビルド アクション] を「埋め込みリソース」にする
  • サンプル Web アプリケーションの app.config を開き、以下のように修正する
    • Open 棟梁の設定ファイル
      C:\root\files\resource\xxxとなっているところを、[既定の名前空間名].[フォルダ名].[ファイル名]に修正する
    • SQL ファイル
      C:\root\files\resource\Sqlとなっているところを、[既定の名前空間名].[フォルダ名]に修正する

ログファイルの移行

Azure Web Apps の診断ログの有効化

Azure の組み込みの診断機能を利用することで、Web Apps を診断し、診断結果をログに残すことができます。 この診断機能は、プログラムから出力された「トレースログ」を監視し、そのトレースログをファイルシステムまたは Blob に出力します。 Azure Web Apps の診断ログを有効化する方法については、以下のサイトを参照してください。

このサイトに書かれているように、Microsoft Azure のポータル画面から、Azure App Service の「診断ログ」メニューで、必要なログの設定を行ってください。

診断ログの有効化

Open 棟梁のログ部品

Open 棟梁のログ部品は、オープンソースのlog4netを使用しています。 既定では、Open 棟梁のログ部品を使用して出力されたログは、.log ファイルとしてファイルシステムに保存されます。 しかし、Azure の場合は、先ほどの Azure Web Apps の診断ログを使用します。 つまり、Azure の場合、ファイルシステムに直接ログを書き込むのではなく、以下のようにする必要があります。

  • Trace ログとして、アプリケーションログを出力する (log4net の設定で、使用する Appender をRollingFileAppenderからTraceAppenderに変更する)
    <appender name="ACCESS" type="log4net.Appender.TraceAppender">
        <!-- メッセージのフォーマット -->
        <layout type="log4net.Layout.PatternLayout">
            <param name="ConversionPattern" value="[%date{yyyy/MM/dd HH:mm:ss,fff}],[%-5level],[%thread],%message%newline" />
        </layout>
    </appender>
    
    <appender name="SQLTRACE" type="log4net.Appender.TraceAppender">
        <!-- メッセージのフォーマット -->
        <layout type="log4net.Layout.PatternLayout">
            <param name="ConversionPattern" value="[%date{yyyy/MM/dd HH:mm:ss,fff}],[%-5level],[%thread],%message%newline" />
        </layout>
    </appender>
    
    <appender name="OPERATION" type="log4net.Appender.TraceAppender">
        <!-- メッセージのフォーマット -->
        <layout type="log4net.Layout.PatternLayout">
            <param name="ConversionPattern" value="[%date{yyyy/MM/dd HH:mm:ss,fff}],[%-5level],[%thread],%message%newline" />
        </layout>
    </appender>
  • Trace を Azure 側で監視し、ファイルシステムまたは Blob に書き込む

プログラムの改修

最後に、Open 棟梁のデータアクセスクラスが、SQL ファイルを「埋め込みリソース」から探すようにプログラムを改修します。

  • 画面遷移や通信制御などの設定ファイル
    • Open 棟梁の Web フォームアプリケーションのサンプル (ProjectX_sample.sln) であれば app.config を、MVC アプリケーションのサンプル (MVC_sample.sln) やシングルページアプリケーションのサンプル (SPA_Sample.sln) であれば Web.config を開く
    • appSettings タグに、以下の設定を追加する
      <add key="Azure" value="[Web アプリケーションの既定の名前空間名]"/>
  • ログ出力の設定ファイル
    • C:\root\programs\C#\Frameworks\Infrastructure\AllComponent.sln を開く
    • [Business] プロジェクトの、[Dao]-[MyBaseDao.cs] を開く
    • 以下のように、変数UseEmbeddedResourceの値を false から true に変更する
      /// <summary>埋め込まれたリソースを使用する</summary>
      public static bool UseEmbeddedResource = true;
    • Open 棟梁の Readme ファイルにしたがい、フレームワーク、アプリケーションをビルドする

Azure Web Apps へのデプロイ

それでは、作成した Web アプリケーションを Web Apps にデプロイしてみましょう。 Web Apps へのデプロイの方法にはいくつかあり、こちらのサイトで紹介されています。 それでは、今回はこの中から、ローカル Git を使う方法でデプロイしてみましょう。

  • デプロイ資格情報を設定する
    Microsoft Azure のポータル画面から、Git でデプロイするための資格情報を設定します。
    デプロイ資格情報の入力
  • デプロイに必要な情報を確認する
    Microsoft Azure のポータル画面から、Git でデプロイする際の URL を確認します。
    Git URL の確認
  • エクスプローラーで空のフォルダーを作る
  • コマンドプロンプトで以下のコマンドを実行する
    cd [作成したフォルダーへのパス]
    git init
  • Visual Studio で Web アプリケーション プロジェクトを右クリックし、「公開」を選択する
  • 発行方法で「ファイル システム」を選択し、ターゲットの場所に、先ほど作成したフォルダーを指定するアプリケーションの発行
  • 「発行」ボタンをクリックし、Web アプリケーションを発行する
  • コマンドプロンプトで以下のコマンドを実行する(git push 実行時にユーザー情報を求められるので、先ほど作成したデプロイ資格情報を入力する)
    git add -A
    git commit -m "[コミットメッセージ]"
    git remote add azure [GIT URL]
    git push azure master
    

動作確認

それでは、ちゃんと Web Apps にデプロイされたか、見てみましょう。

  • Microsoft Azure のポータル画面から、Web アプリケーションの URL を確認する
    Web アプリケーションの URL の確認
  • ブラウザで、http://[Web アプリケーションのドメイン]/Aspx/start/menu.aspx を開く
    ブラウザでの実行

正しく表示されていますね。それでは、ログも見てみましょう。 Azure の診断ログの確認方法にもいくつかあり、こちらのサイトで紹介されています。 ここでは、Azure SDK に含まれる Cloud Explorer を使用して、ログを見てみましょう。 Visual Studio で、Cloud Explorer が表示されていない場合は、[表示]-[Cloud Explorer] から、Cloud Explorer を表示させておいてください。
Cloud Explorer の表示
Cloud Explorer で、[サブスクリプション名]-[Storage Accounts]-[アカウント名]-[Blob Containers]-[コンテナ名] を開くと、そのコンテナに含まれるファイルが表示されます。
ログの確認
一番上の CSV ファイルをダブルクリックし、ダウンロードします。ファイルの中身を確認すると、ちゃんとログが出力されていることがわかります。

2017-01-17T08:24:11,Verbose,[Web Apps 名],4262c7,636202382516787570,0,6356,-1,"ACCESS: [2017/01/17 08:24:10,803],[DEBUG],[8],,-,[IP アドレス],-----↓,Global.asax,Application_OnPreRequest
ACCESS: [2017/01/17 08:24:11,085],[INFO ],[8],,未認証,[IP アドレス],postback,login
ACCESS: [2017/01/17 08:24:11,085],[INFO ],[8],,未認証,[IP アドレス],----->,login,txtUserID
ACCESS: [2017/01/17 08:24:11,085],[INFO ],[8],,未認証,[IP アドレス],<-----,login,txtUserID,,3,0
ACCESS: [2017/01/17 08:24:11,100],[INFO ],[8],,未認証,[IP アドレス],----->,login,btnButton1
ACCESS: [2017/01/17 08:24:11,100],[INFO ],[8],,aaa,[IP アドレス],<-----,login,btnButton1,,2,0
ACCESS: [2017/01/17 08:24:11,100],[DEBUG],[8],,-,[IP アドレス],-----↑,Global.asax,Application_OnPostRequest,-,-,82,78
ACCESS: [2017/01/17 08:24:11,647],[DEBUG],[13],,-,[IP アドレス],-----↓,Global.asax,Application_OnPreRequest
ACCESS: [2017/01/17 08:24:11,678],[INFO ],[13],,aaa,[IP アドレス],init,menu
Trace Debug",

最後に

Open 棟梁によるクラウドアプリ開発方法をご紹介いたしましたが、いかがでしょうか。 もはや Microsoft Azure など、クラウドの利用は当たり前の時代になっています。 実際には、今回ご紹介した内容以外にも、セキュリティなど、クラウドに移行することで考慮すべき事柄はありますが、クラウドアプリ開発でも、Open 棟梁が十分に活用できることを実感していただければ幸いです。


09:07 | 投票する | 投票数(2) | コメント(0)