Вопрос

Я использую некоторые базовые решения в стиле AOP для решения таких сквозных задач, как безопасность, ведение журнала, проверка и т.д.Мое решение охватило все Виндзорский замок и DynamicProxy.Я пошел по этому пути, потому что я могу применить все, используя DSL на основе Boo, и сохранить свой код чистым от атрибутов.На выходных мне сказали взглянуть на Постшарповый поскольку предполагается, что это "лучшее" решение.Я быстро просмотрел PostSharp, но меня отпугнуло использование атрибута.

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

Это было полезно?

Решение

Я смотрел на castle-windsor только короткое время (пока), поэтому не могу это комментировать, но я использовал postsharp.

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

Но...

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

Другие советы

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

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top