Un livello può essere costituito da più progetti / DLL?

0

Sto lavorando all'architettura per una nuova applicazione web e sono praticamente una newbie completa quando si parla di architettura. Sto lavorando alla Guida all'architettura di applicazioni .NET, 2a edizione e sto imparando molto. Ho deciso di optare per l'architettura "standard" a 3 livelli: livello di presentazione, livello aziendale, livello dati. Utilizzerà ASP.NET MVC e Entity Framework.

Attualmente il livello aziendale contiene la logica e le entità aziendali (modelli anemici). Sto pensando di utilizzare le entità aziendali come entità EF. Ciò, tuttavia, farebbe sì che il livello dati abbia una depurazione sul livello aziendale. Questo "problema" può essere risolto spostando le entità aziendali nel proprio progetto e facendo in modo che i livelli che hanno dipendenze dalle entità di business facciano riferimento a quel progetto.

  1. È un buon modo di fare le cose?
  2. Will / can / should il progetto delle entità aziendali deve essere considerato parte del business strato?
  3. Un livello può consistere in più progetti, vale a dire il lo strato funge solo da "contenitore logico"? Nel sopra menzionato prenota parlano di come il livello aziendale può consistere in "Business Flusso di lavoro "," Componenti aziendali "," Entità commerciali "e presumo che ognuno di questi è un progetto separato (forse anche multiplo progetti)?
posta user1323245 20.05.2014 - 07:56
fonte

2 risposte

3

1. Is that an ok / good way of doing things?

Certo, non c'è nulla all'interno di quella guida che dice che puoi usare solo un progetto per livello. Per qualcosa al di là di una piccola applicazione, dovrai separare le cose nei loro progetti.

2. Will / can / should the business entities project be considered part of the business layer?

Assolutamente. Anche se avrai più progetti per livello, devi comunque organizzare i progetti in base al loro ruolo logico. Quindi tutti i progetti del livello aziendale dovrebbero essere nominati e organizzati in modo simile.

3. Can a layer consist of multiple projects, that is, the layer only acts as a "logical container"?

Sì di nuovo.

Probabilmente finirai con alcuni progetti "core" all'interno dei tuoi livelli. Questi sono i progetti che crei per evitare le dipendenze circolari che hai menzionato nella tua domanda. E va bene avere un "core del livello aziendale" e progetti di tipo "funzione di livello aziendale". Tutti appartengono al livello aziendale. Ripeti se necessario per gli altri livelli.

La cosa importante da tenere a mente è continuare a osservare la separazione tra gli strati che questa architettura introduce. Ogni progetto all'interno di ogni livello deve obbedire alle regole sulla separazione delle preoccupazioni da te applicate relativamente a ciò a cui il progetto può fare riferimento.

Ad esempio, non consentire a un progetto del livello Presentazione di accedere a un progetto del livello dati. È un po 'più difficile perché ora hai più progetti per applicare tale governance, ma se usi una convenzione di denominazione coerente o una struttura del progetto è piuttosto facile da fare.

    
risposta data 20.05.2014 - 15:47
fonte
2

Anche se non c'è nulla di intrinsecamente "sbagliato" o "cattivo" con ciò che descrivi, è generalmente preferibile utilizzare un architettonicamente stile di codifica evidente in cui le strutture del codice riflettono accuratamente le strutture della tua architettura. Detto questo, non c'è niente di sbagliato nell'avere più progetti all'interno di un livello. Questa potrebbe essere una buona cosa, purché si tratti di una decisione cosciente e non di un incidente.

Generalmente con lo stile stratificato, le dipendenze dovrebbero andare solo "in basso", il che significa che uno strato sopra può dipendere dai livelli sottostanti (fino a che punto la dipendenza scende a te, alcuni dicono solo un livello, altri permettono l'intero stack) , ma uno strato sottostante potrebbe non dipendere da un livello superiore.

In un mondo ideale, i tuoi layer dovrebbero essere "affettabili verticalmente" per feature o oggetti business o simili. Se disegni un diagramma delle dipendenze e assomigliano agli spaghetti - specialmente se gli spaghetti attraversano i confini dei livelli - potresti voler ripensare a come stai partizionando il tuo sistema.

    
risposta data 20.05.2014 - 16:57
fonte

Leggi altre domande sui tag