back to top

Guida Visual Studio 2008

L’uscita di Visual Studio 2005 ha rappresentato la più grande innovazione nell’ambito dello sviluppo software in ambiente .NET, introducendo tantissimi nuovi ed utilissimi strumenti per gli sviluppatori. Visual Studio 2008 nasce su questa solida base e fornisce ulteriori strumenti a livello di ambiente di lavoro (IDE), di linguaggio, di framework (nuova versione 3.5) e di strumenti.

Introduzione a Visual Studio 2008

Per aiutare gli sviluppatori a creare rapidamente applicazioni moderne e dinamiche, Visual Studio 2008 offre funzionalità migliorate o totalmente nuove che consentono di creare facilmente soluzioni sempre più interattive e personalizzate. Consente inoltre agli sviluppatori di utilizzare più versioni del .NET Framework all’interno dello stesso ambiente di sviluppo. Gli sviluppatori possono creare applicazioni con le versioni del .NET Framework 2.0, 3.0 o 3.5, ovvero possono supportare un’ampia gamma di progetti nello stesso ambiente.

In particolare in Visual Studio 2008 troviamo strumenti in grado di supportarci nella costruzione di nuove applicazioni e servizi, basati sulle più recenti tecnologie Microsoft, tra cui: applicazioni web, applicazioni web con AJAX, Web Service, client WCF , applicazioni desktop di maggiore qualità con WPF e componenti per Office, il tutto nei diversi linguaggi di programmazione contemplati dal .NET Framework.

Windows Presentation Foundation (WPF), ad esempio, è una tecnologia per lo sviluppo di applicazioni client di più alta qualità, Windows Communication Foundation (WCF), invece, serve a facilitare lo sviluppo di soluzioni orientate ai servizi sempre più dinamiche, mentre Windows Workflow Foundation (WF) permette una programmazione strutturata orientata ai processi critici.

AJAX (acronimo di Asynchronous JavaScript and XML) è una tecnica di sviluppo per la realizzazione di applicazioni web interattive (Rich Internet Application). Lo sviluppo di applicazioni HTML con AJAX si basa su uno scambio di dati in background fra web browser e server che consente l’aggiornamento dinamico di una pagina web senza esplicito ricaricamento da parte dell’utente.

Nota: AJAX è asincrono nel senso che i dati extra sono richiesti al server e caricati in background senza interferire con il comportamento della pagina esistente. Normalmente le funzioni richiamate sono scritte con il linguaggio JavaScript. Tuttavia, a dispetto del nome, l’uso di JavaScript e di XML non è obbligatorio, come non è necessario che le richieste di caricamento siano necessariamente asincrone.

Altra novità da citare è l’integrazione di LINQ (Language Integrated Query), componente che permette di effettuare interrogazioni su oggetti utilizzando una sintassi simile a SQL. LINQ consente di interagire con ogni sorgente che rappresenti i dati sotto forma di oggetti.

Il vantaggio offerto da Visual Studio 2008 è quello di avere tutto ciò integrato in un ambiente di lavoro unico con avanzate funzionalità di collaborazione per lo sviluppo di progetti in team. L’obiettivo di Visual Studio 2008 è, pertanto, quello di aiutare gli sviluppatori ad incrementare la propria produttività ed efficenza nei processi di sviluppo attraverso l’utilizzo degli strumenti che ci sforzeremo di descrivere all’interno di questa guida.

Panoramica di Visual Studio 2008

Visual Studio 2008 e il .NET Framework 3.5 aggiungono tante nuove caratteristiche ad un ambiente di lavoro già molto ricco ed avanzato, con l’obiettivo di incrementare ulteriormente i livelli di produttività degli sviluppatori.

Una delle più apprezzate caratteristiche del nuovo Visual Studio è la possibilità di selezionare la verione del .NET Framework con cui lavorare: molto spesso, infatti, capita di dover intervenire su applicazioni sviluppate con versioni diverse del .NET Framework e sarebbe piuttosto scomodo dover installare sulla propria macchina diverse versioni di Visual Studio. Per tale motivo Visual Studio 2008 consente di scegliere quale versione del Framework utilizzare di volta in volta.

Scegliendo la versione appropriata del Framework vengono impostati automaticamente i toolbox, i tipi di progetto, i riferimenti e tutto il resto.

Si può anche decidere di convertire un’applicazione in una versione differente del .NET Framework. Per fare ciò basta cliccare con il tasto destro del mouse sul nome del vostro progetto nella finestra Solution Explorer e scegliere Properties. Nella schermata che si aprirà basta selezionare il Framework che si intende utilizzare tramite il menu a tendina Target Framework.

Se si utilizza Visual Studio 2008 per aprire un’applicazione sviluppata con una versione precedente del Framework viene automaticamente proposto l’aggiornamento della stessa all’ultima versione disponibile, per consentirvi di utilizzare le nuove caratteristiche dell’ambiente e continuare ad utilizzare applicazioni sviluppate con una versione precedente del .NET Framework.

Come per l’edizione 2005, esistono diverse versioni di Visual Studio 2008, ciascuna mirata a ben precise esigenze.

Express Edition – Questa versione è gratuita, liberamente scaricabile e rivolta a coloro che si avvicinano per la prima volta a questo mondo, a chi lo fa per hobby, agli studenti, a tutti coloro che vogliono scrivere codice liberamente e senza particolari pretese. Questa è la risposta di Microsoft agli strumenti freeware disponibili oggi per gli sviluppatori. Chiaramente questa edizione non presenta tutte le funzionalità delle corrispondenti versioni a pagamento, tuttavia contiene tutti gli strumenti necessari e sufficienti per creare applicazioni client/server, siti web e web service.

Standard Edition – Questa versione rappresenta la base di partenza per gli sviluppatori professionisti. Essa è simile alla Express ma mette a disposizione degli sviluppatori tutti i linguaggi .NET ed un insieme maggiore di caratteristiche e funzionalità tra cui: supporto alle soluzioni multiprogetto, Windows Communication Foundation (WCF), Windows Workflow (WF), tool di distribuzione Click-Once, SQL Server 2005 Express incluso, compatibilità con Visual Source Safe e molto altro.

Professional Edition – La differenza fondamentale tra la versione Standard e la Professional è l’insieme più esteso di caratteristiche e funzionalità che la seconda possiede rispetto alla prima. Tra di esse bisogna citare: Visual Studio Tools per Office, SQL Server 2005 Developer Edition, possibilità di sviluppare software per dispositivi mobili, Crystal Reports, Server Explorer e molto altro. Oltre a queste caratteristiche addizionali la versione Professional viene venduta insieme a diverse sottoscrizioni MSDN. Può essere acquistata senza MSDN o con due diverse versioni di MSDN (Professional o Premium). Con la versione MSDN Professional si acquisisce il diritto di utilizzare le vecchie versioni di Visual Studio e di utilizzare Visual Source Safe. Si ottengono anche licenze di Windows, Windows Server, Virtual PC e altre. Con la versione MSDN Premium, oltre a ciò che è stato elencato in precedenza, si ottengono licenze per SQL Server, licenze per Microsoft Office Systems 2007 e altre.

Panoramica dell’ambiente di sviluppo

L’installazione di Visual Studio 2008 è simile a quella delle versioni precedenti. In base alla vostra scelta d’acquisto, chiaramente, avrete a disposizione in fase d’installazione tutti o una parte degli strumenti.

Nella prima schermata potete selezionare i linguaggi e gli elementi da installare.

