Visual Studio 2008 nici nu fusese lansat cand tehnologiile promise de aparitia Framework-ului 3.0 au incins comunitatile dezvoltatorilor .NET. Reactia este normala tinand cont ca au fost abordate trei domenii cu impact major in “sufletul” oricarui dezvoltator, domenii care pana acum nu primisera suficienta atentie din partea Microsoft.
Subiectul articolului de fata este WPF (Windows Presentation Foundation), unul dintre “cei trei crai de la rasarit” care a fost lansat odata cu Framework 3.0 si imbunatatit apoi in Framework 3.5.
Ideia de baza pe care se sprijina WPF este legata de faptul ca interfata unei aplicatii are un impact foarte mare asupra utilizatorilor dar foarte multe aplicatii profesionale se concentreaza mai degraba asupra functionalitatilor decat asupra perceptiei utilizatorului.
Acest lucru se intampla si datorita faptului ca, de cele mai multe ori, nu exista un designer specializat in proiectarea interfetelor sau, atunci cand acesta exista, el nu poate decat sa deseneze un layout (o poza) folosind un program grafic.
Aceasta poza trebuie apoi “transpusa” intr-un form de catre programator care se loveste de limitarile impuse de mediul de dezvoltare, limitari despre care designerul nu stie prea multe.
WPF isi propune sa rezolve aceste probleme oferind unelte puternice care pot fi folosite de catre designeri si dezvoltatori pentru a crea interfete prietenoase, interfete care pot avea continut variat (documente, multimedia, obiecte grafice 2D si 3D, etc.) fara a mai fi limitat la butoane si liste simple.
Ruptura existenta intre designer si dezvoltator este rezolvata prin faptul ca interfata se pastreaza intr-un fisier distinct de tip XAML (eXtensible Application Markup Language). In acest fel designerul, folosind un mediu dedicat designului de interfete (e.g.: WPF Designer care este inclus in Visual Studio 2008 sau Microsoft Expression Blend), poate crea interfete ce se vor salva in fisiere XAML si vor fi folosite in mod direct de catre programator care va scrie doar codul aferent fiecarei actiuni executate de catre utilizator.
Fisierele XAML sunt in format XML si au un set bine definit de elemente (Button, TextBox, Label, etc.), lucru care a oferit posibilitatea si altor “intreprinzatori” de a dezvolta medii pentru design-ul interfetelor.
Un astfel de exemplu ar fi Electric Rain’s ZAM 3D care poate crea elemente tridimensionale pentru interfete XAML.
Tehnologiile oferite de Windows Presentation Foundation pot fi folosite in trei moduri diferite:
1. Aplicatii standalone WPF
Orice aplicatie .NET Framework (3.0 sau 3.5) poate avea o interfata WPF si probabil in curand foarte multe aplicatii vor imbraca aceasta “faţă”.
2. Aplicatii browser XAML (XAML Browser Application: XBAP)
Desi aplicatiile standalone pot fi seducatoare, exista multe situatii in care se doreste ca aplicatia dezvoltata sa ruleze intr-un browser web.Pentru a permite utilizatorului sa aiba acces la interfete complexe cu ajutorul browserului web, WPF pune la dispozitie aplicatiile XBAP.Aplicatiile XBAP folosesc aceleasi clase ca si aplicatiile standalone dar in urma compilarii se vor obtine fisiere cu extensia .xbap.XBAPs ruleaza in interiorul browserului web (Internet Explorer sau Firefox) si sunt intotdeauna incarcate folosind mecanismele ClickOnce pentru a apela ultima versiune a aplicatiei. Procedura de incarcare este transparenta pentru utilizator efectul fiind similar cu cel al incarcarii unei pagini web oarecare.
3. Documente XPS
Documentele XPS sunt documente cu format fix care sunt definite folosind XAML, iar WPF ofera un control (DocumentViewer) care poate fi folosit pentru vizualizarea lor.
Desi cu ajutorul XBAPs se pot dezvolta aplicatii complexe care ruleaza in browser, Microsoft nu se putea opri aici deoarece scopul “ascuns” era sa ofere o portabilitate si o integrare suficient de mare asa incat sa poata concura in mod direct cu platforme consacrate (e.g.: Adobe Flash).
In acest punct Microsoft aduce in scena Silverlight al carui nume de cod este WPF/Everywhere (WPF/E).
Scopul lui Silverlight este de a oferi un subset al capabilitatilor WPF care sa ruleze pe orice platforma.
Pentru a puncta mai exact diferentele intre Silverlight si XBAPs trebuie spus ca desi aplicatiile XBAP ruleaza in browser, comportamentul lor (la nivel vizual) este asemanator cu cel al aplicatiilor windows. Fisierul cu extensia .xbap este apelat in mod direct din browser si fereastra browserului este ocupata in intregime de catre aplicatia respectiva.In contrast cu aceasta abordare, aplicatiile Silverlight pot fi inglobate in interiorul unor pagini web normale intr-o maniera foarte asemanatoare cu cea a fisierelor flash (flw).
In plus, pentru a rula, aplicatiile XBAP solicita prezenta Framework-ului pe calculatorul pe care ruleaza, pe cand cele Silverlight nu necesita decat instalarea unui plugin in browser.
Acest plugin este disponibil pentru mai multe platforme (Windows, Macintosh, etc.) si ruleaza in diferite browsere (Internet Explorer, Firefox, etc.).
Un exemplu de aplicatie Silverlight bogata in continut multimedia este in imaginea urmatoare:
Microsoft intentioneaza sa faca din Silverlight un cross-platform in cel mai bun sens al cuvantului. (Ca stire de ultima ora poate fi spus faptul ca Microsoft a semnat un acord cu Nokia intentionand sa ofere plugin-ul Silverlight pentru telefoanele mobile cu sistem de operare Symbian pe platformele S60 si S80.)
In comparatia XBAP versus Silverlight trebuie subliniat totusi faptul ca Silverlight nu ofera toate facilitatile aduse de WPF avand, dupa cum am mai precizat, un subset de capabilitati. Un exemplu concludent ar fi faptul ca WPF ofera suport pentru grafica 3D pe cand Silverlight se limiteaza doar la grafica 2D.Dar chiar daca Silverlight poate fi considerat fratele mai mic al lui WPF, el ofera suficient de multe facilitati pentru a permite construirea unei interfete bogate in continut: grafica 2D, imagini, sunete, video, animatii, text.
Pentru a concluziona putem spune ca XBAPs permite dezvoltarea applicatiilor Windows care ruleaza in browser in timp ce Silverlight este conceput pentru a dezvolta Rich Internet Applications care ruleaza pe toate sistemele actuale.