• 検索結果がありません。

Aspect

ドメイン特化のAO機構

ポイントカット記述子の追加 アドバイスの織り込みの拡張

アスペクトインスタンスの管理機構の拡張 拡張したウィーバ

9

ドメイン特化のジョインポイントモデルの定義

ドメイン特化のイベントと

汎用的なジョインポイントの対応関係を定義 (ジョインポイント写像の定義)

例:ページアクセスの場合

in out

in out

スクリプト実行

ページアクセスを表すジョインポイント

プログラム実行モデルに基づく ジョインポイント

Mapping 1

ドメイン特化のジョインポイントモデルの定義

ドメイン特化のイベントと

汎用的なジョインポイントの対応関係を定義 (ジョインポイント写像の定義)

例:ページアクセスの場合

10

in out

in out

スクリプト実行

ページアクセスを表すジョインポイント

Mapping 1

in out

in in out out

exitもしくはdie 関数の呼び出し Mapping 2

ドメイン特化のジョインポイントモデルの定義

ドメイン特化のイベントと

汎用的なジョインポイントの対応関係を定義 (ジョインポイント写像の定義)

例:ページアクセスの場合

in out

in out

スクリプト実行

ページアクセスを表すジョインポイント

プログラム実行モデルに基づく ジョインポイント

Mapping 1

in out

in in out out

exitもしくはdie 関数の呼び出し

スクリプト実行 Mapping 2

ドメイン特化のジョインポイントモデルの定義

ドメイン特化のイベントと

汎用的なジョインポイントの対応関係を定義 (ジョインポイント写像の定義)

例:ページアクセスの場合

ドメイン特化の処理単位に着目して ジョインポイントのグループを定義

10

ユーザ 1 ユーザ 2

Webサーバ全体の一連のページアクセス

ユーザごとの一連のページアクセス

in out

in out

スクリプト実行

ページアクセスを表すジョインポイント

Mapping 1

in out

in in out out

exitもしくはdie 関数の呼び出し Mapping 2

ドメイン特化のジョインポイントモデルの定義

ドメイン特化のイベントと

汎用的なジョインポイントの対応関係を定義 (ジョインポイント写像の定義)

例:ページアクセスの場合

ドメイン特化の処理単位に着目して ジョインポイントのグループを定義

ドメイン特化のAO機構の設計

• ドメイン特化のジョインポイントを直接選択する ポイントカット記述子の定義

• ドメイン特化のジョインポイントモデルに基づく アスペクトのインスタンス生成機構の定義

例:ページアクセスの場合

11

ドメイン特化のAO機構の設計

• ドメイン特化のジョインポイントを直接選択する ポイントカット記述子の定義

• ドメイン特化のジョインポイントモデルに基づく アスペクトのインスタンス生成機構の定義

例:ページアクセスの場合

request(url, forms, cookies, headers) url : URLのパターン

forms : フォームデータの指定 cookies: クッキーデータの指定

headers: HTTPリクエストヘッダの指定

ページアクセスを選択する

ポイントカット記述子

ドメイン特化のAO機構の設計

• ドメイン特化のジョインポイントを直接選択する ポイントカット記述子の定義

• ドメイン特化のジョインポイントモデルに基づく アスペクトのインスタンス生成機構の定義

例:ページアクセスの場合

request(url, forms, cookies, headers) url : URLのパターン

forms : フォームデータの指定 cookies: クッキーデータの指定

headers: HTTPリクエストヘッダの指定

ページアクセスを選択する

ポイントカット記述子

11

ドメイン特化のAO機構の設計

• ドメイン特化のジョインポイントを直接選択する ポイントカット記述子の定義

• ドメイン特化のジョインポイントモデルに基づく アスペクトのインスタンス生成機構の定義

例:ページアクセスの場合

request(url, forms, cookies, headers) url : URLのパターン

forms : フォームデータの指定 cookies: クッキーデータの指定

headers: HTTPリクエストヘッダの指定

ページアクセスを選択する

ポイントカット記述子

Webサーバ全体で1つ、各ユーザごとに 関連付けたアスペクトのインスタンス生成

Per Application

Per Session

Instance

Instance

Instance

ドメイン特化のAO機構の設計

• ドメイン特化のジョインポイントを直接選択する ポイントカット記述子の定義

• ドメイン特化のジョインポイントモデルに基づく アスペクトのインスタンス生成機構の定義

例:ページアクセスの場合

request(url, forms, cookies, headers) url : URLのパターン

forms : フォームデータの指定 cookies: クッキーデータの指定

headers: HTTPリクエストヘッダの指定

ページアクセスを選択する

ポイントカット記述子

Webサーバ全体で1つ、各ユーザごとに 関連付けたアスペクトのインスタンス生成

11

汎用的なAO機構の拡張

• 汎用的なAO機構のウィーバを拡張する

• AOWPフレームワーク

- アスペクト記述をPHPのクラスとして記述する

(AOPフレームワーク)

汎用的なAO機構の拡張

• 汎用的なAO機構のウィーバを拡張する

• AOWPフレームワーク

- アスペクト記述をPHPのクラスとして記述する (AOPフレームワーク)

➡ ポイントカット記述子やアスペクトの種類の追加は クラスの追加によって行う

(request, per-application, per-session)

12

汎用的なAO機構の拡張

• 汎用的なAO機構のウィーバを拡張する

