Capisco i principi ma ho difficoltà a vedere dove le applicazioni pratiche sono al di fuori di alcune. Per favore chiariscimi;)Oltre alla registrazione e alla gestione delle transazioni, quali sono alcune applicazioni pratiche di AOP?
risposta
chiedere a qualsiasi persona di supporto: la registrazione è non una buona applicazione di AOP. A loro non importa quale metodo viene chiamato all'interno dell'app. Si preoccupano delle azioni significative che l'app sta eseguendo e richiedono che le informazioni vengano presentate in un modo che comprendono. Per creare registri decenti, devi considerare la registrazione come un'altra interfaccia utente per l'app e progettarla di conseguenza.
Sarebbe più preciso dire che AOP può essere utilizzato per implementare la traccia .
E non sono convinto che sia utile anche per la gestione delle transazioni. Ho trovato una semplice delega OO che separa in modo pulito la gestione delle transazioni e la logica aziendale.
Ancora, buona domanda! Ho trovato che gli argomenti per AOP rientrano in due campi:
- Modifiche del corpo in codice mal progettato senza dover ripulire il design scadente.
- Utilizzo di strumenti di sviluppo scadenti, ad esempio la tessitura della traccia in un'app perché l'ambiente non ha un buon supporto per la traccia o il debug.
AOP è abbastanza utile quando si dispone di un'applicazione legacy di grandi dimensioni e si desidera eseguire una modifica generale all'interno dell'applicazione.
Recentemente l'ho utilizzato per suddividere l'ambito della sessione http utilizzando un cookie aggiuntivo (diverso dall'ID di sessione). Ha rapidamente alleviato un sacco di dolore dal codice associato alla sessione scritto male.
checkout anche Glassbox per un ottimo esempio di come AOP può aiutare a rendere leggero strumenti di monitoraggio e di gestione delle prestazioni
Sia il comitato Spring che il comitato spec EJB3 ritengono che AOP sia utile per le transazioni dichiarative.
Sicurezza, ovviamente.
"AOP In Action" ha un esempio elegante che mostra come utilizzare AOP per applicare regole di architettura, ad esempio nessuna chiamata del livello di persistenza al di fuori del livello di servizio.
Qi4j, l'ultimo bambino con cervello di Rickard Oberg, utilizza AOP per modifiche di classe dinamiche. Devo ancora capirlo completamente, ma se Rickard lo sta spingendo vorremmo tutti saperlo un giorno.
Ho appena iniziato ad esplorare come utilizzare AOP. Finora l'ho usato per l'integrazione delle dipendenze e per implementare un'interfaccia per supportare l'associazione dei dati bidirezionale in alcuni codici UI.
per DI, perché non primavera o spring.net? (a meno che tu non sia in qualche altra lingua?) – miguel