62

今日、PostSharp に関するAyende の投稿を見たところです。コードをダウンロードして試してみたところ、今まで見た中で最もクールで使いやすい AOP の処理方法だと思いました。

Ayende は投稿の中で、PostSharp はIL Weavingによって魔法のように機能すると述べています。さて、抽象的なレベルでそれが何を意味するかを推測することはできますが、もっと詳細な答えがあるかどうかを知りたかったのです. 残念なことに、久しぶりに Google が空っぽになった。それで、これは StackOverflow にとって素晴らしい質問になると思いました (私は数年前から Jeff のブログを購読しており、このサイトがその役割を果たしていることを知っていたからです)。

では、IL Weaving とは正確にはどのようなもので、どのように達成されるのでしょうか?

4

3 に答える 3

34

ウィービングとは、既存のプログラムに機能を注入するプロセスを指します。これは、いくつかのレベルで概念的に行うことができます。

  • ソース コード ウィービングは、コードがコンパイルされる前にソース コード行を挿入します。
  • IL ウィービング (.NET 用) は、コードを IL 命令としてアセンブリに追加します。
  • ByteCode ウィービング (Java 用) はクラス ファイルで動作します。AspectJ についてのこれらのコメントを参照してください

理論的には、ネイティブ命令にコンパイルされた実行可能ファイルを使用して、さらに深く掘り下げることができますが、これにより複雑さが増し、これを行うものは何も知りません。

于 2008-10-09T22:04:42.783 に答える
11

IL Weaving は ByteCode Weaving に似ています。.Net は、.NET clr によって実行される中間言語にコンパイルされます。IL Weaving は基本的に中間言語の分析と変更です。そのレベルで実行されるため、すべての .NET 言語で実行できます。

于 2008-10-09T22:00:17.037 に答える
4

代わりに Google MSIL インジェクションを使用すると役立つ場合があります。このリンクはPostSharpからのもので、よく説明されています。

私の会社は最近、パフォーマンス診断のために dynaTrace という製品を購入しました。これは、MSIL インジェクションを使用して、メソッドをインストルメント化します。基本的に、メソッドの前と後に IL コードを追加して、メソッドの時間を計ります (それ以上のことがあると確信しています)。

そして、これはかなり複雑ですが、プロセスの適切な説明です.

于 2008-10-09T22:02:27.423 に答える