Domanda

La mia domanda non riguarda tanto l'uso delle interfacce, quanto piuttosto la natura dell'organizzazione del progetto.

Nota: sto usando VisualStudio in un'applicazione a più livelli.

I file della mia interfaccia dovrebbero vivere in un progetto separato dalle loro implementazioni? Il mio pensiero iniziale è che sarebbe utile separare tutte le mie interfacce di servizio nel loro progetto (e un progetto per il mio iniziale implementazioni) in modo che lungo la strada il progetto di attuazione / concreto possa essere rimosso e sostituito con uno nuovo se necessario.

Per chiarire con un esempio: supponiamo di avere un'interfaccia di livello aziendale denominata IBusinessService che risiede nello spazio dei nomi MyApp.Business.Services. La mia implementazione FooBusinessService esisterebbe nello stesso spazio dei nomi, ma in un progetto diverso in VisualStudio. Se in seguito l'implementazione dovesse essere rielaborata, uno sviluppatore potrebbe rimuovere il riferimento a FooService.proj e sostituirlo con un riferimento a BarService.proj.

Sembra che declutterebbe la soluzione dell'app permettendoti di fare riferimento a un progetto con solo interfacce senza acquisire anche implementazioni concrete (che potrebbero essere obsolete o inutili per te), ma mi sto perdendo qualcosa?

È stato utile?

Soluzione

Sono con te. Preferisco mettere le mie interfacce in un progetto separato E in uno spazio dei nomi diverso. L'esempio classico è con le classi di accesso ai dati. Vuoi essere in grado di codificare una versione MSSQL e una versione MySQL, implementando entrambe la stessa interfaccia. Come tale, preferisco che la definizione dell'interfaccia sia in un assembly / progetto separato. Ecco un esempio di come dispongo assiemi e spazi dei nomi:

  • Elder.DataAccess.Core: contiene le interfacce e le utilità comuni
  • Elder.DataAccess.MSSQL - implementazioni specifiche MSSQL delle interfacce
  • Elder.DataAccess.MySQL - implementazioni specifiche di MySQL delle interfacce

Questo mi permette di modificare le implementazioni senza toccare il progetto che contiene le definizioni dell'interfaccia. Questo mi aiuta anche con il controllo della versione e il rilevamento delle modifiche. Potrebbero esserci altri modi per scuoiare questo gatto, quindi sarò ansioso di vedere le risposte degli altri.

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