Domanda

Mi piace l'idea di avere Interfacce e l'Attuazione separata.Ma come separato?Sono le definizioni di Interfaccia in un separato .Net assembly?Hai un unico progetto che definisce tutte le Interfacce per una soluzione?Altrimenti ci sono problemi con le dipendenze circolari di Interfacce?

È stato utile?

Soluzione

Mettere i vostri oggetti di dominio e interfacce in una stanza separata "dominio" dell'assemblea.
Questa assemblea non dovrebbe mai riferimento a qualsiasi cosa, ma il core .net assembly.

In questo modo si ottiene un pulito separazione dal dominio/modello di servizio e di implementazione.

Edit:
http://jeffreypalermo.com/blog/the-onion-architecture-part-1/

Altri suggerimenti

Non vorrei mettere le interfacce in un assembly separato solo per il gusto di farlo.Tuttavia, se le interfacce di prendere parte a qualsiasi forma di IPC e l'estendibilità di architettura, ha spesso senso di dar loro il loro assemblaggio.

Se si dispone di progetti che hanno bisogno di fare riferimento a ogni altro, allora sì, avrete bisogno di un assembly separato per le interfacce, ma si dovrebbe anche attentamente esaminare architettura per vedere se c'è un altro modo di risolvere la dipendenza circolare.

Io preferisco mantenere il più comune o semplici implementazioni dell'interfaccia, in una sotto-cartella (e lo spazio dei nomi) dopo il nome dell'interfaccia.

\project\
\project\IAppender.cs
\project\Appender\
\project\Appender\FileAppender.cs
\project\Appender\ConsoleAppender.cs

Se ho estendere questa classe al di fuori del progetto.In un progetto speciale, ripetere le cartelle/spazio dei nomi allo stesso modo.

\specialproject\
\specialproject\Appender\
\specialproject\Appender\MemoryAppender.cs

Il progetto a cui sto lavorando ora, le interfacce e le relative classi di base di andare in assembly che sono logicamente diviso tra funzioni.Le implementazioni di questi provider e classi di andare all'interno di un assembly di base.L'idea è che le persone che utilizzano la nostra API di riferimento più o in una delle API dll in maniera logica e chiara.

Le applicazioni più piccole non hanno bisogno di questo tipo di separazione.Ma, non importa dove tengo le interfacce, vorrei tenerli nello stesso spazio dei nomi di eventuali classi di base.

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