「[[Open棟梁 wiki>https://opentouryo.osscons.jp]]」は、「[[Open棟梁Project>https://github.com/OpenTouryoProject/]]」,「[[OSSコンソーシアム .NET開発基盤部会>https://www.osscons.jp/dotNetDevelopmentInfrastructure/]]」によって運営されています。

-[[戻る>アプリケーション設計のポイント]]

*目次 [#m24a9a7b]
#contents

*概要 [#j2b309e7]

**Web [#n266dafe]
Open棟梁を適用したシステムに於けるオンライン処理の処理シーケンスについて説明します。

#ref(OnlineSequence.png,left,nowrap,Webオンライン処理シーケンス)

**リッチクライアント [#vb35ca6a]
Open棟梁を適用したシステムに於けるWindows Formsの2層C/Sのオンライン処理の処理シーケンスについて説明します。

#ref(OnlineSequence2.png,left,nowrap,リッチクライアント・オンライン処理シーケンス)

*初期化イベント処理の詳細(Web) [#z1de9dce]
**ASP.NET Web Formsのイベント発生順 [#pf7bb7ef]
[[ASP.NET Web Formsのイベント発生順 - マイクロソフト系技術情報 Wiki>https://techinfoofmicrosofttech.osscons.jp:443/index.php?ASP.NET%20Web%20Forms%E3%81%AE%E3%82%A4%E3%83%99%E3%83%B3%E3%83%88%E7%99%BA%E7%94%9F%E9%A0%86]]

**[[クラス構造]]と初期化イベント [#c0d81d35]
-[[ベースクラス1]]では1-ⅰ,3-ⅰの初期化イベントを使用する。
-[[ベースクラス2]]では、1-ⅱ,3-ⅱの初期化イベントを使用する。
-[[画面コード クラス>クラス構造#o82e79db]]では、1-ⅲ,3-ⅲの初期化イベントを使用する。

**処理内容 [#d48c3487]
***コンストラクタ [#aceaa106]
[[ベースクラス1]]の「コンストラクタ」では、~
「Page.Loadイベント」のイベント ハンドラを登録する処理が実行される。

***Page.Initイベント [#r1ab10fb]
実装無し。

***Page.Loadイベント [#ce7105a5]
「[[ベースクラス1]]」の「Page.Loadイベント」では、順番に以下の処理が実行される。
-初期処理
--マスタ ページ情報の初期化
--Ajaxの状態を確認(ASP.NET Ajax、ClientCallback)
--セッション スコープ ロック用オブジェクトを生成
--[[Sessionタイムアウト検出機能]]
--各種HIDDENコントロールの取得

-[[二重送信防止機能]]の実行
-[[不正操作防止機能]]の実行

-「[[画面遷移制御機能]]」
--「ブラウザ・ウィンドウGUID」の生成処理(画面遷移後は、「ブラウザ・ウィンドウGUID」が引き継がれる ので、新規生成しない)~
※ 「ブラウザ・ウィンドウGUID」の生成時、「[[ブラウザ・ウィンドウ別Session領域]]」のスコープの「[[Session領域の自動削除機能]]」を実行する。

--「[[画面遷移チェック機能>画面遷移制御機能#h7cda6a7]]」の実行

-「[[ボタン履歴情報記録機能]]」
--「画面GUID」の生成処理(「子画面」 には、Query Stringで「画面GUID」が引き継がれる ので、新規生成しない。)~
※ 「画面GUID」の生成時、「[[親画面別Session領域]]」のスコープの「[[Session領域の自動削除機能]]」(後述)を実行する。
※ 「画面GUID」の生成時、「[[親画面別Session領域]]」のスコープの「[[Session領域の自動削除機能]]」を実行する。

--「[[ボタン履歴情報>ボタン履歴情報記録機能]]」をメンテする。
---初回 : ダミーの「[[ボタン履歴情報>ボタン履歴情報記録機能]]」をプッシュする。
---初回以降 :~
古い「[[ボタン履歴情報>ボタン履歴情報記録機能]]」をポップし、~
新しい「[[ボタン履歴情報>ボタン履歴情報記録機能]]」をプッシュする。

-「[[イベント処理用UOCメソッド>P層イベント処理機能]]」の呼出準備
--FindControlメソッドを使用して、コントロール オブジェクトを取得する。
--取得したコントロール オブジェクトのイベント プロパティに、~
「コントロール イベント毎の共通イベント ハンドラ」を設定する。

-「[[ベースクラス2]]」の「共通の初期処理UOCメソッド」を呼び出す。
--WebFormsの共通の「初回のLoad処理」(UOC_CMNFormInit)
--WebFormsの共通の「PostBackのLoad処理」(UOC_CMNFormInit_PostBack)

-「[[ベースクラス1]]」の「[[ベースクラス2]]」の「イベント・ハンドラ設定処理」を実行。~
これにより、各コントロールに「コントロール イベント毎の共通イベント ハンドラ」が設定される。

-「[[ダイアログ表示機能]]」
--HIDDENフィールドとJavaScriptを使用して、ダイアログ表示する。
--「[[ベースクラス1]]」の「Page.Loadイベント」では、~
「子画面」を閉じた際のポストバックの場合、後処理を実行する。

-「Page.Loadイベント処理の最終処理用UOCメソッド」を呼び出す(UOC_Finally)。

***コントロール イベント [#q18e2c54]
「イベント・ハンドラ設定処理」により「コントロール イベント」が呼び出され、以下の処理が実行される。~
※ 「Page.Loadイベント」の後、ASP.NETがポストバックのHTTPリクエストを評価し、コントロールのイベント発生を検出する。

-コントロールのイベントが発生していた場合「[[ベースクラス1]]」の「コントロール イベント毎の共通イベント ハンドラ」が呼び出される。

-「コントロール イベント毎の共通イベント ハンドラ」では、次の処理が実行される。

--「イベント処理の開始処理用UOCメソッド」(UOC_PreAction)を呼び出す。~
ユーザが実装した「イベント処理の開始処理」を実行する。

--「イベント処理用UOCメソッド」を呼び出す。
---ユーザが実装した「イベント処理」を実行する。
---UOC_(コントロール名)_(イベント名)メソッドというメソッド名
---「コントロール イベント毎の共通イベント ハンドラ」から~
レイト バインドで呼び出されるので、オーバーライドでは実装しない。

--「イベント処理の終了処理用UOCメソッド」を呼び出す(UOC_AfterAction)。~
ユーザが実装した「イベント処理の終了処理」を実行する。

--「イベント処理後の画面遷移処理の実装用UOCメソッド」を呼び出す(UOC_Screen_Transition)。~
ユーザが実装した「イベント処理」が「パス」を戻した場合、~
その「パス」に対して「画面遷移する処理」を実行する。
ユーザが実装した「イベント処理」が「パス」を戻した場合、その「パス」に対して「画面遷移する処理」を実行する。

--「コントロール イベント処理の最終処理用UOCメソッド」を呼び出す(UOC_Finally)。~
ユーザが実装した「イベント処理の最終処理」を実行する。

**補足 [#g58c93be]
-情報の引継ぎ方法~
画面遷移方式により、情報の引継ぎ方法が異なる。
--Server.Transferの場合は、HTTP Contextを使用する。
--Response.Redirectの場合は、Query Stringを使用する。

-子画面
--ココでは、モーダル ダイアログ画面などを「子画面」と表現する。
--なお「親画面」は、当該するモーダル ダイアログ画面を起動した、~
モードレス画面にあたる。情報の引継ぎには、Query Stringを使用する。

*参考 [#b63d5d83]
処理シーケンスの詳細は[[利用ガイド(共通編)>https://github.com/OpenTouryoProject/OpenTouryoDocuments/blob/master/documents/1_User_Guide/ja-JP/1_User_Guide(Common).doc]]を参照のこと。
>通信制御部品を使用した場合、P層 → B層間にサービス インターフェイス(サーバ エンドポイント)とサービス プロキシ(クライアント エンドポイント)が挿入される。

IP:202.246.252.97 TIME:"2018-02-02 (金) 17:21:39" REFERER:"https://opentouryo.osscons.jp/index.php?cmd=edit&page=%E5%87%A6%E7%90%86%E3%82%B7%E3%83%BC%E3%82%B1%E3%83%B3%E3%82%B9" USER_AGENT:"Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36"

トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS