Attualmente nella nostra soluzione sono presenti 12 progetti WCF. Ogni progetto è essenzialmente il proprio endpoint. Ad esempio, il progetto WCF "Ordine" è l'endpoint Order.svc. Questi 12 endpoint sono esposti da un singolo progetto WebHost. Il progetto WebHost ha 12 file .svc che puntano a ciascun assembly/spazio dei nomi corrispondente.Progetti WCF multipli rispetto a progetto singolo in soluzione
La mia domanda ruota attorno all'uso di un progetto (un assemblaggio ... una dll) rispetto a più progetti (più assiemi ... più dll). Quali sono i vantaggi/svantaggi, se del caso? Il risultato finale è lo stesso ... hai un progetto WebHost che espone questi endpoint che puntano a un assembly/spazio dei nomi. Tranne che devi solo gestire una .dll contro 12 .dll nella directory bin.
Per me i vantaggi di un progetto: Manutenibilità: invece di 12 progetti, ciascuno con più riferimenti alle nostre interfacce, datacontracts, utility, ecc., Abbiamo un progetto che ha i riferimenti impostati in UNO punto. Quindi possiamo distribuire l'una DLL e utilizzare un bilanciatore del carico per distribuire uniformemente. Anche se ospitiamo esplicitamente 3 servizi per server (quindi, 4 server), se un server va giù il bilanciamento del carico può essere regolato e gli altri 3 server avranno ciò di cui hanno bisogno e si prenderanno cura di tutto automaticamente. (Suppongo che lo stesso è vero con 12 .dll's ... basta assicurarsi che tutte le 12. Dll siano su ciascun server).
Tempo di costruzione: meno progetti = tempo di costruzione più rapido. Visual Studio non ha bisogno di eseguire tanto il collegamento e la copia. Dll è dappertutto. Tempo di costruzione più rapido = sviluppatore più produttivo e una build e implementazione più rapida.
Attualmente ho un paio di colleghi interessati a "accoppiare strettamente" tutti i nostri servizi WCF in un unico progetto. Per me, sono tutti servizi WCF perché non li mettono nello stesso progetto? Gli endpoint (file .svc) sono ciò che li separa. Ho anche sentito la domanda, "che dire del blocco morto?". Che ne pensi? È un problema/preoccupazione valido? (Onestamente non lo so)
Ci sono anche state delle domande su se il file .dll si corrompe. Se lo è, allora tutti i servizi sono giù. Ancora una volta ... è una preoccupazione valida?
Tutti gli esempi che ho visto da Microsoft e altri hanno i servizi WCF in un progetto separati da classi diverse. Le interfacce sono nel loro stesso progetto ... datacontracts in un altro progetto e così via.
Quindi, qual è la tua opinione? Come organizzi più servizi WCF nella tua soluzione Visual Studio? Imparami.