Upload
-
View
210
Download
3
Embed Size (px)
Citation preview
L3-224L3-224300300 秒 秒 3030分でズバリ分でズバリ !!!!
.NET .NET アプリケーションのアプリケーションの動作動作
(株)東日本計算センター(株)東日本計算センター業務一部業務一部小野 修司小野 修司
アジェンダアジェンダFramework Framework って何?って何?動作の基本動作の基本– Console Console アプリケーションのコンパイルアプリケーションのコンパイル– Console Console アプリケーションの実行アプリケーションの実行
Windows Windows アプリケーションアプリケーション– イベントの処理イベントの処理
Web Web アプリケーションアプリケーション– Page Page のコンパイルのコンパイル– Page Page の表示の表示– Postback Postback 時の処理時の処理– オブジェクトの生存期間(オブジェクトの生存期間( PostbackPostback))– オブジェクトの生存期間(オブジェクトの生存期間( Response.RedirectResponse.Redirect))– オブジェクトの生存期間(オブジェクトの生存期間( Server.TransferServer.Transfer))
Web Web サービスサービス.NET Framework.NET Frameworkのメモリ管理のメモリ管理
Framework Framework って何?って何?直訳すると「型枠」直訳すると「型枠」ハリウッドの原則ハリウッドの原則– ““Don't call me, we call you.”Don't call me, we call you.”
プログラムは プログラムは Framework Framework から呼び出されるから呼び出される- 枠にあてはめてプログラムを作成する- 枠にあてはめてプログラムを作成する
.NET Framework.NET Framework
WindwosWindwosアプリケーションアプリケーション
WebWebサービスサービス
WebWebアプリケーションアプリケーション
動作の基本動作の基本Console Console アプリケーションのコンパイルアプリケーションのコンパイル
ソースコードをコンパイルすることで、アソースコードをコンパイルすることで、アセンブリ(センブリ( exeexeファイル)ができるファイル)ができる
アセンブリは アセンブリは MSIL MSIL という中間言語で書という中間言語で書かれており、メタデータやリソースを含んかれており、メタデータやリソースを含んでいるでいる
動作の基本動作の基本ConsoleConsoleアプリケーションの実行アプリケーションの実行
アセンブリがメモリ上にロードされるアセンブリがメモリ上にロードされる– このとき、セキュリティの確認が行われるこのとき、セキュリティの確認が行われる
アセンブリのエントリポイント( アセンブリのエントリポイント( Main Main メソッメソッド)がド)が Framework Framework によって呼び出されるによって呼び出される
メソッドが最初に呼ばれたときに メソッドが最初に呼ばれたときに JIT JIT コンパイコンパイラによってネイティブコードに変換されるラによってネイティブコードに変換される– ネイティブコードへの変換はメソッド単位で行われるネイティブコードへの変換はメソッド単位で行われるコード変換時に型のチェック、メモリの利用状況コード変換時に型のチェック、メモリの利用状況がチェックされるがチェックされるコード変換されたメソッドはキャッシュされ、同コード変換されたメソッドはキャッシュされ、同じメソッドが呼ばれる場合はコード変換は行われじメソッドが呼ばれる場合はコード変換は行われないないMain Main メソッドの終了により、アプリケーションメソッドの終了により、アプリケーション終了終了
WindowsWindowsアプリケーションアプリケーションイベントの処理イベントの処理
ConsoleConsoleアプリケーションと同じ手順で実行が開始されアプリケーションと同じ手順で実行が開始されるるApplication.Run Application.Run によってによって WindowsWindowsのメッセージループのメッセージループと結びつけられると結びつけられる– class WinSample : Formclass WinSample : Form
{{ ・・・ ・・・
public static void Main()public static void Main() {{ Application.Run(new WinSample());Application.Run(new WinSample()); }}}}
WindowsWindowsが受け取ったイベントはが受け取ったイベントは FrameworkFrameworkを通じて実を通じて実行中のアプリケーションに送られ、そのイベントに設定行中のアプリケーションに送られ、そのイベントに設定したメソッドが呼び出されるしたメソッドが呼び出されるApplication.Run Application.Run に渡した に渡した Form Form が閉じられることによが閉じられることによりアプリケーション終了りアプリケーション終了
WebWebアプリケーションアプリケーションPagePageのコンパイルのコンパイル
ブラウザからのリクエストに応じた ブラウザからのリクエストに応じた aspx aspx ページが解析され、ソースが自動生成されページが解析され、ソースが自動生成されるる– DebugDebugモードではこのソースが保存されるモードではこのソースが保存される– %windir%\Microsoft.NET\Framework\v1.1.4322\Temporary %windir%\Microsoft.NET\Framework\v1.1.4322\Temporary
ASP.NET Files ASP.NET Files 以下にフォルダが自動生成される以下にフォルダが自動生成される
ソースをコンパイルしたアセンブリ(ソースをコンパイルしたアセンブリ( dll dll ファイル)も一時フォルダに保存されるファイル)も一時フォルダに保存されるbin bin フォルダにある フォルダにある dll dll ファイルも一時フファイルも一時フォルダに保存されるォルダに保存される
WebWebアプリケーションアプリケーションPagePageの表示の表示
アセンブリがメモリ上にロードされるアセンブリがメモリ上にロードされるPagePageクラスがインスタンス化されるクラスがインスタンス化されるFrameworkFrameworkによって、決められた順番でイベントが呼び出されるによって、決められた順番でイベントが呼び出される(( TraceTraceモードで確認)モードで確認)– InitInit
Page_Init Page_Init 内に記述した処理の実行内に記述した処理の実行– LoadLoad
Page_Load Page_Load 内に記述した処理の実行内に記述した処理の実行– PreRenderPreRender
Page_PreRender Page_PreRender 内に記述した処理の実行内に記述した処理の実行– SaveViewSateSaveViewSate
コントロールの現在の状態を コントロールの現在の状態を ViewState ViewState に保存に保存– RenderRender
Page Page の内容を の内容を HTML HTML として生成として生成メソッド毎にメソッド毎に JITJITコンパイラによってネイティブコードに変換されるコンパイラによってネイティブコードに変換されるRender Render の結果、生成された の結果、生成された HTML HTML がブラウザに返され、がブラウザに返され、 Page Page ククラスが破棄されるラスが破棄される
WeWebアプリケーションbアプリケーションPostback Postback 時の処理時の処理
FrameworkFrameworkによって呼び出されるイベントが増えるによって呼び出されるイベントが増える– InitInit– LoadViewStateLoadViewState
ViewState ViewState の値の読み込みの値の読み込み– ProcessPostDataProcessPostData
ポストされた値の処理ポストされた値の処理– LoadLoad– ProcessPostDataSecondTryProcessPostDataSecondTry
動的に生成されるコントロールに対するポストされた値の処理動的に生成されるコントロールに対するポストされた値の処理– RaiseChangedEventsRaiseChangedEvents
プロパティが変更されたコントロールへのイベントの発行プロパティが変更されたコントロールへのイベントの発行– RaisePostBackEventRaisePostBackEvent
PostBack PostBack イベントに関連づけられているコードの実行イベントに関連づけられているコードの実行– PreRenderPreRender– SaveViewStateSaveViewState– RenderRender
Web アプリケーションの動作
WeWebアプリケーションbアプリケーションオブジェクトの生存期間(オブジェクトの生存期間( PostBackPostBack))
リクエストリクエスト
レスポンスレスポンス
ポストバックポストバック
レスポンスレスポンス
ブラウザ
ブラウザ
生成生成
破棄破棄
生成生成
破棄破棄
値の引継ぎは
値の引継ぎは
ビューステー
トで
ビューステー
トで
A.aspxA.aspx
WeWebアプリケーションbアプリケーションオブジェクトの生存期間オブジェクトの生存期間(( Response.RedirectResponse.Redirect))
リクエストリクエスト
レスポンスレスポンス
リダイレクトリダイレクト
レスポンスレスポンス
ブラウザ
ブラウザ
生成生成
破棄破棄
生成生成
破棄破棄
値の引継ぎは
値の引継ぎは
セッションオブジェクトで
セッションオブジェクトで
A.aspxA.aspx BB.aspx.aspx
WeWebアプリケーションbアプリケーションオブジェクトの生存期間オブジェクトの生存期間(( Server.TransferServer.Transfer))
リクエストリクエスト
レスポンスレスポンス
ブラウザ
ブラウザ
生成生成
破棄破棄
生成生成
破棄破棄
値の引継ぎは
値の引継ぎは
セッションオブジェクト
セッションオブジェクト
またはコンテキスト経由で
またはコンテキスト経由で
A.aspxA.aspx BB.aspx.aspx
TransferTransfer
WebWebサービスサービスWeb Web アプリケーションの仕組みがベースアプリケーションの仕組みがベースとなっているとなっているブラウザからのリクエストに応じたクラスブラウザからのリクエストに応じたクラス
がインスタンス化されるところまでは がインスタンス化されるところまではWeb Web アプリと同じアプリと同じリクエストで指定されたメソッドがリフレリクエストで指定されたメソッドがリフレクションを利用して呼び出されるクションを利用して呼び出される
メソッドの戻り値が メソッドの戻り値が SOAP SOAP 形式に変換さ形式に変換され、自動的に呼び出した側に戻されるれ、自動的に呼び出した側に戻されるメソッドの処理が終わるとクラスは破棄さメソッドの処理が終わるとクラスは破棄されるれる
.NET Framework.NET Frameworkのメモリ管理のメモリ管理オブジェクトが利用しているメモリ領域はオブジェクトが利用しているメモリ領域はFramework Framework が管理するが管理する– GC GC (ガベージコレクト)により不要になった(ガベージコレクト)により不要になったメモリ領域は開放されるメモリ領域は開放される
GCGCが実行されるまでは開放されないが実行されるまでは開放されない– GCGCの実行のタイミングはの実行のタイミングは FrameworkFrameworkによりにより管理されている管理されている
Windows Windows のリソースを利用するものにつのリソースを利用するものについては注意が必要いては注意が必要– Dispose Dispose パターンを理解しようパターンを理解しよう– C#C# の場合は の場合は using using ステートメントを使用するステートメントを使用する