SlideShare uma empresa Scribd logo
1 de 15
L3-224
 300 秒 30 分でズバリ !!
.NET アプリケーションの
         動作

  (株)東日本計算センター
       業務一部
      小野 修司
アジェンダ
Framework って何?
動作の基本
– Console アプリケーションのコンパイル
– Console アプリケーションの実行
Windows アプリケーション
– イベントの処理
Web アプリケーション
–   Page のコンパイル
–   Page の表示
–   Postback 時の処理
–   オブジェクトの生存期間( Postback )
–   オブジェクトの生存期間( Response.Redirect )
–   オブジェクトの生存期間( Server.Transfer )
Web サービス
.NET Framework のメモリ管理
Framework って何?
直訳すると「型枠」
ハリウッドの原則
– “Don't call me, we call you.”
    プログラムは Framework から呼び出される
      - 枠にあてはめてプログラムを作成する


    Windwos                        Web
                  Web
  アプリケーション                        サービス
               アプリケーション



           .NET Framework
動作の基本
Console アプリケーションのコンパイル

ソースコードをコンパイルすることで、ア
センブリ( exe ファイル)ができる
アセンブリは MSIL という中間言語で書
かれており、メタデータやリソースを含ん
でいる
動作の基本
  Console アプリケーションの実行

アセンブリがメモリ上にロードされる
– このとき、セキュリティの確認が行われる
アセンブリのエントリポイント( Main メソッ
ド)が Framework によって呼び出される
メソッドが最初に呼ばれたときに JIT コンパイ
ラによってネイティブコードに変換される
– ネイティブコードへの変換はメソッド単位で行われる
コード変換時に型のチェック、メモリの利用状況
がチェックされる
コード変換されたメソッドはキャッシュされ、同
じメソッドが呼ばれる場合はコード変換は行われ
ない
Main メソッドの終了により、アプリケーション
Windows アプリケーション
                イベントの処理
Console アプリケーションと同じ手順で実行が開始され
る
Application.Run によって Windows のメッセージループ
と結びつけられる
– class WinSample : Form
  {
    ・・・
     public static void Main()
     {
       Application.Run(new WinSample());
     }
  }
Windows が受け取ったイベントは Framework を通じて実
行中のアプリケーションに送られ、そのイベントに設定
したメソッドが呼び出される
Application.Run に渡した Form が閉じられることによ
りアプリケーション終了
Web アプリケーション
              Page のコンパイル

ブラウザからのリクエストに応じた aspx
ページが解析され、ソースが自動生成され
る
– Debug モードではこのソースが保存される
– %windir%Microsoft.NETFrameworkv1.1.4322Temporary
  ASP.NET Files 以下にフォルダが自動生成される

ソースをコンパイルしたアセンブリ( dll
ファイル)も一時フォルダに保存される
bin フォルダにある dll ファイルも一時フ
ォルダに保存される
Web アプリケーション
                     Page の表示
アセンブリがメモリ上にロードされる
Page クラスがインスタンス化される
Framework によって、決められた順番でイベントが呼び出される
( Trace モードで確認)
– Init
         Page_Init 内に記述した処理の実行
– Load
         Page_Load 内に記述した処理の実行
– PreRender
         Page_PreRender 内に記述した処理の実行
– SaveViewSate
         コントロールの現在の状態を ViewState に保存
– Render
         Page の内容を HTML として生成
メソッド毎に JIT コンパイラによってネイティブコードに変換される
Render の結果、生成された HTML がブラウザに返され、 Page ク
ラスが破棄される
We bアプリケーション
               Postback 時の処理
Framework によって呼び出されるイベントが増える
– Init
– LoadViewState
      ViewState の値の読み込み
– ProcessPostData
      ポストされた値の処理
– Load
– ProcessPostDataSecondTry
      動的に生成されるコントロールに対するポストされた値の処理
– RaiseChangedEvents
      プロパティが変更されたコントロールへのイベントの発行
– RaisePostBackEvent
      PostBack イベントに関連づけられているコードの実行
–   PreRender
–   SaveViewState
–   Render
Web アプリケーションの
      動作
We bアプリケーション
オブジェクトの生存期間( PostBack )
               A.aspx


                        生成   ビ
       リクエスト                 ュ値
   ブ                           の
                             ー
                        破棄
                             ー
   ラ   レスポンス                 ス引
   ウ                         テ継
   ザ                    生成     ぎ
                             ー
                             ー
       ポストバック                トは
                        破棄   で
       レスポンス