Avviando per la prima volta l’ambiente di lavoro (IDE) vi comparirà una finestra in cui vi verrà chiesto di scegliere i settaggi di default (se, ad esempio, si imposta l’ambiente sulla modalità C# la finestra New Project automaticamente evidenzierà i tipi di progetto C# piuttosto che altri).

Comunque è sempre possibile modificare in seguito questo e altri aspetti dell’ambiente di sviluppo tramite il menù Tools.

La Start Page di Visual Studio

Avviando Visual Studio 2008 si accede alla pagina iniziale (Start Page)

Nella parte in alto a sinistra c’è l’area dei progetti recenti (Recent Projects), da cui è possibile accedere velocemente ad un progetto al quale avete lavorato di recente. Più sotto si trova l’area Getting Starded, ovvero l’area che tutti coloro che cominciano ad utilizzare Visual Studio dovrebbero consultare, poiché contiene molte utili spiegazioni ed esempi. Ancora più sotto vi è l’area Headlines che offre una sortadi "filo diretto" con Microsoft: in questa porzione della pagina riceveremo aggiornamenti sulle novità di Microsoft e potremo offrire nostri feedback. Infine, nella parte centrale della pagina, vengono proposti diversi link ad interessanti articoli MSDN che spiegano tutti i segreti del .NET Framework.

Si può anche personalizzare l’avvio dell’ambiente di lavoro. Basta cliccare dal menù Tool su Options e scegliere il nodo relativo ai settaggi dell’ambiente di sviluppo (Environment). Attraverso i nodi figli è possibile personalizzare l’ambiente; in particolare cliccando sul nodo figlio Startup è possibile scegliere, tra le altre cose, se visualizzare o meno la pagina di startup all’avvio di Visual Studio 2008.

Il primo progetto

Il prossimo passo è quello di creare il vostro primo progetto. Dal menù File potete scegliere se creare un nuovo progetto o un nuovo sito web. Per tutte le operazioni troverete davvero intuitiva la barra dei menù dell’ambiente di sviluppo; in particolare è da notare che i menù presenti variano dinamicamente in base alla vostra posizione nell’IDE. Ad esempio il menù Refactor compare quando ci si trova nell’editor del codice, il menù Project compare quando avete aperto un progetto, il menù Web Site quando state lavorando su un’applicazione web e così via.

Fondamentali sono poi le varie Toolbar. Visual Studio 2008 include più di 30 toolbar, la maggior parte delle quali sono fortemente specializzate. Chiaramente occorrerebbe una guida a parte per illustrare tutte le loro funzionalità, pertanto mi limito a citare la Standard Toolbar, che è sempre presente e permette di creare nuovi progetti, aggiungere elementi a progetti esistenti, aprire, salvare, tagliare, copiare, incollare e annullare un’operazione.

E’ anche possibile personalizzare gli elementi presenti in una toolbar. Basta cliccare con il tasto destro del mouse sulla toolbar che si desidera personalizzare e scegliere Customize. Comparirà la finestra di personalizzazione dalla quale è possibile selezionare quali toolbar si desidera visualizzare, scegliere la grandezza delle icone e molto altro.

Di grande utilità, durante la fase di sviluppo, è l’area contrassegnata come Toolbox. Ad esempio, se state sviluppando un web form, il Toolbox vi presenta i vari controlli, raggruppati per categoria, che possono essere utilizzati in tale contesto.

Sicuramente la potenza degli ambienti di sviluppo come Visual Studio 2008 sono i designer visuali, che permettono di sviluppare form (sia windows che web), diagrammi di classi, schemi XML ed altro muovendo gli elementi tramite il mouse, ridimensionandoli, cliccandoci sopra e così via, senza scrivere direttamente codice.

Visual Studio 2008 dispone anche di diversi editor di testo e finestre attraverso cui, come vedremo, è possibile affrontare tutti gli aspetti del processo di sviluppo.

Miglioramenti e novità del .NET Framework 3.5

Coloro che programmano in ambiente .NET sanno già che lo sviluppo delle applicazioni non si basa solo sul tipo di linguaggio di programmazione utilizzato. Pertanto quando viene rilasciata una nuova versione di un ambiente di lavoro, come Visual Studio 2008, essa include miglioramenti ai linguaggi disponibili, nuove funzionalità del Framework e cambiamenti nel modo di scrivere codice.

A parte i miglioramenti specifici dei linguaggi di programmazione e quelli relativi al migliore funzionamento di strumenti come l’Intellisense ed il Refactoring, Visual Studio 2008 presenta tutta una serie di migliorie frutto di aggiornamenti fatti al Common Language Runtime (CLR).

Le novità principali riguardano:

  • Extension Methods
  • Anonymous Types
  • Lambda Expression
  • Metodi Parziali
  • Language Integrated Query (LINQ)
  • Supporto all’XML (solo VB)

Le novità del .NET Framework 3.5

Il .NET Framework 2.0 ha introdotto diverse classi base, interfacce, generics e altro. Il .NET Framework 3.0 ha introdotto elementi come Windows Presentation Foundation (WPF), Windows Communication Foundation (WCF) e Windows Workflow Foundation (WF). L’ultima versione del Framework (la 3.5 appunto) include LINQ, una revision di ASP.NET e molto altro.

Chiaramente non è possibile in questa sede analizzare tutte le nuove caratteristiche, tuttavia possiamo evidenziare alcune delle novità più importanti:

ASP.NET – Il .NET Framework include diversi miglioramenti e novità per gli sviluppatori web. Il namespace System.Web include nuove classi e controlli ed il Framework supporta direttamente la programmazione con AJAX. Tra le altre cose vi sono un nuovo controllo per la visualizzazione dei dati, chiamato ListView, ed un nuovo oggetto, chiamato LinqDataSource, per lavorare con dati LINQ.

LINQ – Il namespace System.Linq definisce gli operatori ed i tipi LINQ standard. Il namespace System.Data.Linq provvede alle connessioni tra i database e i sottosistemi LINQ. Da citare anche altri namespace molto utili: System.Data.Linq.Mapping, System.Xml.Linq. Molti dei controlli del Framework sono stati aggiornati per lavorare con LINQ.

Windows Communication Foundation (WCF) – Il nuovo System.ServiceModel incapsula quello che è conosciuto come WCF. Con questa funzionalità è possibile creare facilmente applicazioni basate su servizi che operano su diversi protocolli.

Windows Presentation Foundation (WPF) – WPF fornisce una nuova tecnologia di presentazione per le applicazioni Windows.

Windows Workflow Foundation (WF) – WF permette di creare per le vostre applicazioni flussi di lavoro sequenziali e guidati dagli stati. Esso è inoltre integrato con WCF, quindi si può facilmente esporre e richiamare un flusso di lavoro come servizio WCF.

Supporto a Windows Vista – Il motore Windows Form è stato aggiornato per rendere le applicazioni compatibili con Windows Vista. Ciò significa che aggiornando le vostre vecchie applicazioni darete ad esse l’aspetto di applicazioni per Vista e potrete utilizzare tutte le finestre di dialogo in stile Vista.

.NET Compact Framework – Il Framework 3.5 fornisce una nuova versione del Compact Framework. Esso può essere utilizzato per dispositivi mobili come Smartphone e dispositivi WindowsMobileCE.

Tutti questi e molti altri elementi dovrebbero aiutarvi a scrivere codice in modo migliore e più efficiente, incrementando le vostre abilità, la vostra produttività e la qualità dei vostri lavori.

Soluzioni e progetti

Le soluzioni ed i progetti sono i contenitori che Visual Studio utilizza per organizzare il codice che si scrive tramite l’IDE.

Le soluzioni sono contenitori virtuali, che raggruppano uno o più progetti e consentono di applicare ad essi varie proprietà.

Invece i progetti, contenuti nelle soluzioni, oltre ad essere essi stessi contenitori hanno anche una corrispondenza fisica, in quanto Visual Studio li traduce in codice compilato. In altre parole ciascun progetto compilato genera sempre un componente .NET come una DLL o un file eseguibile.

Le soluzioni, oltre ai progetti, possono contenere anche altri file come documenti di testo, diagrammi e così via. Chiaramente non possono contenere altre soluzioni. E’ importante ricordare, inoltre, che Visual Studio può caricare una sola soluzione alla volta. Se desiderate lavorare a più soluzioni contemporaneamente è necessario lanciare più istanze dell’IDE.

Per creare una soluzione è necessario creare un progetto. Siccome i progetti non possono essere caricati indipendentemente, la creazione di uno di essi causa la creazione di una soluzione in cui esso viene inserito.

Di grande comodità è la possibilità di creare cartelle all’interno di una soluzione per organizzare in modo efficiente tutti i file in essa contenuti. Queste cartelle solo virtuali e non corrispondono a cartelle fisiche.

Per cominciare dal menù File scegliete New e poi l’opzione Project.

Verrà visualizzata la finestra di dialogo dei progetti, in cui impostare nome della soluzione, posizione e nome del progetto.

E’ anche possibile creare una soluzione vuota, procedimento utile quando si necessita di una nuova soluzione al solo fine di includere progetti già esistenti. Basta selezionare Other Project Types e in questa categoria Blank Solution.

Se scegliete qualsiasi altro tipo di progetto diverso da Blank Solution, Visual Studio visualizzerà la soluzione ed il progetto appena creati nella finestra Solution Explorer.

I vari tipi di progetti vengono creati in base a opportuni modelli (template) disponibili nell’IDE, che coprono tutti i possibili scenari di sviluppo, andando dalle applicazioni web alle applicazioni Windows, passando per tutta una serie di altri tipi di applicazioni.

Finestre

Visual Studio permette una visione completa degli elementi relativi alle vostre soluzioni ed ai vostri progetti, mostrando essi attraverso i cosiddetti browser ed explorer. Queste finestre cercano di fornire una rappresentazione strutturata di una larga varietà di elementi (in generale è possibile gestire e visualizzare queste finestre tramite il menù View).

Andiamo ad analizzare le finestre più importanti:

Solution Explorer – La finestra Solution Explorer è lo strumento principale per visualizzare e manipolare le soluzioni ed i progetti. Essa fornisce una semplice ma molto utile vista degli elementi presenti nella soluzione o nel progetto correnti e vi permette di interagire con essi direttamente mediante menù contestuali. Utilizzando Solution Explorer potete aprire un editor per ciascun tipo di file, aggiungere nuovi elementi e riorganizzare la struttura di un progetto o di una soluzione. Tale finestra chiaramente può essere posizionata ovunque nell’ IDE di Visual Studio ed è composta dalla barra del titolo, da una toolbar con alcuni pulsanti e da una struttura ad albero (tree-view).

Chiaramente ciascun elemento nella Solution Explorer è rappresentato da un nome e da un’icona. Cliccando con il tasto destro del mouse su una soluzione possiamo visualizzare un menù contestuale con tutti i comandi di gestione della stessa, tra cui: visualizzazione ed impostazione delle proprietà, compilazione/ricompilazione, impostazione delle dipendenze del progetto, aggiunta di nuovi elementi, aggiunta della soluzione al controllo del codice sorgente.

Cliccando invece con il tasto destro su un progetto ci verranno presentati tutti i comandi gestione ad esso relativi.

Class View – Questa finestra è simile come struttura e funzionalità alla Solution Explorer e presenta una vista gerarchica degli elementi di un progetto. Questa vista non è basata sui file che fisicamente costituiscono un progetto ma permette di visualizzare i vari namespace, tipi, interfacce, e altri elementi presenti in esso.

Server Explorer – Questa finestra serve a due scopi: espone le varie risorse ed i vari servizi di sistema presenti sulla vostra macchina locale e sulle macchine remote e consente l’accesso agli oggetti di connessione ai dati. I sistemi appaiono sotto un nodo di primo livello denominato Servers, mentre le connessioni ai dati sotto il nodo Data Connections.

Document Outline – Questa finestra presenta una vista gerarchica degli elementi presenti in un windows o web form. E’ molto utile per comprendere l’esatta struttura logica di un form, che a volte non è facilmente individuabile visivamente.

Chiaramente all’interno dell’IDE di Visual Studio 2008 sono presenti anche molte altre finestre la cui descrizione esula dagli scopi della guida presente che si propone di fornire una visione generale degli elementi più importanti di Visual Studio 2008.

Editor e Designer

Sebbene Visual Studio fornisca un grande numero di funzionalità per ogni area del processo di sviluppo, il vero cuore dell’IDE sono i suoi editor e designer. Essi vi permettono di scrivere codice, modificare risorse, progettare form, costruire schemi, ecc. in modo più semplice ed efficiente.

Essenzialmente un editor di Visual Studio corrisponde ad un editor di testo che vi permette di scrivere codice specifico (HTML, XAML, C# e così via).

Un designer è invece un particolare tipo di editor che permette di interagire con oggetti visuali.

Molti elementi sono supportati sia dagli editor che dai designer, ad esempio si può costruire un form trascinando i controlli desiderati nel Windows Form Designer o scrivendo a mano il codice corrispondente tramite l’editor di codice.

I designer, come detto, forniscono una prospettiva grafica di una particolare situazione. Nel designer per Windows Form, ad esempio, una finestra appare costituita da button, contenitori, label e tanti altri controlli ed il codice necessario ad implementare gli oggetti visualizzati viene generato automaticamente da Visual Studio.

Il programmatore può semplicemente limitarsi a organizzare graficamente il form come desidera e ad ogni sua azione Visual Studio genererà il codice corrispondente.

Esistono due modi per lanciare un editor. Il primo prevede l’utilizzo della finestra Solution Explorer (basta fare doppio click su un file di testo che si desidera editare). Il secondo consiste nel selezionare New dal menù File e scegliere ancora File, viene così avviata la finestra di dialogo per la generazione di un nuovo file. In entrambi i casi vi comparirà una finestra simile alla seguente, dove potrete scrivere il vostro codice:

Anche per avviare un designer basta cliccare nella finestra Solution Explorer sul file corrispondente. Se ad esempio stiamo sviluppando un progetto Windows Form, facendo doppio click su uno dei form presenti si aprirà il corrispondente designer:

Utilizzando questa finestra potete aggiungere controlli ed elementi visuali al form e modificarne l’aspetto, senza scrivere manualmente codice. Come detto in precedenza, il codice corrispondente alle vostre azioni viene generato automaticamente da Visual Studio nel file di testo correlato al form presente nel designer (e sul quale comunque potete intervenire direttamente, se lo desiderate). Questo vale per tutti i designer presenti nell’IDE.

Refactoring

Ogni volta che cambiate il vostro codice per ridurre le duplicazioni o per rinominare elementi effettuate il cosiddetto refactoring.

La definizione tecnica di refactoring è quella di un cambiamento fatto alla struttura interna del software per rendere più facile la sua comprensione e la sua manutenzione, senza però apportare cambiamenti al suo comportamento esterno.

Questa tecnica ha ricevuto molte attenzioni e sono stati scritti sull’argomento molti libri che enfatizzano i benefici di questa pratica. Proprio per questo motivo gli editor di Visual Studio sono stati dotati di strumenti avanzati per effettuare il refactoring.

Questi strumenti sfruttano un motore basato sul compilatore C#. Il motore ed il compilatore lavorano assieme per individuare tutti i possibili cambiamenti che sarebbe necessario effettuare in una determinata operazione di refactoring. E’ possibile anche avere un’anteprima dei cambiamenti prima che essi vengano applicati al codice.

Sono disponibili sette diverse operazioni di refactoring:

Rename – Permette di rinominare campi, proprietà, namespace, metodi, tipi e variabili locali.

Extract Method – Crea un nuovo metodo usando il codice presente in un metodo esistente.

Promote Local to Parameter – Trasforma una variabile locale di un metodo in un parametro dello stesso.

Reorder Parameters – Cambia l’ordine dei parametri di un metodo e aggiorna tutti i riferimenti allo stesso.

Remove Parameters – Rimuove un parametro da un metodo e aggiorna tutti i riferimenti allo stesso.

Encapsulate Field – Crea semplicemente una proprietà a partire da un campo esistente.

Extract Interface – Crea un’interfaccia a partire da una classe o da una struttura esistente.

Questi strumenti sono accessibili da diversi punti dell’IDE. Per esempio se state lavorando nell’editor di codice C# potete selezionare la porzione di codice che volete e cliccare con il tasto destro del mouse su di esso, selezionando la voce Refactor.

Oppure potete utilizzare la barra dei menù.

Inoltre se modificate il nome di un elemento, ad esempio un metodo, vi verrà presentato uno smart tag attraverso cui potrete aggiornare tutti i riferimenti relativi.

Quando scegliete di effettuare un’operazione di refactoring potete sempre decidere di vedere un’anteprima dei cambiamenti che verranno fatti. Basta spuntare l’opzione "Preview reference changes". Nel caso di un’operazione di rinomina ad esempio vi comparirà la seguente finestra:

Dopo aver cliccato su OK Visual Studio vi presenterà la finestra di dialogo Preview Changes, nella parte superiore della quale saranno elencate tutte le modifiche che verranno apportate, tramite una rappresentazione ad albero. Selezionando i vari rami dell’albero, nella parte inferiore della finestra comparirà la corrispondente porzione di codice che sarà modificata.

Debugging

Spesso i programmatori impiegano più tempo ad effettuare il debug del codice che a scriverlo. Questo è dovuto alla natura delle applicazioni odierne, che spesso comunicano con altre applicazioni, servizi, componenti, database e quindi sono soggette a diversi tipi di bug.

Per questo motivo i programmatori hanno bisogno di strumenti che li assistano maggiormente nel degug per incrementare la loro produttività. Il debugger di Visual Studio 2008 risponde a questa necessità.

Il primo passo da effettuare è avviare la vostra applicazione in modalità Debug. Questo vi permetterà di intervenire sul vostro codice nel momento in cui si verifica un errore. In fase di sviluppo questa dovrebbe sempre essere la configurazione su cui lavorare.

La sessione di debug viene avviata cliccando sul tasto verde Run sulla barra degli strumenti. Questa operazione indica a Visual Studio di compilare l’applicazione e di visualizzare la prima pagina o il form iniziale della stessa.

Le applicazioni possono anche essere avviate non in modalità debug, basta cliccare sul menù Debug e selezionare Start Without Debugging.

Quando nel vostro codice si verifica un’eccezione non gestita, il debugger interrompe l’esecuzione e mostra la porzione di codice (evidenziata) che genera questa situazione. Importante è il concetto di "eccezione non gestita", che si riferisce a porzioni del vostro codice che non avete gestito con blocchi try-catch.

Nel momento in cui si verifica un’eccezione avete a disposizione diversi utili strumenti. Come già detto, il codice che la genera viene evidenziato, inoltre (come potete vedere nell’immagine sottostante) comparirà l’Exception Assistant. Esso fornisce dettagli sull’eccezione e offre suggerimenti su come risolvere il problema, permettendo anche l’accesso a risorse sul web.

Altre finestre molto utili sono Locals, Call Stack e Watch. La prima mostra automaticamente il valore assegnato a tutte le variabili locali nel codice in cui si verifica l’eccezione e quindi vi dà un facile accesso a informazioni chiave possono contribuire a risolvere il problema. La seconda mostra l’ordine in cui i vari componenti di un’applicazione vengono chiamati, con la possibilità di accedere al codice relativo. La terza vi permette di scrivere codice e di ottenere il comportamento corrispondente (se ad esempio scrivete un’espressione booleana vi verrà restituito il valore true o false).

Per indicare al debugger di fermare l’esecuzione del codice quando si raggiunge una specifica linea occorre utilizzare i cosiddetti breakpoint, che è possibile inserire cliccando sulla fascia grigia (Indicator Bar) sul lato sinistro dell’editor del codice in corrispondenza della linea desiderata oppure cliccando con il tasto destro del mouse sulla linea e scegliendo Insert Breakpoint.

La più comune operazione di debug consiste nel fissare un breakpoint e poi scorrere il codice linea per linea per esaminare l’evoluzione dei dati restituiti. Esistono diverse opzioni per fare questo: si può decidere di utilizzare il comando Step Over (cliccando sul tasto F10) o il comando Step Into (cliccando su F11). Il primo permette di scorrere linea per linea le righe di un metodo, il secondo oltre ad avere il comportamento del primo in più permette di scorrere linea per linea anche i metodi che vengono chiamati dal metodo in esame.

Un altro metodo di debug molto utilizzato è il Run to Cursor. Cliccando con il tasto destro del mouse su una linea di codice e scegliendo tale opzione si forza l’esecuzione del codice fino alla linea stessa.

Chiaramente esistono tante altre opzioni di debug che vi invito a testare per trovare il modus operandi più consono alle vostre esigenze.

Sviluppare applicazioni ASP.NET

Per realizzare un sito web in Visual Studio occorre avviare un progetto di tipo Web Site. Questo tipo di progetto rappresenta una connessione tra Visual Studio, la versione di sviluppo del vostro sito e un server web che può essere locale o no.

Microsoft ha sviluppato un’idea di sito web che si discosta dai semplici siti HTML con testi, hyperlink e immagini e prevede un modello che combina l’HTML con script lato server. In tale ottica un sito web comprende: web form interattivi, pagine master, stili, temi, configurazioni di sicurezza, politiche di caching, connettività a database, data binding, ecc.

Gli strumenti di Visual Studio 2008 mettono insieme questi concetti e vi permettono di creare siti web moderni che offrono elevati livelli di interazione.

Per creare un nuovo sito web scegliete l’opzione New Web Site dal menù File. Questa operazione determina l’apertura della finestra di dialogo New Web Site che è differente da quella New Project.

Visual Studio propone diversi template per le vostre esigenze ma solitamente si utilizza il template standard, cioè ASP.NET Web Site.

Potete decidere tramite il menu a tendina Location, presente nella finestra di dialogo, dove posizionare il vostro sito: potete decidere di lavorare sul file system e usare un server di sviluppo locale oppure di lavorare su un server remoto e connettervi ad esso tramite FTP o HTTP.

Se scegliete l’opzione File System potete scegliere qualunque cartella sulla vostra macchina per porvi i contenuti del vostro sito e non avete la necessità di avere installato IIS.

Se scegliete l’opzione FTP dovete indicare l’indirizzo di un server FTP esistente e fornire le opportune credenziali:

Potete infine scegliete di comunicare con il server web tramite HTTP. In tal caso il server di sviluppo deve avere abilitate le estensioni FrontPage Server per consentire questo tipo di connettività da Visual Studio.

Nella finestra New Web Site dovete inoltre scegliere il linguaggio di programmazione da utilizzare tra VB e C#.

Dopo aver fatto ciò, Visual Studio creerà automaticamente diversi file e cartelle. In particolare verrà creata una cartella App_Data, un file .aspx e un file aspx.cs (se si è scelto il linguaggio C#). La cartella App_Data contiene i file di dati usati dall’applicazione, come file SQL Express (.mdf), dati in XML, file Excel e così via.

Cliccando con il tasto destro del mouse sul sito e scegliendo Add ASP.NET Folder è possibile poi aggiungere altre cartelle speciali come App_Code (per le classi), App_WebReference (per riferimenti ai web service), App_Themes (per i temi), ecc.

Il file .aspx definisce un web form, mentre il file aspx.cs è il file di una classe. Per aggiungere questi e altri tipi di file al vostro sito cliccate con il tasto destro su di esso e scegliete l’opzione Add New Item.

Le applicazioni ASP.NET presentano diverse proprietà e opzioni di configurazione. Queste proprietà controllano e regolano il funzionamento dell’applicazione. Potete accedere ad esse tramite la finestra di dialogo Property Pages (per aprirla basta cliccare con il tasto destro sul sito e scegliere l’opzione Property Pages). Tramite essa potete gestire i riferimenti, settare le opzioni di compilazione, scegliere il framework di riferimento, definire l’accessibilità delle vostre pagine e molto altro.

Creare una pagina web

Le pagine web ASP.NET (chiamate anche web form) possono essere create in modo piuttosto semplice attraverso l’interfaccia di Visual Studio. Il designer vi permette di definire i controlli e l’aspetto delle pagine, mentre il modello ad eventi viene utilizzato sul server per rispondere alle azioni degli utenti.

La prima cosa da fare è quindi quella di aggiungere al vostro sito web uno o più web form tramite la finestra Add New Item, impostando il nome della pagina ed il linguaggio di programmazione che desiderate utilizzare.

Sempre nella stessa finestra potete inoltre scegliere se mettere il codice relativo in un file separato (opzione Place code in separate file) o tutto in un unico file insieme ai tag. Vi consiglio, per maggiore chiarezza, di scegliere il file separato. Infine dovete scegliere se selezionare l’opzione Select master Page. Questa opzione indica a Visual Studio che volete utilizzare il vostro nuovo web form come master page di default (per quanto riguarda contenuti e struttura). Vedremo successivamente cosa vuol dire tutto ciò.

A questo punto potete aggiungere controlli alle vostre pagine web semplicemente trascinandoli in esse dal Toolbox di Visual Studio

Nel designer sono disponibili diverse "viste" del vostro form: design, source e split.

La vista Design vi permette di effettuare operazioni visuali, come il trascinamento dei controlli nel form, il loro ridimensionamento e così via. Trascinando un elemento nella vostra pagina avrete la rappresentazione visuale di quella che sarà la pagina a runtime. Inoltre potete selezionare un elemento della pagina e settare le sue proprietà tramite la finestra Properties.

La vista Source vi permette di vedere e modificare il codice relativo alla pagina web. Anche qui potete trascinare dal Toolbox i controlli che volete, ma al posto della loro rappresentazione visuale otterrete il codice corrispondente.

La vista Split è una novità di Visual Studio 2008 e consiste in una visione simultanea delle altre due viste.

Per creare una pagina ASP.NET che soddisfi le vostre esigenze è necessario comprendere come funziona il modello ad eventi. Questo modello rappresenta il modo in cui vengono gestiti gli eventi sul server quando gli utenti compiono determinate azioni. Si noti che il modello ad eventi dei Web Form è diverso da quello tipico delle applicazioni Windows (Windows Form) in quanto, a differenza di quest’ultimo, combina eventi che si verificano sul server con un’applicazione web visualizzata in un browser.

In ogni pagina di un’applicazione web tipicamente è presente almeno un evento che gestisce una determinata situazione.

Nel momento in cui si accede ad una pagina cominciano a verificarsi gli eventi che voi impostate nel vostro codice. E’ importante comprendere l’esatta sequenza dei possibili eventi in modo da essere sicuri di utilizzare il giusto codice nel giusto evento per effettuare la giusta azione.

Gli eventi legati ad una pagina web o ai diversi controlli sono diversi e vi invito a consultare la documentazione Microsoft per comprenderli nel dettaglio. In ogni caso per aggiungere un evento al vostro codice vi basta selezionare la pagina o il controllo relativo e cliccare nella finestra Properties sul simbolo del fulmine.

Così facendo comparirà un elenco di tutti gli eventi possibili per l’oggetto selezionato; facendo doppio click sullo spazio bianco accanto al nome di uno di essi verrà generato il metodo corrispondente nel file del codice correlato alla vostra pagina web. A questo punto potrete inserire in tale metodo il codice che desiderate sia eseguito quando si verifica l’evento.

Progettare e realizzare interfacce utente

Prima di cominciare a inserire controlli in un form è sempre opportuno effettuare una pianificazione degli obiettivi che si desidera raggiungere. Occorre considerare le varie opzioni, le necessità degli utenti e, non meno importanti, i requisiti di manutenzione del vostro form.

Occorre inoltre determinare il tipo di informazioni e di attività che devono essere supportate. Potreste avere la necessità di pagine in cui devono essere visualizzati report, di altre che permettono agli utenti di inserire dati, di altre ancora per effettuare ricerche e così via. In pratica dovete definire le aree chiave del vostro sito e stabilire come gli utenti si possano muovere tra di esse. Questa attività è definita tassonomia o mappa del sito. Fatto questo occorre stabilire quali elementi inserire in ogni pagina ed impostare il loro stile di visualizzazione.

Un importante aspetto nella realizzazione delle vostre pagine web è decidere dove devono essere posizionati i controlli. Molti siti utilizzano tabelle per organizzare il layout delle pagine (in tal caso ciascun elemento viene posto in una cella di una determinata tabella); in altri siti gli elementi sono posizionati in modo da non potersi più spostare, altri ancora sono caratterizzati da pagine che non presentano un vero e proprio layout ma si basano sull’utilizzo di fogli di stile da applicare ai controlli a runtime.

E’ opportuno analizzare le diverse possibili opzioni:

Flow Layout – Questa opzione determina lo spostamento dei vostri controlli in base al flusso della pagina in cui si trovano. Questa scelta è opportuna se intendete strutturare la vostra pagina con tabelle nelle cui celle posizionare i vostri controlli. Con tale opzione se, per esempio, un elemento viene spostato verso il basso allora tutti gli elementi sottostanti ad esso seguono lo stesso andamento.

Absolute Positioning – Con questa opzione stabilite la posizione di un elemento in modo permanente.

Relative Positioning – Questa opzione combina le due precedenti. Gli elementi vengono posizionati nel flusso della pagina ma se, ad esempio, impostate le proprietà top e left di un elemento la distanza definita da queste proprietà viene calcolata in base alla sua posizione relativa nella pagina.

CSS Positioning – E’ un’opzione più avanzata. Tipicamente gli elementi vengono posizionati nella pagina tramite l’opzione flow layout ma ciascuno di essi è caratterizzato da uno specifico stile definito nella pagina o in un foglio di stile. Lo stile include informazioni sulla posizione, inclusi margini, altezza, larghezza e così via. Sicuramente è più complicato configurare le pagine in questo modo, ma operando così è possibile cambiare il layout di una pagina semplicemente agendo sul foglio di stile.

Di default Visual Studio è impostato per il posizionamento degli elementi di una pagina tramite l’opzione flow layout. Tuttavia potreste avere la necessità di posizionare in modo assoluto un elemento all’interno di una pagina in cui viene utilizzata l’opzione flow layout. Un esempio tipico è quello di porre un’immagine in una zona ben precisa della vostra pagina. Potete fare questo selezionando l’immagine e scegliendo dal menù Format l’opzione Position. Vi verrà presentata la finestra di dialogo Position che vi permetterà di indicare dove posizionare un dato elemento nella pagina.

Se intendete utilizzare il posizionamento assoluto per l’intera pagina potete settare un’opzione che indica a Visual Studio in che modalità di default devono essere inseriti gli elementi. Potete settare quest’opzione cliccando dal menù Tools su Options. Vi comparirà la finestra di dialogo Options in cui dovrete selezionare il nodo HTML Designer/CSS Styling. Nella scheda che vi comparirà basterà settare la seguente opzione:

Quando un elemento viene posizionato in modo assoluto all’interno di una pagina il designer semplicemente cambia il suo stile impostando il corrispondente valore del tag style, come si può vedere nell’esempio seguente:

<asp:TextBox ID="TextBox1" runat="server" CssClass="inputBox"
style="z-index: 1; left: 275px; top: 91px; position: absolute" >
</asp:TextBox>

Voglio farvi notare l’attributo z-index. Esso vi permette di creare più livelli e porre ciascun elemento della vostra pagina su uno di essi. I livelli sono sovrapponibili… ma questo è un altro argomento e per maggiori dettagli vi rimando alla sezione CSS di questo sito.

Fogli di stile

Quando si crea un sito web l’obiettivo è quello di organizzarlo in modo che somigli il più possibile ad un’applicazione. La navigazione dovrebbe essere fluida, i colori ed i tipi di carattere dovrebbero essere uguali per elementi simili e le dimensioni dei controlli dovrebbero essere appropriate. Inoltre è desiderabile che tutti questi aspetti non vengano gestiti in ogni singola pagina (se, ad esempio, desideraste cambiare qualche proprietà a tutte le label del vostro sito sarebbe comodo farlo con un’unica operazione piuttosto di andare ad impostare tali proprietà in ciascuno dei controlli).

Fortunatamente Visual Studio 2008 fornisce un largo supporto alla definizione degli stili, alla loro gestione e alla loro applicazione alle pagine web.

Gli stili ed i fogli di stile vi permettono di definire aspetti e comportamenti comuni da applicare ad elementi multipli della vostra applicazione web. In questo modo se decidete di cambiare qualcosa, la dovrete cambiare solo in un punto ed automaticamente verranno aggiornati tutti i riferimenti.

Per stile si intende l’aspetto di un dato elemento. Potete creare stili direttamente nel codice tramite l’attributo style.

<asp:Label ID="Label1" runat="server" Text="Modifica"
style="font-family: Arial; font-size: large; color: Blue" >
</asp:Label>

ma questo non si presta molto a favorire la manutenzione delle vostre pagine. In alternativa potete definire uno stile per tutti gli elementi di una pagina e per fare questo occorre definire una classe di stile.

Una classe di stile può essere definita in due modi: all’interno di una pagina web oppure in un foglio di stile.

1) La prima opzione permette di applicare lo stile solo agli elementi della pagina; questa opzione prevede che la definizione della classe sia inserita nella sezione <head> del codice (X)HTML; ad esempio:

<head runat="server" >
<title>ClasseProva</title>
<style type="text/css" >
.ClasseProva
{
font-family: Arial;
font-size: large;
color: Blue;
}
</style>
</head>

Per applicare questo stile ad un elemento della pagina dovete scrivere qualcosa del genere

<asp:Label ID="Label1" runat="server" Text="Modifica"
CssClass="ClasseProva" > </asp:Label>

dove per proprietà CssClass è impostato il nome della classe di stile definita in precedenza.

2) La seconda possibilità è utilizzare un foglio di stile, ovvero un file "esterno" alle pagine del sito che contiene un insieme di stili da applicare alle pagine. Questi tipi di file hanno estensione .css e all’interno di ciascuno di essi potete aggiungere stili e classi di stili.

Dopo aver definito tutti gli elementi di un foglio di stile dovete collegarlo alle pagine che desiderate. Potete eseguire questo operazione o trascinando il foglio di stile dal designer o aggiungendo il seguente codice alla sezione head della pagina:

<head runat="server" >
<link href="NomeFoglio.css" 
rel="stylesheet"
type="text/css" />
<title>Titolo</title>
</head>

Potete aggiungere uno o più fogli di stile alla vostra applicazione semplicemente scegliendo questo tipo di file nella finestra Add New Item. Una volta aggiunto potete aprire il foglio tramite l’editor di codice. Aprendo il foglio, Visual Studio vi presenterà la toolbar Style Sheet che permette di visualizzare il contenuto attuale del foglio di stile e di modificarlo.

Potete scrivere direttamente il codice relativo ai vostri stili tramite l’editor di codice oppure potete utilizzare la finestra di dialogo Modify Style. Per accedere a tale finestra dovete cliccare con il tasto destro del mouse all’interno di uno stile esistente e selezionare l’opzione Build Style.

Cliccando sul tasto OK, Visual Studio applicherà automaticamente le modifiche al codice del vostro foglio di stile.

Importante è il concetto di style rule. Per style rule si intende uno stile specifico per un tipo di elemento o classe. Il metodo più semplice per crearne uno è quello di cliccare con il tasto destro del mouse sugli elementi della Toolbar Style Sheet e scegliere l’opzione Add Style Rule.

Rispetto alle versioni precedenti Visual Studio 2008 mette a disposizione la finestra Manage Styles, che ci permette di vedere gli stili associati ad una pagina, creare un nuovo stile, collegare un nuovo foglio di stile alla pagina, applicare uno stile e così via. Per accedere a tale finestra basta cliccare nel menù View sull’opzione Manage Styles.

Master Page e Temi

Le master page sono state introdotte con Visual Studio 2005. Esse permettono di definire una struttura comune per la vostra applicazione in un file e poi applicare questa struttura ad altri file. In questo modo potete definire elementi come intestazioni, piè di pagina, menù di navigazione e così via. Quando derivate una nuova pagina da una master, Visual Studio visualizza il contenuto di entrambe le pagine nel designer.

Potete aggiungere una master page al vostro progetto tramite la solita finestra Add New Item. E’ possibile avere master page multiple in un’applicazione (pratica molto utile quando il sito deve presentare layout diversi in diverse aree). Piuttosto frequente, come vedremo, la pratica di annidare master page all’interno di altre.

Una master page definisce il codice HTML principale di una pagina, includendo i tag HTML di apertura e chiusura, head, body e form. All’interno di essa possono trovarsi uno o più controlli ContentPlaceHolder, che indicano le aree in cui (nella pagina che deriva da quella master) si possono inserire altri elementi. Chiaramente è possibile associare ad una master page un foglio di stile.

Le master page hanno il proprio file di codice; se esse contengono controlli attivi (come un menù) o devono rispondere a specifici eventi, il codice relativo deve essere inserito in questo file. Ovviamente gli utenti di un sito non accedono direttamente alle master page ma alle pagine di contenuti che derivano da esse. In pratica .NET combina i contenuti di entrambe le pagine (master page e pagina di contenuto) e ritorna una singola pagina.

Quando aggiungete una nuova pagina web al vostro sito è infatti presente nella finestra di dialogo l’opzione Select Master Page. Selezionando questa opzione vi verranno presentate le master page disponibili nella vostra applicazione.

Quando aprirete la vostra pagina di contenuti vedrete il contenuto della pagina master sullo sfondo ed in primo piano i controlli ContentPlaceHolder, ovvero le aree in cui potrete aggiungere specifici controlli alla vostra pagina. Questo approccio fornisce una separazione delle funzionalità tra quello che appartiene alla vostra pagina e quello che appartiene alla master page.

Naturalmente potete lavorare sulla pagina di contenuti come su ogni altra pagina ASP.NET, aggiungendo controlli, scrivendo codice per determinati eventi e così via.

Prima della versione 2008 di Visual Studio si poteva creare un solo livello di master page e dunque non era possibile annidare master page tra loro. Visual Studio 2008 invece supporta questo scenario ed è possibile, dopo avere creato una master page, crearne un’altra e selezionare la prima come master page da cui deriva. In questo modo potete creare una sorta di gerarchia di master page.

Un altro importante cocetto ,introdotto nella versione 2005 di Visual Studio, è quello di tema (applicabile alle singole pagine web o all’intero sito). Questo strumento permette di definire uno o più specifici aspetti per i controlli presenti nella vostra applicazione. Una volta definiti questi temi potrete passare da uno all’altro in base alle preferenze degli utenti o ad altri fattori.

In un primo momento potrebbe sembrare che i temi forniscono le stesse funzionalità dei fogli di stile ma in realtà operano su livelli differenti. Ogni tema può avere un foglio di stile associato e può essere applicato in modo da lavorare assieme ad un foglio di stile o in modo da sovrascriverlo.

Un’altra differenza è che i temi permettono di integrare file grafici come parte di essi e di passare facilmente da un insieme ad un altro di oggetti grafici. I temi inoltre permettono di definire i cosiddetti file skin per i controlli ASP.NET. Questi file vi permettono di impostare i valori delle proprietà di un controllo. Infine un tema può essere impostato a runtime, modificando le proprietà dell’oggetto Page. E’ importante precisare che ad un sito può essere applicato solo un tema alla volta (a differenza dei fogli di stile).

I temi vengono creati all’interno della cartella App_Themes e devono avere nomi univoci all’interno della medesima applicazione. Basta cliccare con il tasto destro del mouse sul vostro sito e scegliere l’opzione Add ASP.NET Folder e poi Theme. All’interno di questa cartella potete creare tante cartelle quanti sono i temi che desiderate impostare. Infine occorre inserire in ogni cartella i file che costituiranno il vostro tema, tipicamente un foglio di stile, immagini o risorse e un file skin.

Lavorare con i controlli ASP.NET

Visual Studio 2008 e la nuova versione di ASP.NET hanno introdotto alcuni nuovi controlli e diversi miglioramenti a controlli già esistenti. I controlli ASP.NET sono classificabili come "controlli lato server". Essi vi permettono di manipolare il loro aspetto e le loro proprietà in fase di progettazione e sono associati a determinate classi del .NET Framework.

Il codice del vostro sito crea istanze di tali classi tramite le quali gestirli e tutti i processi legati ad essi si verificano sul server web. In pratica il codice del controllo viene eseguito ed il server genera l’HTML da inviare al browser dell’utente. Quando poi l’utente invia la pagina indietro al server, ASP.NET processa nuovamente i controlli per generare una risposta da inviare all’utente.

ASP.NET supporta anche i controlli HTML standard che possono essere utilizzati se ritenete che la vostra applicazione web, o una parte di essa, non necessiti di interagire con il server.

I controlli ASP.NET lato server sono un insieme di controlli astratti che possono generare codice HTML e Javascript. Essi sono caratterizzati da un certo numero di interessanti caratteristiche. Tali controlli, ad esempio, adattano i markup del loro codice in base al browser utilizzato dall’utente.

Hanno un modello ad eventi lato server, potete quindi scrivere codice da eseguire come conseguenza alle azioni degli utenti. Mantengono automaticamente lo stato durante gli scambi con il server: se per esempio un utente inserisce un valore in una casella di testo e invia la pagina al server, quando viene inviata la risposta all’utente il valore inserito viene comunque mantenuto senza dover scrivere codice per implementare tale comportamento.

Molti dei controlli possono essere legati ai dati che gestisce la vostra applicazione (il cosiddetto data binding). Il modello data binding permette di gestire diverse sorgenti dati come database, XML, collection, ecc. I controlli supportano skin e fogli di stile e facilitano l’inserimento dei dati da parte degli utenti.

Queste sono soltanto alcune delle caratteristiche comuni dei controlli ASP.NET, ognuno di essi possiede poi delle caratteristiche proprie che richiedono una buona dose di esperienza per essere comprese a fondo.

E’ impossibile per gli scopi della seguente guida analizzare tutti i controlli ASP.NET, tuttavia ci soffermeremo su alcuni aspetti di quelli tipicamente più utilizzati. In particolare c’è un grande insieme di controlli chiamati controlli Standard. Essi si trovano nel gruppo Standard del toolbox di Visual Studio e includono label, text box, button, check box, radio button e tanti altri.

In fase di progettazione potete trascinare questi controlli dal toolbox al designer. Una volta nel designer potete selezionare un controllo ed impostare tutte le proprietà e gli eventi da associare ad esso tramite la finestra Properties.

Un altro insieme di controlli molto importante sono i cosiddetti controlli di validazione (Validation Controls). Questi vi permettono di stabilire come deve essere validato l’input dell’utente prima che la pagina sia processata. In questo modo potete assicurarvi che un utente abbia inserito tutti i dati richiesti e che tali dati siano validi.

Altri insiemi di controlli sono: i controlli di login, pensati per gestire ed autenticare gli utenti di un’applicazione web (Login, LoginView, PasswordRecovery, ecc.); i controlli per la navigazione nel sito (Menu, SiteMapPath, TreeView, ecc.); i controlli per la gestione e la visualizzazione dei dati (GridView, ObjectDataSource, ecc.).

Sviluppare applicazioni Windows Form

Nello sviluppo di un’applicazione Windows Form una fase fondamentale è sicuramente la progettazione dell’interfaccia utente. Per interfaccia utente si intende un insieme di immagini, controlli e al atri elementi che operano in sinergia. Gli utenti ricevono informazioni dall’interfaccia e la utilizzano come mezzo per interagire con l’applicazione e i dati che esse gestisce.

L’obiettivo di ogni sviluppatore di applicazioni windows è quello di bilanciare semplicità e completezza delle caratteristiche richieste.

La cosa fondamentale da sottolineare è che non è opportuno avviare il processo di sviluppo di un’applicazione senza comprendere prima come essa verrà utilizzata e chi saranno gli utenti abituali.

Per avviare lo sviluppo di un’applicazione windows form dovete selezionare nella finestra New Project il tipo di progetto Windows Form Application.

Questo tipo di progetto consiste in una classe di default relativa ad un form e, nel caso di C#, una classe statica di default denominata "Program". Dopo aver creato il progetto vi verrà presentato un form vuoto nel Windows Form Designer. Chiaramente potete aggiungere tutti i form di cui avete bisogno nel vostro progetto, indicando però quello che deve essere visualizzato all’avvio dell’applicazione, il cosiddetto startup form.

Per settare il form di avvio esistono due metodi a seconda del linguaggio di programmazione utilizzato. Se utilizzate Visual Basic potete settare il form di avvio cliccando con il tasto destro del mouse sul vostro progetto e aprendo la finestra di dialogo Properties in cui troverete un drop-down, denominato Startup Object, contenete una lista dei form disponibili tra i quali scegliere.

Per i progetti in C# il concetto di oggetto di avvio è semplicemente quello di una classe che contiene un metodo Main, nel cui corpo deve essere presente una riga costituita da una chiamata al metodo Application.Run avente come parametro una nuova istanza del nostro form di avvio:

Application.Run(new Form1());

La classe Program, come detto in precedenza, viene creata con il progetto, contiene il metodo Main ed imposta come form di avvio quello creato di default.

Se volete che il vostro form sia simile (come aspetto e funzionalità) ad un form già esistente è disponibile un’utile opzione: basta aggiungere al progetto un nuovo oggetto di tipo Inherited Form. Vi comparirà una finestra di dialogo con tutti i form disponibili all’interno del progetto esistente; se il form di cui ereditare l’aspetto ed il comportamento non si trova nel progetto corrente potete ricercare e selezionare manualmente un assembly esterno in cui si trova quello più adatto alle vostre esigenze.

Un form è, in sostanza, uguale ad ogni altro controllo. Potete utilizzare la finestra Properties dell’IDE per gestire tutte le sue varie proprietà. Sarebbe impossibile analizzarle tutte in questa sede, tuttavia voglio soffermarmi su alcune proprietà chiave che dovrete impostare all’inizio del processo di sviluppo.

Potete utilizzare la proprietà StartPosition per stabilire la posizione del form sullo schermo all’avvio. Solitamente le opzioni più utilizzate sono CenterParent (che determina il posizionamento del form all’interno del suo form padre) e CenterScreen (che determina il posizionamento del form al centro dello schermo).

Altre proprietà da citare sono: Opacity, che vi permette di creare form con un certo grado di trasparenza; BackgroundImage, per impostare un’immagine come sfondo del form; Text, per impostare il testo da visualizzare nella barra del titolo.

Anche i form si basano sul modello ad eventi che caratterizza tutti i controlli. Chiaramente per utilizzare un evento dovete prima creare un gestore dell’evento desiderato (event handler). Potete fare ciò molto velocemente cliccando sul form e successivamente sul bottone Events della finestra Properties (quello con il fulmine). Vi verrà presentata una lista di eventi e facendo doppio click su uno di essi verrà creata una routine per la loro gestione e la stessa verrà visualizzata nell’editor di codice. A questo punto non vi resterà altro da fare che scrivere il codice da eseguire al verificarsi dell’evento.

Aggiungere controlli e componenti ad un form

La progettazione dell’interfaccia utente di una applicazione windows form coinvolge tre diversi ambiti: il designer visuale, che permette di gestire visivamente gli oggetti del form; il toolbox, che contiene i controlli da inserire nel form; e la finestra delle proprietà, utilizzata per impostare l’apparenza ed il comportamento del form e dei suoi controlli. Questi strumenti sono la chiave per una rapida costruzione dei form.

Il termine controllo tecnicamente si riferisce ad ogni oggetto .NET che implementa la classe Control. Nella pratica con questo termine si intende ogni elemento che può essere posto in un form.

Il termine componente invece indica un’entità che ha le stesse caratteristiche di un controllo ma non espone un’interfaccia grafica. Un button è un esempio di controllo, un timer di componente.

Controlli e componenti si trovano entrambi nella finestra toolbox e per inserirli in un form è sufficiente trascinarli sulla sua superficie. Dopo aver inserito un controllo in un form il Windows Form Designer disegnerà il controllo e vi permetterà di visualizzarlo nella forma che avrà a runtime.

Il form designer ha una speciale regione, chiamata barra dei componenti, in cui vengono rappresentati graficamente tutti i componenti inseriti nel form:

Il toolbox è completamente personalizzabile: è possibile aggiungere, rimuovere controlli e raggrupparli come si desidera.

Il comportamento di un controllo a runtime all’interno del rispettivo form padre è un aspetto che richiede molta attenzione. In particolare la cosa più difficile da gestire è il comportamento quando il form viene ridimensionato.

Supponiamo di avere un semplice form come il seguente:

I controlli, come si vede, sono disposti accuratamente, allineati e occupano lo spazio in modo corretto. Ma se l’utente ridimensiona in altezza e larghezza il form il risultato potrebbe essere il seguente:

Questo non è sicuramente il risultato che desidererebbe colui che ha sviluppato il form! Occorre quindi fare in modo che i controlli modifichino il loro aspetto, la loro forma e la loro posizione in base alle dimensioni del form. Per fare ciò esistono due opzioni: l’ancoraggio (anchoring) ed il fissaggio (docking) dei controlli.

L’anchoring consiste nel forzare un controllo a mantenere una posizione fissa rispetto ai bordi sinistro, destro, superiore, inferiore o combinazioni di essi all’interno di un form. Ancorare un controllo in alto e a sinistra rispetto ai bordi del form (impostazione di default) avrà come conseguenza che il controllo manterrà la sua posizione indipendentemente da come il form viene ridimensionato. Come già detto, la proprietà anchor di ogni controllo può essere impostata in ogni combinazione dei valori Top, Left, Bottom e Right.

Ancorare lati opposti di un controllo ha un interessante effetto. Siccome ogni lato deve mantenere la sua posizione relativa rispetto ai bordi del form, il controllo viene allargato verticalmente o orizzontalmente a seconda di quali lati sono ancorati.

Come impostazione predefinita i controlli sono tipicamente ancorati in alto e a sinistra (top e left).

Il docking viene invece utilizzato per legare il margine di un controllo al margine di un controllo vicino oppure per fare in modo che un determinato controllo riempia tutto lo spazio di un form non occupato da altri controlli.

Come per la proprietà anchor anche per la proprietà dock può essere impostata manualmente tramite la finestra delle proprietà.

Container e menù

I container (letteralmente contenitori) sono controlli .NET che permettono di raggruppare altri controlli. Potete utilizzare i container assieme alle proprietà anchor e dock dei controlli per creare interfacce grafiche anche complesse. Sebbene esistano vari tipi di container, quelli più utilizzati sono solitamente FlowLayoutPanel, TableLayoutPanel e SplitContainer.

I primi due derivano dalla più generica classe Panel, che fornisce funzionalità di alto livello per il raggruppamento dei controlli.

Il FlowLayoutPanel ha un comportamento molto semplice: dispone i controlli al suo interno su rughe e colonne in base allo spazio disponibile. Quando il form viene ridimensionato il controllo determina lo spostamento dei controlli automaticamente.

Il TableLayoutPanel è ideale per disporre su righe e colonne i controlli in quanto forza il posizionamento dei controlli nelle celle assegnate. Quando il form viene ridimensionato questo controllo mantiene l’allineamento dei controlli al suo interno.

Quando un controllo viene inserito in un TableLayoutPanel noterete che esso sarà dotato di cinque proprietà addizionali: Cell, Column, Row, ColumnSpan e RowSpan. Queste possono essere utilizzate per cambiare la posizione dei controlli a runtime.

Lo SplitContainer rappresenta la fusione di due controlli panel e di uno splitter. Lo splitter separa i due panel (orizzontalmente o verticalmente) e permette all’utente di ridimensionarli a proprio piacimento.

I menù sono un altro elemento fondamentale delle applicazioni windows form. I due controlli di questo genere più utilizzati sono ToolStrip e MenuStrip.

Il controllo ToolStrip funziona come un contenitore per controlli che derivano dalla classe ToolStripItem. Esso può ospitare vari tipi di controlli: button, combo box, label, text box, ecc. In fase di progettazione viene presentato uno smart tag che rende facile e veloce l’accesso alle opzioni del controllo e che permette in poco tempo di configurarlo come mostrato nella seguente immagine:

Come vedete, in questo caso sono stati aggiunti dei bottoni e dei separatori e a ciascuno dei bottoni è stata associata un’icona. Questo controllo può essere applicato sia ai bordi laterali che a quelli inferiore e superiore. Il controllo MenuStrip vi permette di definire il menù principale di un form. Quando inserite questo controllo nel form, trascinandolo dal toolbox, vedrete subito che esso si posizionerà automaticamente nella parte superiore del form. Selezionando il controllo si attiverà anche qui uno smart tag che vi permetterà di effettuare varie operazioni, tra cui l’inserimento di elementi nel menù e la modifica di quelli già presenti.

Modalità di visualizzazione dei dati

Finora abbiamo analizzato gli elementi di base che servono a definire la struttura dei form. Tuttavia il reale valore di un’applicazione si misura in base alla sua capacità di accedere, visualizzare e permettere la modifica dei dati memorizzati in un database. In particolare in questa lezione ci soffermeremo sulle diverse modalità di visualizzazione dei dati.

Il controllo TreeView è ideale per una rappresentazione gerarchica dei dati. Infatti esso presenta i dati come una lista di nodi ciascuno dei quali può fungere da padre per altri nodi. Tipicamente, per applicazioni che si interfacciano con un database, potete costruire il contenuto di una treeview collegandola ad un resultset (il risultato di una istruzione SQL ad esempio), oppure aggiungendo manualmente via codice i nodi effettuando un ciclo sul resultset.

Un’altra possibilità è quella di utilizzare l’editor TreeNode. Si tratta di una finestra di dialogo che vi permette di aggiungere, modificare, rimuovere elementi della treeview e che può essere aperta cliccando su Edit Nodes nello smart tag del controllo.

Ogni nodo consiste di due parti: immagine e testo. L’immagine è opzionale e se desiderate impostarne una per uno o più nodi è necessario assegnare un componente ImageList alla treeview e poi selezionare da esso l’immagine da associare ad ogni nodo. Il controllo ImageList infatti funziona come un contenitore di immagini referenziate tramite la loro posizione nella collezione.

Per una visualizzazione tabulare dei dati invece il controllo da utilizzare è DataGridView. Esso fornisce per la visualizzazione dei dati un formato basato su righe e colonne ed è configurabile attraverso il menù smart tag, da cui, come si vede nell’immagine successiva, è possibile impostare la sorgente dei dati del controllo, gestire le colonne e scegliere altre utili opzioni.

Il controllo DataGridView supporta vari tipi di sorgente dati. E’ possibile gestire manualmente il numero di colonne oppure, se si seleziona una sorgente dati specifica, verrà aggiunta automaticamente alla griglia una colonna per ogni campo presente nella sorgente dati.

Ogni cella in una griglia funziona come un controllo integrato. Ognuna di esse può esprimere i dati sottostanti in vari modi, come text box, check box, drop-down, ecc. In aggiunta ogni cella possiede il proprio insieme di eventi che possono essere gestiti via codice.

Creare controlli derivati o personalizzati

Se nessuno dei controlli .NET soddisfa le vostre necessità potete creare dei vostri controlli personalizzati da utilizzare nei form. Per fare ciò avete diverse possibilità:

  • creare una sottoclasse di un controllo esistente e modificare il suo comportamento;
  • creare un nuovo controllo componendo assieme due o più controlli standard;
  • creare un controllo totalmente nuovo, implementando sia l’aspetto grafico che il suo comportamento.

Creare una sottoclasse di un controllo esistente è l’approccio migliore se avete la necessità di un controllo che sia leggermente differente rispetto ad uno standard. Sfruttando il principio di ereditarietà, la sottoclasse eredita tutti gli attributi ed i metodi della classe base e successivamente potete aggiungere codice specifico per soddisfare le vostre esigenze.

Per fare ciò la prima cosa da fare è quella di aggiungere (cliccando con il tasto destro del mouse sul progetto e scegliendo Add New Item) uno UserControl (controllo utente). Aprendo il file di codice relativo vedrete che questo controllo eredita proprietà e metodi dalla classe UserControl

public partial class UserControlTest : UserControl

Se volete, ad esempio, che il vostro controllo erediti le caratteristiche di una text box vi basterà modificare la definizione della classe nel modo seguente

public partial class UserControlTest : TextBox

Fatto questo potrete arricchire il nuovo controllo integrando le funzionalità che vi servono.

Un controllo utente è tecnicamente uguale a qualsiasi altra classe. Siccome ha anche una componente visuale, Visual Studio mette a disposizione un designer per aiutarvi nella creazione dello stesso. Solitamente i controlli utente sono controlli compositi, cioè vengono creati a partire da due o più controlli .NET.

Esistono due approcci al processo di creazione di un controllo utente: 1) potete creare una libreria separata di controlli, 2) oppure potete aggiungere la classe del nuovo controllo direttamente nel vostro progetto.

