VB [GUIDA]Completa all uso di VS

Stato
Discussione chiusa ad ulteriori risposte.

Cat Cut

Utente Electrum
18 Luglio 2012
193
18
60
124
Ultima modifica da un moderatore:
Allora salve community,
Nonostante io sia nuova vorrei aiutare la community per quel che posso quindi ho deciso di postare questa guida di Giuseppe Marchi.
Siate buoni è la mia prima guida e ci ho messo un casino a sistemare cosina qua cosina la ecc ç.ç

Parte 1
Visual Studio è il tool di sviluppo Microsoft di punta per lo sviluppo su sistemi Microsoft e ambiente principale di tutta la linea di software per sviluppatori sul .NET Framework.Nato negli anni ’90 come editor per sviluppatori Visual Basic, ha visto la sua evoluzione con il passare degli anni passando dalla versione per sviluppo in C++ (1993) alle versioni 2002 e 2003 che supportavano le prime versioni del .NET Framework (1.0 e 1.1).Nel 2005 poi, è stata rilasciata una nuova versione del prodotto in corrispondenza alla diffusione della versione 2.0 del .NET Framework, che ha segnato grossi cambiamenti architetturali su tutto l’ambiente di programmazione.A due anni di distanza della versione 2005, Microsoft lancia una nuova versione dell’IDE, anche questa volta in parallelo con il rilascio della nuova edizione del .NET Framework: la 3.5. Nasce così Visual Studio 2008 (noto nelle fasi di sviluppo sotto il nome di “Orcas”).Sia il .NET Framework sia VS2008 presentano molte novità, in grado di aumentare la produttività degli sviluppatori e la qualità dei prodotti, grazie alle revisioni sul Framework e alle numerose semplificazioni a livello visuale.Troviamo strumenti in grado di supportarci nella costruzione di nuove applicazioni e servizi, basati sulle più recenti tecnologie Microsoft. Possiamo sviluppare ad esempio:

  • applicazioni Web (ASP.NET 3.5), e applicazioni Ajax-enabled
  • servizi (Web services) e client WCF ,
  • flussi di lavoro (Windows Workflow Foundation),
  • applicazioni desktop di impatto con WPF, nei diversi linguaggi di programmazione contemplati dal .NET Framework (da VB.NET a C++)
  • componenti per Office 2003-2007 (tramite VSTO).
Il vantaggio è sempre quello di avere tutto integrato in un ambiente unico con funzionalità di collaborazione per lo sviluppo di progetti in team.
Parte2 dopo una piccola introduzione qua iniziamo già a parlare di designer e editor
Visual Studio .NET offre un certo numero di designer visuali per il supporto allo sviluppo con le principali tecnologie legate al .NET Framework. I principali sono:
  • Windows Form designer – per la creazione di applicazioni windows form in maniera visuale;
  • WPF designer – per la creazione di applicazioni Windows Presentation Foundation (designer aggiunto nella versione 2008 dell’IDE);
  • ASP.NET designer – un editor WYSIWYG per la costruzione di Web form (nei capitoli successivi vedremo in dettaglio le funzionalità legate a questo particolare designer e allo sviluppo di applicazioni Web ASP.NET);
  • CSS designer – editor per la creazione e la manutenzione di fogli di stile CSS;
  • Component designer – editor per lo sviluppo di componenti lato server;
  • XML designer – editor per la generazione e la manutenzione di file XML e di file in formato derivato dall’XML, come fogli di stile XSLT, schemi XSD. Questo editor viene arricchito di ulteriori funzionalità visuali per la costruzione di DataSet per le nostre applicazioni;
  • Workflow designer – editor per la costruzione in maniera grafica di flusso di lavoro basati sul framework di Windows Workflow Foundation.
  • Database designer – editor che permette la creazione di tabelle, viste, funzioni e stored procedures in database SQL Express 2005.
  • Object-Relational designer – editor per la costruzione del mapping tra gli oggetti dell’applicazione e gli oggetti del database, detto Linq to SQL (funzionalità aggiunta nella versione 2008 a fronte della nascita del linguaggio Linq, di cui vedremo le principali funzionalità nei capitoli successivi).
  • Resource designer – editor per la manutenzione dei file di risorse (.resx) legati ai propri progetti.
  • Settings designer – editor per la creazione e la gestione di proprietà chiave-valore da utilizzare all’interno delle proprie applicazioni Windows Form o WPF.
In generale la parte centrale dell’IDE è dedicata all’editing e fornisce funzionalità comuni a tutti i designer sia testuali che visuali; prima fra tutte risulta l’intellisense. Tramite questo meccanismo è possibile essere supportati durante la stesura del codice delle proprie applicazioni da un menu contestuale che in base alla posizione corrente presenta all’utente le possibili soluzioni da attuare.
Questo strumento risulta a dir poco fondamentale, in quanto evita la lettura continua della documentazione delle classi del .NET Framework da utilizzare, proponendo la lista completa di tipi, proprietà, metodi ed eventi per le classi dichiarate all’interno dell’applicazione e per quelle degli assembly esterni referenziati al progetto.
Esempio di Intellisense
fig01.png
Interessante è anche la possibilità di inserire dei frammenti di codice sorgente preconfezionati (Code Snippets) per snellire le operazioni più ripetitive. Esistono snippet per cicli, dichiarazioni di proprietà, e costrutti come try e catch, using, etc, che vengono richiamati digitando la parola chiave associata e premendo “Tab” sulla tastiera.
Applicare uno snippet
fig02.png
In aggiunta, ogni sviluppatore può creare i propri snippet di codice ed utilizzarli all’interno delle proprie applicazioni. L’elenco degli snippet è visualizzabile scegliendo l’opzione “Code Snippets Manager” presente all’interno del menu “Tools” (o digitando lo shortcut Crtl+K+B).
Sono state pensate altre due funzioni molto utili (nel menu contestuale che appare cliccando col tasto destro sull’editor dei contenuti):

  • Refactor – che permette all’utente di modificare i nomi in modo consistente tra le diverse parti del progetto, di estrarre un frammento di codice e formare un nuovo metodo, incapsulare campi e rimuovere o riordinare i parametri in un metodo.
  • Surround with – che permette all’utente di selezionare un blocco particolare di codice e circondarlo da un particolare statement (scelto dalla lista che propone il menu stesso) come un blocco try e catch, una direttiva using, cicli e blocchi condizionali.


Parte 3 una panoramiche delle finestre disponibili

Le finestre degli strumenti sono poste intorno alla parte centrale e forniscono allo sviluppatore informazioni sul contesto corrente, permettono un rapido accesso ai file della soluzione o al database, o ancora forniscono informazioni sulle classi utilizzate. Possiamo spostare queste finestre a piacimento e ottenere la nostra configurazione ideale, inoltre possiamo attivarle o disattivarle attraverso combinazioni di tasti. Esaminiamone alcune.
Solution Explorer (Ctrl+Alt+L)

La finestra “Solution Explorer” (Esplora Soluzioni) è tra le più importanti: contiene l’elenco dei progetti legati alla soluzione aperta e mostra tutti i file presenti all’interno di ciascun progetto.

Una soluzione è una sorta di “contenitore di progetti”, che possono essere legati tra loro attraverso precisi collegamenti (references), in modo tale da poter comporre in un’unica applicazione le funzionalità sviluppate in livelli differenti.Cliccando con il tasto destro sulla soluzione possiamo aggiungere nuovi progetti, cliccando col destro sul nome del progetto, possiamo aggiungere nuovi elementi in base al tipo di progetto e alla cartella di destinazione. Ad esempio se decidiamo di aggiungere un file all’interno della directory App_Code di una Web application, l’IDE ci proporrà di creare classi, class diagram, DataSet, report, classi “Linq to SQL” o file di testo.Utilizzare bene il Solution Explorer è un buon punto di partenza per sviluppare applicazioni con Visual Studio. Per chi utilizza già Visual Studio 2005 le differenze sono veramente minime, quindi si parte avvantaggiati.​
Class View (Ctrl+Shift+C)

La finestra “Class View” permette di visualizzare tutte le classi presenti all’interno dei progetti della soluzione, divise secondo il progetto di appartenenza. Selezionando una singola classe è possibile visualizzarne tutti i metodi, le proprietà e i campi o semplicemente, con un doppio click, di aprirla all’interno dell’editor di testo.​
Figura 2. Class View

Per ogni progetto è presente anche una lista di tutte le librerie esterne utilizzate (visibili espandendo la cartella “Project References”).Possiamo anche sfruttare la funzione di ricerca per ritrovare classi, proprietà o metodi sia all’interno della soluzione, sia nell’intero .NET Framework. Il Class View risulta molto utile durante lo sviluppo di progetti di grosse dimensioni, divisi in sotto progetti con classi raggruppate in differenti namespace.​
Properties (F4)

