2009-12-11 21 views
5

Qualcuno potrebbe evidenziare il vantaggio di utilizzare gli assembly, nel 'contesto' di ASP.NET.Assemblies vs Class Libraries (.NET)

Come ho capito, gli assembly funzionano come eseguibili, hanno un singolo punto di ingresso e possono essere eseguiti all'interno di un dominio dell'applicazione, ma ho trovato pochissimi esempi adatti sul web.

risposta

8

Un assemblaggio non è solo un eseguibile ... un'assemblea è essenzialmente una libreria .NET che può hanno un punto di ingresso eseguibile ...

Wikipedia article with description of assemblies Primo comma:

Nel Microsoft .NET framework, un assembly è una libreria codice parzialmente compilata per l'utilizzo in distribuzione, versioning e sicurezza. Esistono due tipi : assembly di processo (EXE) e assembly di libreria (DLL). Un assembly rappresenta un processo che utilizzerà le classi definite negli assembly della libreria . Gli assembly .NET contengono il codice in CIL, che di solito è generato da linguaggi .NET e quindi compilato in linguaggio macchina al runtime dal compilatore CLR just-in-time . Un assembly può essere costituito da uno o più file. I file di codice sono chiamati moduli. Un assieme può contenere più di un modulo di codice e in quanto è possibile utilizzare diversi linguaggi per creare moduli di codice È tecnicamente possibile utilizzare diverse lingue diverse per creare un assieme . Tuttavia, Visual Studio non supporta utilizzando lingue diverse in un assembly.

+1

Quindi una libreria è un sottoinsieme di un assembly? – maxp

+0

Non direi sottoinsieme ... c'è una sovrapposizione tra le due definizioni .. –

3

Gli assembly non sono sempre eseguibili. La maggior parte delle persone li definirà come una raccolta di moduli di classe presentati come un singolo file DLL o EXE. La cosa più vicina a loro sono i JAR Java.

Hanno metadati (vedi http://en.wikipedia.org/wiki/.NET_metadata), che contiene una serie di informazioni quali

  • versione
  • metodi e tipi

Hanno anche un manifesto che fa parte di questi metadati (vedi http://msdn.microsoft.com/en-us/library/1w45z383.aspx).

È possibile registrare gli assembly nella Global Assembly Cache (GAC) (vedere http://en.wikipedia.org/wiki/Global_Assembly_Cache) e li si renderà disponibili per tutti gli altri programmi sulla macchina. (quando in Visual Studio, si utilizza "Aggiungi riferimenti" e si sfoglia la scheda .Net, si sta visualizzando un elenco di assembly nel GAC).

Non è necessario aggiungerli al GAC, è possibile fare riferimento direttamente a un assembly privato, ma registrarli nel GAC li rende globalmente disponibili sul computer.

Questo link contiene informazioni sensibili sugli assembly:

2

Questa domanda non ha molto senso. Gli assembly contengono librerie di classi, non è né un tipo né una cosa. Anche se si dispone solo di file aspx, la prima volta che qualcuno accede a una pagina, ASP.Net lo compila in una classe e quindi in un assembly al volo.

0

@maxp, stai chiedendo se è meglio includere la classe come file .cs nel progetto o come dll compilato nei riferimenti?

Ero solito mantenere le funzioni comuni nei file di classe (.cs) e includerli semplicemente in qualsiasi progetto a cui stavo lavorando. Le classi vivono sotto controllo del codice sorgente, quindi mi limito ad assicurarmi di avere l'ultima versione ogni volta che ho creato un nuovo progetto. Comunque ultimamente, ho iniziato a compilarli e registrarli nel GAC. Questo aiuta a ridurre il mal di testa di non tutti quelli che sanno realmente quale versione della classe è inclusa in un determinato progetto. Se apporti una modifica alla classe, registrala nuovamente con GAC e tutte le tue app vengono aggiornate e utilizzano la stessa versione.

L'unico vero inconveniente che ho riscontrato è se si sta tentando di eseguire il debug e passare attraverso la logica. Assicurati che le tue classi siano solide prima di compilare e inserire in GAC.

Spero che questo aiuti a rispondere alla tua domanda.

+0

Non proprio, ma grazie per la risposta. La nostra soluzione per affrontare il tuo problema di 'ultimo codice di versione', sta avendo una soluzione di grandi dimensioni che contiene tutti i progetti, inclusa la libreria di classi. Quindi aggiungiamo riferimenti alla libreria di classi per ogni progetto, quindi con ogni nuova compilazione, tutti i progetti vengono aggiornati con la nuova libreria. – maxp