Cenni preliminari sulle impostazioni delle applicazioni

Questo articolo illustra come creare e archiviare i dati delle impostazioni per conto dell'applicazione e degli utenti.

La funzionalità Impostazioni applicazione di Windows Form semplifica le operazioni di creazione, archiviazione e gestione delle preferenze personalizzate a livello di applicazione e utente nel computer client. Le impostazioni dell'applicazione Windows Form consentono non solo di archiviare dati applicativi quali stringhe di connessione a database, ma anche dati specifici dell'utente, quali preferenze per l'applicazione. L'uso di Visual Studio o di codice gestito personalizzato consente di creare nuove impostazioni, leggerle e scriverle su disco, associarle a proprietà di form e convalidare i dati delle impostazioni prima di caricarle e salvarle.

Le impostazioni dell'applicazione consentono agli sviluppatori di salvare lo stato nell'applicazione usando codice personalizzato molto piccolo ed è una sostituzione delle proprietà dinamiche nelle versioni precedenti di .NET Framework. Contengono molti miglioramenti rispetto alle proprietà dinamiche, che sono di sola lettura, ad associazione tardiva e richiedono ulteriore programmazione personalizzata. Le classi di proprietà dinamiche sono state mantenute in .NET Framework 2.0, ma sono solo classi della shell che eseguono il thin wrapping delle classi delle impostazioni dell'applicazione.

Che cosa sono i Impostazioni dell'applicazione

Le applicazioni Windows Form richiedono spesso dati critici per l'esecuzione dell'applicazione, ma che non si vuole includere direttamente nel codice dell'applicazione. Se l'applicazione usa un servizio Web o un server di database, è possibile archiviare queste informazioni in un file separato, in modo da poterle modificare in futuro senza ricompilare. Analogamente, è possibile che le applicazioni richiedano di archiviare dati specifici per l'utente corrente. Molte applicazioni, ad esempio, dispongono di preferenze utente che ne personalizzano l'aspetto e il comportamento.

Le impostazioni dell'applicazione soddisfano entrambe le necessità in quanto costituiscono un semplice metodo per l'archiviazione di impostazioni tanto a livello di applicazione quanto a livello di utente nel computer client. Usando Visual Studio o un editor di codice è possibile definire un'impostazione per una data proprietà specificandone il nome, il tipo di dati e l'ambito (applicazione o utente). È anche possibile inserire impostazioni correlate in gruppi denominati per semplificarne l'impiego e la leggibilità. Una volta definite, le impostazioni assumono carattere permanente e vengono lette automaticamente in memoria in fase di esecuzione. Un'architettura modulare rende possibile la modifica del meccanismo di persistenza, ma per impostazione predefinita viene usato il file system locale.

Impostazioni applicazione rende permanenti i dati in formato XML inserendoli in file di configurazione diversi (con estensione config) a seconda dell'ambito dell'impostazione (applicazione o utente). Nella maggior parte dei casi le impostazioni relative all'applicazione sono di sola lettura perché contengono informazioni sul programma e normalmente non è necessario sovrascriverle. Per contro, le impostazioni relative all'utente possono essere lette e scritte senza problemi in fase di esecuzione anche se l'applicazione è eseguita con attendibilità parziale. Per altre informazioni sull'attendibilità parziale, vedere Security in Windows Forms Overview.

Le impostazioni vengono archiviate come frammenti XML nei file di configurazione. Le impostazioni con ambito di applicazione sono rappresentate dall'elemento <applicationSettings> e di solito sono inserite in app.exe.config, dove app è il nome del file eseguibile principale. Le impostazioni con ambito utente sono rappresentate dall'elemento <userSettings> e vengono inserite in user.config. È necessario distribuire il file app.exe.config con l'applicazione. L'architettura delle impostazioni creerà il file user.config su richiesta la prima volta che l'applicazione salva le impostazioni per tale utente. È anche possibile definire un blocco <userSettings> in app.exe.config per fornire valori predefiniti per le impostazioni con ambito di utente.