La finestra delle proprità permette di visualizzare o impostare il valore delle proprietà di tutti i diversi elementi selezionati. È possibile selezionare gli elementi all’interno delle aree di editing quando impostiamo la modalità visuale dei diversi designer. Se abbiamo selezioniamo un controllo, possiamo anche creare e gestire gli handler per gli eventi ad esso associati.​


In fondo troviamo uno spazio contenente la descrizione, presa dalla documentazione del .NET Framework, di ciò che si sta modificando.​
Server Explorer (Ctrl+Alt+S)

La finestra “Server Explorer” viene utilizzata per visualizzare le fonti di dati presenti in locale, o su server remoto. Questa finestra ci permette di creare nuove “data-connection”, creare tabelle, viste, funzioni, procedure ed è possibile inoltre costruire il diagramma visuale del database, il tutto senza dover utilizzare strumenti esterni.​

Inoltre per ogni server aggiunto (il primo della lista è il computer locale) è possibile visualizzare l’elenco dei servizi, il log degli eventi, i servizi di crystal report e i contatori di performance.​
Toolbox (Ctrl+Alt+X)

La toolbox (Casella strumenti) è la finestra in cui sono posti tutti i controlli o gli oggetti che possono essere aggiunti ai contenuti trascinati nella finestra di editing sia in visualizzazione design che in visualizzazione codice.​

Gli oggetti presenti in questa finestra cambiano a seconda del tipo di file che si sta utilizzando nell’editor. Se stiamo lavorando su una Web Form, ad esempio, troviamo in toolbox i controlli Web e HTML.​
Command Window (Ctrl+Alt+A)

La finestra dei comandi permette di effetuuare operazioni a riga di comando direttamente all’interno dell’IDE, una alternativa per richiamare ogni tipo di comando senza utilizzare menu, finestre o shortcut.​




Alcune operazioni inoltre non sono inserite nelle barre di strumenti e possono essere eseguite solamente dalla Command Window. Anche qui è abilitato l’intellisense, che ci ricorda la sintassi dei vari comandi.
Error List Window (Ctrl++E)

Questa finestra mostra l’elenco degli errori, dei warning e dei messaggi dati da una compilazione del progetto corrente.

All’interno della tab “Errors” sono presenti gli errori di compilazione che non permettono la generazione degli assembly. I warning sono invece degli avvisi, che permettono comunque la compilazione; esempi di warning sono l’utilizzo di classi marcate come obsolete o l’utilizzo, per esempio, di tag HTML non validi.​
Task List Window (Ctrl++T)

Fornisce uno spazio per appuntarci le operazioni (task) ancora da fare e segnare quelle già fatte. Molto utile per non lasciare indietro niente durante lo sviluppo delle nostre applicazioni.​

Output Window (Ctrl+Alt+O)

Ci permette di visualizzare il risultato delle operazioni di compilazione o pubblicazione del progetto corrente.​

Find Symbol Results Window (Ctrl+Alt+F12)

Permette di visualizzare i risultati della ricerca di tutte le occorrenze di un particolare nome o oggetto all’interno del progetto. La ricerca parte cliccando con il tasto destro su una classe, proprietà, metodo, campo o evento, e selezionando l’opzione “Find all references”.​


Parte 4 Qua andiamo a vedere gli strumenti di compilazione
Prima di eseguire una applicazione (e sperare che funzioni) è necessario averne compilato tutte le parti senza errori. In Visual Studio lanciamo quella che viene chiamata “Generazione” dell’applicazione.L’ambiente di sviluppo fornisce gli strumenti per generare e testare le applicazioni. Questi strumenti possono essere configurati in modo particolare per ogni singolo progetto, come osserveremo più avanti.Durante la progettazione gli sviluppatori tendono a compilare più volte l’applicazione, per verificarne le funzionalità man mano; questa fase è detta “generazione in Debug” ed è divisa in due parti bene distinte:​

  1. compilazione e correzione degli eventuali errori di sintassi, incongruenze tra tipi di dati o semplicemente errori di scrittura;
  2. test dell’applicazione e del suo funzionamento logico.
Queste due fasi vengono eseguite più volte durante lo sviluppo, proprio perché oltre alla correzione di errori che impediscono la compilazione, esistono degli errori (eccezioni) che possono essere scatenati durante l’esecuzione del progetto, che rappresentano quindi errori della logica con cui è stata pensata l’applicazione.Completata la fase di test raggiunti i requisiti funzionali richiesti, è possibile passare alla compilazione finale del progetto, detta “Release“. In questa fase è possibile ottimizzare la compilazione in modo tale da aumentare la velocità di esecuzione nei confronti di quanto era disponibile in fase di test.Troviamo le funzioni di ottimizzazione nel menu “Build”, che presenta opzioni diverse a seconda del tipo di progetto.
fig13.png

  • Build solution – Generazione completa di tutti i progetti inseriti all’interno della soluzione;
  • Rebuild solution – Rigenerazione completa di tutti i progetti della soluzione;
  • Clean solution – Cancellazione di tutti i file risultanti dalle precedenti compilazioni di ogni progetto della soluzione;
  • Build <progetto selezionato> – Generazione del singolo progetto selezionato;
  • Rebuild <progetto selezionato> – Rigenerazione completa del singolo progetto selezionato;
  • Clean <progetto selezionato> – Cancellazione di tutti i file risultanti dalle precedenti compilazioni del solo progetto selezionato;
  • Publish <progetto selezionato> – Pubblicazione del progetto selezionato. Se stiamo sviluppando una applicazione desktop, ci verrà proposto il wizard di pubblicazione dell’applicazione con ClickOnce, se invece lavoriamo ad un sito Web, utilizzeremo il wizard per la pubblicazione di un’applicazione ASP.NET.
  • Batch build – Maschera di opzioni di compilazione e debug dei progetti presenti all’interno della soluzione;
  • Configuration Manager – Maschera di opzioni generali di compilazione e debug, da applicare successivamente ai vari progetti.
I risultati di tutte queste operazioni li ritroviamo nella cartella /bin del progetto e nelle sue sottocartelle: in fase di sviluppo e test sarà utilizzata la cartella /bin/Debug, mentre in modalità release la cartella utilizzata sarà bin/Release.
Parte 5 andiamo a vedere i breakpoint e i debug
Per verificare il funzionamento logico delle applicazioni, in fase di debug, risulta molto utile seguirne l’esecuzione passo passo. Visual Studio permette questo tipo di analisi mostrando ad ogni step, lo stato di oggetti e variabili.
Possiamo indicare i punti in cui vogliamo interrompere l’esecuzione della applicazione inserendo nel codice i cosiddetti breakpoint. Un breakpoint viene visualizzato con una linea rossa in corrispondenza della riga di codice sulla quale si blocca il programma e si può aggiungere o togliere cliccando sulla barra a sinistra dello spazio di editing o premendo il tasto F9.
Per avviare il debug di un progetto, scegliere l’opzione “Start Debugging” presente all’interno del menu “Debug” (o in alternativa, premere il tasto F5).
Figura 1. Esecuzione passo passo con i breakpoint
fig14.png
Una volta avviato il debug ci si può muovere all’interno del codice con il tasto F5 (per passare direttamente al breakpoint successivo), o F11 (per passare alla riga di codice successiva). Passando il puntatore del mouse sopra le variabili facciamo apparire delle finestre che mostrano i valori attuali di ogni campo, oggetto o proprietà.
Figura 2. Visualizzare lo stato delle variabili
fig15.png
Le stesse informazioni possiamo trovarle anche nelle finestre: , e che rispettivamente visualizzano:

  • Autos – mostra lo stato delle variabili utilizzate all’interno dello statement corrente (permettendo inoltre di cambiarne i valori per modificare l’esecuzione dell’applicazione a run-time),
  • Locals – mostra lo stato delle variabili locali all’applicazione (anche in questo caso permettendo di cambiarne i valori nel corso dell’esecuzione),
  • Watch – mostra lo stato delle variabili che decidiamo di ispezionare, selezionando e spostandole direttamente all’interno della finestra.
Figura 3. Finestre Watch
fig16.png
Altra funzionalità veramente molto utile, per la fase di debug delle proprie applicazioni (soprattutto per siti ASP.NET o applicazioni basate su Windows Sharepoint Services), è la funzione “Attach to process” presente sempre all’interno del menu “Debug”.
Questo meccanismo permette all’utente di “attaccare” il debugger presente all’interno dell’IDE ad uno dei processi in esecuzione sulla macchina locale o in remoto (tramite il remote debugger di Visual Studio) e di eseguire operazioni di introspezione su applicazioni che sono già in esecuzione. Per esempio, possiamo selezionare il processo w3wp.exe (processo con cui gira IIS su Windows Server 2003 e Windows Vista) ed avviare il debug di una delle nostre applicazioni ASP.NET già in esecuzione.
fig17.png


