2009-12-11 20 views
5

Könnte jemand den Vorteil der Verwendung Baugruppen, im ‚Kontext‘ von ASP.NET hinweisen.Baugruppen vs Class Libraries (.NET)

Wie ich es verstehe, Baugruppen wie ausführbaren Dateien ausführen, haben einen einzigen Eintrittspunkt und kann innerhalb einer Anwendungsdomäne ausgeführt werden, aber ich habe nur sehr wenige geeignete Beispiele im Web gefunden.

Antwort

8

Anordnung ist nicht nur eine ausführbare Datei ... eine Baugruppe ist im Wesentlichen eine .NET-Bibliothek, die kann einen ausführbaren Einstiegspunkt hat ...

Wikipedia article with description of assemblies Ersten Absatz:

In der Microsoft .NET-Framework, eine Baugruppe ist eine teilweise kompilierten Code Bibliothek für die Verwendung bei der Bereitstellung, Versionierung und Sicherheit. Es gibt zwei Arten : Prozessbaugruppen (EXE) und Bibliothek Baugruppen (DLL). Verfahren Baugruppe stellt ein Verfahren, das in der Bibliothek Baugruppen definierten Klassen verwenden. .NET Assemblies enthalten Code in CIL, der in der Regel generiert aus .NET-Sprachen und dann kompiliert in Maschinensprache bei Laufzeit von der CLR just-in-time-Compiler . Eine Assembly kann aus einer oder mehreren Dateien bestehen. Codedateien sind genannte Module. Eine Baugruppe kann enthält mehr als ein Code-Modul und , da es möglich ist, verschiedene Sprachen zu verwenden Codemodule es technisch möglich ist, erstellen mehrere verschiedene Sprachen zu verwenden, um eine Assembly zu erstellen. Visual Studio unterstützt jedoch nicht mit verschiedenen Sprachen in einer Baugruppe.

+1

Also ist eine Bibliothek eine Teilmenge einer Baugruppe? – maxp

+0

Ich würde nicht Teilmenge sagen ... es gibt Überschneidungen zwischen den beiden Definitionen .. –

3

Baugruppen sind nicht immer ausführbare Dateien. Die meisten Menschen definieren sie als eine Sammlung von Klassenmodulen, die als einzelne DLL- oder EXE-Datei präsentiert werden. Am nächsten dran sind die Java JARs.

Sie haben Metadaten (siehe http://en.wikipedia.org/wiki/.NET_metadata), die eine Reihe von Informationen enthält, wie

  • Version
  • Methoden und Typen

Sie auch ein Manifest haben, die Teil dieser Metadaten (siehe http://msdn.microsoft.com/en-us/library/1w45z383.aspx).

Sie können Assemblys im Global Assembly Cache (GAC) registrieren (siehe http://en.wikipedia.org/wiki/Global_Assembly_Cache), und Sie stellen sie allen anderen Programmen auf dem Computer zur Verfügung. (Wenn Sie in Visual Studio "Referenzen hinzufügen" verwenden und die Registerkarte ".Net" durchsuchen, sehen Sie sich eine Liste mit Assemblys im GAC an).

Sie müssen sie im GAC nicht hinzufügen, können Sie direkt eine private Assembly verweisen, aber sie global auf dem Computer, um sie im GAC machen Registrierung.

Dieser Link enthält sensible Informationen zu Baugruppen:

2

Diese Frage nicht viel Sinn macht. Assemblys enthalten Klassenbibliotheken, es ist keine oder irgendeine Art von Sache. Selbst wenn Sie nur Aspx-Dateien haben, kompiliert ASP.Net das erste Mal, wenn jemand auf eine Seite zugreift, sie in eine Klasse und dann eine Assembly im laufenden Betrieb.

0

@maxp, fragen Sie, ob es besser ist, die Klasse als CS-Datei in das Projekt oder als kompilierte DLL in die Referenzen aufzunehmen?

Ich verwendete allgemeine Funktionen in Klassendateien (.cs) und fügte sie einfach in das Projekt ein, an dem ich gerade arbeitete. Die Klassen leben unter Quellcodeverwaltung, also würde ich einfach sicherstellen, dass ich immer die neueste Version bekomme, wenn ich ein neues Projekt erstellt habe. In letzter Zeit habe ich jedoch damit begonnen, sie zusammenzustellen und sie im GAC zu registrieren. Dies hilft, die Kopfschmerzen von nicht jeder wirklich wissen, welche Version der Klasse in einem bestimmten Projekt enthalten ist, zu reduzieren. Wenn Sie eine Änderung an der Klasse vornehmen, registrieren Sie sie einfach erneut im GAC. Alle Ihre Apps werden aktualisiert und verwenden die gleiche Version.

Der einzige wirkliche Nachteil, den ich erlebt habe, ist, wenn Sie versuchen, die Logik zu debuggen und durch die Logik zu gehen. Stellen Sie nur sicher, dass Ihre Klassen solide sind, bevor Sie sie kompilieren und in GAC platzieren.

Hoffe das hilft Ihre Frage zu beantworten.

+0

Nicht wirklich, aber danke für die Antwort. Unsere Lösung für die Lösung Ihres Problems mit dem "neuesten Versionscode" ist eine große Lösung, die alle Projekte einschließlich der Klassenbibliothek enthält. Wir fügen dann Verweise auf die Klassenbibliothek für jedes Projekt hinzu, sodass bei jeder neuen Kompilierung alle Projekte mit der neuesten Bibliothek aktualisiert werden. – maxp