Creare una libreria separata significa che il controllo utente avrà un proprio assembly da poter riutilizzare anche in altri progetti. L’altra opzione, invece, determina che il controllo utente possa essere utilizzato solo all’interno del progetto in cui è definito.

Quando aggiungete un controllo utente al vostro progetto si apre il cosiddetto User Control Designer, del tutto simile al Windows Form Designer che già conosciamo.

Il funzionamento è lo stesso: potete costruire il vostro controllo trascinando componenti e/o controlli dal toolbox al designer. Una volta completato il vostro controllo non vi resterà che inserirlo nei form dell’applicazione. Quando compilerete il progetto, Visual Studio automaticamente riconoscerà la classe del controllo utente e lo includerà nel toolbox.

La creazione di un controllo personalizzato da zero, senza cioè sfruttare le caratteristiche di controlli già esistenti, vi lascia totale libertà su tutte le scelte. Questa è una grande possibilità, tuttavia si tratta di un’operazione abbastanza complicata perché dovrete gestire ogni singolo aspetto del controllo, sia visuale che funzionale.

Interagire con i database

Visual Studio fornisce diversi strumenti per interagire con i database (Server Explorer, Database Diagram Designer, Table Designer, Query and View Designer). Questo perché le applicazioni che scambiano dati con un database sono sicuramente le più diffuse, soprattutto in ambito commerciale.

