Assegnazione di un assembly "core"


20

So che questo è alquanto soggettivo, ma mi chiedo se esiste uno standard generalmente accettato per denominare gli assembly che contengono alcune funzioni "core".

Diciamo che hai un progetti di grandi dimensioni, con assemblee come

  • Company.Product.WebControls.dll
  • Company.Product.Net.dll
  • Company.Product.UserPages.dll

e hai un sacco di lezioni di "core", come il gestore errori globale, la funzionalità di registrazione globale ecc

Come si chiamerebbe in genere un tale assemblaggio? Qui ci sono alcune cose che avevo in mente:

  • Company.Product.dll
  • Company.Product.Core.dll
  • Company.Product.Global.dll
  • Company.Product.Administration.dll

Ora, mentre "scegli solo uno e vai avanti" non causerà Armageddon, mi piacerebbe ancora sapere se c'è un modo "accettato" per nominare quegli assemblaggi.

15

Con .Net questo è relativamente facile da cambiare, quindi andrei con la convenienza.

Meno, più grandi, gli assembly si compilano più velocemente di molti piccoli, quindi inizierei con il materiale di base come spazio dei nomi all'interno di Company.Product.dll e lo suddividerò in seguito, se necessario.


2

faccio sempre .Core.dll.


9

In genere mi piacerebbe avere nomi che descrivono cosa c'è dentro ogni assemblea.

Vedete, se nominate qualcosa come .Core, quindi in una grande squadra, può crescere molto rapidamente, poiché la gente prenderebbe in considerazione l'idea di mettere una cosa molto comune in quell'assemblea.

Quindi, penso che non ci dovrebbe essere un unico nucleo.

+4

Non ho alcun problema con l'esistenza di un assembly "Core" di per sé, ma hai ragione nel dire che può rapidamente diventare una discarica per tutti i tipi di codice quando si lavora su una grande squadra. 28 set. 082008-09-28 20:25:27


4

Ho usato .Core, .Framework e .Common.


2

Quello che uso più comune e sembra di amare, perché non vedo altre persone usano è Root

farò generalmente

CompanyName.Root 

o

SomethingMeaningfulToMe.Root 

4

Usiamo questo modello:

  • Company.Core.dll
  • Company.WinControls.dll
  • Company.WebControls.dll
  • Company.Product.Core.dll
  • Company.Product.WinControls.dll
  • Company.Product.WebControls.dll

ecc


33

Tutti questi "root", " core "," common "e così via sono in realtà convenzioni di denominazione errate.

roba comune deve trovarsi nello spazio dei nomi radice, come in .NET, string, int e altre cose che sono "core" o "comune" si trova nella radice System -namespace.

Non utilizzare gli spazi dei nomi al collasso più facilmente le cartelle in Visual Studio, ma struttura dopo cosa contiene e cosa è usato per.

System.Security contiene elementi di sicurezza comuni, cose che, ad esempio System.Xml non è necessario conoscere, a meno che non si desideri esplicitamente tale funzionalità.

System.Security.Cryptography è un sotto-spazio dei nomi. La crittografia è sicurezza, ma la sicurezza non è esplicitamente crittografica.

In questo modo System.Security.Cryptography ha visione completa è namespace genitore e può implicitamente pone utilizzare tutte le classi all'interno del suo genitore.

Direi che System.Core.dll era un slip-up sul lato di Microsoft. Devono essere a corto di idee o nomi di DLL.

Aggiornamento: MSDN ha un aggiornamento article that tries to explain Microsoft's thinking on the subject aggiornato.

  0

Giusto per notare, .NET BCL ** ha ** assembly System.Core.dll ** ** ma ** non ** ha spazio dei nomi System.Core ** **. Quindi dal tuo punto di vista MS ha fatto tutto bene. 14 giu. 132013-06-14 21:07:03

  0

@Oybek Sì, dovrebbe essere "devono essere a corto di idee o nomi di DLL". 14 giu. 132013-06-14 21:10:58


0

ho usato anche .Core, soprattutto per la dll

E 'tutto una questione di gusto imo, se lo spazio dei nomi root è il nome di un'azienda, mi sento .Core/quadro/comune è più descrittivo di una semplice Nome della ditta.

Tuttavia, se si sta lavorando a qualcosa come un progetto opensource in cui il nome della DLL/spazio dei nomi è anche il nome del progetto, .Core /../ potrebbe essere un po 'ridondante.

Esistono molti esempi nel framework .net e in altre librerie di microsoft in cui vengono utilizzate entrambe le convenzioni. c'è un System.dll e un System.Core.dll per esempio :)


1

Questo è uno di quelli che dipende dalle domande. Se è il tuo codice e lavori su un piccolo team, userei qualsiasi convenzione di denominazione che abbia senso per te. Ho visto tuttavia che in ampi spazi di codice gli spazi dei nomi consentono agli sviluppatori a valle di scoprire funzionalità senza necessità di documentazione o formazione. usiamo il modello. la standardizzazione degli spazi dei nomi ha reso più facile per gli sviluppatori spostare la squadra in squadra.

BussinessName.Division.Layer


0

Core è molto significativo e facile da capire convenzione di denominazione e non sia in conflitto con qualsiasi.net framework namespace quindi è una buona pratica.

I strongley consiglia di racchiudere in ogni assembly il servizio che suppone di fornire all'applicazione che lo utilizza e di non mescolare domini di funzioni differenti in un unico assieme.

Stiamo usando

CSG.Core 
CSG.Data 
CSG.Services 
... 

nel nucleo stiamo includendo le classi che sono suscettibili di essere utilizzati in tutti i nostri prodotti: registrazione, Collection estensioni, Generics, estensioni di configurazione, di sicurezza, di convalida, ecc

Sebbene la compilazione di molti assiemi sia più lenta di un numero minore e più grande di assiemi, ottimizza la distribuzione perché distribuisce solo le classi utilizzate dal sistema e non contiene molte classi non utilizzate solo perché si desidera salvare il tempo di compilazione.

Quando si nominano gli spazi dei nomi, si consiglia vivamente di evitare di ripetere la stessa parola in diversi livelli dello spazio dei nomi. Ad esempio, evitare il seguente:

YourCompany.Core 
YourCompany.YourProduct.Core 

possibile mettere il nucleo nella YourCompany o MyProduct ma non in entrambe. Può essere molto confuso se ad esempio il tuo utilizzo assomiglia a: utilizzando YourCompany; utilizzando YourCompany.YourProduct;

Quando si digiterà Core.SomeClass sarà molto confusionario da dove proviene questa classe e nel caso in cui si abbiano 2 classi con lo stesso nome causerà un conflitto.