Web.Config

È buona norma, quando si progetta un applicazione web utilizzando il dot.net, sfruttare al meglio "tutte le potenzialità" offerte dal framework. Una di queste è la configurazione del web.config.

Il web.config viene(solitamente) utilizzato per la configurazione dei parametri necessari al corretto funzionamento dell’applicazione (il classico esempio è la ConnectionString), questi, devono poter essere facilmente modificabili da parte dello sviluppatore in fase di test e/o installazione [evitando di dover avere a portata di mano i sorgenti in cui modificare le famose "COSTANTI" e dover subito dopo ricompilare tutto, trasferire etc. etc. :@ (si, alla fine ci si incazza per dover effettuare una semplice modifica)].

Mi capita molte volte di avere delle(grosse) incognite durante lo sviluppo di web-application. Lavorando in ambito ospedaliero e dovendo interfacciare le mie applicazioni con altre sorgenti dati, non sò mai di preciso, nel momento in cui installerò l’applicazione, quale server, quale password, insomma “CHI,COSA (mi manca il quando) e PERCHÈ?”. Per questo sfrutto il web.config a mio favore, cerco di spiegarvi come attraverso questo esempio:
ho un’applicazione x che deve reperire dei dati Anagrafici da un db posizionato
sul server [ServerCheNonConosco] sul database [DatabaseAncoraIgnoto].

Quindi il mio obiettivo è configurare il web.config in modo tale da potergli passare dati reali nel momento stesso in cui sarò a conoscenza di questi (nel frattempo emulo il tutto utilizzando server demo).

Il primo passo è agire direttamente sul web.config:


	
		
		
	
	
		
		
	

Alcune note su quanto scritto: i nomi sono frutto della mia immaginazione, nello sviluppo, durante la creazione del web.config utilizzare nomi appropiati che siano il più descrittivi possibile rispetto alla funzionalità svolta, utilizzare anche i commenti se necessario. Per quanto riguarda la ConnectionString ricordate sempre di crittografare per avere una maggiore sicurezza.

Passiamo alla pratica, ho sfruttato la sezione appSettings per memorizzare alcuni “parametri”, infatti all’interno di questo elemento possiamo inserire coppie di dati (Chiave, Valore) che successivamente possiamo reperire dall’applicazione stessa. Il passo successivo è implementare nel nostro progetto quanto necessario per leggere questi valori.

namespace MioProgetto
{
	internal sealed class WebConfig
	{
		// Preleva un valore dal web.config
		internal static string GetValue(string appSettingName)
		{
			return ConfigurationManager.AppSettings[appSettingName];
		}

		internal static string ServerCheNonConosco
		{
			get { return GetValue("ServerCheNonConosco"); }
		}

		internal static string DatabaseAncoraIgnoto
		{
			get { return GetValue("DatabaseAncoraIgnoto"); }
		}

		internal static string ConnectionString
		{
			get
			{
				ConnectionStringSettings css = ConfigurationManager.ConnectionStrings["RemoteConnectionString"];
                    		SqlConnectionStringBuilder sb = new SqlConnectionStringBuilder(css.ConnectionString);
                    		sb.DataSource = ServerCheNonConosco;
		                sb.InitialCatalog = DatabaseAncoraIgnoto;
	                    	string connectionString = sb.ConnectionString;
		                sb = null;
                    		css = null;
                    		return connectionString;
			}
		}
	}
}

Voi direte? Ma non è più semplice ricostruire la connection string ogni qual volta i dati cambiano?, ma poi c’è da crittografare, quindi ci si dovrà riconnettere al server, effettuare le operazioni necessarie a reperire la connessione, modificarla e crittografarla! Con questo metodo abbiamo creato un oggetto che fornisce in ogni momento (all’interno della web-application) le informazioni necessarie per la connessione, sfruttando il web.config! Se pensi che esista un metodo alternativo o modalità migliori per eseguire queste operazioni e vuoi dirmelo, non esitare, in qualche modo (commenti, email) fammi conoscere la tua opinione!

1 Response to “Web.Config”


Leave a Reply