Domanda

Ho utilizzato alcune soluzioni di base in stile AOP per problemi trasversali come sicurezza, registrazione, convalida, ecc.La mia soluzione si è evoluta intorno Castello Windsor e DynamicProxy.Ho seguito questa strada perché posso applicare tutto utilizzando un DSL basato su Boo e mantenere il mio codice pulito dagli attributi.Nel fine settimana mi è stato detto di dare un'occhiata PostSharp poiché dovrebbe essere una soluzione "migliore".Ho dato una rapida occhiata a PostSharp, ma sono rimasto scoraggiato dall'utilizzo degli attributi.

Qualcuno ha provato entrambe le soluzioni e vorrebbe condividere la propria esperienza?

È stato utile?

Soluzione

Ho guardato Castle-Windsor solo per un breve periodo (ancora) quindi non posso commentarlo ma ho usato postsharp.

Postharp funziona tramite tessitura in fase di compilazione.Aggiunge un passaggio post-compilazione alla tua build in cui modifica il tuo codice.Il codice viene compilato come se avessi appena programmato gli aspetti trasversali nel tuo codice.Questo è un po' più performante del runtime weaving e grazie all'uso degli attributi Postsharp è molto facile da usare.Penso che usare gli attributi per AOP non sia così problematico come usarlo per DI.Ma questo è solo il mio gusto personale.

Ma...

Se usi già castle per l'iniezione delle dipendenze, non vedo una buona ragione per cui non dovresti usarlo anche per cose AOP.Penso che, sebbene l'AOP in fase di esecuzione sia un po' più lento che in fase di compilazione, sia anche più potente.AOP e DI sono secondo me concetti correlati, quindi penso che sia una buona idea utilizzare un framework per entrambi.Quindi probabilmente guarderò di nuovo le cose del castello nel prossimo progetto in cui ho bisogno di AOP.

Altri suggerimenti

Un paio di problemi minori con PostSharp...

Un problema che ho riscontrato con PostSharp è che durante l'utilizzo di asp.net, i numeri di riga per i messaggi di eccezione sono "fuori" in base al numero di istruzioni IL inserite negli assiemi da PostSharp poiché anche i PDB non vengono inseriti :-).

Inoltre, senza gli assembly PostSharp disponibili in fase di esecuzione, si verificano errori di runtime.Utilizzando Windsor, i tagli incrociati possono essere disattivati ​​in un secondo momento senza ricompilare il codice.

(spero che questo abbia senso)

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top