(2) Una semplice applicazione a componenti

L'applicazione Hello World illustrata in precedenza è naturalmente priva di utilità e difficilmente rappresentativa anche del più semplice programma reale. A questo punto è possibile esaminare una versione del programma basato su componenti descritto in dettaglio nell'esercitazione Introduzione allo sviluppo di applicazioni con .NET Framework. In questa nuova versione, disponibile nella sottodirectory 2_Simple, viene utilizzato Client.exe per chiamare i metodi solo nei tipi contenuti in un unico componente (Stringer.dll). Nel codice del componente Stringer (presente in Stringer.cs) sono incluse numerose importanti istruzioni, la prima delle quali specifica la posizione nello spazio dei nomi globale in cui è possibile trovare i tipi contenuti:

namespace org {...}

Ancora una volta è necessario creare una classe:

public class Stringer {...}

Nella classe è presente quindi un solo campo (StringsSet), un costruttore (Stringer, che ha lo stesso nome della classe stessa), un metodo definito (GetString) e una proprietà (Count) con una corrispondente funzione di accesso della proprietà (get_Count) che viene creata automaticamente dal compilatore:

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

Per riepilogare, nel programma client verrà specificato un riferimento completo al metodo GetString, ad esempio org.Stringer.GetString.

Nella visualizzazione Ildasm.exe del componente compilato verranno pertanto mostrati tutti i membri:

Nel client è inclusa una seconda istruzione using in cui è specificato lo spazio dei nomi per consentire l'accesso facilitato ai tipi in Stringer.dll (il codice è contenuto in Client.cs):

using org;

La generazione dei file in questo progetto è un'operazione semplice. Viene innanzitutto generato il componente Stringer.dll, quindi si genera Client.exe importando il componente tramite l'utilizzo del nome del file contenente il manifesto, anziché il nome dello spazio dei nomi (in questo caso org):

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

Come in Hello.exe, nel nuovo programma Client.exe sono presenti informazioni del manifesto su se stesso, sulla libreria di classi di .NET Framework e sui tipi utilizzati. Ora sono inoltre presenti informazioni sul componente Stringer e sui tipi contenuti a cui viene fatto riferimento (in questo caso org.Stringer).

**Nota   **Nel client vengono utilizzati assembly privati, pertanto le informazioni sulla versione non vengono controllate.

Nella seguente figura sono illustrate informazioni sul manifesto per il componente Stringer:

In questo particolare esempio l'intero assembly è contenuto nel file DLL. Tuttavia ciò non è sempre vero. In alcuni scenari di sviluppo può essere necessario, ad esempio, unire in un solo assembly file DLL creati in vari linguaggi. Può inoltre risultare utile unire diversi file DLL in un unico assembly per usufruire di speciali regole di ambito che consentono l'accesso ai metodi tra i componenti, mantenendo tuttavia l'accesso all'interno dello stesso assembly. In queste situazioni, è possibile utilizzare Assembly Linker (AL), descritto nell'Appendice B: strumenti per la creazione di package e la distribuzione, per personalizzare gli assembly.

Vedere anche

Distribuzione di applicazioni a componenti | (3) Percorso per i componenti privati | (4) Un componente condiviso | (5) Controllo delle versioni dei componenti | Riepilogo della distribuzione di package | Appendice A: ulteriori informazioni sulla creazione di package e sulla distribuzione | Appendice B: strumenti per la creazione di package e per la distribuzione