Come saprete, il cuore di un database è l’insieme delle tabelle che lo costituiscono. Le tabelle sono costituite da una struttura e dai dati che contengono; in Visual Studio lo strumento utilizzato per definire e/o modificare tali elementi è la finestra Server Explorer.

Tuttavia prima di lavorare sulle tabelle è necessario creare un database. Questa operazione può essere eseguita tramite la finestra Server Explorer.

Le connessioni dati sono connessioni fisiche ad un database e nella finestra Server Explorer il nodo Data Connections contiene una lista di tutte le connessioni attualmente stabilite. Per avviare il processo di creazione di un database dovete cliccare con il tasto destro del mouse sul nodo Data Connections e scegliere l’opzione Create New SQL Server Database. Nella finestra che comparirà dovrete inserire il nome del server, le credenziali per l’accesso ed il nome del nuovo database.

Ovviamente potete anche stabilire la connessione ad un database esistente, cliccando sempre con il tasto destro del mouse sul nodo Data Connections e scegliendo l’opzione Add Connection. La finestra di dialogo che comparirà è simile alla precedente e dovrete specificare in più l’origine dati ed il nome del database a cui connettervi.

Espandendo un nodo relativo ad una connessione potete osservare altri nodi che servono come punto di partenza per creare gli oggetti di database corrispondenti e cioè diagrammi, tabelle, viste, stored procedure, funzioni, ecc.

