aspect oriented programming aop net n.
Download
Skip this Video
Loading SlideShow in 5 Seconds..
Въведение в Aspect Oriented Programming (AOP) с .NET PowerPoint Presentation
Download Presentation
Въведение в Aspect Oriented Programming (AOP) с .NET

Loading in 2 Seconds...

  share
play fullscreen
1 / 17
danielle-garcia

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

123 Views
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. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.

- - - - - - - - - - - - - - - - - - - - - - - - - - - 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 Въпроси?