We bアプリケーション
    オブジェクトの生存期間
    ( Response.Redirect )
             A.aspx    B.aspx   セ
                                ッ
                  生成            シ
    リクエスト                       ョ値
ブ                 破棄            ンの
ラ   レスポンス                       オ引
ウ                               ブ継
ザ                         生成    ジぎ
    リダイレクト                      ェは
                          破棄    ク
    レスポンス                       ト
                                で
We bアプリケーション
     オブジェクトの生存期間
      ( Server.Transfer )
            A.aspx      B.aspx   ま
                                   セ
                                 た
                 生成                ッ
                                 は
    リクエスト                          シ
                                 コ 値
ブ                                  ョ
                                 ン の
ラ                           生成     ン
                 Transfer        テ 引
ウ                                  オ
                                 キ 継
ザ                                  ブ
                                 ス ぎ
                 破棄                ジ
                                 ト は
                                   ェ
                            破棄   経
    レスポンス                          ク
                                 由
                                   ト
                                 で
Web サービス
Web アプリケーションの仕組みがベース
となっている
ブラウザからのリクエストに応じたクラス
がインスタンス化されるところまでは
Web アプリと同じ
リクエストで指定されたメソッドがリフレ
クションを利用して呼び出される
メソッドの戻り値が SOAP 形式に変換さ
れ、自動的に呼び出した側に戻される
メソッドの処理が終わるとクラスは破棄さ
れる
.NET Framework のメモリ管理
オブジェクトが利用しているメモリ領域は
Framework が管理する
– GC (ガベージコレクト)により不要になった
  メモリ領域は開放される
  GC が実行されるまでは開放されない
– GC の実行のタイミングは Framework により
  管理されている
Windows のリソースを利用するものにつ
いては注意が必要
– Dispose パターンを理解しよう
– C# の場合は using ステートメントを使用する

Mais conteúdo relacionado

Semelhante a 20050623 2

Mashup Award 7 Caravan in Fukuoka
Mashup Award 7 Caravan in FukuokaMashup Award 7 Caravan in Fukuoka
Mashup Award 7 Caravan in Fukuoka
Kazumi Hirose
 
AWSクラウドデザインパターン(CDP) - Eコマース編 -
AWSクラウドデザインパターン(CDP) - Eコマース編 -AWSクラウドデザインパターン(CDP) - Eコマース編 -
AWSクラウドデザインパターン(CDP) - Eコマース編 -
SORACOM, INC
 
AWSクラウドデザインパターン(CDP) - 概要編 -
AWSクラウドデザインパターン(CDP) - 概要編 - AWSクラウドデザインパターン(CDP) - 概要編 -
AWSクラウドデザインパターン(CDP) - 概要編 -
SORACOM, INC
 
backbone.jsの使用例 その1
backbone.jsの使用例 その1backbone.jsの使用例 その1
backbone.jsの使用例 その1
Makoto Haruyama
 
勉強会force#3 iOSアプリ開発
勉強会force#3 iOSアプリ開発勉強会force#3 iOSアプリ開発
勉強会force#3 iOSアプリ開発
Kazuki Nakajima
 

Semelhante a 20050623 2 (20)

20120128
2012012820120128
20120128
 
cordova/electronの構造を知る
cordova/electronの構造を知るcordova/electronの構造を知る
cordova/electronの構造を知る
 
Azure 高速サイトソリューション
Azure 高速サイトソリューションAzure 高速サイトソリューション
Azure 高速サイトソリューション
 
20080524
2008052420080524
20080524
 
Mashup Award 7 Caravan in Fukuoka
Mashup Award 7 Caravan in FukuokaMashup Award 7 Caravan in Fukuoka
Mashup Award 7 Caravan in Fukuoka
 
Springの今
Springの今Springの今
Springの今
 
20100224
2010022420100224
20100224
 
AWSクラウドデザインパターン(CDP) - Eコマース編 -
AWSクラウドデザインパターン(CDP) - Eコマース編 -AWSクラウドデザインパターン(CDP) - Eコマース編 -
AWSクラウドデザインパターン(CDP) - Eコマース編 -
 
MashupAward7 Microsoft Presentation
MashupAward7 Microsoft PresentationMashupAward7 Microsoft Presentation
MashupAward7 Microsoft Presentation
 
【BS14】Blazor WebAssemblyとJavaScriptのインターオペラビリティ
【BS14】Blazor WebAssemblyとJavaScriptのインターオペラビリティ 【BS14】Blazor WebAssemblyとJavaScriptのインターオペラビリティ
【BS14】Blazor WebAssemblyとJavaScriptのインターオペラビリティ
 
