マイクロソフト系技術情報 Wiki」は、「Open棟梁Project」,「OSSコンソーシアム .NET開発基盤部会」によって運営されています。

目次

概要

.NET FrameworkでAOP:Aspect Oriented Programmingを実現するための手法の1つである
「透過プロキシ(RealProxy?クラス)」の概要、使用方法、そして、サンプル コードについて説明する。

AOPの解説の多くは、下記、本”概要”のような思想を語っていることが多く、
これを実現するための技術、開発基盤も様々であることから、解説が具体的でないことが多い。

これに対して、ココでは、.NET FrameworkでAOPを実現するための
手法の1つである透過プロキシにフォーカスしてこれを説明する。

技術

AOPを実現する技術(方式)には下記のものがある。

開発基盤

代表的なAOP開発基盤(古いかも)

言語個別

フレームワーク個別

その他

アスペクト指向プログラミングとは?

アスペクト指向プログラミング(以下、AOP と略す)とは、

オブジェクト指向ではうまく分離できない問題

各メソッド内に別のメソッドを呼び出す「処理の共通的パターン」がある場合、
オブジェクト指向ではこれを共通化できず、処理が散在してしまう。

を「アスペクト」と呼び、

アスペクト記述言語(若しくはこれを実現するための各種技術)を用いて、
「アスペクト」を別のメソッド(モジュール)に分離して記述することで、
プログラムに柔軟性を持たせようとする試み。

アスペクトの代表的な利用例としては「ロギング処理」がある。

ロギング処理(アスペクトの代表的な利用例)

#ref(): File not found: "AOP-Logging.png" at page ".NETにおいてAOPを実現する透過プロキシ"

アスペクトの例

以下は、AOPを使用してロギング処理の「アスペクト」を
別のモジュール(or 定義)に分離して実装した例である。

#ref(): File not found: "ExampleOfAOP.png" at page ".NETにおいてAOPを実現する透過プロキシ"

実際にコードが実行される際には、ルールに従って指定されたパターン の
「アスペクト」が織り込まれる(これをアスペクトのウィービングと呼ぶ)。

ウィービングの指定方法

ウィービングの指定方法には、

などがある。

前述の説明に合わせると、透過プロキシを使用したAOPでは、

となる。

透過プロキシ

透過プロキシの概要

透過プロキシとは、種々のリモート処理 基盤技術を使用して境界を越えオブジェクトを転送するためのプロキシである。

捕捉:

透過プロキシの基本的な動作

以下、透過プロキシの基本的な動作を説明する。

(1)

透過プロキシの基本的な動作1

(2)

透過プロキシの基本的な動作2

(3)

透過プロキシの基本的な動作3

透過プロキシでAOPを実現

透過プロキシの働きについては、前項で説明した通りである。

しかし、ココでは、これらの応用的な利用方法までは説明しない。

動作確認用のサンプル プログラム

透過プロキシを使用したAOPの動作確認用サンプル プログラムを用いて、AOPの実装方法を説明する。

ターゲット クラス

ターゲット クラスは、本書で説明した「オブジェクトA」、
すなわち、クライアントが使用したいオブジェクトのことである。

実装のポイントは、MarshalByRefObject?クラスを継承することであり、その他は任意の実装が可能である。
サンプル プログラムでは、様々なシグネチャのメソッドの呼び出しをテストするために、
様々なシグネチャのメソッドをターゲット クラスに実装してある。

透過プロキシ

コンストラクタ

また、透過プロキシ1、2で、コンストラクタの実装が若干異なる。
異なる点は、ターゲット クラスのオブジェクト インスタンスを生成する方法である。

Invokeメソッド

透過プロキシ1、2ともInvokeメソッドの実装は同じである。


Tags: :.NET開発


トップ   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS