Применение аспектно-ориентированного программирования

Я использовал некоторые основные решения для стиля AOP для сквозных проблем как безопасность, вход, проверка, и т.д. Мое решение вращалось вокруг замка Windsor и DynamicProxy, потому что я могу применить все с помощью Шиканья базирующийся DSL и содержать мой код в чистоте Атрибутов. Мне сказали в выходные взглянуть на PostSharp, поскольку он, как предполагается, "лучшее" решение. У меня был беглый взгляд на PostSharp, но я пугался использования Атрибута.

Кто-либо попробовал оба решения и хотел бы совместно использовать их события?

13
задан David Archibald 16 September 2019 в 22:43
поделиться

2 ответа

Я только посмотрел на Виндзор замка в течение короткого времени (все же), таким образом, я не могу прокомментировать это, но я действительно использовал пострезкий.

Пострезкие работы путем переплетения во время компиляции. Это реклама постшаг компиляции к Вашей сборке, где это изменяет Ваш код. Код компилируется, как будто Вы просто запрограммировали сквозные проблемы в Вас код. Это более производительно, чем переплетение во время выполнения и из-за использования Пострезких атрибутов очень просто в использовании. Я думаю с помощью атрибутов для AOP, не так проблематично как использование его для DI. Но это - просто мой персональный вкус.

, Но...

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

10
ответ дан 1 December 2019 в 21:53
поделиться

Несколько незначительных проблем с PostSharp...

Одна проблема, которую я имел с PostSharp, - то, что при использовании asp.net, номера строки для сообщений об исключениях отсутствуют количеством инструкций IL, введенных в блоки PostSharp, поскольку PDBs не введены также:-).

кроме того, без блоков PostSharp, доступных во времени выполнения, ошибки периода выполнения происходят. Используя Виндзор, квершлаги могут быть выключены позднее без того, чтобы перекомпилировать кода.

(надеюсь, что это имеет смысл)

14
ответ дан 1 December 2019 в 21:53
поделиться
Другие вопросы по тегам:

Похожие вопросы: