1 / 17

Въведение в Aspect Oriented Programming (AOP) с .NET

Design Patterns in C#. Въведение в Aspect Oriented Programming (AOP) с .NET. http://www.devbg.org/patternscourse/. Стефан Захариев. stephan.zahariev[at]gmail.com. NearSoft Europe www.nearsoft.ch. Необходими знания. Базови познания за езика C# Познания по ООП

Download Presentation

Въведение в Aspect Oriented Programming (AOP) с .NET

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Design Patterns in C# Въведение в Aspect Oriented Programming (AOP) с .NET http://www.devbg.org/patternscourse/ Стефан Захариев stephan.zahariev[at]gmail.com NearSoft Europe www.nearsoft.ch

  2. Необходими знания • Базови познания за езика C# • Познания по ООП • Базови познания по UML (клас диаграми)

  3. Съдържание • Какво представлява AOP • AOP и .NET • Spring.NET • ContextBoundObject • Примери използващи AOP

  4. Какво е AOP? • Създадено е като концепция през средата на 90-те в Xerox Palo Alto Research Center • Има за цел да отдели отделните части в едно приложение, така че те да не са зависими една от друга • Примери: • Поддръжка на лог информация • Управление на транзакциите

  5. Добър ли е този код? public doubleGetDiscount() { Console.WriteLine(“Entering GetDiscount()"); double discount = mTotalSum * mDiscountPercent / 100; Console.WriteLine(“Leaving GetDiscount()"); return discount; } public void SaveInvoice() { using (TransactionScope ts = new TransactionScope()) { … SqlCommand saveInvoiceCommand = new SqlCommand(); … saveInvoiceCommand.ExecuteNonQuery(); ts.Complete(); } } public void SaveInvoice() { … SqlCommand saveInvoiceCommand = new SqlCommand(); … saveInvoiceCommand.ExecuteNonQuery(); } public doubleGetDiscount() { double discount = mTotalSum * mDiscountPercent / 100; return discount; }

  6. Как работи AOP public doubleGetDiscount() { double discount = mTotalSum * mDiscountPercent / 100; return discount; } public doubleLogGetDiscount() { Console.WriteLine(“Entering GetDiscount()"); }

  7. Няколко термина • Aspect – програмен код, който е независим • Записване в log файл • Joinpoint – точка от изпълнението на програмата, където един или няколко аспекта могат да бъдат приложени • метод, пропърти, конструктор • Advice – дефинира кога ще се изпълни кода приложен към даден pointcut • преди, след, около • Pointcut – дефинира група joinpoint-ове, към които се прилага даден advice • Всички методи започващи с “Print” • Weaving – процеса, при който се интегрират аспектите в приложението.

  8. Spring.NET • http://www.springframework.net/ • Open source • Първа реализация на Java • Поддържа: • Aspect Oriented Programming • Dependency Injection • …

  9. Как работи Spring.NET «interface» UserAdvice IUser + SayHello () UserProxy User + SayHello () Client

  10. Демонстрация #1 • Hello world

  11. Демонстрация #2 • Управление на транзакции с AOP

  12. ContextBoundObject • Стандартен клас за .NET Framework • Как работи?

  13. Демонстрация #3 • AOP чрез ContextBoundObject

  14. Демонстрация #4 • Производителност и AOP

  15. За и против • За • Намалява свързаността на класовете в приложението • Повишава преизползването на код • Против • Не се поддържа стандартно (.NET и Java) • Повишава необходимите знания необходими на разработчика • Кода не е толкова ясен • Затруднено тестване

  16. Връзки • Aspect Oriented Programming • http://en.wikipedia.org/wiki/Aspect_oriented_programming • http://aosd.net/ • http://www-128.ibm.com/developerworks/rational/library/2782.html • Spring.NET • http://www.springframework.net/documentation.html • ContextBoundObject • http://msdn.microsoft.com/msdnmag/issues/03/03/ContextsinNET/default.aspx • http://www.codeproject.com/csharp/AspectIntercept.asp • http://www.theserverside.net/tt/articles/content/AspectOrientingNET/AspectOrientingNET.html

  17. Aspect Oriented Programming Въпроси?

More Related