web アプリケーションの特性と aop
DESCRIPTION
Web アプリケーションの特性と AOP. 九州工業大学大学院 外村慶二. 鵜林 尚靖,成瀬 龍人,塩塚 大 ( 九工大 ) 中島 震, Reda Ahroum, Daniel Balouek (NII). 1. 概要. Web アプリの横断的関心事 サニタイジング,アクセス制御,アクセス解析等 Web アプリ開発に特化した AOP 機構の開発 AOWP ページアクセスとユーザセッションのサポート. 2. 目次. Web アプリケーションと AOP Web アプリ開発に特化した AOP 機構の開発 AOWP AOWP の適用事例 - PowerPoint PPT PresentationTRANSCRIPT
![Page 1: Web アプリケーションの特性と AOP](https://reader033.vdocuments.pub/reader033/viewer/2022061610/5681585d550346895dc5b7f6/html5/thumbnails/1.jpg)
Web アプリケーションの特性と AOP九州工業大学大学院
外村慶二
1
鵜林 尚靖,成瀬 龍人,塩塚 大 ( 九工大 )中島 震, Reda Ahroum, Daniel Balouek (NII)
![Page 2: Web アプリケーションの特性と AOP](https://reader033.vdocuments.pub/reader033/viewer/2022061610/5681585d550346895dc5b7f6/html5/thumbnails/2.jpg)
概要
•Web アプリの横断的関心事✓サニタイジング,アクセス制御,アクセ
ス解析等
•Web アプリ開発に特化した AOP 機構の開発
✓AOWP✓ページアクセスとユーザセッションのサ
ポート
2
![Page 3: Web アプリケーションの特性と AOP](https://reader033.vdocuments.pub/reader033/viewer/2022061610/5681585d550346895dc5b7f6/html5/thumbnails/3.jpg)
目次
•Web アプリケーションと AOP
•Web アプリ開発に特化した AOP 機構の開発- AOWP
•AOWP の適用事例- オープンソースを対象とした記述実験- AOP ベースの Web アプリケーション開発
•議論とまとめ
3
![Page 4: Web アプリケーションの特性と AOP](https://reader033.vdocuments.pub/reader033/viewer/2022061610/5681585d550346895dc5b7f6/html5/thumbnails/4.jpg)
Web アプリケーションとAOP
4
![Page 5: Web アプリケーションの特性と AOP](https://reader033.vdocuments.pub/reader033/viewer/2022061610/5681585d550346895dc5b7f6/html5/thumbnails/5.jpg)
Web アプリケーション
5
![Page 6: Web アプリケーションの特性と AOP](https://reader033.vdocuments.pub/reader033/viewer/2022061610/5681585d550346895dc5b7f6/html5/thumbnails/6.jpg)
Web アプリの横断的関心事関心事 影響を与える処理,関係するコンテキスト情報
サニタイジング[Masuhara2003]
データベースアクセス, HTML 出力,データフロー
アクセス制御[Lemos2006]
ページアクセス,ユーザごとの認証状態
バージョニング[Lemos2006]
ファイルアクセス,データベースアクセス
ファイル圧縮 ( 変換 ) ファイルアクセス
アクセス解析 ページアクセス,ユーザ /アプリケーションごと
サービス監視 ページアクセス,ユーザごとのページ遷移履歴 [Tan2002]
構造[Kojarski2003]
Web ページの構造,データベースの構造
6
![Page 7: Web アプリケーションの特性と AOP](https://reader033.vdocuments.pub/reader033/viewer/2022061610/5681585d550346895dc5b7f6/html5/thumbnails/7.jpg)
Web アプリと AOP 言語dflow [Masuhara2003]データフローのサポート
( サニタイジング等 )
dflow [Masuhara2003]データフローのサポート
( サニタイジング等 )
AspectJ , AOPHP 等( サニタイジング,ファイルアクセス,
キャッシング等 )
AspectJ , AOPHP 等( サニタイジング,ファイルアクセス,
キャッシング等 )
7
![Page 8: Web アプリケーションの特性と AOP](https://reader033.vdocuments.pub/reader033/viewer/2022061610/5681585d550346895dc5b7f6/html5/thumbnails/8.jpg)
本日の話関心事 影響を与える処理,関係するコンテキスト情報
サニタイジング[Masuhara2003]
データベースアクセス, HTML 出力,データフロー
アクセス制御[Lemos2006]
ページアクセス,ユーザごとの認証状態
バージョニング[Lemos2006]
ファイルアクセス,データベースアクセス
ファイル圧縮 ( 変換 ) ファイルアクセス
アクセス解析 ページアクセス,ユーザ /アプリケーションごと
サービス監視 ページアクセス,ユーザごとのページ遷移履歴 [Tan2002]
構造[Kojarski2003]
Web ページの構造,データベースの構造
8
![Page 9: Web アプリケーションの特性と AOP](https://reader033.vdocuments.pub/reader033/viewer/2022061610/5681585d550346895dc5b7f6/html5/thumbnails/9.jpg)
本日の話dflow [Masuhara2003]dflow [Masuhara2003]
AspectJ , AOPHP 等AspectJ , AOPHP 等
AOWPページアクセス,
ユーザセッションのサポート( アクセス制御,アクセス解析,
サービス監視等 )
AOWPページアクセス,
ユーザセッションのサポート( アクセス制御,アクセス解析,
サービス監視等 )
9
![Page 10: Web アプリケーションの特性と AOP](https://reader033.vdocuments.pub/reader033/viewer/2022061610/5681585d550346895dc5b7f6/html5/thumbnails/10.jpg)
Web アプリ開発に特化したAOP 機構の開発
10
![Page 11: Web アプリケーションの特性と AOP](https://reader033.vdocuments.pub/reader033/viewer/2022061610/5681585d550346895dc5b7f6/html5/thumbnails/11.jpg)
研究動機
ページアクセスの取扱いの難しさ
ページアクセスをプログラム実行に対応付ける必要がある
例 : Web アプリ全体にアクセス制御を追加する
11
![Page 12: Web アプリケーションの特性と AOP](https://reader033.vdocuments.pub/reader033/viewer/2022061610/5681585d550346895dc5b7f6/html5/thumbnails/12.jpg)
研究動機
ユーザセッションの取扱いの難しさ
例 : Web アプリ全体にアクセス制御を追加する
12
ユーザセッションを取り扱う為のコード記述が必要
![Page 13: Web アプリケーションの特性と AOP](https://reader033.vdocuments.pub/reader033/viewer/2022061610/5681585d550346895dc5b7f6/html5/thumbnails/13.jpg)
AOWP
リクエスト ジョインポイントとそれらを扱う為のポイントカット記述子
Web アプリの特性に合わせたインスタンス生成機構
13
![Page 14: Web アプリケーションの特性と AOP](https://reader033.vdocuments.pub/reader033/viewer/2022061610/5681585d550346895dc5b7f6/html5/thumbnails/14.jpg)
AOWP
ページアクセスの取扱い
サーバサイドのプログラム
サーバサイドのプログラム
beforeアドバイス
beforeアドバイス
afterアドバイス
afterアドバイス
サーバサイドのプログラム
aroundアドバイス
aroundアドバイス
Web サーバWeb クライアント
リクエストジョインポイント
request (URL_PAT, FD_PATS, COOKIE_PATS, HEADER_PATS)URL_PAT: 選択する HTTP リクエストに含まれる URL のパターン
FD_PATS: フォームデータの内容を指定するパターンCOOKIE_PATS: クッキーの内容を指定するパターン
HEADER_PATS: HTTP リクエストヘッダの内容 (IP アドレス等 ) を指定するパターン
request ポイントカット
14
![Page 15: Web アプリケーションの特性と AOP](https://reader033.vdocuments.pub/reader033/viewer/2022061610/5681585d550346895dc5b7f6/html5/thumbnails/15.jpg)
AOWP
アスペクトのインスタンス生成機構
実行時のコンテキストに基づいて参照できるインスタンスを制限
15
リクエスト処理ごと,ユーザごと,アプリケーションで 1 つ,の 3 種類のインスタンス生成方法
![Page 16: Web アプリケーションの特性と AOP](https://reader033.vdocuments.pub/reader033/viewer/2022061610/5681585d550346895dc5b7f6/html5/thumbnails/16.jpg)
AOWP の実装
PHP を対象としたプロトタイプ実装
•PHP に基づく AOP 機構 + Web に特化した AOP 機構
•コード変換により織り込みを行う- リクエスト ジョインポイントとポイントカットは
PHP のプログラム実行と対応付けて織り込み- Web 固有のアスペクトのインスタンス生成機構を実現
するファクトリクラスを作成
•AOP フレームワークとして実装- アスペクトを PHP のクラスとして記述
16
![Page 17: Web アプリケーションの特性と AOP](https://reader033.vdocuments.pub/reader033/viewer/2022061610/5681585d550346895dc5b7f6/html5/thumbnails/17.jpg)
around
AOWP の実装
リクエスト JP & PC の実装
アドバイスの種類 対応する PHP プログラムの実行点
before •HTTP リクエストと対応する PHP スクリプトの呼び出し時
after•HTTP リクエストと対応する PHP スクリプトの処理終了時•exit 関数の呼び出し前
around •HTTP リクエストと対応する PHP スクリプトの処理全体
<?php include ‘func.php’; $success = addUser( $_POST[‘name’], $_POST[‘password’] ); if (!$success) { exit(); } displayPage();?>
http://xxx.com/addUser.php
addUser.php
<?php/**omission**/?>
func.phpbefore
before
after
after
17
![Page 18: Web アプリケーションの特性と AOP](https://reader033.vdocuments.pub/reader033/viewer/2022061610/5681585d550346895dc5b7f6/html5/thumbnails/18.jpg)
AOWP の実装
アスペクトのインスタンス生成機構の実装
インスタンスを管理するファクトリクラスを作成
クッキーインスタンスの永続化 PHP の静的変数 インスタンスの永続化
18
![Page 19: Web アプリケーションの特性と AOP](https://reader033.vdocuments.pub/reader033/viewer/2022061610/5681585d550346895dc5b7f6/html5/thumbnails/19.jpg)
AOWP の実装
アスペクトの記述方法class AuthAspect extends PerSessionAspect { private $_authed = false;
public function __construct() { $accChkPC = new RequestPointcut('.*');
$accChkAdv = new BeforeAdvice(); $accChkAdv->setPointcut($accChkPC); $accChkAdv->setAdviceBody('accChk'); $this->addAdvice($accChkAdv); }
public function accChk(JoinPoint $jp) { if (!$this->_authed) { jumpToLoginPage(); } }
...}
00:01:02:03:04:05:06:07:08:09:10:11:12:13:14:15:16:17:...61:
アスペクトのインスタンスの取扱い方法を指定
ポイントカットの定義
アドバイスの定義
19
![Page 20: Web アプリケーションの特性と AOP](https://reader033.vdocuments.pub/reader033/viewer/2022061610/5681585d550346895dc5b7f6/html5/thumbnails/20.jpg)
AOWP の適用事例 (1)
オープンソースを対象とした記述実験
20
![Page 21: Web アプリケーションの特性と AOP](https://reader033.vdocuments.pub/reader033/viewer/2022061610/5681585d550346895dc5b7f6/html5/thumbnails/21.jpg)
AOWP の適用事例 (1)
PukiWiki を対象とした記述実験
コード行数 : 17925 行ファイル数 : 107 個
コード行数 : 17925 行ファイル数 : 107 個
•AOWP を使って,どんな横断的関心事を実システムについかできるか ?
- ユーザ認証アスペクト ( 認証結果の保存 )
- アンケートアスペクト ( 時間の取扱い )
- モニタアスペクト (Web アプリの利用状況の取扱い )
21
![Page 22: Web アプリケーションの特性と AOP](https://reader033.vdocuments.pub/reader033/viewer/2022061610/5681585d550346895dc5b7f6/html5/thumbnails/22.jpg)
AOWP の適用事例 (1)
ユーザごとの状態に基づくアスペクト
22
![Page 23: Web アプリケーションの特性と AOP](https://reader033.vdocuments.pub/reader033/viewer/2022061610/5681585d550346895dc5b7f6/html5/thumbnails/23.jpg)
AOWP の適用事例 (1)
ユーザの滞在時間に基づくアスペクト
23
![Page 24: Web アプリケーションの特性と AOP](https://reader033.vdocuments.pub/reader033/viewer/2022061610/5681585d550346895dc5b7f6/html5/thumbnails/24.jpg)
AOWP の適用事例 (1)
Web サーバの利用状態に基づくアスペクト
24
![Page 25: Web アプリケーションの特性と AOP](https://reader033.vdocuments.pub/reader033/viewer/2022061610/5681585d550346895dc5b7f6/html5/thumbnails/25.jpg)
AOWP の適用事例 (2)
AOP ベースの Web アプリケーション開発
25
![Page 26: Web アプリケーションの特性と AOP](https://reader033.vdocuments.pub/reader033/viewer/2022061610/5681585d550346895dc5b7f6/html5/thumbnails/26.jpg)
AOWP の適用事例 (2)
写真管理システムの開発
•Web アプリを一から開発する際に AOWP をどのように利用できるか ?
•Reda さんと Daniel さんが約 1 ヶ月間開発
•写真の閲覧 / 登録 / 変更ができるシステム
26
![Page 27: Web アプリケーションの特性と AOP](https://reader033.vdocuments.pub/reader033/viewer/2022061610/5681585d550346895dc5b7f6/html5/thumbnails/27.jpg)
AOWP の適用事例 (2)
ベース機能とアスペクト
27
画面のデザインとデータの保存機能のみをベース機能として開発
アクセス制御等の非機能要求をアスペクトとして追加開発
![Page 28: Web アプリケーションの特性と AOP](https://reader033.vdocuments.pub/reader033/viewer/2022061610/5681585d550346895dc5b7f6/html5/thumbnails/28.jpg)
AOWP の適用事例 (2)
Web 固有の関心事 と それ以外の関心事
28
•ページアクセスに横断的な関心事はWeb に特化した AOP 機構を使用
- ユーザ認証アスペクト
- アクセス解析アスペクト
- アクセス履歴アスペクト
- 警告アスペクト
•データベースアクセスやファイルアクセス等に関係する関心事は,プログラミング言語に基づく AOP 機構を使用
- ファイル圧縮アスペクト
- 入力値検証アスペクト
- メール検証アスペクト
![Page 29: Web アプリケーションの特性と AOP](https://reader033.vdocuments.pub/reader033/viewer/2022061610/5681585d550346895dc5b7f6/html5/thumbnails/29.jpg)
議論とまとめ
29
![Page 30: Web アプリケーションの特性と AOP](https://reader033.vdocuments.pub/reader033/viewer/2022061610/5681585d550346895dc5b7f6/html5/thumbnails/30.jpg)
関心事 影響を与える処理,関係するコンテキスト情報
サニタイジング[Masuhara2003]
データベースアクセス, HTML 出力,データフロー
アクセス制御[Lemos2006]
ページアクセス,ユーザごとの認証状態
バージョニング[Lemos2006]
ファイルアクセス,データベースアクセス
ファイル圧縮 ( 変換 ) ファイルアクセス
アクセス解析 ページアクセス,ユーザ /アプリケーションごと
サービス監視 ページアクセス,ユーザごとのページ遷移履歴 [Tan2002]
構造[Kojarski2003]
Web ページの構造,データベースの構造
議論 (1)
実行時の動的織り込み
実行時の機能の付け替えができる事が望ましい
実行時の動的織り込みが有効
実行時の機能の付け替えができる事が望ましい
実行時の動的織り込みが有効
30
![Page 31: Web アプリケーションの特性と AOP](https://reader033.vdocuments.pub/reader033/viewer/2022061610/5681585d550346895dc5b7f6/html5/thumbnails/31.jpg)
議論 (1)
実装方法の検討
事前にサーバサイドプログラムにアドバイスの実行コードを埋め込む方法 (AspectJ 等 )
Web サーバ
Web クライアントプログラム
プログラムWeb クライアント
Weaver
実行性能の最適化が行いやすい
プリコンパイル型
31
HTTP リクエストを横取りして織り込みを行う方法
(AOJS [久保 2008], aspectPHP)
Web サーバ
Web クライアントプログラム
プログラムWeb クライアント
Weaver
動的織り込みに適している
プロキシ型
![Page 32: Web アプリケーションの特性と AOP](https://reader033.vdocuments.pub/reader033/viewer/2022061610/5681585d550346895dc5b7f6/html5/thumbnails/32.jpg)
関心事 影響を与える処理,関係するコンテキスト情報
サニタイジング[Masuhara2003]
データベースアクセス, HTML 出力,データフロー
アクセス制御[Lemos2006]
ページアクセス,ユーザごとの認証状態
バージョニング[Lemos2006]
ファイルアクセス,データベースアクセス
ファイル圧縮 ( 変換 ) ファイルアクセス
アクセス解析 ページアクセス,ユーザ /アプリケーションごと
サービス監視 ページアクセス,ユーザごとのページ遷移履歴 [Tan2002]
構造[Kojarski2003]
Web ページの構造,データベースの構造
議論 (2)
ページ遷移履歴の取扱い
ページ遷移履歴を直接取り扱う為のサポート
ページ遷移履歴を直接取り扱う為のサポート
32
![Page 33: Web アプリケーションの特性と AOP](https://reader033.vdocuments.pub/reader033/viewer/2022061610/5681585d550346895dc5b7f6/html5/thumbnails/33.jpg)
議論 (2)
ページ遷移履歴に基づく PC 機構
•Web アプリの監視において,アクセス履歴を取り扱う事は重要
•実行履歴を取り扱う AOP [Walker2004, Douence2004, Allan2005]
- ユーザごとのアクセス履歴を,プログラムの実行履歴に対応付けるのは大変
•リクエストジョインポイントと per-session のアスペクトインスタンスを利用する事で実用的なものが作れないだろうか ?
33
![Page 34: Web アプリケーションの特性と AOP](https://reader033.vdocuments.pub/reader033/viewer/2022061610/5681585d550346895dc5b7f6/html5/thumbnails/34.jpg)
まとめ
•Web アプリケーションにも様々な横断的関心事がある
•横断的関心事の特徴に合わせた AOP 機構の開発は有効- AOWP: ページアクセスとユーザセッションのサポート
34