• AOWPフレームワーク

- アスペクト記述をPHPのクラスとして記述する (AOPフレームワーク)

➡ ポイントカット記述子やアスペクトの種類の追加は クラスの追加によって行う

(request, per-application, per-session)

- ウィーバはPHPを用いたOOPによって実装

汎用的なAO機構の拡張

• 汎用的なAO機構のウィーバを拡張する

• AOWPフレームワーク

- アスペクト記述をPHPのクラスとして記述する (AOPフレームワーク)

➡ ポイントカット記述子やアスペクトの種類の追加は クラスの追加によって行う

(request, per-application, per-session)

- ウィーバはPHPを用いたOOPによって実装

➡ 織り込み手順はウィーバのPHP記述を変更

12

Pointcut

_isJoinPointShadow(JoinPoint) _runtimeMatch(JoinPoint)

AO機構の拡張

AO機構の為の構文の拡張

ポイントカット記述子は

Pointcutクラスのサブクラスとして定義

̲isJoinPointShadow: 

引き数のジョインポイントがジョインポイント投影かを判定するメソッド

Pointcut

_isJoinPointShadow(JoinPoint) _runtimeMatch(JoinPoint)

AO機構の拡張

AO機構の為の構文の拡張

ポイントカット記述子は

Pointcutクラスのサブクラスとして定義

̲isJoinPointShadow: 

引き数のジョインポイントがジョインポイント投影かを判定するメソッド

̲runtimeMatch: 

実行時のジョインポイントの選択を記述するメソッド

13

RequestPointcut

_isJoinPointShadow(JoinPoint) _runtimeMatch(JoinPoint)

Pointcut

_isJoinPointShadow(JoinPoint) _runtimeMatch(JoinPoint)

AO機構の拡張

AO機構の為の構文の拡張

ポイントカット記述子は

Pointcutクラスのサブクラスとして定義

̲isJoinPointShadow: 

引き数のジョインポイントがジョインポイント投影かを判定するメソッド

アスペクトのインスタンス生成方法を指定する為の 記述子はAspectクラスのサブクラスとして定義

RequestPointcut

_isJoinPointShadow(JoinPoint) _runtimeMatch(JoinPoint)

Pointcut

_isJoinPointShadow(JoinPoint) _runtimeMatch(JoinPoint)

PerSessionAspect _sessionID

_sessionTimeOut Aspect

PerApplicationAspect Aspect

AO機構の拡張

AO機構の為の構文の拡張

ポイントカット記述子は

Pointcutクラスのサブクラスとして定義

̲isJoinPointShadow: 

引き数のジョインポイントがジョインポイント投影かを判定するメソッド

̲runtimeMatch: 

実行時のジョインポイントの選択を記述するメソッド

アスペクトのインスタンス生成方法を指定する為の 記述子はAspectクラスのサブクラスとして定義

13

RequestPointcut

_isJoinPointShadow(JoinPoint) _runtimeMatch(JoinPoint)

ベースプログラムを解析し 抽象構文木 (AST) を生成

ASTからジョインポイントを生成

ジョインポイントが ポイントカットに

適合するか?

(ジョインポイント投影か?)

ジョインポイントと対応するASTに対して アドバイスを適用する為のAST変換を行う ASTからコードを生成する

ジョインポイントが ポイントカットで指定された

実行時の条件を満たすか?

全てのアドバイスについて

アスペクトのインスタンスを取得

アドバイスを実行

織り込み時 (コンパイル時) 実行時

全てのジョインポイントについて 全てのアドバイスについて 開始

停止

NO

YES

YES

AO機構の拡張

ウィーバの変更

NO

ベースプログラムを解析し 抽象構文木 (AST) を生成

ASTからジョインポイントを生成

ジョインポイントが ポイントカットに

適合するか?

(ジョインポイント投影か?)

全てのジョインポイントについて ジョインポイントと対応するASTに対して アドバイスを適用する為のAST変換を行う ASTからコードを生成する

ジョインポイントが ポイントカットで指定された

実行時の条件を満たすか?

全てのアドバイスについて

アスペクトのインスタンスを取得

アドバイスを実行

織り込み時 (コンパイル時) 実行時

全てのジョインポイントについて 全てのアドバイスについて 開始

停止

NO

YES

YES

AO機構の拡張

ウィーバの変更

ドメイン特化の

ポイントカット記述子の為の拡張

NO

14

ベースプログラムを解析し 抽象構文木 (AST) を生成

ASTからジョインポイントを生成

ジョインポイントが ポイントカットに

適合するか?

(ジョインポイント投影か?)

ジョインポイントと対応するASTに対して アドバイスを適用する為のAST変換を行う ASTからコードを生成する

ジョインポイントが ポイントカットで指定された

実行時の条件を満たすか?

全てのアドバイスについて

アスペクトのインスタンスを取得

アドバイスを実行

織り込み時 (コンパイル時) 実行時

全てのジョインポイントについて 全てのアドバイスについて 開始

停止

NO

YES

YES

AO機構の拡張

ウィーバの変更

ドメイン特化の

ポイントカット記述子の為の拡張

NO

ジョインポイントが ポイントカットに

適合するか?

(ジョインポイント投影か?) ジョインポイントが ポイントカットで指定された

実行時の条件を満たすか?

ジョインポイントと対応するASTに対して アドバイスを適用する為のAST変換を行う

関連したドキュメント