2013-07-25 23 views
7

Inizio con la filosofia DDD e vorrei implementare un'integrazione con un sistema legacy che abbiamo qui. Nelle mie ricerche su Internet ho trovato alcuni articoli e campioni, ma devo ammettere: è piuttosto difficile capire come fare correttamente l'integrazione.Come implementare correttamente un livello anticorruzione

Prima di fare questa domanda, ho effettuato una ricerca qui ma i risultati non mi sono stati utili, quindi mi piacerebbe sapere se è possibile inviarmi o mostrarmi un esempio di implementazione di un ACL.

Qui ho questo articoli:

  • Il sistema Legacy
  • Il database legacy (ho bisogno di accedere)
  • La nuova applicazione che verrà creata usando l'approccio DDD

L'idea iniziale è quella di accedere a quel database in tutto NHibernate, creando solo alcune delle classi di mapping necessarie, le entità di dominio e implementare le regole di business. Secondo Eric Evans, questa strategia si chiama [Bubble Context] [1]. Penso che questa strategia risolverà il mio problema, ma ho bisogno di un campione per farlo nel modo giusto.

Qualcuno può aiutarmi?

+2

Hai letto il libro "Domain Driven Design" di Eric Evans, c'è una sezione su acl. Acl è in realtà un esempio di applicazione del modello di adattatore in DDD. – Hippoom

+1

Un suggerimento che ho per esperienza personale è di non saltare ad accedere a un database legacy con NHibernate perché potrebbe non essere utile. Invece, concentrati sull'incapsulamento del sistema legacy con un servizio a cui potrai accedere tramite la nuova app tramite ACL. – eulerfx

risposta

6

L'ACL è un modello e non solo il pezzo di codice. In quello che hai descritto non hai detto di avere forti dipendenze sul sistema legacy o vuoi semplicemente avere un pezzo di codice indipendente integrato nel sistema attuale? Con questo potresti decidere che il tuo ACL sarà solo un servizio di database o incorporerà qualche involucro sulla logica del sistema legacy?

I pezzi reali che inseriresti in ALC dipendono molto dalla tua implementazione. C'è uno schema generico di quello che stai chiedendo: enter image description here

Si potrebbe trovare maggiori informazioni in Eric Evan's talk.

Problemi correlati