Anche per i controlli personalizzati è possibile salvare le impostazioni implementando l'interfaccia IPersistComponentSettings , che espone il metodo SaveSettings . Il controllo ToolStrip di Windows Form implementa questa interfaccia per salvare la posizione delle barre degli strumenti e dei relativi elementi tra le sessioni di un'applicazione. Per altre informazioni sui controlli personalizzati e le impostazioni dell'applicazione, vedere Application Settings for Custom Controls.

Dove sono archiviate le impostazioni con ambito utente

Il provider predefinito, LocalFileSettingsProvider, archivia le impostazioni con ambito utente nella LocalApplicationData cartella . Se la cartella non è disponibile, viene usata la ApplicationData cartella . Viene creata una sottocartella specifica dell'app per archiviare il file di impostazioni con ambito utente. Il nome di questa cartella si basa su tre attributi relativi all'assembly principale dell'app:

Se uno dei dettagli dell'assembly precedente cambia, le impostazioni con ambito utente precedenti andranno perse perché viene generato un nuovo nome di sottocartella. Ad esempio, se viene rilasciata una nuova versione dell'app e il AssemblyName.Version valore è diverso dalla versione precedente, il nome della sottocartella usata per archiviare le modifiche alle impostazioni con ambito utente. Se le impostazioni utente devono essere persistenti tra le versioni dell'app, creare un provider di impostazioni personalizzate. Per altre informazioni, vedere Provider di Impostazioni personalizzati.

Limitazioni della funzionalità Impostazioni applicazione

Non è possibile usare le impostazioni dell'applicazione in un'applicazione non gestita che ospita .NET Framework. Le impostazioni non funzioneranno correttamente in ambienti come i componenti aggiuntivi di Visual Studio, C++ per Microsoft Office, i controlli contenuti in Internet Explorer o i componenti aggiuntivi e i progetti di Microsoft Outlook.

Al momento non è possibile eseguire l'associazione ad alcune proprietà nei Windows Form. L'esempio più evidente è la proprietà ClientSize , in quanto eseguendo l'associazione a questa proprietà si genera un comportamento non prevedibile in fase di esecuzione. In genere è possibile ovviare a questi problemi salvando e caricando le impostazioni a livello di codice.

Le impostazioni dell'applicazione non includono funzionalità incorporate per crittografare automaticamente le informazioni. Non archiviare mai informazioni correlate alla sicurezza, ad esempio password di database, in testo non crittografato. Se si vogliono archiviare informazioni riservate, lo sviluppatore dell'applicazione è responsabile di garantirne la sicurezza. Se si vogliono archiviare le stringhe di connessione, è consigliabile usare la sicurezza integrata di Windows e non ricorrere a password impostate come hardcoded nell'URL. Per altre informazioni, vedere Code Access Security and ADO.NET.

Guida introduttiva alle impostazioni dell'applicazione

Se si usa Visual Studio, per definire le impostazioni in Progettazione Windows Form usare la proprietà (ApplicationSettings) nella finestra Proprietà . Quando si definiscono le impostazioni in questo modo, Visual Studio crea automaticamente una classe wrapper gestita personalizzata che associa ogni impostazione a una proprietà di classe. Visual Studio stabilisce inoltre l'associazione tra l'impostazione e una proprietà su un form o controllo, in modo che le impostazioni del controllo vengano ripristinate automaticamente alla visualizzazione del form e salvate automaticamente alla chiusura.

Se si desidera un controllo maggiore sulle impostazioni, è possibile definire una classe wrapper personalizzata per le impostazioni dell'applicazione. Questa operazione viene eseguita derivando una classe da ApplicationSettingsBase, aggiungendo una proprietà corrispondente a ogni impostazione e applicando attributi speciali alle proprietà. Per informazioni dettagliate sulla creazione di classi wrapper, vedere Application Settings Architecture.

È anche possibile usare la classe Binding per associare le impostazioni alle proprietà a livello di codice su form e controlli.

Vedi anche