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