Lo strumento da utilizzare per definire o modificare la struttura di una tabella è il Table Designer. Cliccate con il tasto destro del mouse sul nodo Tables, nella finestra Server Explorer, e scegliete l’opzione Add New Table. Si aprirà il Table Designer, che è impostato in modo tabulare: dovete inserire una riga per ogni colonna della vostra tabella, specificando relativo nome e tipo di dati.

Importante è anche la proprietà Allow Nulls che indica se la colonna accetta o meno valori nulli. In aggiunta al designer viene presentata una finestra per l’impostazione di altre proprietà delle colonne:

Quando è attivo il Table Designer, nella barra dei menù è attivo un menù corrispondente e attraverso questo (o il menù contestuale che compare quando cliccate con il tasto destro sul designer) potete effettuare molte utili azioni (ad esempio: per impostare la chiave primaria di una tabella basta selezionare le colonne corrispondenti e scegliere l’opzione Set Primary Key da uno dei suddetti menù).

Gli indici, le chiavi esterne ed i vincoli devono essere impostate in modo analogo: selezionate l’azione nel menù Table Designer; utilizzate poi la finestra per aggiungere indici, chiavi o vincoli; infine settate le proprietà di ciascuno di essi tramite la griglia delle proprietà:

Lavorare con le istruzioni SQL