Parte 4 le soluzioni e i progetti
Per sviluppare applicazioni complesse, risulta utile avere una buona organizzazione del progetto, ordinata e curata nei dettagli. Con Visual Studio possiamo creare diverse tipologie di progetti e raggrupparli in soluzioni uniche. Inoltre possiamo istaurare collegamenti (referneces) tra progetti della medesima soluzione o con assembly esterni.
Grazie al Solution Explorer possiamo aggiungere nuovi progetti alla soluzione principale, specificando se questi devono essere creati ex-novo oppure se già presenti sul file system. Questa opzione risulta molto utile, in quanto possiamo aggiungere uno stesso progetto in soluzioni differenti.
Nelle nuove versioni dell’IDE esistono tipologie di progetti che non visualizzano la soluzione una volta creati; un esempio perfetto è il progetto di tipo “Web Site”. Per questi particolari tipi di progetto Visual Studio crea comunque una soluzione “temporanea”, ma si limita a nasconderla nella visualizzazione proposta dal Solution Explorer.
È possibile impostare alcune proprietà per gestire al meglio il comportamento della soluzione, queste proprietà si dividono in due gruppi principali, Common Properties e Configuration Properties.
Common Properties

Startup project – Per specificare il progetto che deve essere fatto partire quando l’utente seleziona l’opzione di debug dell’applicazione (nel caso in cui la soluzione contenga più progetti).
Project Dependecies – Per specificare l’ordine con cui i vari progetti devono essere compilati. Questa opzione risulta fondamentale nel caso in cui la soluzione risulta contenere più progetti e questi siano referenziati gli uni con gli altri; in casi del genere infatti, l’ordine di compilazione è una tematica abbastanza critica, da trattare quindi con particolare attenzione.
Debug source files – Per specificare i percorsi agli assembly esterni referenziati all’interno dei vari progetti della soluzione, in modo tale che l’IDE sia in grado di presentare opzioni di debug anche per questi oggetti esterni.
Configuration Properties

Configuration – Per specificare particolari impostazioni di compilazione dei singoli progetti nella soluzione.
Questa finestra possiamo aprirla cliccando con il destro sul nome della soluzione dal Solution Explorer e scegliendo l’opzione “Properties”.
fig18.png
Per quanto riguarda invece le proprietà di ogni singolo progetto, abbiamo la possibilità di accedere a diversi tipi di configurazioni, legate principalmente al tipo di progetto che abbiamo creato.
Per applicazioni Windows Forms o WPF, o per librerie di classi, Visual Studio ci mette a disposizione una finestra divisa in tab differenti, uno per ognuna di queste tipologie di proprietà:
TabDescrizione
ApplicationDa questo tab è possibile specificare il nome dell’assembly che dovrà essere generato, il nome del namespace di default, il framework su cui si basa il progetto (questa proprietà specifica verrà spiegata in dettaglio nella prossima lezione) e il tipo di output che dovrà avere la compilazione. Inoltre, da questa finestra, è possibile aggiungere un file di chiave .snk per firmare l’assembly generato e in generale per modificarne le proprietà quali Titolo, Autore, Descrizione, Company, Copyright, Guid e versione.
BuildDa questo tab è possibile specificare il tipo di configurazione del progetto per la fase di compilazione (Debug o Release), il percorso di output del progetto (cioè dove verranno salvati i file dopo la compilazione), opzioni aggiuntive per il trattamento dei warnings e per l’ottimizzazione di codice, trace e debug.
Build EventsDa questo tab è possibile aggiungere degli eventi a riga di comando prima della compilazione o dopo di essa. Per esempio possiamo decidere di copiare i file di output su una share di rete o comunque in un’altra locazione, tramite il comando copy.
DebugDa questo tab è possibile modificare le configurazioni per la fase di debug del progetto selezionato. È possibile abilitare il debug di SQL Server, di codice unmanaged e di Visual Studio .NET stesso; inoltre è possibile specificare programmi opzionali da far partire all’inizio della fase di debug o azioni a linea di comando.
ResourcesAll’interno di questo tab è possibile gestire il file di risorse principale legato all’applicazione. Se presente almeno un file di risorse, l’IDE visualizzerà il Resource Designer, tool creato apposta per la manutenzione di file di risorse.
ServicesIn questa parte di configurazione è possibile specificare all’applicazione di abilitare i “Client Application Services”, una nuova funzionalità del .NET Framework 3.5 che permette ad applicazioni client di utilizzare i servizi di autenticazione, role manager e profili esposti da un’applicazione web ASP.NET 3.5 (per un esempio di questa funzionalità rimandiamo alla lettura di questo articolo).
SettingsIn questo tab è presente il designer per la manutenzione grafica dei file .settings contenenti i settaggi per l’applicazione corrente. All’interno di questo tipo di file è infatti possibile salvare delle coppie chiave-valore da utilizzare all’interno del proprio progetto.
Reference PathsIn questa parte è presente l’elenco di tutti i percorsi di tutte le referenze che contiene attualmente il progetto in questione.
SigningQuesto tab è fondamentale per segnare il file di manifest per l’installazione dell’applicazione con ClickOnce e per segnare l’assembly compilato come “strong name assembly”, attraverso la specifica di una chiave (estensione .snk).
SecurityArea utile a specificare i permessi per la code access security che la propria applicazione ClickOnce deve avere per poter essere avviata.
PublishTab per la pubblicazione dell’applicazione con il relativo manifest per l’aggiornamento o l’installazione tramite ClickOnce.

L’elenco di queste impostazione è visualizzabile cliccando con il destro sul nome del progetto selezionato e scegliendo l’opzione “Properties”.
fig19.png
Le proprietà di un’applicazione Web contengono invece solo le impostazioni di manutenzione dei reference, le opzioni di build, per l’accessibilità e per la fase di startup. Inoltre sono disponibili anche i settings per la generazione del sito.

Parte 7 Multi Targeting
Nelle versioni precedenti di Visual Studio era possibile solamente creare applicazioni basate su una precisa versione del .NET Framework: Visual Studio 2002 creava applicazioni solamente per la 1.0, la versione 2003 creava applicazioni per il framework 1.1 mentre la versione 2005 lavorava solamente con il framework 2.0; ora è possibile scegliere la versione del framework selezionandola dal menu a discesa nel wizard di creazione di un nuovo progetto.
Figura 1. Selezionare la versione del .NET Framework nel wizard di creazione progetto
fig20.png
Questa caratteristica, chiamata “Multi-Targeting”, segna un notevole passo avanti: non è indispensabile migrare tutte le applicazioni alla versione 3.5 del runtime per utilizzare le funzionalità del nuovo ambiente di sviluppo.
Una volta scelto il framework su cui operare, l’IDE adegua le opzioni di generazione dei progetti, l’intellisense, la toolbox e in generale tutti i suoi componenti, al framework scelto. Le stesse tipologie di progetto e di elementi, saranno visibili o meno a seconda della scelta effettuata.
Ad esempio, se scegliamo di sviluppare un’applicazione Web (ASP.NET) basata sul .NET Framework 3.5, troveremo nella toolbox tutti i controlli introdotti nella nuova versione (esamineremo le novità sui controlli nei capitoli successivi).
Abbiamo visto come scegliere un’edizione del .NET Framework in fase di creazione del progetto, ma se volessimo cambiare scelta in corso d’opera?
Anche a progetto avviato possiamo modificare la scelta del framework. Ci basta andare tra le proprietà del progetto e modificare la proprietà “Target Framework” nel “Application”. Fatto questo, salviamo le impostazioni del progetto e Visual Studio si occuperà di aggiornare le reference, le opzioni di compilazione e la toolbox in modo tale che si riferiscano tutti alla versione del .NET Framework appena scelta.
fig21.png
Come è evidente, non sono supportate dal multi-targeting le versioni 1.0 e 1.1 del .NET Framework. Questo perché da quelle versioni sono stati fatti dei cambiamenti architetturali sostanziali a tutto il Common Language Runtime. È anche per questo che viene consigliato di migrare le proprie applicazioni alle nuove versioni del framework, oltre alle novità dal quale si possono ottenere notevoli vantaggi.

Parte 8 e andremo a vedere l'interfaccia di sviluppo per il Web

Visual Studio 2008 fornisce agli sviluppatori Web uno strumento completo e versatile per la costruzione di Web application, in particolare mette a disposizione tutto il potenziale di ASP.NET 3.5.
Come nelle precedenti versioni, troviamo l’editor visuale (WYSIWYG) che permette di inserire nostre pagine Web tutti gli elementi necessari, dai semplici testi ai controlli ASP.NET, dai tag HTML ai Web services.
La novità nella nuova versione, è che questo designer è stato riscritto completamente, basandosi sul motore di Expression Web, il nuovo software Microsoft per il design di siti internet. Esaminiamo alcune evoluzioni.
Visualizzazione in modalità mista