Windows Azure Programming
Windows Azure ProgrammingWindows Azure Programming
Windows Azure Programming
 
[Microsoft Tech Summit] Linux/Java にも対応! Azure Service Fabric を使ったマイクロサービス開発
[Microsoft Tech Summit] Linux/Java にも対応! Azure Service Fabric を使ったマイクロサービス開発[Microsoft Tech Summit] Linux/Java にも対応! Azure Service Fabric を使ったマイクロサービス開発
[Microsoft Tech Summit] Linux/Java にも対応! Azure Service Fabric を使ったマイクロサービス開発
 
[AWS Summit 2012] クラウドデザインパターン#8 CDP アンチパターン編
[AWS Summit 2012] クラウドデザインパターン#8 CDP アンチパターン編[AWS Summit 2012] クラウドデザインパターン#8 CDP アンチパターン編
[AWS Summit 2012] クラウドデザインパターン#8 CDP アンチパターン編
 
AWSクラウドデザインパターン(CDP) - 概要編 -
AWSクラウドデザインパターン(CDP) - 概要編 - AWSクラウドデザインパターン(CDP) - 概要編 -
AWSクラウドデザインパターン(CDP) - 概要編 -
 
AKS と ACI を組み合わせて使ってみた
AKS と ACI を組み合わせて使ってみたAKS と ACI を組み合わせて使ってみた
AKS と ACI を組み合わせて使ってみた
 
StartupWeekend Tokyo WindowsAzure
StartupWeekend Tokyo WindowsAzureStartupWeekend Tokyo WindowsAzure
StartupWeekend Tokyo WindowsAzure
 
backbone.jsの使用例 その1
backbone.jsの使用例 その1backbone.jsの使用例 その1
backbone.jsの使用例 その1
 
20090212
2009021220090212
20090212
 
勉強会force#3 iOSアプリ開発
勉強会force#3 iOSアプリ開発勉強会force#3 iOSアプリ開発
勉強会force#3 iOSアプリ開発
 
[AWS Summit 2012] クラウドデザインパターン#5 CDP バッチ処理編
[AWS Summit 2012] クラウドデザインパターン#5 CDP バッチ処理編[AWS Summit 2012] クラウドデザインパターン#5 CDP バッチ処理編
[AWS Summit 2012] クラウドデザインパターン#5 CDP バッチ処理編
 

Mais de 小野 修司 (20)

20140322
2014032220140322
20140322
 
20121215
2012121520121215
20121215
 
20120616
2012061620120616
20120616
 
20120425
2012042520120425
20120425
 
20111203
2011120320111203
20111203
 
20110607
2011060720110607
20110607
 
20100218 lt
20100218 lt20100218 lt
20100218 lt
 
20100218
2010021820100218
20100218
 
20091207
2009120720091207
20091207
 
20090711
2009071120090711
20090711
 
20090606
2009060620090606
20090606
 
20090418
2009041820090418
20090418
 
20090328
2009032820090328
20090328
 
20081003
2008100320081003
20081003
 
20080630
2008063020080630
20080630
 
20080627 2
20080627 220080627 2
20080627 2
 
20080627 1
20080627 120080627 1
20080627 1
 
20080213
2008021320080213
20080213
 
20080201
2008020120080201
20080201
 
20071204
2007120420071204
20071204
 

