Tag Archive for 'Visual Studio'

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!

Visual studio e IIS insieme

Ultimamente, mi sono ritrovato a dover lavorare in team e ho notato non poche difficoltà nel dovermi interfacciare con persone le cui abitudini sono completamente diverse dalle mie. Una delle peggiori è la pretesa di sviluppare un sistema web utilizzando come ambiente di test il Server Visual Studio Development. Idea sbagliatissima secondo me, non è concepibile che per dover testare un app devo avviare ogni volta il server web ed eseguire i test necessari ma ancor più brutto e non sapere che successivamente ci si troverà di fronte sorprese (errori e comportamenti anomali nell’applicazione) di cui proprio non se ne capiscono le cause.

La soluzione ottima a questo problema, secondo me, è utilizzare un server web ISS configurato nella macchina in cui si sviluppa. Questo predispone un ambiente “molto simile a quello reale”, in cui si potranno notare subito errori o mal funzionamenti per una “non corretta configurazione del server”, mentre con il Server Visual Studio Development questi problemi vengono messi da parte e nascono successivamente, quando l’applicazione entra in esercizio e, per quanto mi riguarda, è davvero frustrante dover risolvere anomalie velocemente e senza aver ben chiara la situazione. Premesso questo oggi voglio spiegare semplicemente come configurare un progetto si vs per poter essere avviato sfruttando il server web già attivo sul pc (è necessaria una conoscenza di base dei progetti vs e di IIS (Internet Information Services)).

  1. Configurazione del web server per il nostro progetto
    Supponiamo di avere un progetto nella cartella C:\wwwroot\mioprogetto, andiamo su “Pannello di controllo” → “Strumenti di amministrazione” → “Internet Information Service”. Da qui selezioniamo la voce root “Sito web predefinito” ed aggiungiamo una sotto directory scegliendo dal menu “Nuova” → “Directory virtuale…”, ci verranno richieste diverse informazioni tra le quali anche la location del sito, qui imposteremo proprio C:\wwwroot\mioprogetto”.
  2. Configurazione del progetto in visual studio
    Apriamo il nostro progetto che ovviamente si trova nella cartella impostata precedentemente, visualizziamo le proprietà di questo ed andiamo alla voce “Web”, alla voce “Server”, selezionare la voce Usa server Web IIS e in Url di progetto specifichiamo: http://localhost/<directory-virtuale>.
  3. Salviamo tutto e da ora in poi il nostro progetto è testabile utilizzando direttamente il server web evitando cosi l’uso di altre risorse di sistema e nello stesso tempo simulando un ambiente reale.