Visual Studio supporta pienamente la generazione e l’esecuzione di istruzioni SQL su un database. E’ possibile creare stored procedure, viste, trigger e funzioni, proprio come se lavoraste direttamente su SQL Server.

Lo strumento fondamentale che permette la scrittura di istruzioni SQL è il Query Designer, uno strumento grafico che vi permette facilmente di costruire le query che vi occorrono. Dopo aver impostato una determinata query, tramite questo designer potete visualizzare ed interagire con i risultati derivanti dalla sua esecuzione.

Per creare una nuova query basta selezionare nella finestra Server Explorer il database e, cliccando con il tasto destro del mouse su di esso, scegliere l’opzione New Query. Vi comparirà una finestra con una lista di tabelle, viste e funzioni da utilizzare nella query:

Potete inserire uno o più oggetti tramite tale lista e dopo aver cliccato su Close vi verrà presentato il Query Designer. In tale designer è possibile individuare quattro riquadri (pane) distinti:

Criteria – Quest’area vi permette di selezionare le colonne da includere nella query

Diagram – Presenta graficamente gli oggetti coinvolti nella query e le relazioni tra di essi.

Results – Dopo l’esecuzione della query quest’area presenta i dati risultanti.

SQL – Permette di scrivere direttamente la query utilizzando la sintassi SQL.