Oltre alle due modalità di visualizzazione, visuale e codice, viene introdotta la split view, una modalità mista che divide in due l’area di editing mostrando sia la resa grafica, sia il markup della pagina.
fig22.png
Attenzione alla sincronizzazione però, le due viste vengono sincronizzate automaticamente ad ogni salvataggio, oppure se le modifiche vengono effettuate nella parte visuale. Se invece andiamo a modificare il markup della pagina, il programma ci invita a cliccare sull’apposito tooltip per effettuare l’allineamento.
Gli stili

L’intellisense ci suggerisce anche i nomi delle classi definite nei i CSS (interni ed esterni), sia quando inseriamo l’attributo class negli elementi HTML, sia nell’attributo CssClass dei controlli server.
È stata aggiunta una finestra per le proprietà dei CSS, simile alla finestra delle proprietà dei controlli lato server di ASP.NET, dalla quale è possibile modificare gli stili legati ad un particolare elemento della pagina sia in visualizzazione design che in visualizzazione codice.
La finestra Manage Styles permette di gestire gli stili inseriti all’interno dei CSS legati all’applicazione in maniera de tutto visuale, con preview dello stile selezionato e finestra di modifica dello stile. La modifica è supportata da un’interfaccia completa che contiene tutte le proprietà di stile applicabili allo stile selezionato.
Altre funzioni

Una delle funzioni più utili e attese è sicuramente l’introduzione del debug e dell’intellisense per il codice JavaScript (tanto da meritare una trattazione a parte).
Quando lavoriamo su un progetto di tipo “Web Site”, l’ambiente di sviluppo si organizza in modo da offrire specifiche funzionalità per applicazioni web ASP.NET; facendo click con il tasto destro del mouse sul nome del sito abbiamo infatti la possibilità di aggiungere tutte le cartelle particolari di ASP.NET (App_Code, Theme, App_Data, App_Browser, App_GlobalResources,App_LocalResource, App_WebReferences e Bin) e, in fase di inserimento di nuovi item all’interno di una di queste cartelle, la maschera di selezione del tipo di oggetto da inserire, filtrerà gli oggetti in base alla locazione che abbiamo scelto per la creazione.
Altra piccola modifica è stata apportata all’intellisense. Nella versione precedente, la finestra con le opzioni copriva in modo irrimediabile il codice intorno all’istruzione su cui appariva. Questo comportamento poteva risultare fastidioso in quanto toglieva la panoramica sul codice su cui si lavora. Ora è possibile nascondere temporaneamente la finestra dell’intellisense tenendo premuto il tasto “Ctrl”, per farla riapparire al rilascio del tasto.
Molto attesa anche la gestione visuale delle master page annidate.
Parte 9 le tipologie di progetto

Visual Studio propone alcuni tipi di progetto dedicati allo sviluppo per il Web:

  • ASP.NET Web Site;
  • ASP.NET Web Service;
  • ASP.NET Web Application;
  • ASP.NET Web Service Application.
I primi due template di progetto possono essere selezionati attraverso la voce di menuFile>New>Web Site“, mentre gli altri due fanno parte di un plug-in particolare, detto “Web Application Projects”, di cui vedremo i dettagli nel corso di questa lezione.
Una volta creato un nuovo sito web, abbiamo la possibilità di compilarlo nella sua completezza o di compilare pagine singole, entrare in debug per correggere la logica di ogni pagina ed infine pubblicarlo.
In aggiunta quindi, alle funzionalità comuni a tutti i progetti e al designer per pagine Web ASP.NET, è presente un’ulteriore menu nella barra dei menu, con operazioni specifiche per applicazioni Web: il menu “Website”, che ci fornisce:

  • aggiunta di nuovi oggetti o di esistenti;
  • creazione di nuove directory o aggiunta di uno dei folder speciali di ASP.NET;
  • l’utility Copy web site, che permette di mantenere sincronizzate le versioni del sito web tra la macchina locale ed un eventuale server di test o di produzione;
  • aggiunta di reference ad assembly esterni, a web service e a servizi WCF;
  • visualizzazione delle dipendenze del progetto;
  • specifica del progetto selezionato come progetto di start-up per la fase di debug;
  • l’utility ASP.NET Configuration, un sito web di supporto per la specifica della modalità di autenticazione, gestione ruoli, gestione dei valori di applicazione e dei provider del modello proposto dalla versione 2.0 di ASP.NET in poi
fig23.png
Queste funzionalità, permettono di configurare molti aspetti della nostra Web application, attraverso particolari wizard, di compilarla (secondo il modello di compilazione lanciato dalla versione 2.0 di ASP.NET) e di pubblicarla, specificando se mantenere o meno le pagine .aspx aggiornabili.
Per effettuare i test durante le fasi di sviluppo, è possibile avvalersi di un web server locale, integrato in Visual Studio, che viene avviato per ogni sessione di debug, senza scomodare IIS. In ogni caso è consigliabile, specie per progetti importanti, costruire un ambiente di test che replichi in modo fedele quello che sarà l’ambiente di produzione (tipicamente una configurazione di IIS su Windows Server).
Possiamo definire la posizione del progetto all’inizio, nella maschera di creazione di un nuovo sito Web. Possiamo scegliere se utilizzare IIS (opzione HTTP), se utilizzare il Web server integrato in Visual Studio (opzione File System) o se utilizzare il protocollo FTP per la creazione del progetto in remoto.
Nota: queste opzioni sono disponibili solo scegliendo i primi due template che abbiamo descritto.
fig24.png


Parte 10 Progetti per web application
L’add-in di Visual Studio detto “Web Application Projects” è stato creato subito dopo l’uscita della versione 2005 dell’IDE (e poi aggiunto al service pack 1 del prodotto), per dare un’alternativa di compilazione e pubblicazione di siti Web agli sviluppatori che venivano dalle vecchie versioni.
La semantica di compilazione di un sito Web, attraverso questo add-in, risulta infatti la stessa di Visual Studio .NET 2003; tale modello di compilazione vede l’accorpamento di tutto il codice presente nelle classi di code-behind di ogni pagina e delle classi presenti nella directoryApp_Code, all’interno di un unico assembly.
Questa funzionalità è stata inserita anche in Visual Studio 2008 e migliorata per supportare tutte le nuove feature di ASP.NET 3.5; in fase di creazione di un nuovo progetto Web è possibile infatti scegliere i due nuovi tipi di template visti precedentemente:

  • ASP.NET Web Application
  • ASP.NET Web Service Application
che sostituiscono rispettivamente i template “ASP.NET Web Site” e “ASP.NET Web Service”, della versione precedente, basati sul modello di compilazione a run-time creato con ASP.NET 2.0. Questi ultimi template, e quindi questo modello di compilazione, sono comunque presenti all’interno dell’IDE scegliendo di creare un nuovo “Web Site” e non un nuovo “Project”.
Selezione del tipo di progetto
fig25.png
Se abbiamo deciso quindi di creare un sito Web basato sul “Web Application Project”, tutta la logica di programmazione sarà compilata in un unico assembly, posto sotto la directory /bindell’applicazione. In questo modo viene completamente sostituito il modello di compilazione attuale di ASP.NET, che era basato completamente sulla generazione a run-time delle classi di code-behind delle pagine web e delle logiche inserite all’interno della directory App_Code.
Così facendo abbiamo innanzitutto un certo controllo sui nomi degli assembly, possiamo poi utilizzare classi poste in assembly separati per contenere il codice di code-behind delle pagine del sito, possiamo aggiungere operazioni di pre e post compilazione all’interno di Visual Studio .NET 2008 e costruire applicazioni Web che contengano più sotto-progetti Web.
Questa modifica è stata il frutto dell’ascolto di numerosissimi feedback da parte della community di sviluppatori .NET, che continuano a preferire la generazione di un unico assembly a fronte invece della compilazione di più assembly differenti creati in automatico dall’utility di pubblicazione dei siti di Visual Studio 2005.
Parte 11 Master page annidate
Le master page sono uno strumento utilissimo per la generazione di template per applicazioni Web. La possibilità di creare master page annidate tra loro era presente già dalla versione 2.0 di ASP.NET, ma Visual Studio non ne prevedeva ancora il supporto a design-time: la modalità visuale si poteva usare solo per la singola master page.
Nel nuovo designer Web è stata aggiunta questa funzionalità, che rende più agile la gestione del layout diviso in master page differenti, una contenuta nell’altra. La visualizzazione gerarchica del layout risulta molto importante, specie quando il portale è complesso, composto da diverse sezioni e magari con template differenti tra loro.
In termini pratici, ora è possibile creare una nuova master page ed avere l’opzione “Select master page” nella finestra di creazione.
Opzione per creare Master Page annidate
fig26.png
Visual Studio creerà la nuova pagina inserendo la direttiva MasterPageFile (che era solita essere utilizzata solo all’interno di content page) con riferimento alla master page appena scelta e un controllo di tipo <asp:Content /> per ogni controllo di tipo <asp:ContentPlaceHolder /> presente nella master page padre. All’interno della master page figlio, possono essere inseriti nuovi place holder di contenuto che verranno ereditati dalle eventuali content page.
Esempio di codice per una Master Page annidata
<%@ Master Language=”C#” MasterPageFile=”~/Padre.master” AutoEventWireup=”false” CodeFile=”Figlio.master.cs” Inherits=”Figlio” %>
<asp:Content ID=”Content1″ ContentPlaceHolderID=”head” Runat=”Server”>
</asp:Content>

