Il progetto C # con il file di configurazione sembra solo un difetto di architettura?

0

Ho più progetti correlati in una soluzione di Visual Studio C #, che in generale hanno un'architettura simile dei servizi di business logic di WCF e dei client ASP.NET.

Per ospitare questi servizi, ho implementato l'applicazione personalizzata ServiceHosting , che legge l'associazione e le impostazioni delle porte, l'elenco dei servizi e le impostazioni di NInject dal file App.config e ospita questi servizi.

Poiché tutte queste impostazioni variano da progetto a progetto, in ogni "sottoprogetto" ho un progetto come "ServiceHosting.Project1", che ha un solo file "App.config" contenente configurazioni specifiche del progetto. Come impostazioni di avvio del progetto, ho specificato ServiceHosting.exe con la directory di lavoro di questo progetto di configurazione.

Quindi, in generale, sembra:

Project 1
- Project1.Domain (contains business logic, class library)
- Project1.ServiceHosting (contains configuration only, runs Tools/ServiceHosting)
Project 2
- Project2.Domain (contains business logic, class library)
- Project2.ServiceHosting (contains configuration only, runs Tools/ServiceHosting)
Tools
- ServiceHosting (application. you may run this, but no App.config will be found)

Tuttavia, avere un progetto con un file di configurazione ha un cattivo odore per me.
E 'considerato un difetto di architettura?

In precedenza, avevo un altro approccio: invece di usare il file di configurazione, ServiceHosting.cs era una classe astratta; Project1.ServiceHosting e Project2.ServiceHosting contenevano i suoi tipi derivati con metodi overriden personalizzati GetServices , LoadNinjectModules e GetBinding .
Tuttavia, questo sembrava violazione DRY.

    
posta Yeldar Kurmangaliyev 23.12.2016 - 12:32
fonte

1 risposta

3

I progetti in una soluzione di Visual Studio generalmente hanno i propri file di configurazione individuali. Tuttavia, il file di configurazione che viene utilizzato è quello che viene catturato nel dominio dell'app iniziale, e in realtà è più complicato di così, a causa di profili di roaming e così via. Quindi tutte le DLL a cui viene fatto riferimento nel progetto iniziale useranno il file app.config del progetto iniziale, e non il loro.

In breve, avere un singolo file app.config in gioco non è solo un difetto architettonico, ma è considerato una buona pratica nel mondo .NET.

Vedi anche
Come trovare il percorso del file app.config attivo?

    
risposta data 23.12.2016 - 16:18
fonte

Leggi altre domande sui tag