Ciascuna di queste aree può essere nascosta, basta cliccare con il tasto destro del mouse sul designer e selezionare o deselezionare le opzioni corrispondenti.

Invece di scrivere direttamente nell’istruzione SQL i nomi delle colonne che costituiranno il vostro resultset, potete semplicemente selezionarle nel diagramma, mettendo il segno di spunta ad ognuna di esse. Potete poi utilizzare l’area Criteria per specificare un ordinamento, inserire degli alias, impostare filtri. Il designer tradurrà ogni vostra azione nell’istruzione SQL appropriata. Quando si opera su più tabelle, il designer utilizza le rispettive chiavi per impostare automaticamente le clausole di join.

Se tali relazioni non sono definite nel database di origine avete comunque la possibilità di impostarle manualmente. Basta utilizzare il riquadro contenente i diagrammi, selezionando una colonna e trascinandola da una tabella ad un’altra. Chiaramente le colonne di origine e destinazione della join devono avere un tipo di dati compatibile. Tramite il Query Designer possono essere scritti anche gli altri tipi di istruzioni SQL come insert, update e delete.

Molto utili sono le viste, tabelle virtuali che corrispondono ad istruzioni SQL memorizzate sul database. Quando osservate i dati ottenuti tramite una vista state osservando il risultato di una istruzione select tipicamente eseguita su più tabelle legate da clausole join. Come per gli altri oggetti, per creare una vista basta cliccare con il tasto destro del mouse sul nodo corrispondente della finestra Server Explorer (cioè Views) e scegliere l’opzione Add New View.

Una strored procedure è invece un’istruzione SQL (o un insieme di istruzioni) memorizzata in un database e compilata. In SQL Server le stored procedure sono costituite da codice Transact-SQL (T-SQL) e permettono di utilizzare costrutti non utilizzabili nelle query ordinarie (in una stored procedure, ad esempio, è possibile implementare una gestione degli errori).

Scegliendo nella finestra Server Explorer l’opzione Add New Stored Procedure si apre l’SQL Editor, un editor di codice a partire dal quale potete implementare la vostra procedura:

Un particolare tipo di stored procedure sono poi i cosiddetti trigger. Queste procedure vengono eseguite quando i dati di una tabella o di una vista vengono modificati, in seguito ad istruzioni insert, update o delete. In pratica si può impostare un’azione da effettuare quando viene eseguita una delle tre istruzioni appena citate. A seconda degli scopi può risultare molto complesso impostare correttamente un trigger.