<asp:Content ID=”Content2″ ContentPlaceHolderID=”mainContent” Runat=”Server”>
<table style=”width: 100%” cellpadding=”0″ cellspacing=”0″>
<tr>
<td valign=”top” style=”width: 200px; background-color: Blue”>
<h2>Figlio.master</h2>
</td>
<td valign=”top”>
<asp:ContentPlaceHolder ID=”centralContent” runat=”server”>
</asp:ContentPlaceHolder>
</td>
</tr>
</table>
</asp:Content>


La content page risultante, verrà quindi rappresentata all’interno del designer Web di Visual Studio, in cui appaiono tutti i livelli di layout (le pagine master di livello superiore) e il contenuto al livello corrente.













Visualizzazione di una Master Page annidata
fig27.png
È importante notare, infatti, che una content page eredita solamente i placeholder dell’ultima master page, quella da cui è stata direttamente creata.

Parte 12 JavaScript e Ajax

Una delle novità più apprezzate dagli sviluppatori Web è il migliorato supporto per JavaScript con l’intellisense e le funzioni avazate di debug, funzionalità disponibili anche nella versione Express e particolarmente utili per applicazioni Ajax-enabled.
L’intellisense si attiva quando scriviamo all’interno di un blocco <script> oppure in un file “.js”, esponendo l’elenco degli oggetti disponibili e delle keyword del linguaggio. Inoltre aggiorna costantemente i nomi e i tipi delle variabili a seconda del contesto e delle dichiarazioni implicite.
Ad esempio, se creiamo una variabile assegnandole un numero, l’intellisense ci propone, per quella variabile, tutti i metodi esposti da tipi numerici (toString, valueOf, etc.). Se in un secondo momento, assegnamo un valore di tipo stringa alla stessa variabile, l’intellisense si aggiorna e ci propone operazioni e metodi applicabili alle stringhe.
Intellisense si adatta definizione implicita dei tipi
fig28.png
Inoltre è supportato sia l’intellisense su librerie JavaScript esterne alla pagina che la presenza di messaggi di marcatura per metodi, funzioni e tipi, come documentazione d’aiuto durante o sviluppo.
externalFile.js
function SayHello(name)
{
///<summary>Hello world from JavaScript !</summary>
///<param name=”name”>Chi vuoi salutare ?</param>
alert(‘Hello ‘ + name);
}













Intellisense supporta le librerie JavaScript esterne
fig29.png

Per chi lavora su applicazioni Ajax-enabled si tratta di un accessorio veramente importante, basta pensare a quanto semplifichi l’orientamento tra le numerose librerie del framework ASP.NET AJAX. Altra semplificazione: per consumare un web service tramite Ajax, una volta inserita la reference del Web service all’interno di un controllo ScriptManager, Visual Studio crea in automatico la classe proxy per quel Web service e mostra l’intellisense aggiornato con tutti i metodi che il Web service espone.HelloWorld.cs
[WebService(Namespace = "http://peppedotnet.it")]
[ScriptService]
public class HelloWorld : System.Web.Services.WebService
{
[WebMethod]
public string SayHello() {
return “Hello World”;
}
}


La possibilità di gestire il debug del codice JavaScript era già presente in Visual Studio 2005, ora è stata migliorata notevolmente. Possiamo gestire blocchi di operazioni Ajax e specificare dei BreakPoint, che saranno verificati prima che la pagina ASP.NET debba essere lanciata, cosa che nella versione precedente non era possibile.

