Freigeben über


(2) Eine einfache komponentenbasierte Anwendung

Die bereits beschriebene Anwendung Hello World ist natürlich ein sehr einfaches Beispiel und kann mit keinem noch so einfachen Programm verglichen werden, das in der Praxis verwendet wird. Als nächstes können Sie sich eine Version des komponentenbasierten Programms ansehen, das im Lernprogramm Einführung in die Entwicklung mit .NET Framework ausführlich beschrieben wurde. Diese neue Version, die sich im Unterverzeichnis 2_Simple befindet, verwendet die Datei Client.exe, um Methoden ausschließlich für die Typen aufzurufen, die in einer einzigen Komponente (Stringer.dll) enthalten sind. Der Code für die Stringer-Komponente (in Stringer.cs) enthält mehrere wichtige Anweisungen. Die erste gibt an, wo sich die enthaltenen Typen im globalen Namespace befinden:

namespace org {...}

Sie müssen wieder eine Klasse erstellen:

public class Stringer {...}

Die Klasse besitzt ein einziges Feld (StringsSet), einen Konstruktor (Stringer, identisch mit dem Namen der Klasse), eine definierte Methode (GetString) und eine Eigenschaft (Count) mit einem entsprechenden Eigenschaftenaccessor (get_Count), die automatisch vom Compiler erstellt werden:

private string[] StringsSet; 
public Stringer() {...}
public string GetString(int index) {...}
public int Count {
       get { return StringsSet.Length; }
}

Mit all diesen Informationen kann ein Clientprogramm einen Verweis auf die GetString-Methode voll kennzeichnen, z. B. org.Stringer.GetString.

Die Anzeige der kompilierten Komponente mit Ildasm.exe enthält alle Member:

Der Client verwendet eine zweite using-Anweisung, die den Namespace angibt, um den einfachen Zugriff auf die Typen in Stringer.dll (der Code ist in Client.cs enthalten) zu ermöglichen:

using org;

Das Erstellen der Dateien in diesem Projekt ist sehr einfach. Zunächst erstellen Sie die Komponente Stringer.dll. Anschließend erstellen Sie Client.exe und importieren die Komponente, indem Sie anstelle des Namespacenamens den Namen der Datei verwenden, die das Manifest enthält (in diesem Fall org):

csc /target:library ... Stringer.cs
csc /reference:Stringer.dll ... Client.cs

Wie Hello.exe enthält auch die neue Datei Client.exe Manifestinformationen über sich selbst, die .NET Framework-Klassenbibliothek und die verwendeten Typen. Die Datei enthält nun jedoch Informationen über die Stringer-Komponente und die enthaltenen Typen, auf die verwiesen wird, in diesem Fall org.Stringer.

**Hinweis   **Der Client verwendet private Assemblies, die Versionsinformationen werden daher nicht überprüft.

Die folgende Abbildung zeigt die Manifestinformationen für die Stringer-Komponente:

In diesem Beispiel bildet die DLL die gesamte Assembly. Dies ist jedoch nicht immer der Fall. In manchen Entwicklungsszenarien kann es beispielsweise erforderlich sein, DLLs, die in verschiedenen Sprachen geschrieben wurden, in einer einzigen Assembly zusammenzufassen. Es kann auch sinnvoll sein, mehrere DLLs zu einer Assembly zusammenzufassen, um die Vorteile bestimmter Scoping-Regeln zu nutzen, die den Zugriff auf Methoden unter den Komponenten ermöglichen, den Zugriff jedoch intern auf die Assembly selbst beschränken. In diesen Situationen können Sie die Assemblies mit dem Assembly Linker-Tool (Al.exe) anpassen, der in Anhang B: Tools zum Verpacken und Weitergeben ausführlich beschrieben ist.

Siehe auch

Weitergeben von komponentenbasierten Anwendungen | (3) Pfad für private Komponenten | (4) Eine gemeinsam genutzte Komponente | (5) Komponentenversionen | Zusammenfassung: Verpacken und Weitergeben von Anwendungen | Anhang A: Weitere Informationen zum Verpacken und Weitergeben | Anhang B: Tools zum Verpacken und Weitergeben