Open棟梁 wiki
戻る
目次 †
導入前の質問 †
複数画面対応のWebアプリケーションに対応しているか? †
どのようなパターンでも対応可能です。また、ブラウザ・ウィンドウ別Session領域などの、複数画面対応のWebアプリケーション開発を支援する機能を活用できます。
クロス ブラウザに対応しているか? †
IE6 / 7 / 8、Firefox、Safari、Google Chrome、Operaで動作確認を取っています。しかし、SP、新バージョンについてはチェックし切れていない所もあります。以下、クロス ブラウザに於ける既知の制限事項になります。
- LinkButton?、ImageMap?など、hrefの__doPostBack?()メソッドを使用してポストバックするコントロールで 二重送信防止機能がIE6のみ有効にならないと言う制限事項があります。
Internet系のシステムに於いて、Sessionタイムアウト時も処理を続行させたい。 †
Sessionタイムアウト検出機能と、Sessionを継続的に使用する必要のあるフレームワーク機能(下記参照)を全てOFFにすることで、Internet系システムの要件にも対応できます。
負荷分散クラスタに於いてフェイル オーバー後、業務続行可能か? †
SQL Server、Oracle、いずれかのSessionモードを選択し、専用のSession状態保持用サーバを新設することでフェイル オーバー後、業務続行可能となります(Session状態保持用サーバは単一障害点となり得ますので、二重化できないStateServer?は選択肢から外しています)。StateServer?は同一サーバ内に立てることでサーバ メモリの有効活用やサーバ再起動時にも業務続行可能にすると言った信頼性向上に役立ちます。
マスタ ページの利用は必須か? †
- P層フレームワークの定義をマスタページに持つため必須です。
- P層フレームワークの定義以外(UI要素など)は、空のでも問題ありません。
マスタ ページのネストをサポートしているか? †
サポートしています。
- 最新バージョンでは、コントロールのプレフィックスで コントロール(イベント)をハンドルするようになっています。
- ベースクラス2のコントロール取得処理や 中継イベント ハンドラをカスタマイズすることで、対応するコントロール・イベントを追加できます。
configファイルに指定する、コントロール毎のプレフィックスを空に指定すれば、P層イベント処理機能をキャンセルできます。
P層イベント処理機能はWebユーザ コントロールをサポートしているか? †
- サポートしています。
- Webユーザ コントロールや、マスタ ページ上にP層イベント処理機能のイベント ハンドラを実装可能になりました。
- この際、ページ側とWebユーザ コントロールや、マスタ ページ側のコントロール名称が衝突しないようにプレフィックス追加など検討が必要になります。
IEキーイベント抑止 †
Enterキーでのsubmit抑止 †
https://github.com/OpenTouryoProject/OpenTouryo/blob/develop/root/programs/C%23/Samples/WebApp_sample/ProjectX_sample/Framework/Js/ie_key_event.js#L236
下記のように、ブラウザに寄って動作が異なるようなので、
- IEでは、複数テキスト入力がある場合、そもそもEnterでサブミットされないが、
- Safari/Chromeでは複数テキスト入力がある場合も、Enterでサブミットされる。
当該コントロール毎にJavaScript?を記述した方が良いだろうという判断です。
トラブルシュート †
Sessionタイムアウト †
ログイン画面でSessionタイムアウト例外が発生する。 †
- P層フレームワークを使う場合は、Sessionを必要としますので、インターネット環境下等、DoS系攻撃が可能な環境下のログイン画面には、「Open 棟梁」のP層フレームワークを 使用したカスタム認証のログイン画面は使用しないようにするか、Windows認証やSiteMinder?等の認証基盤をご利用ください。未認証状態でのSession Cookie発行は問題とされています。
予期せぬSessionタイムアウト例外が発生する †
Sessionタイムアウト例外を発生させないようにセッションの解放を行うには、this.FxSessionAbandon()メソッドを使用して下さい。エラー画面でthis.FxSessionAbandon()メソッドが呼び出されています。
IFRAMEの更新後にIFRAME親画面の操作が出来なくなる。 †
- IFRAMEを使用している場合、IFRAME親画面の操作が出来なくなることがありました(ブラウザ、バージョンによる)。
- この現象は、特定のブラウザで、(IFRAME親)画面のreadyStateの値がcompleteにならず、interactiveになるため、二重送信防止機能により操作が抑止され続けることに起因します。
- このような現象が現れる場合は、当該(IFRAME親)画面を出力する際に、this.Form.Attributes.Remove("onSubmit");を呼び出し、二重送信防止機能を一時的にキャンセルすることで対策する必要があります。
カスタムコントロール †
カスタムコントロールにサニタイジングの処理を実装したい? †
その他 †
HTMLのタイトルは何処で指定しているか? †
ベースクラス2のCMN_FormInit?メソッドで、this.Page.Titleに設定しています。必要に応じてカスタマイズ下さい。
リッチクライアント †
リッチクライアントに対応しているか? †
リッチクライアントに対応したP層フレームワークはWindows Formsのみのサポートとなります。
Windows FormsではP層イベント処理機能に対応させるコントロール・イベントが多くなり過ぎる。 †
ベースクラス2をカスタマイズする事でP層イベント処理機能に対応したコントロール・イベントの追加が可能ですが、カスタマイズ量が多くなるため、.NET標準のイベントハンドラから、隠しボタン(HiddenButton?) のDoClick?メソッドを使用し、Clickイベントを発生させることも可能です。また、この方法は、マルチプル・イベントやマルチキャスト・イベントに対応させる方法としても利用可能です。
Windows FormsのMenuItem?コントロールはP層イベント処理機能でサポートされているか? †
サポートされています。コントロールの検索方法が他と異なるためベースクラス2をカスタマイズせず 画面のロード処理(UOC_FormInit?)でMenuItem?のClickイベントに共通Clickイベント ハンドラ(Item_Click)を設定します。なお、同じ要領で、ベースクラス2をカスタマイズせず、 画面のロード処理(UOC_FormInit?)で共通イベント ハンドラ(Item_Click)を直接登録する事でP層イベント処理機能に対応させる事ができます。