Intellisense supporta le librerie JavaScript esterne
fig29.png
Per chi lavora su applicazioni Ajax-enabled si tratta di un accessorio veramente importante, basta pensare a quanto semplifichi l’orientamento tra le numerose librerie del framework ASP.NET AJAX. Altra semplificazione: per consumare un web service tramite Ajax, una volta inserita la reference del Web service all’interno di un controllo ScriptManager, Visual Studio crea in automatico la classe proxy per quel Web service e mostra l’intellisense aggiornato con tutti i metodi che il Web service espone.
Breakpoint nel codice JavaScript
fig30.png
Inoltre c’è la possibilità di specificare punti di stop sia nel codice che verrà eseguito lato client (JavaScript) che in quello lato server (C#, VB.NET) e scorrere i vari passi di esecuzione della pagina in un’unica sessione di debug, avvalendosi dell’utilizzo dei noti strumenti di ispezione Match/Locals e dei visualizzatori di supporto, strumenti anche questi notevolmente migliorati nella nuova versione.

Parte 13 qua vedremo la gestione dei dati

La maggior parte delle applicazioni con cui abbiamo a che fare, si servono di basi di dati per la conservazione ed il recupero di di informazioni. Questo sia che parliamo di applicazioni client che di Web application. Risulta quindi necessario conoscere le tecniche per l’accesso ai dati, siano essi conservati su database, che salvati su altri tipi di archivi (es. XML).
Nasce anche l’esigenza di avere uno strumento che semplifichi le più comuni procedure di recupero e salvataggio dei dati, per aumentare la produttività. Visual Studio risponde a queste esigenze fornendo un ambiente che permette di considerare le basi di dati non più come un processo a parte, ma come parte integrante dello sviluppo dell’applicazione stessa.
Tra i possibili progetti da creare è stato introdotto il “SQL Server Project“, sotto il tab “Database” della maschera “New project”. Questo tipo di progetto permette all’utente di creare le proprie funzioni, stored procedure, trigger o tipi personalizzati, in codice .NET managed, da inserire all’interno del proprio database SQL Server.
Risulta molto utile, in particolare, poter gestire il database senza installare programmi di gestione esterni (es. SQL Server Management Studio nel caso di SQL Server). Si possono aggiungere tabelle, modificare lo schema di quelle esistenti (es. cambiare il numero di colonne) e visualizzare/inserire/modificare i dati, il tutto all’interno dell’area dei contenuti di Visual Studio, grazie ad una serie di strumenti visuali e wizard che appaiono quando apriamo una tabella in modalità modifica.
Figura 1. Tool di gestione del database
fig31.png
Il supporto alla gestione dei dati è ampliato dai wizard e dai controllo tipo Data-Source che possono essere inseriti all’interno di pagine ASP.NET; il wizard generale permette di selezionare il tipo di Data-Source da utilizzare, poi a seconda della scelta fatta dall’utente, verranno presentate le opzioni riguardanti la specifica fonte di dati scelta e per la selezione di eventuali parametri.
Infine, sono disponibili due particolari tipi di designer visuali per la creazione e la gestione di due tipi particolari di file:

  • .xsd – per la gestione di DataSet tippizzati, all’interno di applicazioni basate sulla versione 2.0 del .NET Framework (o superiore);
  • .dbml – per la gestione di oggetti Linq to sql (funzionalità aggiunta nella versione 2008 dell’IDE con la creazione del linguaggio LINQ – Language-Integrated Query, proprio del .NET Framework 3.5);
Parte 14 qua vedremo il DataSet designer
Già in Visual Studio 2005, è stato aggiunto un designer per la costruzione di strutture di dati tipizzate a partire dalle tabelle del database. Parliamo dei “DataSet tipizzati”, che prendono il nome proprio dalla classe DataSet (namespace System.Data) che ha lo scopo di rappresentare i dati con un modello tabellare/relazionale.Nel designer è possibile lavorare con quattro tipi differenti di oggetti:
DataTable

Un oggetto, derivato direttamente dalla classe DataTable, (sempre namespace System.Data), in grado di contenere dei dati all’interno di una struttura prestabilita fatta di colonne, chiavi primarie e vincoli. Molto utile per creare facilmente delle rappresentazioni dei dati da utilizzare nelle applicazioni.
TableAdapter

Un oggetto contenente una DataTable per rappresentare i dati da trattare e un’insieme di query basate proprio su tali dati. Questi oggetti vengono definiti come “classi di Business” e vengono utilizzati da controlli di tipo ObjectDataSource come fonte di informazioni, con l’aggiunta di tutti i meccanismi di inserimento, aggiornamento e cancellazione dei dati.
Quando si crea un nuovo TableAdapter, viene chiesta all’utente una query di selezione, la tabella risultante costituisce il materiale per da inserire nella DataTable. Se la query di selezione e lo schema della tabella coinvolta lo permettono, verranno create in automatico tutte le query CRUD legate appunto alla struttura scelta. Inoltre, l’utente è in grado di aggiungere nuove query, magari con l’utilizzo di parametri, con l’unico vincolo di rispettare la selezione delle colonne descritte dal DataTable.
Query

È possibile inserire all’interno del DataSet generale, una o più query, di aggiornamento, inserimento, cancellazione o di selezione (al massimo di una singola riga) che potranno essere utilizzate in maniera indipendentedal resto degli oggetti definiti all’interno del DataSetpadre. Ogni volta che l’utente decide di aggiungere una nuova query infatti, questa verrà associata ad un particolare TableAdapter, creato in automatico dal designer senza alcunDataTable di definizione, con il compito di contenere appunto l’insieme di tutti questi tipi di oggetti. Tale TableAdapter avrà il nome di “QueriesTableAdapter”.
Relation

All’interno del DataSet, le diverse DataTable possono essere correlate tra loro. Le relazioni nelDataSet sono simili a quelle tra le tabelle di un database relazionale, con chiavi primarie e chiavi esterne, vincoli di chiavi e vincoli di cancellazione o modifica a cascata. Ogni relazione viene definita rigorosamente tra due colonne di due DataTable differenti.
Il DataSet designer

L’insieme di tutti questi oggetti, permette all’utente di creare un set di strutture di dati preso direttamente dalle informazioni contenute nel database e di definire specifiche operazioni di selezione, inserimento, modifica o cancellazione, senza dover ogni volta scrivere tutto il codice.La comodità unica del DataSet Designer di Visual Studio è data dal fatto che semplicemente trascinando una tabella del database, dalla finestra “Server Explorer” all’interno dell’area di contenuto dove è stato aperto il file .xsd, verrà creato in automatico un TableAdapter con unDataSet contenente tutte le colonne proprie della tabella e una query iniziale di selezione di tutte le righe presenti all’interno della tabella scelta; inoltre, vengono create in automatico anche le query di inserimento, modifica e cancellazione. Spostando le tabelle scelte dalla finestra “Server Explorer” all’interno del DataSet tipizzato, l’IDE crea in automatico strutture che possiamo utilizzare tramite controlli di tipo ObjectDataSource e controlli Data-Bound. Il tutto, senza scrivere una riga di codice.
Esempio di DataSet
fig32.png
Se stiamo sviluppando un’applicazione Web, i file .xsd dovranno risiedere nella cartella speciale App_Code.

Parte 15 Object Relational Designer

Con l’arrivo di LINQ (Language-INtegrated Query) nel .NET Framework 3.5 e delle tecnologie figlie (LINQ to DataSet e LINQ to SQL), è stato importante aggiungere a Visual Studio un nuovo designer in grado di assistere lo sviluppatore nella gestione di oggetti e relazioni Linq to SQL.
La tecnologia Linq to SQL è un OR/M (Object Relational Mapper) che fornisce un’infrastruttura per manipolare dati relazionali (prelevati da un database SQL Server) come se fossero degli oggetti e permetterci poi di eseguire query CRUD sui dati attraverso LINQ, senza quindi alcuna interazione diretta con la base di dati.
Nota: Attualmente il designer Object-Relational supporta solamente SQL Server.
Il nuovo designer permette di definire in maniera visuale le entità Linq to SQL, dell’applicazione. Al suo interno, possono essere infatti rappresentate, senza scivere codice:

  • singole tabelle
  • relazioni tra tabelle
  • stored procedures
  • funzioni
  • vincoli di ereditarietà tra classi
Il designer si occupa inoltre di salvare il mapping tra le classi e gli oggetti del database, in un file con estensione .dbml e di generare un oggetto, figlio della classe DataContext, tipizzato.
Questo oggetto ha il compito di gestire tutti i tipi di eventi che vengono scatenati da dalle operazioni effettuate sugli elementi mappati e di gestire le comunicazioni tra le entità definite e la base di dati correlata. Tale oggetto potrà essere utilizzato sia all’interno di controlli di tipo DataSource che da codice attraverso query scritte tramite la sintassi LINQ.
Come abbiamo detto quindi, le tabelle della base di dati vengono trasformate dal designer in classi con definite una proprietà per ogni colonna presente nello schema della tabella, mentre le funzioni e le stored procedures, diventano metodi della classe tipizzata figlia di DataContext.
Se ad esempio creiamo il file ORM.dbml, verrà creata dal designer la relativa classeORMDataContext, figlia diretta appunto della classe DataContext.
Il designer Object-Relational si presenta agli sviluppatori diviso in due parti: la zona di sinistra, pensata per contenere le entità logiche definite correlate di proprietà, relazioni e vincoli di ereditarietà, la zona di destra, adibita invece per ospitare tutti i metodi che sono stati mappati a stored procedures o a funzioni presenti nella base di dati.
Esempio di mapping
fig33.png
Una volta creato il mapping a formare il modello ad oggetti dell’accesso ai dati, possiamo visualizzare il codice .NET che il designer ha generato, per gestire le varie entità all’interno dell’applicazione attraverso classi specifiche e metodi di inserimento, aggiornamento o eliminazione.
È possibile, inoltre, aggiungere funzionalità custom: possiamo modificare il codice generato dal designer O-R, poiché per ogni entità viene generata una classe partial, con proprietà e metodi pre-definiti; il meccanismo delle classi parziali ci permette quindi eventuali aggiunte o modifiche.
Una volta compilati, possiamo usare gli oggetti entità generati, all’interno di query basate su LINQ, il nuovo linguaggio di selezione di dati integrato nel .NET Framework. Attraverso esso infatti, potremo eseguire ogni tipo di selezione, inserimento, modifica o cancellazione, senza scrivere una sola riga di codice SQL.
È importante notare che, al contrario di quanto accade con il DataSet Designer e i file .xsd, questo designer assieme alla tecnologia Linq To SQL, permette un mapping diretto degli oggetti presenti all’interno della base di dati con delle classi .NET.

Parte 16 applicazioni windows form wpf e wcf
Visual Studio è l’ambiente privilegiato per sviluppare applicazioni client che sfruttano Windows Form, WPF (Windows presentation foundation) come framework per il presetation-layer e WCF (Windows Comunication Foundation) per i servizi di comunicazione. Come per lo sviluppo web e la gestione dei dati, abbiamo a disposizione designer specifici, wizard e finestre di strumenti.
I designer Windows Form e il nuovo designer WPF forniscono il visuale necessario alla costruzione delle interfacce in ambiente Windows. Si possono trascinare gli elementi dalla toolbox (aggiornata secondo il tipo di progetto scelto) e sistemarli a piacimento, aiutati da un sistema di posizionamento automatico e di “docking” degli elementi.
Esempio di “docking” assistito
fig34.png
Possono venirci in aiuto funzionalità di alcune delle finestre già descritte , che aggiornano aspetto e funzioni in base alle tipologie degli oggetti selezionati nell’area dei contenuti. Nella toolbox troviamo componenti utili allo sviluppo di applicazioni WCF e WPF, che vengono visualizzati quando sviluppiamo applicazioni basate sulle versioni 3.0 e 3.5 del .NET Framework.
Entrambe le tecnologie, WPF e WCF, nella versione 3.5 sono migliorate in termini di prestazioni e di funzionalità.
In WPF le migliorie si avvertono nelle performance di animazioni, binding dei dati e finestre a livelli. Sono state riviste anche le funzionalità delle applicazioni Web (XBAPs, XAML Browser Applications). È stato aggiunto infatti il supporto per Firefox e per l’utilizzo e la gestione dei cookie.
Altra novità interessante, è quella per lo sviluppo di add-in visuali e non visuali per applicazioni WPF. La maggior parte delle applicazioni Microsoft offre add-in per consentire ad altre applicazioni di sfruttarne le funzionalità: esempi ideali sono il pacchetto Office, i Windows Media Services, Internet Explorer e Visual Studio stesso.
Il .NET Framework 3.5 offre un insieme di classi, posti sotto il namespace System.AddIn, in grado di offrire funzionalità per i comportamenti standard degli add-in. Questi comportamenti vanno dall’attivazione, all’isolamento dell’add-in, alle funzionalità di configurazione, comunicazione con l’esterno ed aggiornamento.


Il designer per applicazioni WPF esisteva già nella nella versione 2005 di Visual Studio ma era solo una parte di un’add-in addirittura in versione CTP. Ora questo strumento ci presenta diverse caratteristiche interessanti per operare sulle interfacce:

  • doppia visualizzazione di markup XAML e rich editor visuale, in cui le modifiche vengono sincronizzate da una parte all’altra della finestra;
  • Supporto per la visualizzazione grafica di controlli custom;
  • Aggiunta di uno slider per effettuare zoom-in e zoom-out sull’interfaccia grafica della propria applicazione;
  • Possibilità di fermare il caricamento della visualizzazione grafica di file .xaml corposi;
  • Supporto allo sviluppo di codice XAML attraverso l’intellisense;
  • Supporto alla personalizzazione tramite la toolbox dei controlli e la finestra delle proprietà;
  • Presenza di linee di supporto per il posizionamento dei controlli all’interno della finestra;
  • Tag navigator, strumento che visualizza la posizione del relativo tag XAML all’interno dell’albero di markup a fronte della selezione di un particolare controllo effettuata in design view.
Inoltre, il designer WPF offre supporto per la collaborazione con Expression Blend: grazie ad un formato di lavoro condiviso (XAML) e della condivisione della relativa soluzione, è possibile separare il lavoro di programmatori e designer.
Le novità del framework di comunicazione


  • il supporto ad AJAX per consumare servizi WCF;
  • il supporto per il formato JSON (JavaScript Object Notation);
  • la possibilità di creazione di servizi durevoli nel tempo;
  • il supporto per lo sviluppo di servizi WCF stile web, attraverso un modello di programmazione;
  • un miglioramento delle comunicazioni tra WCF e Workflow Foundation, attraverso i Workflow Services;
  • la possibilità di utilizzo di meccanismi di comunicazione WCF in applicazioni “partially trusted”;
  • linteroperabilità tra web service WCF;
  • l’integrazione con i formati RSS e ATOM (WCF Syndacation);





Parte 17 Class Designer
Visual Studio offre un designer apposito per la gestione visuale delle classi, uno strumento che potremmo definire CASE: ci permette di creare diagrammi di classi per sintetizzare il modello che stiamo sviluppando, ma contemporaneamente produce il codice di base per ciascun elemento disegnato.
Nella versione 2005 è già presente con il nome di “Class Designer” e viene richiamato ogni volta che l’utente crea o apre un file con estensione “.cd”; per visualizzare il class designer dell’applicazione corrente, basta cliccare con il destro sul nome del progetto dal Solution Explorer e selezionare l’opzione “View Class Diagram”.
Attivazione del class designer
fig35.png
In questo modo, se non esiste, viene creato il file ClassDiagram1.cd e visualizzato all’interno dell’area dei contenuti. Qui possiamo aggiungere nuovi elementi (non solo classi) al diagramma, cliccando con il tasto destro nell’area di modifica e selezionando una delle opzioni presenti sotto il menu “Add”:

  • Class
  • Enum
  • Interface
  • Abstract Class
  • Struct
  • Delegate
  • Comment
Se dobbiamo definire nuovi campi, metodi, proprietà o eventi, possiamo utilizzare un’ulteriore finestra , che appare ogni volta viene aperto un diagramma di classi: la “Class Details Window”.
Finestra dettagli
fig36.png
Con questo tool siamo in grado di definire nuove strutture all’interno della classe selezionata, semplicemente riempiendo le varie colonne che la finestra mette a disposizione; una volta creato un nuovo metodo dalla finestra di dettaglio, verrà automaticamente creato il codice .NET che rappresenta tale metodo, chiaramente senza la relativa implementazione.
Nella versione precedente di Visual Studio, il “Class designer” era compatibile solamente con i linguaggi managed del .NET Framework (C# e VB.NET); ora, nella versione 2008 dell’IDE, è disponibile anche per la visualizzazione di classi C++. Questi i tipi di oggetti supportati:

  • Class
  • Struct
  • Enum
  • Macro
  • Typedef
  • Anonymous class
  • Template class
Parte 18 Nuove Feature Per il Deployment

La tecnica di deployment delle applicazioni detta ClickOnce permette di creare le strutture necessarie all’installazione e distribuzione di applicazioni desktop. Tale tecnica, già presente nella precedente versione dell’IDE, è stato notevolmente migliorata in Visual Studio 2008 attraverso l’aggiunta di nuove caratteristiche di base.
Ora possiamo decidere se e come l’applicazione dovrà controllare la presenza di aggiornamenti: possiamo impostare il controlllo in fase di setup o a intervalli regolari, oppure utilizzare la classe ApplicationDeployment (namespace System.Deployment.Application) per far scattare il controllo allo scatenarsi di particolari eventi o in base al tempo segnato da un timer. Tale classe espone metodi per effettuare richieste al server sia in maniera sincrona che asincrona.
È stato abilitato il deployment di applicazioni da differenti locazioni della rete senza dover cambiare il manifest dell’applicazione o senza effettuarne il re-signing. Questa funzionalità risulta perfetta per distribuire gli aggiornamenti, soprattutto per chi sviluppa software di terze parti, in quanto permette la firma sull’applicazione con le informazioni del cliente finale.
Nuova è anche la possibilità di effettuare il deployment con ClickOnce di applicazioni Web WPF (XBAPs, XAML Browser Applications) attraverso una semplice interfaccia che permette di specificare tutti i valori di configurazione della propria applicazione, con particolare riguardo per le impostazioni sulla sicurezza.
Aggiunto il supporto completo a Windows Vista: è possibile creare il manifest per la propria applicazione sotto il controllo dello User Account Control (UAC) e la generazione dei meccanismi di installazione per applicazioni basate su VSTO (Visual Studio Tools for Office), come add-in per Word, Excel, PowerPoint o Outlook.
Importantissima è sicuramente l’eliminazione dell’attributo deploymentProvider dal manifest delle applicazioni da installare, in modo tale da effettuare il deployment di applicazioni ClickOnce sia per un utilizzo on-line che off-line. Il vincolo in questo scenario è quello di non poter modificare la locazione dell’installazione durante eventuali aggiornamenti dell’applicazione.
Infine è stato aggiornato il meccanismo con cui ClickOnce è in grado di cambiare la locazione per il deployment dell’applicazione e di far scadere il relativo certificato.
In tutto ciò, il tool Mage.exe, utilizzato per generare il manifest per applicazioni ClickOnce è stato modificato ed aggiornato alla versione 3.5 del .NET Framework.

Parte 19 Visual C# Shortcut
Questo l’elenco dei principali shortcut di Visual C# .NET in Visual Studio 2008.
Editing
CTRL+M, OCollassa le region esistente all’interno della classe aperta
CTRL+K, C
CTRL+E, C
Commenta la parte di codice selezionata
CTRL+K, U
CTRL+E, U
Decommenta la parte di codice selezionata
CTRL+K, D
CTRL+E, D
Formatta la classe aperta secondo le informazioni di indentazione specificate nelle opzioni di configurazione dell’IDE
CTRL+K, F
CTRL+E, F
Formatta il codice selezionato secondo le informazioni di indentazione specificate nelle opzioni di configurazione dell’IDE
CTRL+K, XVisualizza il menu contestuale per l’inserimento di un Code Snippet
CTRL+K, SVisualizza il menu contestuale per circondare la parte di codice selezionata con un particolare costrutto
TABInserisce l’intero Code Snippet scelto dal menu contestuale
CTRL+HApre il menu per la sostituzione di caratteri (Replace)

Files
CTRL+SHIFT+NVisualizza la finestra di creazione nuovo progetto
CTRL+SHIFT+OVisualizza la finestra di apertura di un progetto già esistente
CTRL+SHIFT+CVisualizza la finestra per l’aggiunta di un nuovo elemento al progetto corrente
CTRL+SHIFT+AVisualizza la finestra per l’aggiunta di un elemento già esistente al progetto corrente
CTRL+OVisualizza la finestra di apertura di un singolo file

Intellisense
CTRL+SPACECompleta la selezione corrente del menu contestuale dell’intellisense
CTRL+JVisualizza il menu contestuale dell’intellisense
CTRL+K, IVisualizza la dichiarazione completa dell’identificatore specifico scelto all’interno del menu contestuale dell’intellisense
CTRL+SHIFT+SPACEVisualizza la dichiarazione dei parametri di uno specifico metodo
CTRLPermette di far diventare temporaneamente trasparente il menu contestuale dell’intellisense

Navigazione
SHIFT+F12Ricerca tutte le referenze del particolare identificatore scelto
F12Permette di navigare nella dichiarazione del simbolo selezionato all’interno del codice
F8Muove il cursore all’elemento successivo all’interno della finestra dei Task e nella finestra Find Results
CTRL+K, CTRL+VDispone il focus sulla textbox di ricerca della finestra Class View
CTRL+SHIFT+FVisualizza la finestra di ricerca caratteri all’interno del codice
ALT+F12Visualizza la finestra di ricerca di un simbolo all’interno del codice
F7Visualizza la parte di codice del file aperto all’interno dell’editor di testo
SHIFT+F7Apre la visualizzazione in Design del file aperto all’interno dell’editor di testo
CTRL+FApre la finestra di ricerca all’interno del file
CTRL+GApre la finestra di GoTo, per spostare il cursore alla riga scelta

Window
CTRL+W, CVisualizza la finestra Class View
CTRL+W, DVisualizza la finestra Code Definition
CTRL+W, AVisualizza la finestra Command Window
CTRL+W, EVisualizza la finestra Error List
CTRL+W, JVisualizza la finestra Object Browser
CTRL+W, OVisualizza la finestra Output
CTRL+W, PVisualizza la finestra Properties
CTRL+W, SVisualizza la finestra Solution Explorer
CTRL+W, TVisualizza la finestra Task List
CTRL+W, XVisualizza la finestra ToolBox
CTRL+W, LVisualizza la finestra Server Explorer
CTRL+F4Chiude la finestra aperta correntemente
SHIFT+ESCChiude la finestra degli strumenti che ha al momento il focus

Refactoring
CTRL+R, EVisualizza la finestra “Encapsulate Field”, che permette la creazione di una proprietà da un field esistente
CTRL+R, IVisualizza la finestra “Extract Interface”, che permette la creazione di un’interfaccia con tutti i membri presenti all’interno della classe corrente
CTRL+R, MVisualizza la finestra “Extract Method”, che permette la creazione di un nuovo metodo a partire dalla parte di codice selezionata
CTRL+R, VVisualizza la finestra “Remove Parameters”, che permette di rimuovere uno o più parametri dalla definizione di un particolare metodo
CTRL+R, OVisualizza la finestra “Reorder Parameters”, che permette di modificare l’ordine dei parametri di un particolare metodo

Debug
CTRL+D, AVisualizza la finestra “Autos”, che permette di visualizzare lo stato delle variabili presenti nella riga di codice corrente e nelle precedenti
CTRL+D, CVisualizza la finestra “Call Stack”, che permette di visualizzare la lista di tutti i metodi attivi per il thread corrente
CTRL+D, IVisualizza la finestra “Immediate”, che permette di valutare in tempo reale particolari espressioni
CTRL+D, LVisualizza la finestra “Locals”, che permette di visualizzare tutte le variabili e il loro valore corrente
CTRL+D, QVisualizza la finestra “Quick View”, che permette di visualizzare il valore corrente dell’espressione collezionata
F5Avvio della fase di debug dell’applicazione corrente
CTRL+F5Avvio dell’applicazione senza avviare anche il debug
F11Esegue un segmento di codice alla volta durante la fase di debug dell’applicazione
F10Esegue la riga successiva di codice, senza seguire l’esecuzione di alcuna chiamata a metodi
SHIFT+F5Termina la sessione corrente di debug
CTRL+D, WVisualizza la finestra “Watch”, che permette di visualizzare i valori delle variabili selezionate o di particolari espressioni
CTRL+F9Abilita o disabilita i breakpoint

Build
F6Compila tutti i progetti inseriti all’interno della soluzione corrente
SHIFT+F6Compila il progetto selezionato

Finalmente siamo arrivati al capitolo conclusivo di questa guida ! Qua vedremo Visual
Basic.NET Shortcut
Questo l’elenco dei principali shortcut di Visual Basic .NET in Visual Studio 2008.
Editing
CTRL+K, CTRL+CCommenta la parte di codice selezionata
CTRL+K, CTRL+UDecommenta la parte di codice selezionata
CTRL+ZAnnulla operazione
CTRL+SHIFT+ZRipete ultima operazione
CTRL+YTaglia la riga di codice corrente
CTRL+ENTERInserimento di una riga bianca
CTRL+SHIFT+WSelezione di una parola
CTRL+K, CTRL+DFormatta la classe aperta secondo le informazioni di indentazione specificate nelle opzioni di configurazione
CTRL+K, CTRL+FFormatta il codice selezionato secondo le informazioni di indentazione specificate nelle opzioni di configurazione
CTRL+HApre il menu per la sostituzione di caratteri (Replace)

Build
CTRL+SHIFT+BCompilazione di tutti i progetti nella soluzione corrente

Intellisense
CTRL+SPACECompleta la selezione corrente del menu contestuale dell’intellisense
CTRL+JVisualizza una lista filtrata di opzioni
TAB
ENTER
SPACE
Seleziona la voce scelta all’interno del menu dell’intellisense
ESCChiude la finestra corrente dell’intellisense
CTRLPermette di far diventare temporaneamente trasparente il menu contestuale dell’intellisense

File
CTRL+N
CTRL+SHIFT+N
Visualizza la finestra di creazione nuovo progetto
CTRL+O
CTRL+SHIFT+O
Visualizza la finestra di apertura di un progetto già esistente
CTRL+SHIFT+AVisualizza la finestra per l’aggiunta di un nuovo elemento al progetto corrente
CTRL+DVisualizza la finestra per l’aggiunta di un elemento già esistente al progetto corrente

Snippet
?+TABVisualizza la finestra di scelta dei Code Snippet
Snippet shortcut+TABInserimento di un Code Snippet all’interno del codice
“property”+TABInserimento del Code Snippet per la creazione di una proprietà
CTRL+SPACEPermette il completamento tramite intellisense dello shortcut scritto parzialmente
Per questa guida è tutto ciao ciao ^^ Spero abbiate capito :D

Crediti Giuseppe Marchi :omfg:
 
  • Mi piace
Reazioni: natrisim e TIH
Re: [GUIDA]Completa all uso di VBS

...peccato che è leechata. Questa guida è stata scritta da Giuseppe Marchi un po' di tempo fa (per questo parla sempre della versione 2008 dell'IDE). Quindi, a meno che tu non sia Giuseppe Marchi (e dubito, dato che sei del '96 da quanto risulta dal tuo profilo e è improbabile che 3/4 anni fa programmavi già il Visual Basic e hai scritto quella guida), per rispetto del lavoro altrui, cita le fonti in bella vista.

Commento alla guida (meriti a Giuseppe Marchi):
Niente male. Può essere utile per chi inizia: saper usare l'IDE è fondamentale, sopratutto per non perdere troppo tempo a bisticciare con la GUI :) Andrebbe però aggiornata per la versione 2010 dell'IDE.
Sticko (Guida alle Guide).
 
  • Mi piace
Reazioni: ZaoldieckITA
Re: [GUIDA]Completa all uso di VBS

...peccato che è leechata. Questa guida è stata scritta da Giuseppe Marchi un po' di tempo fa (per questo parla sempre della versione 2008 dell'IDE). Quindi, a meno che tu non sia Giuseppe Marchi (e dubito, dato che sei del '96 da quanto risulta dal tuo profilo e è improbabile che 3/4 anni fa programmavi già il Visual Basic e hai scritto quella guida), per rispetto del lavoro altrui, cita le fonti in bella vista.

Commento alla guida (meriti a Giuseppe Marchi):
Niente male. Può essere utile per chi inizia: saper usare l'IDE è fondamentale, sopratutto per non perdere troppo tempo a bisticciare con la GUI :) Andrebbe però aggiornata per la versione 2010 dell'IDE.
Sticko (Guida alle Guide).
e quindi ._.?
L'ho sistemata io per metterla non forum non lui :asd:
 
  • Mi piace
Reazioni: TIH
Re: [GUIDA]Completa all uso di VBS

Ottima guida, grazie a Giuseppe Marchi :D

ho deciso di fare questa guida.
è la mia prima guida e ci ho messo un casino a sistemare cosina qua cosina la ecc ç.ç
Hai deciso di fare? Correggiti, hai deciso di copiare e incollare !

e quindi ._.?
L'ho sistemata io per metterla non forum non lui
asd.gif
Ma la guida è sua, i ringraziamenti/meriti vanno solo ed esclusivamente a lui quindi metti le fonti.
L'avessi creata te sarebbe stato diverso :asd:
 
Re: [GUIDA]Completa all uso di VBS

Ottima guida, grazie a Giuseppe Marchi :D


Hai deciso di fare? Correggiti, hai deciso di copiare e incollare !


Ma la guida è sua, i ringraziamenti/meriti vanno solo ed esclusivamente a lui quindi metti le fonti.
L'avessi creata te sarebbe stato diverso :asd:
Le fonti le ho messe ieri :omfg:
Non ho copiato e incollato.
Leggi prima di scrivere :\
 
  • Mi piace
Reazioni: TIH
Stato
Discussione chiusa ad ulteriori risposte.