Aspect oriented programming aop net
This presentation is the property of its rightful owner.
Sponsored Links
1 / 17

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


  • 70 Views
  • Uploaded on
  • Presentation posted in: General

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.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


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


Aspect oriented programming aop net

Необходими знания

  • Базови познания за езика C#

  • Познания по ООП

  • Базови познания по UML (клас диаграми)


Aspect oriented programming aop net

Съдържание

  • Какво представлява AOP

  • AOP и .NET

    • Spring.NET

    • ContextBoundObject

  • Примери използващи AOP


Aspect oriented programming aop net

Какво е AOP?

  • Създадено е като концепция през средата на 90-те в Xerox Palo Alto Research Center

  • Има за цел да отдели отделните части в едно приложение, така че те да не са зависими една от друга

  • Примери:

    • Поддръжка на лог информация

    • Управление на транзакциите


Aspect oriented programming aop net

Добър ли е този код?

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;

}


Aspect oriented programming aop net

Как работи AOP

public doubleGetDiscount()

{

double discount = mTotalSum * mDiscountPercent / 100;

return discount;

}

public doubleLogGetDiscount()

{

Console.WriteLine(“Entering GetDiscount()");

}


Aspect oriented programming aop net

Няколко термина

  • Aspect – програмен код, който е независим

    • Записване в log файл

  • Joinpoint – точка от изпълнението на програмата, където един или няколко аспекта могат да бъдат приложени

    • метод, пропърти, конструктор

  • Advice – дефинира кога ще се изпълни кода приложен към даден pointcut

    • преди, след, около

  • Pointcut – дефинира група joinpoint-ове, към които се прилага даден advice

    • Всички методи започващи с “Print”

  • Weaving – процеса, при който се интегрират аспектите в приложението.


Spring net

Spring.NET

  • http://www.springframework.net/

  • Open source

  • Първа реализация на Java

  • Поддържа:

    • Aspect Oriented Programming

    • Dependency Injection


Spring net1

Как работи Spring.NET

«interface»

UserAdvice

IUser

+

SayHello

()

UserProxy

User

+

SayHello

()

Client


Aspect oriented programming aop net

Демонстрация #1

  • Hello world


Aspect oriented programming aop net

Демонстрация #2

  • Управление на транзакции с AOP


Contextboundobject

ContextBoundObject

  • Стандартен клас за .NET Framework

  • Как работи?


Aspect oriented programming aop net

Демонстрация #3

  • AOP чрез ContextBoundObject


Aspect oriented programming aop net

Демонстрация #4

  • Производителност и AOP


Aspect oriented programming aop net

За и против

  • За

    • Намалява свързаността на класовете в приложението

    • Повишава преизползването на код

  • Против

    • Не се поддържа стандартно (.NET и Java)

    • Повишава необходимите знания необходими на разработчика

    • Кода не е толкова ясен

    • Затруднено тестване


Aspect oriented programming aop net

Връзки

  • 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


Aspect oriented programming

Aspect Oriented Programming

Въпроси?


  • Login