20050623 2

  • 1. L3-224 300 秒 30 分でズバリ !! .NET アプリケーションの 動作 (株)東日本計算センター 業務一部 小野 修司
  • 2. アジェンダ Framework って何? 動作の基本 – Console アプリケーションのコンパイル – Console アプリケーションの実行 Windows アプリケーション – イベントの処理 Web アプリケーション – Page のコンパイル – Page の表示 – Postback 時の処理 – オブジェクトの生存期間( Postback ) – オブジェクトの生存期間( Response.Redirect ) – オブジェクトの生存期間( Server.Transfer ) Web サービス .NET Framework のメモリ管理
  • 3. Framework って何? 直訳すると「型枠」 ハリウッドの原則 – “Don't call me, we call you.” プログラムは Framework から呼び出される - 枠にあてはめてプログラムを作成する Windwos Web Web アプリケーション サービス アプリケーション .NET Framework
  • 4. 動作の基本 Console アプリケーションのコンパイル ソースコードをコンパイルすることで、ア センブリ( exe ファイル)ができる アセンブリは MSIL という中間言語で書 かれており、メタデータやリソースを含ん でいる
  • 5. 動作の基本 Console アプリケーションの実行 アセンブリがメモリ上にロードされる – このとき、セキュリティの確認が行われる アセンブリのエントリポイント( Main メソッ ド)が Framework によって呼び出される メソッドが最初に呼ばれたときに JIT コンパイ ラによってネイティブコードに変換される – ネイティブコードへの変換はメソッド単位で行われる コード変換時に型のチェック、メモリの利用状況 がチェックされる コード変換されたメソッドはキャッシュされ、同 じメソッドが呼ばれる場合はコード変換は行われ ない Main メソッドの終了により、アプリケーション
  • 6. Windows アプリケーション イベントの処理 Console アプリケーションと同じ手順で実行が開始され る Application.Run によって Windows のメッセージループ と結びつけられる – class WinSample : Form { ・・・    public static void Main()    {      Application.Run(new WinSample());    } } Windows が受け取ったイベントは Framework を通じて実 行中のアプリケーションに送られ、そのイベントに設定 したメソッドが呼び出される Application.Run に渡した Form が閉じられることによ りアプリケーション終了
  • 7. Web アプリケーション Page のコンパイル ブラウザからのリクエストに応じた aspx ページが解析され、ソースが自動生成され る – Debug モードではこのソースが保存される – %windir%Microsoft.NETFrameworkv1.1.4322Temporary ASP.NET Files 以下にフォルダが自動生成される ソースをコンパイルしたアセンブリ( dll ファイル)も一時フォルダに保存される bin フォルダにある dll ファイルも一時フ ォルダに保存される
  • 8. Web アプリケーション Page の表示 アセンブリがメモリ上にロードされる Page クラスがインスタンス化される Framework によって、決められた順番でイベントが呼び出される ( Trace モードで確認) – Init Page_Init 内に記述した処理の実行 – Load Page_Load 内に記述した処理の実行 – PreRender Page_PreRender 内に記述した処理の実行 – SaveViewSate コントロールの現在の状態を ViewState に保存 – Render Page の内容を HTML として生成 メソッド毎に JIT コンパイラによってネイティブコードに変換される Render の結果、生成された HTML がブラウザに返され、 Page ク ラスが破棄される
  • 9. We bアプリケーション Postback 時の処理 Framework によって呼び出されるイベントが増える – Init – LoadViewState ViewState の値の読み込み – ProcessPostData ポストされた値の処理 – Load – ProcessPostDataSecondTry 動的に生成されるコントロールに対するポストされた値の処理 – RaiseChangedEvents プロパティが変更されたコントロールへのイベントの発行 – RaisePostBackEvent PostBack イベントに関連づけられているコードの実行 – PreRender – SaveViewState – Render
  • 11. We bアプリケーション オブジェクトの生存期間( PostBack ) A.aspx 生成 ビ リクエスト ュ値 ブ の ー 破棄 ー ラ レスポンス ス引 ウ テ継 ザ 生成 ぎ ー ー ポストバック トは 破棄 で レスポンス
  • 12. We bアプリケーション オブジェクトの生存期間 ( Response.Redirect ) A.aspx B.aspx セ ッ 生成 シ リクエスト ョ値 ブ 破棄 ンの ラ レスポンス オ引 ウ ブ継 ザ 生成 ジぎ リダイレクト ェは 破棄 ク レスポンス ト で
  • 13. We bアプリケーション オブジェクトの生存期間 ( Server.Transfer ) A.aspx B.aspx ま セ た 生成 ッ は リクエスト シ コ 値 ブ ョ ン の ラ 生成 ン Transfer テ 引 ウ オ キ 継 ザ ブ ス ぎ 破棄 ジ ト は ェ 破棄 経 レスポンス ク 由 ト で
  • 14. Web サービス Web アプリケーションの仕組みがベース となっている ブラウザからのリクエストに応じたクラス がインスタンス化されるところまでは Web アプリと同じ リクエストで指定されたメソッドがリフレ クションを利用して呼び出される メソッドの戻り値が SOAP 形式に変換さ れ、自動的に呼び出した側に戻される メソッドの処理が終わるとクラスは破棄さ れる
  • 15. .NET Framework のメモリ管理 オブジェクトが利用しているメモリ領域は Framework が管理する – GC (ガベージコレクト)により不要になった メモリ領域は開放される GC が実行されるまでは開放されない – GC の実行のタイミングは Framework により 管理されている Windows のリソースを利用するものにつ いては注意が必要 – Dispose パターンを理解しよう – C# の場合は using ステートメントを使用する