Le funzioni sono porzioni di codice SQL progettate per essere utilizzate in vari ambiti: stored procedure, applicazioni o altre funzioni. In tal senso non sono molto diverse dalle funzioni scritte in C# o Visual Basic perché sono routine che possono accettare parametri e ritornare valori (singoli valori o resultset). Anche le funzioni devono essere definite tramite il SQL Editor.

Sia i trigger che le funzioni possono essere aggiunte al vostro database cliccando con il tasto destro del mouse sul nodo corrispondente e scegliendo rispettivamente l’opzione New Trigger o New Function.

DataBinding

Nelle applicazioni che si interfacciano con un database un problema fondamentale è la gestione del flusso che porta i dati dal database all’applicazione e viceversa. Data Binding è il termine dato ad un pattern di progettazione che gestisce tutti gli aspetti di questo passaggio da una struttura dati ai controlli di un form e viceversa.

Sebbene comunemente le strutture dati utilizzate siano database, nelle applicazioni è possibile utilizzare qualsiasi tipo di contenitore dati, come un array o una collection.

.NET prevede due tipi di data binding: data binding semplice e data binding complesso. Il data binding semplice è la capacità di un controllo di interfacciarsi con un database e permettere la visualizzazione di un singolo elemento dati. Ad esempio, un controllo TextBox che pemette di visualizzare il nome di un impiegato presente in una ipotetica tabella "Impiegati" di un database. Il data binding semplice è supportato sia dai controlli per applicazioni windows form sia dai controlli per applicazioni web.

L’espressione data binding complesso si riferisce alla capacità di un controllo di visualizzare elementi di dati multipli nello stesso momento. I controlli DataGridView (per le applicazioni windows form) e DataGrid (per le applicazioni web) sono esempi di controlli progettati per la visualizzazione di dati in forma tabulare.

Sebbene la logica necessaria ad implementare il data binding sia complessa e difficile da comprendere appieno, gli strumenti messi a disposizione da Visual Studio rendono più facile il suo utilizzo tramite semplici operazioni.

Per utilizzare il data binding sono necessarie due operazioni: individuare o creare una sorgente dati e legare i membri di tale sorgente dati ai controlli.

Per impostare la sorgente dati dovete utilizzare la finestra Data Source Configuration Wizard, richiamandola dal menù Data e scegliendo l’opzione Add New Data Source.

Nella prima schermata dovete selezionare il tipo di sorgente dati: database, web service o object. Se scegliamo database come tipo di sorgente dati la seconda pagina del wizard si focalizza sulla selezione della connessione verso il database. Potete selezionare una delle connessioni presenti nella finestra Server Explorer o impostarne una nuova.

Nella pagina finale del wizard dovete indicare quali oggetti del database prescelto devono essere utilizzati come sorgente dati. Potete selezionare tabelle, viste, stored procedure, funzioni.

Una volta concluso il wizard la sorgente dati impostata sarà visibile nella finestra Data Sources.

A questo punto non vi resta che legare gli elementi della vostra sorgente dati ai controlli del form. Dalla finestra Data Sources cliccate sul drop-down relativo all’oggetto che desiderate inserire nel vostro form e da qui impostate i parametri di generazione (Details) del controllo ed il tipo di controllo che volete utilizzare per gestire quel determinato oggetto.

Se, ad esempio, volete visualizzare tutti i dati di una tabella cliccate sul nodo relativo alla tabella e selezionate come controllo DataGridView, se invece volete gestire solo un campo di tipo varchar di una tabella cliccate sul corrispondente campo e tramite il drop-down scegliete come controllo TextBox.

Dopo aver scelto il tipo di controllo con cui gestire un determinato oggetto della vostra sorgente dati dovrete semplicemente trascinarlo nel vostro form dalla finestra Data Sources e Visual Studio genererà automaticamente tutto quanto è necessario per il data binding.

In particolare verrà generato automaticamente un controllo ToolStrip per navigare tra i record della sorgente dati e per inserire, modificare o cancellare record e verrà generato tutto il codice necessario a stabilire la connessione con la sorgente dati, a leggere i dati da essa e ad inviare le modifiche al database.

Web Service e applicazioni orientate ai servizi

Possiamo definire i web service come interfacce che forniscono l’accesso a funzionalità condivise da altre applicazioni (un web service produce risultati che saranno sfruttati da altre applicazioni e non direttamente da utenti "umani"!) utilizzando formati e protocolli comuni.

Visual Studio 2008 e il .NET Framework 3.5 permettono ai programmatori di creare facilmente applicazioni orientate ai servizi (che usufruiscono di web service) senza doversi necessariamente addentrare in concetti complessi riguardanti linguaggi (XML) e protocolli (SOAP e HTTP).

Essenzialmente un web service definisce una sorta di "contratto" tra un client (sul quale "gira" l’applicazione che richiede il servizio) ed il servizio stesso circa lo scambio di dati. Il formato di questi dati ed i parametri di comunicazione delle chiamate sono tutti basati su standard aperti come XML e SOAP.

Un’applicazione, quindi, può interagire con un web service a condizione che sia in grado di contattarlo e che rispetti le regole dettate dal web service circa lo scambio di dati.

Nota: I web service mantengono un ruolo predominante nell’ambito dello sviluppo di applicazioni orientate ai servizi, anche se un’altra tecnologia molto interessante che si va affermando è la Windows Communication Foundation (WCF).

Creare un web service

Visual Studio rende lo sviluppo dei web service piuttosto intuitivo: potete aggiungere un web service ad un progetto web già esistente, oppure potete utilizzare un template di progetto specifico denominato ASP.NET Web Service Application (consigliabile se intendete separare i servizi dagli elementi delle vostre interfacce utente); analogamente a quanto accade con un sito web è necessario indicare dove porre (Location) il servizio.

Il template contiene un servizio, un file config ed un insieme di riferimenti standard. Il file del servizio ha estensione .asmx ed è utilizzato come indirizzo per accedere al servizio stesso. Il file del servizio può essere editato sia in modo visuale, tramite un designer, sia in modo testuale operando direttamente sia sul file contenente il codice HTML che sul file contenente le istruzioni di programmazione (file con estensione .asmx.cs). I metodi definiti in quest’ultimo file costituiscono i cosiddetti metodi web (web methods), che saranno utilizzabili dagli utenti delle applicazioni web.

Utilizzare un web service

Visual Studio vi permette di impostare l’accesso ai web service definendo un insieme di riferimenti ad ognuno di essi. Tale processo è simile all’impostazione di un riferimento ad una libreria .NET.

Dopo aver definito questi riferimenti Visual Studio genera una classe proxy locale per usufruire del servizio. E’ importante sottolineare che i riferimenti ai servizi possono essere impostati all’interno di qualsiasi applicazione .NET.

Potete definire un riferimento ad un servizio selezionando l’opzione Add Service Reference dal menù contestuale che vi si presenta quando cliccate con il tasto destro del mouse sul vostro progetto. Si aprirà la finestra di dialogo Add Service Reference, utilizzando la quale potrete individuare il servizio che vi serve e aggiungerlo al progetto come riferimento.

Cliccando sul pulsante Advanced vi verrà presentata un’altra finestra di dialogo in cui potete impostare alcune opzioni su come Visual Studio genererà il vostro codice proxy, come il livello di accesso.

Testing

Il testing è una delle fasi più importanti nel ciclo di vita dello sviluppo software. Spesso però questa attività viene effettuata superficialmente o, pratica sconsigliata, viene effettuata dai programmatori sul codice sviluppato da loro stessi.

Visual Studio 2008 fornisce diversi strumenti per effettuare il testing accurato delle applicazioni e fare in modo che esse presentino il minor numero di bug possibili quando verranno rilasciate.

E’ possibile definire tutti i test che volete all’interno di un Test Project, un particolare tipo di progetto messo a disposizione da Visual Studio. Nella maggior parte dei casi si crea un singolo progetto di test per applicazione, ma nel caso di progetti più grandi si possono definire progetti di test mirati ai singoli componenti.

Potete creare un progetto di test come ogni altro progetto, selezionando nella finestra di dialogo Add New Project il nodo Test e scegliendo il template Test Project.

Potete scegliere se creare una nuova soluzione o aggiungere il progetto di test ad una soluzione già esistente.

Quando si crea un nuovo progetto di test vengono aggiunti automaticamente ad esso un test manuale e una unità di test.

Per aggiungere un nuovo test al progetto basta cliccare con il tasto destro del mouse sul progetto stesso e scegliere l’opzione Add New Test. Come si vede nell’immagine sottostante, è possibile scegliere diversi tipi di test:

Vediamo le caratteristiche di quelli più utilizzati:

Database Unit Test – Viene eseguito sul codice SQL.

Load Test – Viene eseguito per testare il comportamento delle applicazioni quando vengono utilizzate da più utenti contemporaneamente.

Manual Test – Insieme di passaggi che devono essere eseguiti da un tester. Il tester deve indicare i risultati manualmente.

Unit Test – Esegue una porzione di un’applicazione e riporta i risultati.

Web Test – Viene utilizzato per testare le applicazioni web.

Non è inusuale che grandi progetti includano decine di test. Chiaramente ciascuno di essi deve essere configurato correttamente. Fortunatamente Visual Studio fornisce il Test List Editor per fare ciò. Tramite questo strumento potete organizzare i test in liste, filtrare i risultati da visualizzare, eseguire un gruppo di test e molto altro. Potete accedere a questo strumento tramite il menù Test o tramite la toolbar Test Tools.

Altri contenuti interessanti

Pubblicitร 

Leggi anche...

Accorgimenti per la scrittura di codice efficiente in C#

Nella scrittura del codice delle proprie applicazioni uno sviluppatore...

Visual Studio 2012: l’ambiente di sviluppo di casa Microsoft

Visual Studio 2012 è l'ultima versione dell'ambiente di sviluppo...

Utilizzo del controllo DataGridView

Il controllo DataGridView è uno di quelli disponibili in...

Sviluppare in ASP.Net con Visual Studio

L'obiettivo della presente guida è quello di introdurvi alle...

Algoritmi di ordinamento in C#

L'ordinamento di una lista di oggetti è uno dei...

Sviluppare web app con ASP.Net

Da qualche anno Microsoft ha lanciato sul mercato una...
Pubblicitร