Quando uscì il .NET Framework 3.0 nel 2006, con esso venivano introdotti tre importanti pilastri che rappresentavano un importante novità dal punto di vista della ingegneria del software. Con Windows Presentation Foundation (WPF) veniva completamente stravolto il modo di realizzare applicazioni Windows, grazie ad un paradigma nuovo di programmazione e disegno, ad un linguaggio di nome XAML e allo sfruttamento delle capacità della GPU.

Con Windows Communication Foundation (WCF) si introdusse un framework per realizzare servizi e per permettere lo scambio di messaggi in modo indipendente dal trasporto (HTTP, TCP, named pipe, ecc) con un supporto automatizzato alla sicurezza, all'autenticazione e alla gestione delle transazioni.

Mediante Windows Workflow Foundation (WF) si volle supportare l'organizzazione delle logiche (di business, di navigazione, ecc.) mediante un framework che permettesse un approccio visuale per la definizione dei flussi, favorendone la manutenibilità.

L'idea di questi framework era così buona e la loro architettura così ben pensata che con la versione 3.5 e con il successivo service pack, tali librerie hanno subito solo piccoli ritocchi e l'aggiunta di alcune funzionalità. Anche con il .NET Framework 4.0, quindi, questa tendenza è stata mantenuta, perciò WPF e WCF presentano solo alcune aggiunte. Fa eccezione WF che, sebbene abbia mantenuto l'idea e le logiche, è stato completamente riscritto per migliorare nella possibilità di scalare e per superare i limiti (che poi vedremo), tutto questo purtroppo rompendo decisamente con il passato.

Vediamo quindi con questo articolo quali sono le principali novità introdotte con il .NET Framework 4.0.

XAML diventa un linguaggio

WPF poggia l'intera parte di definizione del layout e dell'interfaccia attraverso un linguaggio di nome XAML. L'errore che però spesso facciamo e di pensarlo come un linguaggio specifico per WPF e sebbene è nato per esso, già in WF veniva sfruttato per la definizione dei WF con una versione modificata del linguaggio: XOML.

La capacità del linguaggio di adattarsi a qualsiasi assembly, classe e membro, e di supportare la definizione degli elementi e delle proprietà in modo completo, ha spinto Microsoft a considerare XAML a tutti gli effetti un linguaggio a se stante, di arricchirlo con nuove funzionalità e dargli un parser apposito utilizzabile dai framework che li necessitano, in primis: WPF, WCF e WF.

Troviamo quindi un nuovo assembly di nome System.Xaml che contiene un parser in grado di leggere sia i file testuale (.xaml) sia quelli compilati inclusi solitamente nelle risorse degli assembly (baml). La classe principale per la lettura e scrittura è XamlServices, la quale permette di leggere e di scrivere attraverso gli oggetti XamlWriter e XamlReader.

Il linguaggio ora è in grado di supportare anche i tipi generici e contiene nuovi attributi del namespace http://schemas.microsoft.com/winfx/2006/xaml per definire nuove proprietà, referenziare istanze di oggetti, create delegate o chiamare metodi di factory.

La novità principale, sfruttata prima di tutto da WF, ma non disponibile in WPF, consiste nella possibilità di dichiarare espressioni in Visual Basic per scrivere piccoli script direttamente nel markup. Per capire, vediamo il seguente snippet di XAML per la dichiarazione di un Activity il cui testo è dato dal ToString della data odierna:

<Activity xmlns="http://schemas.microsoft.com/netfx/2009/xaml/activities"
          xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
  <WriteLine Text="[DateTime.Now.ToString()]" />
</Activity>

Attraverso poi l'assembly System.Xaml.Hosting sono definiti un build provider e un handler factory per ASP.NET che ci permettono di usare l'estensione .xamlx per la definizione di worflow service (servizi la cui implementazione è basata su workflow) direttamente in un'applicazione web.

Ricapitolando quindi lo XAML si candita come un meta linguaggio che possiamo utilizzare all'interno delle nostre applicazioni, sia perché sfruttato da WPF, WCF e WF, sia perché possiamo usarlo per istanziare tipi definiti in modo dichiarativo.

5 pagine in totale: 1 2 3 4 5
Contenuti dell'articolo

Commenti

Visualizza/aggiungi commenti

| Condividi su: Twitter, Facebook, LinkedIn

Per inserire un commento, devi avere un account.

Fai il login e torna a questa pagina, oppure registrati alla nostra community.

Approfondimenti