Аспектно-ориентированное программирование на С#
Есть ли хорошие ресурсы для обертывания вокруг Аспектно-ориентированного программирования?
PS: Мне нужно понять программирование AO, а не библиотеки или фреймворки, доступные для .NET или С#:)
Ответы
Ответ 1
Просто для того, чтобы обойти его: это возможность перехватывать такие события, как: создание объектов, настройка свойств и т.д. и прикрепление к ним общих функций, которые будут заполнены соответствующим контекстом.
Поскольку у С# нет встроенного средства для этого, вам понадобится фреймворк, например PostSharp, для "перекодирования байт-кода" (т.е. просто для написания кода для фактического вызова, непосредственно для ваших классов) для имитации.
Ответ 2
Какой своевременный вопрос?
Здесь стоит подкаст, заслуживающий прослушивания.
Это даст вам хороший обзор того, что такое АОП? где его можно использовать?
Надеюсь, что это поможет.
Ответ 3
Хорошая ссылка ниже, показывает вам, как скопировать структуру AOP самостоятельно. К сожалению, все ваши классы-потребители должны унаследовать от MarshalByRefObject
(через ContextBoundObject
).
http://www.developerfusion.com/article/5307/aspect-oriented-programming-using-net/3/
Ответ 4
проверьте это, он описывает, как реализовать AOP (журнал, синхронизация, трассировка, обработка исключений...) с помощью postsharp
http://www.codeproject.com/Articles/337564/Aspect-Oriented-Programming-Using-Csharp-and-PostS
Ответ 5
Аспектно-ориентированное программирование означает наличие мета-уровня, в котором yo может определять функции ведения журнала или безопасности/контроля доступа, чтобы переплетаться с вашим кодом, а не внедрять эту функцию очень долго в вашем коде. Таким образом, вместо одномерного, вам нужно запрограммировать двумерные.
Я знаю, это может звучать очень сложно, но это легко, как только вы это поняли.
AOP часто работает с прокси-классами, которые перехватывают вызовы и делают что-то в фоновом режиме.