Подтвердить что ты не робот

Что такое IL Weaving?

Я только что увидел Ayende post сегодня о PostSharp. Я загрузил код и опробовал его, и я подумал, что это самый крутой, самый простой в использовании способ обработки АОП, который я видел.

В своем посте Айенде говорит, что PostSharp совершает магию через IL Weaving. Теперь, на каком-то абстрактном уровне, я могу вывести, что это значит, но я хотел посмотреть, есть ли более подробный ответ. К сожалению, впервые за очень долгое время Google подошел для меня пустым. И поэтому я подумал, что это будет большой вопрос для StackOverflow (так как я был подписчиком на блог Jeff уже пару лет и знал, что этот сайт делает свое дело).

Итак, что же такое IL Weaving и как оно выполняется?

4b9b3361

Ответ 1

Ткачество относится к процессу инъекции функциональности в существующую программу. Это можно сделать концептуально на нескольких уровнях:

  • Тиснение исходного кода будет вводить строки исходного кода до компиляции кода.
  • Сопряжение IL (для .NET) добавляет код в виде инструкций IL в сборке
  • Работа с байтовым кодом (для Java) работает над файлом класса, см. эти комментарии wrt AspectJ

В теории вы могли бы пойти еще глубже и переплетаться с исполняемым файлом, скомпилированным в собственные инструкции, но это добавило бы большой сложности, и я не знаю ничего, что делает это.

Ответ 2

IL. Ткачество - это простое использование ByteCode Weaving..Net компилируется на промежуточный язык, который запускается .NET clr. IL Weaving в основном анализирует и изменяет промежуточный язык. Поскольку это делается на этом уровне, это может быть сделано для всех языков .NET.

Ответ 3

Может быть, если вы используете Google MSIL Injection. Эта ссылка от PostSharp, и это объясняет это хорошо.

Моя компания недавно купила продукт под названием dynaTrace для диагностики производительности. Он использует инъекцию MSIL для инструментария вокруг методов. В основном он добавляет код IL перед вашим методом и после этого метода (я уверен, что для него это намного больше).

И здесь является довольно привлекательным, но хорошим объяснением процесса.