1 / 22

AOP

AOP. Strutturare il codice per aop. Chi sono??. Ricci Gian Maria Alkampfer@nablasoft.com Twitter : @alkampfer Blog: http://www.codewrecks.com. Cosa è AOP. I principi OO non permettono di modellare comportamenti “trasversali” agli oggetti

nen
Download Presentation

AOP

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. AOP Strutturareilcodice per aop

  2. Chi sono?? • Ricci Gian Maria • Alkampfer@nablasoft.com • Twitter: @alkampfer • Blog: http://www.codewrecks.com

  3. Cosa è AOP • I principi OO non permettono di modellare comportamenti “trasversali” agli oggetti • Si dice “trasversale” un comportamento valido per più oggetti • AOP permette di applicare un comportamento su un oggetto • Per comportamento si intende l’esecuzione di codice quando viene chiamato un metodo o una proprietà di un oggetto. Caller OBJ A O P

  4. Weaving • Weaving is the textile art in which two distinct sets of yarns or threads, called the warp and the filling or weft (older woof), are interlaced with each other to form a fabric or cloth • Nellaprogrammazioneilconcetto di Weaving è appuntocorrelatoall’intrecciareilcomportamentodeglioggetti base con gliaspetti • Esistonomoltimodi di effettuare Weaving A O P

  5. Compile Time Weaving • Per compile time weaving si intende la possibilità di applicare gli aspetti a livello di codice sorgente • Modificaer i sorgenti prima della compilazione • Supporto da parte del compilatore • Effettuare una post decompliazione e ricompilazione (post sharp) A O P

  6. Run time Weaving • Modificare il comportamento di un oggetto durante l’esecuzione • Profiler API • Decorator Pattern • Dynamic generation of proxy (Castle, Spring, Aspect#) • ContextBoundObjet (Enterprise library policy Injection Application Block). A O P

  7. Run Time Weaving con Decorator pattern A O P

  8. Prerequisiti • Il Run-Time weaving è possibile solo in situazioni di basso accoppiamento • Se il chiamante istanzia direttamente un oggetto, quest’ultimo non può supportare AOP • AOP è quindi un concetto che si sposa perfettamente con IoC / DI • Il chiamante utilizza interfacce e non necessita di sapere l’istanza concreta che viene usata. Caller Interface Aspect Obj A O P

  9. Decorator pattern • Il chiamante vuole interagire con un ISendMessage • Esiste un’implementazione concreta chiamata SmsMessageSender • Si crea un wrapper con l’aspetto desiderato • Si registra nel contenitore IoC o il componente SmsMessageSender • Se necessario si effettua il wrapping con il decorator Caller ISendMessage MessageSenderLog SmsMessageSender A O P

  10. Decorator pattern La chiamata viene intercettata e viene semplicemente propagata al RealSubject A O P

  11. demo A O P

  12. Decorator pattern • Implementazione semplice ma poco riutilizzabile. A O P

  13. Run time weaving con castle windsor A O P

  14. Interceptors • Il Run Time weaving si basta spesso sulla generazione dinamica di proxy • Per ogni interfaccia su cui si vuole fare AOP viene creato dinamicamente un proxy con il prinicpio del decorator • In questo proxy vengono inserite delle chiamate agli eventuali intercettori che implementano una data interfaccia • Il programmatore deve solamente implementare l’interfaccia richiesta, la libreria fa tutto il resto Caller Proxy Service Interceptor A O P

  15. Interceptors • Un intercettore è in grado di rispondere ad un evento di chiamata di un metodo • Ogni intercettore può o meno far proseguire la chiamata • Un intercettore è in grado di cambiare i valori di ritorno e gestire le eccezioni Caller OBJ A O P

  16. Interceptors Log • Nel flusso normale ogni intercettore esegue il suo codice e fa proseguire la chiamata • Alcuni componenti possono alterare il flusso • Il componente tipico che ha questo comportamento è ad esempio l’aspetto di cache. • Se il componente individua che la chiamata può essere cachata allora non la propaga Cache Security DAL A O P

  17. demo A O P

  18. Aop su servizi wcf con castlewindsor A O P

  19. AOP su servizi WCF • L’ambiente WCF è il classico in cui molte funzionalità sono trasversali • La soluzione più elegante è soddisfare tutte le funzionalità comuni a tutti i servizi tramite AOP • Per fare questo è necessario innanzitutto far si che le classi usate per servire una richiesta WCF vengano instanziate da Castle. • La WCF castlefacility si occupa di risolvere la classe che gestisce il servizio tramite un contenitore windsor. A O P

  20. AOP su servizi WCF • Una volta che il servizio viene risolto con Castle è possibile aggiungere gli aspetti necessari. • I servizi rappresentano uno dei punti più semplici ed intuitivi dove inserire aspetti tramite AOP • Gli aspetti generici per i servizi solitamente sono infatti applicati a tutti i metodi e non è nemmeno necessario effettuare logica di selezione. A O P

  21. demo A O P

  22. Altri aspetti tipici • Security: un aspetto che ad ogni chiamata controlla su un db o su file i permessi richiesti per ogni metodo ed esegue una security assertion • Cache: su alcuni metodi usare un cache provider per memorizzare il risultato di una chiamata ad un servizio wcf • Test su dev: un aspetto in produzione che duplica ogni chiamata su un servizio dev per verificarne la compabilità retroattiva (penalizza un poco le performance in produzione) A O P

More Related