Aplicatie Nativa Windows Phone cu Parte de Administrare Web

APLICAȚIE NATIVĂ WINDOWS PHONE CU PARTE DE ADMINISTRARE WEB

FoodOrder

Cuprins

Introducere

CAPITOLUL I

I.1. Platforma .NET

I.2. C# (Sharp)

I.3. Extensible Application Markup Language

I.4. Transact – SQL

I.5. Mediul de dezvoltare

I.5.1 Alegerea mediului de dezvoltare

I.5.2 Microsoft Visual Studio

I.5.3 SQL Server Management Studio

II. TEHNOLOGII UTILIZATE

II.1. Windows Phone 8.x

II.1.1 Generalități

II.1.2 Emulatorul

II.1.3 Experienta dezvoltatorilor

II.1.4 Durata de viata a unei aplicatii

II.1.5 Principii de design ȋn Windows Phone

II.2. Microsoft Silverlight

II.2.1 Suport pentru platformă

II.2.2 Silverlight: aplicație bogată interactiv (Rich interactive application)

II.2.3 Statistici RIA

II.2.4 Funcționalități:

II.2.5 Silverlight vs Flash

II.2.6 Silverlight vs WPF

II.2.7 Funcționalitate vs Disponibilitate

II.2.8 Silverlight și XAML

II.2.9 Procesul de publicare a aplicației

II.2.10 Arhitectura Silverlight

II.3 ASP.NET SignalR

II.3.1 SignalR și WebSockets

II.3.2 Transport și fallbacks

II.3.3 Transport HTML 5

II.3.4 Transport de tip cometă

II.3.5 Procesul de selecție al transportului

II.3.6 Conexiuni și Hub-uri

II.3.7 Arhitectură

II.3.8 Cum funcționează un Hub

II.3.9 Alegerea unui model de comunicare

II.4. Entity Framework

II.4.1 Istoric

II.4.2 Arhitectură

II.4.2 Entity Data Model

II.4.3 Maparea

II.4.4 Entitățile

II.4.5 Legăturile dintre entități

II.4.6 Limbajul de definire al schemei

II.4.7 Interogarea datelor

II.4.8 Funcții canonice Entity SQL

II.5. WCF RIA Services

III. Concluzii

IV. Bibliografie

Introducere

Aceasta lucrare are ca scop dezvoltarea unei solutii pentru facilitarea comenzii de mancare in orice societate comerciala care implementeaza aceasta solutie.

Solutia consta intr-o aplicatie mobila nativa Windows Phone si o aplicatie web cu rol administrativ folosita in prealabil de persoana sau persoanele intrebuintate cu responsabilitatea de a comanda mancare pentru angajati.

Aplicatia mobila a fost realizata pe platforma Windows Phone 8.x care vine cu un spectru larg de noi functionalitati fata de versiunile anterioare ale platformei, o impresie si un aspect mai rafinat, care incepe sa ocupe pozitii cat mai bune in randul celorlalte platforme precum iOS, Android sau BlackBerry.

Aplicatia web este realizata folosind Silverlight care este o platforma puternica pentru dezvoltarea unor aplicatii atat web cat si mobile care ofera utilizatorilor experiente captivante si interactive, fiind compatibila cu o suita de browsere web, sisteme de operare si dispozitive, aducand un plus de interactivitate conceptului de pagina web.

Aplicatia poarta numele de „FoodOrder” un nume simplu si generic, doua cuvinte alaturate care descriu scopul intregii solutii si anume acela de a facilita comanda de mancare. Ideea a pornit de la nevoia unui sistem pentru administrarea intregului proces de comanda a mancarii pentru angajatii unei companii. De la alegerea unui meniu de la unul din furnizorii prezenti in sistem, pana la adaugarea si monitorizarea unui depozit in lei a fiecarui angajat si pana la trimiterea si confirmarea comenzii.

Intreaga solutie vizeaza doua tipuri de utilizatori:

Client : reprezentat de orice angajat al unei companii care poate sa consulte meniul furnizorilor prezent in sistem, poate sa aleaga o optiune de meniu sau poate sa-si personalizeze propriul menu si sa trimita comanda

Administrator – care poate avea rol atat de client cat si de administrator este cel care se ocupa de aplicatia web, de partea de administrare: confirmare comenzi, management persoane: clienti si administratori, management furnizori si meniu, management fonduri in lei si comenzi.

Solutia a fost dezvoltata sub platforma .NET folosind ca limbaj de programare C#, iar pentru prezentarea vizuala a aplicatiei am folosit XAML si limbaj SQL pentru implementarea bazei de date.

Ca mediu de dezvoltare am folosit Visual Studio 2013, pentru dezvoltarea aplicatiei mobile, si Visual Studio 2010, pentru dezvoltarea aplicatiei web si Microsoft SQL Management Studio pentru implementarea bazei de date si a serverului de baze de date.

Tehnologiile folosite pentru realizarea proiectului sunt: Windows Phone 8.x SDK, Silverlight, Microsoft SQL, Windows Communication Foundation, Entity Framework, Ria Services, ASP.NET SignalR. Aplicabilitatea acestor tehnologii in cadrul proiectului si descrierea lor teoretica va fi prezentata de-a lungul acestei lucrari.

CAPITOLUL I

I.1. Platforma .NET

.Net este o platforma software dezvoltata de Microsoft care ruleaza pe sisteme de calcul sub Microsoft Windows fiind o componenta livrata impreuna cu sistemul de operare. Permite dezvoltarea, distribuirea si rularea unei suite de aplicatii web si desktop. Platforma include o biblioteca de clase cunoscuta sub numele de „Framework Class Library” (FCL) si ofera o interoperabilitate intre mai multe limbaje de programare. Toate programele scrise pentru aceasta platforma sunt executate intr-un mediu software numit „Common Language Runtime” (CLR) si o masina virtuala care ofera securitate, un bun management al memoriei si tratarea exceptiilor. Aceste doua constitue platforma .Net.

Prima versiune 1.0 a acestei platforme a fost lansata in ianuarie 2002 si pana in prezent s-a ajung la versiunea 4.5.2.

Platforma suporta peste 20 de limbaje de programare printre care cele mai populare sunt: C#, VB, C++ si J#. Toate aceste limbaje respecta anumite specificatii ale programarii orientate pe obiecte numite Common Type System (CTS) si au ca elemente de baza: interfete, clase, delegati, tipuri de date si anumite mecanisme precum: mostenire, polimorfism, extensibilitate tratare de exceptii.

Arhitectura acestei platforme are urmatoarea structura:

Orice program scris folosind unul dintre limbajele .Net este compilat in MSIL sau IL (Microsoft Intermediate Language). Codul ce se obtine are extensia .exe care respecta formatul MSIL dar nu este executabil. Toate instructiunile rezultate in urma compilarii vor fi executate intr-o masina virtuala inclusa in CLR care contine un compilator Just In Time care produce codul masina aferent. Odata ce s-a generat codul masina compilatorul recunoaste acele instructiuni de cod permitand reutilizarea acestuia fara recompilare astfel incat pe parcursul rularii aplicatiilor .Net acestea sa fie tot mai rapide.

Platforma .Net ofera:

Interoperabilitate : Datorita faptului ca sistemele informatice necesita sa existe o interactiune intre aplicatiile mai noi si cele mai vechi, acest framework ofera mijloace de a accesa functionalitatea implementata in programale mai vechi si sa o extinda cu functionalitati mai noi. Accesul la componentele COM este prevazuta in spatiile de nume System.Runtime.InteropServices si System.EnterpriseServices.

Common Language Runtime: serveste ca motorul de executie pentru platforma .NET. Toate programele se executa sub CLR garantandu-se astfel anumite proprietati si un comportament care faciliteaza managementul memoriei, securitate si tratarea de exceptii.

Independenta din punct de vedere al limbajului: Platforma include un system numit Common Type System care defineste toate tipurile de date posibile si toate tipurile de implementari suportaet de CLR si felul in care acestea pot sau nu interactiona confrom unor specificatii de limbaj definite in Common Language Specification. Datorita acestei functionalitati .NET suporta schimbul de date si instante de obiecte intre librariile aplicatiilor scrise folosind orice limbaj de programare suportat de .NET.

Biblioteca de clase: este o structura de librarii care ofera o anumita functionalitate fiind disponibile pentru toate limbajele suportate de platforma .NET. Prevede o serie de clase care incapsuleaza un numar de functii comune, inclusiv citire si scriere de fisiere, randare grafica, interactiune cu bazele de date, manipularea de documente XML si multe altele. Se compune din clase, interfete si tipuri reutilizabile.

Implementare simplificata: platforma include caracteristici de design si instrumente care ajuta la gestionarea procesului de dezvoltare si instalare a software-ului pe un sistem de calcul pentru a asigura faptul ca nu interactioneaza cu un alt software instalat ulterior si respecta toate cerintele de securitate.

Securitate: platforma ofera un model de securitate comun pentru toate aplicatiile.

Portabilitate: Platforma nu a fost niciodata cu adevarat implementata pentru alte platforme in afara de Microsoft Windows, cu toate acestea Microsoft a prezentat specificatiile CLI pentru a le face disponibile ca standarde oficiale, acest lucru facand posibila crearea de implementari compatibile cu acesta platforma si limbajele sale de programare disponibile totusi pe alte platforme.

I.2. C# (Sharp)

C# este un limbaj de programare orientat pe obiecte, simplu si modern care permite programarea modulara si structurata conform cu principiile moderne ale programarii . A fost dezvoltat de Microsoft pentru platforma .NET fiind cel mai comun limbaj folosit pe aceasta platforma.

Este unul dintre limbajele de programare concepute pentru Common Language Infrastructure si mosteneste sintaxa si principiile de programare din C++.

Principiile de baza ale programarii orientate pe obiecte sunt elemente fundamentale ale programarii C# insa contine o serie de tipuri de date noi si functii. Cea mai recenta versiune a limbajului este C# 5.0 lansata in 15 August 2012.

I.3. Extensible Application Markup Language

XAML (Extensible Application Markup Language) este un limbaj dezvoltat de Microsoft bazat pe limbajul de tip mark-up XML utilizat pentru crearea interfetelor grafice sau utilizator. A fost introdus in 2003 ca limbajul din spatele tehnologiei Windows Presentation Foundation. Este folosit pe scara larga in .Net Framework 3.0 si .Net Framework 4.x in special in Windows Presentation Foundation, Silverlight, Windows Workflow Foundation si Windows Phone.

In XAML se pot forma elemente de interfata si permite ca aceste elemente de interfata sa se conecteze la o sursa de date astfel incat orice interactiune venita din partea utilizatorului sa se reflecte in sursa de date si orice modificare in sursa de date se reflecta pe interfata. Pe langa aceasta se mai pot forma evenimente, se poate defini un anumit comportament pentru un contrl, se pot imbrica controale si multe alte functionalitati.

Fisierele XAML pot fi create fie in Visual Studio fie in Microsoft Expression Blend, care este un instrument pentru crearea interfetelor utilizator fie manual fie folosind instrumentele de design disponibile.

Orice este creat in XAML poate fi creat folosind un limbaj .Net mai traditional precum C# sau Visual Basic. Cu toate acestea o caracteristica importanta a acestei tehnologii este complexitatea redusa a tuturor instrumentelor pentru procesarea limbajului XAML, fiind bazat pe XML. O varietate de produse sunt in curs de dezvoltare pentru crearea de aplicatii bazate pe XAML, in special in zona WPF si Windows Phone.

I.4. Transact – SQL

Transact – SQL este o extensie a limbajului SQL folosit pentru interogarea, alterarea si definirea unor baze de date relationale folosind instructiuni declarative. T – SQL extinde standardul SQL pentru a oferi un model de programare procedural ce cuprinde variabile locale, support pentru procesarea de date, obiecte temporare, proceduri stocate, control al tranzactiilor, tratarea erorilor si multe altele.

Transact-SQL este utilizat impreuna cu Microsoft SQL Server si toate aplicatiile care comunica cu o instant SQL server o fac trimitand instructiuni T-SQL catre server, indifferent de interfata utilizator a aplicatiei.

I.5. Mediul de dezvoltare

I.5.1 Alegerea mediului de dezvoltare

Aplicatia a fost dezvoltata folosind ca mediu de dezvoltare Microsoft Visual Studio, insa versiuni diferite ale acestuia. Pentru dezvoltarea aplicatiei mobile Windows Phone am ales Microsoft Visual Studio 2013 care include deja o parte din instrumentele necesare pentru dezvoltarea de ainterfetelor utilizator fie manual fie folosind instrumentele de design disponibile.

Orice este creat in XAML poate fi creat folosind un limbaj .Net mai traditional precum C# sau Visual Basic. Cu toate acestea o caracteristica importanta a acestei tehnologii este complexitatea redusa a tuturor instrumentelor pentru procesarea limbajului XAML, fiind bazat pe XML. O varietate de produse sunt in curs de dezvoltare pentru crearea de aplicatii bazate pe XAML, in special in zona WPF si Windows Phone.

I.4. Transact – SQL

Transact – SQL este o extensie a limbajului SQL folosit pentru interogarea, alterarea si definirea unor baze de date relationale folosind instructiuni declarative. T – SQL extinde standardul SQL pentru a oferi un model de programare procedural ce cuprinde variabile locale, support pentru procesarea de date, obiecte temporare, proceduri stocate, control al tranzactiilor, tratarea erorilor si multe altele.

Transact-SQL este utilizat impreuna cu Microsoft SQL Server si toate aplicatiile care comunica cu o instant SQL server o fac trimitand instructiuni T-SQL catre server, indifferent de interfata utilizator a aplicatiei.

I.5. Mediul de dezvoltare

I.5.1 Alegerea mediului de dezvoltare

Aplicatia a fost dezvoltata folosind ca mediu de dezvoltare Microsoft Visual Studio, insa versiuni diferite ale acestuia. Pentru dezvoltarea aplicatiei mobile Windows Phone am ales Microsoft Visual Studio 2013 care include deja o parte din instrumentele necesare pentru dezvoltarea de aplicatii Windows Phone 8.x. De asemenea emulatoarele Windows Phone 8.x necesita aceasta versiune de Visual Studio.

Aplicatia web Silverlight a fost dezvoltata in Visual Studio 2010. Motivul tine de arhitectura aplicatiei Silverlight si de serviciile acesteia. Comunicarea dintre partea de server si partea de client se realizeaza utilizand Microsoft .Net RIA Services care expune logica si datele de pe server pe partea de client.

Acest proiect insa a devenit open source iar Microsoft a incetat sa mai ofere suport pentru acest serviciu in versiunile mai noi de Visual Studio, in special versiunea 2013 a acestuia, iar unele capabilitati ale serviciului au fost scoase, precum template-ul pentru generarea unui DomainService care incapsuleaza intreaga logica prezenta pe server, expunand o serie de operatii care sunt utilizate in aplicatia dezvoltata.

I.5.2 Microsoft Visual Studio

Visual Studio este un mediu de dezvoltare detiunut de Microsoft folosit pentru a dezvolta aplicatii pentru familia de sisteme de operare Microsoft Windows dar si pagini web, aplicatii web si servicii. Utilizeaza pentru dezvoltarea aplicatiilor platforme precum: Windows API, Windows Forms, Windows Presentation Foundation, Windows Store si Microsoft Silverlight si produce atat cod nativ care este executat in mod direct de unitatea centrala de procesare cat si cod care se executa in masina virtuala Common Language Runtime.

Acesta include un editor de cod care suporta IntelliSense precum si posibilitatea de restructurare a codului. Acesta contine o suita de instrumente pentru facilitarea dezvoltarii aplicatiilor din toate punctele de vedere, atat pe partea de server cat si pe cea de client.

Visual Studio suporta diferite limbaje de programare si permite ca editorul de cod si debugger-ul sa suporta aproape orice limbaj de programare pentru care exista un serviciu existent. Printre limbaleje predefinite se numara C, C++, Visual C++, Visual Basic, C# si F#. Pe langa acestea mai suporta si alte limbaje precum Python, Ruby si alte limbaje care necesita o instalare separata: XML/XSLT, HTML/XHTML, JavaScript si CSS.

Prima versiune de Visual Studio a fost lansata in Aprilie 1995 iar cea mai recenta versiune a acestui mediu de dezvoltare este Visual Studio 2013 lansat in 17 octombrie 2013.

I.5.3 SQL Server Management Studio

SQL Management Studio este o aplicatie software lansata pentru prima data cu Microsoft SQL Server 2005 folosita pentru configurarea, gestionarea si administrarea tuturor componentelor din Microsoft SQL Server. Include atat un editor pentru script-uri cat si instrumente grafice care opereaza cu obiectele si elementele de configurare ale serverului. O componenta de baza al acestui software este „Object Explorer” care permite utilizatorului sa navigheze printre toate obiectele existente pe server.

SQL Server este un sistem relational de gestiune a bazelor de date dezvoltat de Microsoft. Este un produs software a carui functie este de a stoca si prelua datele solicitate de catre alte aplicatii software fie ele rezidente pe acelasi sistem de calcul fie pe un altul din aceeasi retea sau prin internet. Exista o suita de versiuni ale acestui soft care sunt folosite atat in aplicatii simpliste cat si in aplicatii mai complexe care opereaza cu un set mare de date. Limbajul de interogare principal este T-SQL.

II. TEHNOLOGII UTILIZATE

II.1. Windows Phone 8.x

II.1.1 Generalități

Telefoanele inteligente si tabletele sunt in momentul de fata lideri pe piata in randul dispozitivelor. Compania Apple este prima care a produs un astfel de dispozitiv si anume iPhone care a fortat celelalte companii sa-si rafineze experienta mobila pornind in primul rand de la dispozitivul in sine apoi de la ideea de aplicatii si disponibilitatea acestora, acesta fiind un aspect esential in alegerea unui dispozitiv mobil, functionalitatile oferite de platforma fiind deseori ignorate.

Microsoft a renuntat la platforma Windows Mobile 7 si a inceput sa dezvolte de la zero o noua platforma: Windwos Phone 7, iar rezultatul a fost diferit fata de ceilalti competiteri: o noua interfata utilizator bazata pe un design plat numit Microsoft Design Style cunoscut si sub numele de Metro si integrarea cu retelele social si toaet serviciile Microsoft precum: Office, SkyDrive si Xbox.

Versiunea curenta a platformei este Windows Phone 8. Inainte de aceasta versiune Microsoft a lansat un update numit Windows Phone 7.5 care a adaugat o suita de noi functionalitati dar pe langa asta a imbunatatit experienta dezvoltatorilor de aplicatii adaugand noi librarii.

Windows Phone 8 inlocuieste arhitectura Windows CE intalnita folosita in Windows Phone 7 cu Windows NT kernel. Datorita acestui fapt Windwos Phone 8 nu este disponibil ca un update al vechiului Windows Phone 7. Totusi Microsoft a lansat un update intermediar numit Windows Phone 7.8 prin care au fost portate unele functionalitati.

De la lansarea Windows Phone 8 Microsoft a mai lansat trei update-uri:

– Update 1 (GDR1) care a imbunatatit experienta cu Internet Explorer, conectivitatea prin Wi-Fi si experienta mesajelor.

– Update 2 (GDR2) a imbunatatit suportul pentru anumite conturi precum Google, Xbox si Skype. A adaugat suport pentru radio FM si a extins aplicatia de monitorizare a traficului pe internet (Data Sense)

– Update 3 (GDR3) care a adaugat suport pentru rezolutiile 1080p, modul de condus (driving mode), blocarea ecranului si o mai buna tratare a spatiului si a imbunatatit experienta prin Bluetooth si Wi-Fi.

Este important sa mentionam si componenta hardware care reprezinta dispozitivul in sine fiindca este strict legat de experienta in timpul dezvoltarii aplicatiilor si a functionalitatilor care pot fi folosite in momentul dezvoltarii unei aplicatii. Prin Windows Phone Microsoft a introdus o abordare mai hibrida in comparatie cu Apple sau Google.

La fel ca orice sistem de operare din spectrul sistemelor de operare mobile, Windows Phone ruleaza pe o sumedenie de dispozitive. Microsoft insa a definit un set de reguli si specificatii pe care fiecare producator trebuie sa le adopte pentru a construi un dispozitiv care sa ruleze Windows Phone.

Specificatiile cheie sunt:

Procesor cu mai multe nuclee ( dual core sau quad core)

Cel putin 512 MB memorie RAM

Cel putin 4 GB pentru stocare care poate fi extinsa cu un card Micro SD

Camera

Senzori de miscare (accelerometru, giroscop, compass)

Senzori de proximitate

Conexiune de date 3G si Wi-Fi

GPS

Patru feluri de rezolutii: WVGA (480 x 800), WXGA (768 x 1280), 720p (720 x 1280) si 1080p (1080 x 1920)

Trei butoane: Inapoi, Start si Cautare

Windows Runtime este noul strat de librarii pe care Miscrosoft la introdus in Windows 8 si reprezinta piatra de temelie spre o noua abordare in dezvoltarea aplicatiilor. In fond, spre deosebire de platforma .NET, acesta este un strat nativ, care implica o mai buna performanta.

Pe langa asta suporta un spectru larg de librarii pentru geolocatie, senzori de miscare, NFC (near field communication) si multe altele. In final ofera suport apeluri asincrone si multi-threading care sunt elemente cheie in dezvoltarea aplicatiilor mobile care trebuiesc sa poata sa interactioneze cu utilizatorul indiferent de operatiile pe care le executa.

In procesul dezvoltarii platformei Windows Phone 8 existau deja un numar mare de aplicatii bazate pe vechile tehnologii precum Silverlight si XNA. Pentru a evita ca dezvoltatorii sa-si rescrie aplicatiile de la zero Microsoft a introdus urmatoarele functionalitati:

XAML a fost portat direct din Windows Phone 7 ceea ce inseamna ca nu este nativ, insa diverse functionalitati precum definirea unui comportament pentru un control care au fost introduse doar in Windows 8 sunt disponibile. Astfel tot codul scris in XAML pentru Windows Phone 7 poate fi refolosit.

Multumita unei functionalitati numite „Quirks mode” aplicatiile dezvoltate pentru Windows Phone 7 pot rula in Windows Phone 8 in cele mai multe cazuri. Acest mod permite translatarea apelurilor aferente platformei Windows Phone 7 in cele aferente Windows Runtime.

Windows Runtime include un strat numit .Net for Windows Phone prin care se pot folosi vechile librarii pentru dezvoltarea unei aplicatii Windows Phone 8 in felul acesta aplicatiile dezvoltate pentru versiunile mai vechi pot fi usor portate.

Windows Phone 8 ofera suport si pentru programarea folosind ca limbaj C++, in timp ce WinJS care permitea dezvoltarea de aplicatii folosind HTML si JavaScript lipseste. Pentru dezvoltarea de aplicatii folosind tehnologii web dezvoltatorul trebuie sa se bazeze pe un control WebBrowser si sa foloseaza platforme precum PhoneGap.

Platforma oficiala pentru dezvoltarea de aplicatii mobile Windows Phone este Visual Studio 2012 pentru aplicatiile Windows Phone 7 insa Visual Studio 2013 poate fi folosit doar pentru dezvoltarea aplicatiilor Windows Phone 8.

Pentru dezvoltarea aplicatiilor pe Windows Phone 8 este nevoie de kit-ul pentru dezvoltarea aplicatiilor Windows Phone 8 SDK. Pentru instalarea acesteia trebuie sa se respecte anumite cerinte:

Windows 8 Pro sau Windows 8 Enterprise 64-bit, necesar datorita faptului ca emulatorul este bazat pe Hyper-V care este o tehnologie Microsoft de virtualizare valabila doar in versiunile profesioniste de Windows.

Unitatea centrala de procesare trebuie sa suporte un al doilea nivel de translatare al adreselor (SLAT – Second Leve Address Translation) care este necesar pentru ca Hyper-V sa ruleze corespunzator. Insa toate arhitecturile mai noi de sisteme de calcul de la Intel i5 suporta aceasta functionalitate. Se poate folosi insa un dispozitiv real pentru rularea aplicatiei si testarea ei.

II.1.2 Emulatorul

Orice aplicatie implica un procedeu de testare si depanare amanuntita pentru verificarea functionarii corecte, inainte ca aplicatia sa fie trimisa spre Windwos Phone Store. Intreaga performanta a unei aplicatii totusi poate fi testata doar pe un dispozitiv real. In timpul implementarii unei aplicatii insa acest lucru poate incetini procesul de dezvoltare. In aceasta situatie un emulator este folositor permitandu-I dezvoltatorului sa testeze aplicatia in diferite situatii cum ar fi, rezolutii diferite sau pierderea conectivitatii.

Emulatorul este o mașină virtuală care rulează sub Hyper-V care interacționează cu partea hardware a sistemului de calcul. Dacă dezvoltatorul dispune de un monitor tactil poate simula senzorii tactili ai telefonului, dacă dispune de un microfon se poate simula microfonul telefonului și așa mai departe. Pe lângă aceasta emulatorul vine cu un set de instrumente folositoare in procesul de testare precum posibilitatea utilizarii accelerometrului sau ai GPS-ului.

Emulatorul poate fi lansat direct din Visual Studio si poate sa ruleze continuu fara sa fie necesara repornirea lui de fiecare data cand se testeaza aplicatia. Emulatorul suporta mai multe versiuni fiecare oferind versiuni diferite si memorie interna diferita.

II.1.3 Experienta dezvoltatorilor

Aplicatiile windows Phone sunt publicate in Windows Phone Store care este metoda primara prin care un dezvoltator isi poate publica aplicatia. Pentru aceastea este nevoie de un cont de dezvoltator iar taxa este de 19$ pe an permitandu-le acestora sa publice un numar nelimitat de aplicatii taxabile si maxim 100 de aplicatii gratuite.

Contul de dezvoltator este folositor pe partea de testare. Initial un dispozitiv Windows Phone este blocat si singura modalitate prin care se pot instala aplicatii este prin Windows Phone Store. Dezvoltatorii insa pot sa-si deblocheze telefonul gratis, fara sa necesite un cont platit insa nu vor putea debloca decat un singur telefon si doar doua aplicatii pot fi instalate pe telefon. Cu un cont platit se pot debloca pana la trei telefoane și se pot instala până la 10 aplicații pe fiecare dispozitiv.

Dezvoltarea se face direct din Visual Studio folosind SDK-ul pentru Windows Phone. Pentru deblocarea telefonului se folosește un utilitar numit Windows Phone Developer Registration. Se conectează telefonul la sistemul de calcul fiind conectat pe ambele cu același cont Microsoft.

Aplicația care urmează să fie publicată ȋn Windows Store trebuie să fie verificată si aprobată. Acest proces asigură faptul că aplicația ȋndeplinește anumite specificații din punct de vedere tehnic și din punct de vedere al conținutului.

II.1.4 Durata de viata a unei aplicatii

Aplicațiile mobile au o durată de viață diferită față de cele ȋntâlnite pe un sistem de calcul datorită specificațiilor diferite pe care trebuie să le respecte. Tradiționalul multitasking ȋntâlnit pe un sistem de calcul ar stoarce destul de repede bateria dispozitivului, pe lângă aceasta mai multe aplicații deschise pot să afecteze grav performanțele telefonului.

Următoarea figură descrie durata de viața a unei aplicații Windows Phone până la Windows Phone 8.1.

Când o aplicație rulează poate fi suspendată in orice moment. De exemplu utilizatorul poate apăsa butonul Start sau să deschidă o notificare care deschide o altă aplicație. Ȋn această situație aplicația „ȋngheață” intră ȋn starea „Dormant”. Este păstrată in memorie dar toate firele de execuție și operațiile sunt oprite. Ȋn această stare aplicația folosește doar memorie dar unitatea centrală de procesare este liberă.

Când utilizatorul decide să se ȋntoarcă din nou la aplicație instanța aplicației este restaurată din memorie și toate firele de execuție și operațiile sunt repornite. Dacă prea multe aplicații sunt deschise la un moment dat, s-ar putea să nu mai existe memorie disponibilă pentru toate ca sa fie suspendate. Ȋn această situație sistemul de operare va ȋncepe sa oprească forțat aplicațiile care rulează de mai mult timp iar aplicațiile vechi intră ȋntr-o stare „tombstoned”.

Aplicațiile pot fi dezvoltate ȋn așa fel ȋncât să se salveze starea aplicației când este ȋnchisă de către sistemul de operare, părand că aplicația a fost doar „ȋnghețată”.

Totuși ȋn Windows Phone 8.x ciclul de viața al aplicațiilor s-a modificat păstrându-se doar trei stări:

Orice aplicație este lansată ȋn execuție de către utilizator ȋn timp ce procesul se află ȋn starea NotRunning fie pentru că ȋncă nu a fost lansată ȋn execuție fie pentru că a fost ȋnchisă forțat ȋn urma unei erori sau datorită faptului că a fost suspendată dar nu a mai putut fi păstrată ȋn memorie.

II.1.4.1 Activarea aplicatiei

O aplicație poate fi activată de către utilizator printr-o varietate de contracte și extensii. Pentru a putea fi activată aplicația trebuie să se ȋnscrie la un eveniment de activare numit Activated. Ȋn metoda ȋnscrisă la acest eveniment se poate verifica motivul pentru care aplicația a fost activată sau dacă se afla deja ȋn starea Running.

II.1.4.2 Suspendarea aplicatiei

O aplicație este suspendată atunci când utilizatorul păraseste aplicația fară sa o ȋnchida sau când bateria dispozitivul se află ȋntr-o stare critică. Ȋn momentul ȋn care utilizatorul părasește o aplicație sistemul de operare așteaptă câteva secunde să vadă daca utilizatorul se reȋntoarce imediat ȋn aplicație, dacă nu o face atunci sistemul de operare suspendă aplicația.

Dacă aplicația s-a ȋnscris la evenimentul „Suspending” metoda ȋnscrisă la acest eveniment este apelată imediat ce aplicația intră ȋn această stare. Această metodă poate fi folosită pentru a salva date relevante pentru aplicație.

Ȋn mod general aplicația ar trebui să-și salveze starea iar acest proces nu ar trebui să dureze mai mult de zece secunde, altfel sistemul de operare consideră că aplicația nu mai răspunde și o ȋnchide forțat.

II.1.4.3 Vizibilitatea aplicației

Ȋn situația ȋn care utilizatorul se mută de la o aplicație la alta, aplicația nu mai este vizibilă ȋnsă rămâne ȋn starea „Running” până când sistemul de operare o suspendă. Dacă utilizatorul se mută la o altă aplicație dar revine imediat ȋnapoi ȋnainte ca ea să fie suspendată, aplicația va rămâne ȋn aceeași stare de rulare.

Ȋn această situație nu mai există un eveniment de activare fiindcă doar vizibilitatea se modifică. Dacă e nevoie să se ȋntample ceva ȋn urma acestui proces aplicația se poate ȋnscrie la evenimentul de „VisibilityChanged”.

II.1.4.4 Reluarea aplicatiei

O aplicație suspendată este reluată atunci când utilizatorul revine din nou ȋn aplicație sau când dispozitivul are din nou suficientă energie ȋn baterie.

Când aplicația ȋși revine din starea „Suspended” reintră ȋn starea „Running” și ȋși va continua execuția din punctul de unde a fost suspendată, iar datele nu se pierd având ȋn vedere că aplicația a fost salvată ȋn memorie. Ȋn consecință multe aplicații nu necesită să se execute anumite operații cand sunt reluate, ȋnsă ele pot fi suspendate ore ȋn șir sau chiar zile iar dacă de exemplu a existat o conexiune la internet și aceasta a expirat, ea va trebui sa fie restabilită sau reȋmprospătată. Această logică poate fi inclusă ȋn metoda ȋnscrisă la evenimentul „Resuming”. Acest eveniment se execută ȋnaintea evenimentului „Activated” când aplicația revine din starea suspendată.

II.1.4.5 Ȋnchiderea aplicației

Ȋn general utilizatorul nu trebuie să ȋnchidă aplicațiile, sistemul de operare se ocupă de asta. Utilizatorii pot totuși să ȋnchidă o aplicație folosindu-se de experiența pusă la dispoziție de către sistem prin gesturi. Nu pot fi incluse elemente de interfață pentru ȋnchiderea aplicației și nici nu există un eveniment special pentru această operație.

După ce o aplicație a fost ȋnchisă, ea este suspendată și ȋncheiată intrând ȋn starea „NotRunning” ȋn aproximativ 10 secunde.

II.1.4.6 Ȋnchiderea cauzată de erori sau diverse excepții

Când o aplicație este ȋnchisă ȋn mod neașteptat ȋn urma unor excepții sau erori ea trebuie să respecte experiența implementată de către sistem și anume ȋntoarcerea la ecranul de start. Ȋn acest moment nu este necesar să se afișeze un mesaj de eroare sau o notificare care să ȋnștiințeze utilizatorul de cele ȋntâmplate. Faptul că aplicația dispare ar trebui să fie destul de intuitiv pentru utilizator că ceva s-a ȋntâmplat.

După ce o aplicație care a fost ȋnchisă forțat ȋn urma unei erori este reactivată metoda ȋnscrisă la evenimentul de activare al aplicației va primu ca parametru un status NotRunning caz ȋn care ar trebui să fie afișat ecranul de start al aplicației ca și ȋn cazul ȋn care ar porni pentru prima dată.

II.1.4.7 Ștergerea aplicației

Când utilizatorul șterge o aplicație, aceasta este eliminată din sistem ȋmpreună cu toate datele locale aferente ei. Ștergerea unei aplicații nu afectează datele utilizatorului precum fișiere din folderul de documente sau imagini.

II.1.5 Principii de design ȋn Windows Phone

Design-ul ȋn Windows Phone are de departe mai multa adancime, caracter și istorie decât ceea ce poate fi descris utilizând termenul de flat design. Design-ul acestei platforme are la baza trei elemente.

II.1.5.1 Scoala de design Bauhaus

Ȋncepând cu anul 1919, această școalâ de design iconică, Bauhaus, a ȋnceput promovarea unei filozofii de design incredibil de puternică ce presupune ȋnlăturarea tuturor elementelor care ne sunt de prisos. Este un lucru să ȋntelegi care sunt funcționalitățile de bază ale unei aplicații și este cu totul alt lucru să reduci funcționalitatea aplicației până la cea de bază. Antoine de Saint-Exupéry a observat că perfecțiunea poate fi obținută doar ȋn momentul ȋn care nu mai este nimic de ȋnlăturat. Simplicitatea duce la frumusețe dar și la ușurință ȋn utilizare.

II.1.5.2 Stilul tipografic internațional (stilul elvețian)

Designul Microsoft, inspirat de stilul tipografic elvețian a dus la adoptarea unei tipografii ȋndrăznețe dar ȋn același timp curată și frumoasă. Acest stil promovează curățenia, claritatea și obiectivitatea ca și teme principale. Din acest stil Microsoft a ȋnțeles necesitatea unui grid atat tipografic cât și vizual și nevoia de interfețe asimetrice dispuse intr-un mod principial.

II.1.5.3 Designul ȋn mișcare

Mișcarea aduce experiențele la viață și oferă eleganță design-ului. Ȋn acest sens Microsoft s-a inspirat de la pioneri precum Saul Bass care a folosit mișcarea ȋmpreună cu tipografia și design-ul pentru a realiza secvențe frumoase ȋn filmele la care a lucrat. Designul ȋn mișcare nu numai că ȋncântă privirea ci și explică utilizatorilor cum să realizeze un task.

Ȋn esență inspirația din spatele design-ului Metro poate fi redus la trei aspecte:

Reducționism, tipografie clară și curată

utilizarea de culori

crearea unei conexiuni emoționale

Aceste aspecte se pot rezuma ȋntr-unul singur: crează ceva curat și frumos apoi adu-l la viață.

II.2. Microsoft Silverlight

Silverlight este o tehnologie Microsoft pentru crearea de aplicații web interactive, bogate ȋn conținut și funcționalități. Silverlight este disponibil ca un plug-in pentru toate browserele care există până ȋn acest moment fiind folosită pentru a oferi utilizatorilor o nouă generație de aplicații media web.

Când vorbim despre Silverlight și bogăția conținutului nu ne referim la faptul că aplicațiile dezvoltate folosind aceasta tehnologie au o interfață spectaculoasă și o mulțime de elemente grafice ci ne referim la faptul că o astfel de aplicație oferă funcționalități care nu sunt disponibile ȋn aplicațiile web standard.

II.2.1 Suport pentru platformă

Spre deosebire de alte tehnologii Microsoft, aplicațiile Silverlight pot rula oriunde deoarece sunt independente de platformă, independente de browser-ul web și independente de dispozitivul pe care rulează. O aplicație Silverlight poate rula pe Windows, Linux și chiar Mac, poate rula ȋn Internet Explorer, Mozilla Firefox, Google Chrome și multe alte browsere web. Pe lângă asta mai poate rula pe sistemele de calcul și dispozitivele mobile. Ȋn esență poate rula oriunde fără necesitatea unor schimbări ȋn cod.

O aplicație Silverlight poate fi găzduită pe orice server fără sa necesite modificări ȋn cod sau vreo configurare mai specială.

II.2.2 Silverlight: aplicație bogată interactiv (Rich interactive application)

O aplicație bogată interactiv este o aplicatie web care interactionează foarte mult cu utilizatorul și care oferă funcționalități complexe. Sunt foarte similare cu aplicațiile desktop dacă ar fi să comparăm interactivitatea și funcționalitățile, ȋnsă este o aplicație web care rulează ȋntr-un browser web, ȋn consecință putem spune că aplicațiile RIA oferă cele mai multe funcționalități și interfețe utilizator atât pentru aplicațiile desktop cât și pentru cele mobile.

Există multe tehnologii disponibile pentru crearea de aplicații RIA. Printre cele mai renumite se numără: Adobe Flash, Microsoft Silverlight și Sun Java. Este esențial de menționat că fiecare platformă dintre cele menționate este disponibila printr-un plug-in pentru browserele web iar mediul ȋn care rulează trebuie instalat pe mașina pe care dorim să rulăm o astfel de aplicație.

II.2.3 Statistici RIA

Ȋntrebarea care poate apărea este: Care este cea mai bună platforma?

Confrom unor statistici putem observa că Adoble Flash este instalat pe aproximativ 96% din sistemele conectate la internet, Microsoft Silverlight vine pe locul doi cu aproximativ 74% și Sun Java vine cu aproximativ 73%. Cu toate acestea Silverlight vine instalat automat pe sistemele de calcul care rulează sub Windows deci numerele se pot schimba destul de repede.

II.2.4 Funcționalități:

Silverlight combină mai multe tehnologii ȋntr-o singură platformă care oferă dezvoltatorilor instrumentele necesare și limbajul de programare corespunzător necesităților fiecăruia.

WPF si XAML: Silverlight include un subset al tehnologiei Windows Presentation Foundation care extinde ȋn mod deosebit elementele din browser pentru crearea interfețelor utilizator. Ȋn Silverlight se pot crea elemente de grafică deosebite, animații și multe altele extinzând interfețele utilizator ȋntâlnite ȋntr-un browser web disponibile doar folosind HTML. XAML reprezintă un limbaj de tip mark-up declarativ prin care se creeaza aceste interfețe utilizator.

Se pot folosi scripturi JavaScript pentru a controla elementele de interfață.

Fiind o tehnologie independentă de browser sau platformă, rulează ȋn același fel pe toate browserele web fară ca dezvoltatorul să-și facă griji ȋn privința mediului ȋn care va rula aplicația.

Integrare cu aplicații existente. Silverlight poate fi integrat perfect cu cod JavaScript sau ASP.NET Ajax pentru a complementa funcționalități deja create.

Acces la platforma .NET putându-se crea aplicații Silverlight folosind un limbaj dinamic precum IronPython sau C# și Visual Basic.

O suită de instrumente. Se pot folosi instrumente precum Visual Studio sau Expression Blend pentru crearea de aplicații Silverlight

Suport pentru internet. Silverlight include suport pentru HTTP prin TCP. Ne putem conecta la servicii precum WCF, SOAP sau ASP.NET Ajax și putem primi date ȋn format XML, JSON sau RSS

LINQ (language-integrated query). Silverlight include LINQ care permite accesul la date, controla obiecte ȋntr-un mod intuitiv.

Permite dezvoltarea de aplicații business foarte complexe

Suportă animații 2D și 3D.

Suportă o varietate de controale incluzând și un DataGrid

Este considerată platforma principală pentru dezvoltarea de aplicații Windows Phone

II.2.5 Silverlight vs Flash

Silverlight și Flash sunt foarte similare. O comparație a celor două tehnologii este vizibilă mai jos:

II.2.6 Silverlight vs WPF

Windows Presentation Foundation este un subsistem grafic care se folosește de DirectX pentru a randa interfața utilizator ȋn aplicațiile desktop dezvoltat de Microsoft și inclus ȋn platforma .NET 3.0. WPF este considerat ca fiind ȋnlocuitorul tehnologiei bazate pe WinForms.

Pe de altă parte Silverlight este un subset al WPF, Silverlight având ca nume de cod WPF/E de la WPF/Everywhere fiind o versiune independentă de platforma a WPF. Ȋn timp ce WPF este bazat pe dezvoltarea de aplicații desktop, Silverlight vizeaza partea web.

Este o tehnologie independentă de platformă. Permite crearea de aplicații mobile Windows Phone. Este disponibila printr-un plug-in care poate fi descarcat ȋn câteva secunde. Se poate rula conținut video și audio. Calitatea video poate fi scalată ȋn funcție de dispozitivul pe care ruleaza aplicația. Include elemente de grafică precum drag and drop, rotire, zoom direct ȋn browserul web. Se pot citi și afișa date fără ca pagina să fie reimprospătată. Poate rula ȋn browser sau pe sistemul de calcul, iar cunoștințele Silverlight te ajută să dezvolții aplicații Windows Phone.

II.2.7 Funcționalitate vs Disponibilitate

Din această diagramă putem observa că WPF are cea mai dezvoltată interfață utilizator, ȋnsă se pot dezvolta doar aplicații desktop și poate rula doar pe platforma Windows.

Pe de altă parte ASP.NET poate rula oriunde, dar din păcate nu suportă toate necesitățile ȋn ceea ce privește interfața utilizator de care este nevoie ȋn zilele noastre.

Ȋntr-un final Silverlight reprezintă cel mai bun raport funcționalitate/disponibilitate.

II.2.8 Silverlight și XAML

La fel ca și ȋn WPF, interfața utilizator este declarată ȋn Silverlight folosind un limbaj specific numit Extensible Markup Language. XAML este un limbaj bazat pe XML creat de Microsoft folosit pentru inițializarea unor valori și obiecte structurate. Elementele XAML sunt mapate direct in obiecte din Class Library Runtime. De exemplu o declarare de genul <Button> este mapată ȋntr-un obiect Button.

Dezvoltatorii ASP.NET sunt ȋntr-un fel familiari cu limbajul XAML. Mediul de dezvoltare pune la dispoziție un WYSIWYG designer care poate fi folosit pentru structurarea interfeței utilizator. Codul acestei interfețe este disponibil ȋn partea de code-behind a fișierului unde poate fi scris cod .NET.

Acest concept de existență a doua fișiere pentru aceeași pagină: fișierul XAML pentru design și fisierul .cs pentru codul .NET, separă două roluri importante ȋn procesul de development si anume: design si dezvoltare. Un designer poate lucra ȋn fișierul XAML iar un dezvoltator poate lucra ȋn fișierul .cs, ambele fiind legate una de cealaltă. Acest concept desparte codul aferent interfeței utilizator de logica de business a aplicației.

II.2.9 Procesul de publicare a aplicației

Când o aplicație Silverlight este compilată, fișierul XAML impreuna cu partea de code-behind și toate celelalte resurse sunt transformate ȋn ansambluri .NET care sunt condensate folosind ZIP și stocate ȋntr-un fișier XAP.

Fișierul XAP poate fi apoi găzduit ȋntr-un server Web și referențiat ca o pagină web declarând obiectul plugin-ului Silverlight. Când utilizatorul navighează la pagina respectivă, fișierul XAP este descărcat ȋn sistemul de calcul al utilizatorului și executat ȋn browser de către runtime-ul Silverlight.

Tot ce rămâne de făcut este dezvoltarea aplicației, preluarea fișierului XAP, inserarea plugin-ului ȋntr-o pagină web, apoi publicarea paginii și a fișierului XAP.

II.2.10 Arhitectura Silverlight

Se poate observa arhitectura esențiala și componentele Microsoft Silverlight. Se observă felul ȋn care interfața utilizator si toate celelalte componente de bază se ȋmbină impreună cu alte componente .Net și Silverlight și ce servicii se pot folosi.

II.3 ASP.NET SignalR

SignalR este o librărie care simplifică procesul prin care unei aplicații i se adaugă funcționalitate real-time. Prin această funcționalitate se ȋntelege faptul că server este capabil să trimită conținut instantaneu spre clienții conectați de ȋndată ce acest conținut este disponibil, fără ca serverul să aștepte ca un client să ceara date noi.

SignalR poate fi folosit pentru adăugarea oricărui fel de funcționalitate real-time. Ȋn timp ce o aplicație de tip chat este deseori folosită ca un exemplu, se pot implementa multe alte funcționalități. De fiecare dată când utilizatorul reȋmprospătează o pagină pentru a vendea conținut nou sau pagina implementează long polling pentru a-și colecta datele, o astfel de aplicație poate fi un candidat bun pentru SignalR. Putem da ca exemple aplicații de monitorizare, aplicații colaborative ȋn care simultan se ȋntâmplă ceva.

SignalR creaza un nou tip de aplicații web care necesită o frecvență mare de actualizare de la server, cum ar fi aplicațiile real-time de gaming.

SignalR oferă un API simplu pentru crearea de proceduri server – client numite RPC care vor apela funcții JavaScript pe partea de client și un API pentru management-ul conexiunii precum evenimente pentru conectare sau deconectare sau pentru conexiunile ȋn grup.

SignalR se ocupă de managementul conexiunii automat și permite transmiterea de mesaje simultan către toți clienții conectați, precum un chat. Se pot trimite mesaje doar anumitor clienți. Conexiunea dintre clienți și server este persistentă, spre deosebire de conexiunea clasică HTTP care este restabilită la fiecare conexiune.

SignalR suportă funcționalitate „server-push” prin care serverul poate apela metode de pe client ȋn browser folosind Remote Procedure Calls, spre deosebire de modelul cerință-răspuns comun paginilor web din zilele noastre.

Aplicațiile SignalR pot conține sute de mii de clienți folosind Service Bus, SQL Server sau Redis.

SignalR este open source și este disponibil prin GitHub.

II.3.1 SignalR și WebSockets

SignalR utilizează noul transport bazat pe WebSockets acolo unde este disponibil și revine la vechile tipuri de transport acolo unde este necesar. Ȋn timp ce aplicațiile pot fi scrise direct folosind WebSockets, prin SignalR se adaugă aplicației functionalități extra care altfel ar fi trebuit implementate separat. Cel mai important este faptul că aplicația poate fi scrisă ȋn asa fel ȋncât să folosească WebSockets fără să existe grija creării unui cod separat pentru alți clienți mai vechi.

SignalR scapă dezvoltatorul de grija actualizării WebSocket-urilor, deoarece SignalR va continua sa fie actualizat pentru a accepta schimbări ȋn transportul care-i stă la bază, oferind consistență indiferent de versiunile de WebSockets.

II.3.2 Transport și fallbacks

SignalR este o abstractizare a unor transporturi care sunt necesare pentru a se putea realiza o legatură real-time ȋntre server și client. O conexiune SignalR ȋncepe ca și o conexiune HTTP și apoi este promovată la o conexiune prin WebSockets dacă este disponibilă. WebSocket este metoda de transport ideală pentru SignalR din moment ce utilizează ȋn mod cât mai eficient memoria serverului, are cea mai mică latență și cele mai necesare și de baza funcționalități cum ar fi comunicare full duplex ȋntre client și server, ȋnsă are și niște cerințe de sistem mai stricte: WebSockets necesită ca serverul să ruleze sub Windows Server 2012 sau Windows 8 și .NET Framework 4.5. Dacă aceste specificații nu sunt ȋntâlnite, SignalR va ȋncerca să folosească alte modalități de transport pentru a realiza conexiunile.

II.3.3 Transport HTML 5

Acest transport depinde de suportul HTML 5. Dacă browserul clientului nu suportă standardul HTML 5, alt fel de transport va fi folosit.

WebSocket este singurul transport persistent prin care se realizează o conexiune bidirecțională ȋntre client și server, ȋnsă are cerințe stricte, fiind suportat doar ȋn ultimele versiuni de Internet Explorer, Chrome și Mozilla Firefox și este parțial implementat ȋn alte browsere precum Opera și Safari.

Server Sent Events cunoscută și ca EventSource.

II.3.4 Transport de tip cometă

Acest transport este baza pe modelul de aplicație web de tip Comet, ȋn care un browser sau alt client menține o cerere lungă de tip HTTP pe care serverul o poate folosi pentru a trimite date spre client fără ca acesta să le ceară ȋn mod explicit.

Forever Frame (doar pentru Internet Explorer) create un Iframe ascuns care face o cerere către un endpoint de pe server care nu se mai termină. Ulterior serverul trimite ȋn continuu scripturi către client care sunt executate imediat oferind o conexiune real-time ȋntr-un singur sens de la server spre client. Conexiunea de la client spre server folosește o conexiune separată decât cea de la server spre client și precum unei cerinte standard HTML, o nouă conexiune este creată pentru fiecare bucată de informație care trebuie trimisă.

Ajax long polling, long polling nu creează o conexiune persistentă, ȋnsă face o cerere catre server cu o cerință care rămâne deschisă până când serverul răspunde, moment ȋn care conexiunea se ȋnchide și o nouă conexiune este cerută imediat. Acest mod introduce o oarecare latență ȋn timp ce conexiunea este resetată.

II.3.5 Procesul de selecție al transportului

SignalR decide felul ȋn care se va realiza transportul ȋn felul următor:

Dacă browser-ul este Internet Explorer 8 sau mai vechi, long polling va fi folosit.

Dacă JSONP este configurat atunci tot long polling va fi folosit.

Dacă se realizează o conexiune cross-domain asta ȋntâmplându-se dacă endpoint-ul SignalR nu se află ȋn acelasi domeniu ca pagina hostată, atunci WebSocket-urile vor fi folosite bazându-se pe urmatoarele criterii: clientul suportă CORS (Cross-Origin Resource Sharing), clientul suportă WebSockets și serverul suportă Web Sockets. Dacă unul dintre aceste criterii nu este ȋndeplinit se va folosi long polling

Dacă JSONP nu este configurat și conexiunea nu este de tip cross-domain se vor folosi WebSockets dacă atât clientul cât și serverul suportă asta.

Dacă clientul sau serverul nu suportă WebSockets, Server Sent Events va fi folosit.

Dacă Server Sent Events nu este disponibil, Forever Frame va fi folosit

Dacă nu se reusește nici prin Forever Frame atunci long polling va fi folosit.

II.3.6 Conexiuni și Hub-uri

API-ul SignalR conține două modele pentru comunicarea dintre clienți și servere: Persistent Connections și Hubs.

O conexiune reprezintă un simplu endpoint pentru trimiterea de mesaje către un singur recipient sau unui grup. Conexiunea persistentă oferă dezvoltatorului acces direct la protocoalele de comunicare de nivel scăzut pe care SignalR le expune.

Un Hub este un pipeline de nivel ȋnalt construit peste API-ul pentru conexiune care permite clienților și serverului să apeleze metode de pe fiecare ȋn mod direct ca și cum ar fi apelate metode locale. Folosind modelul de conexiune pentru Hubs se permite trimiterea de parametri complexi metodelor apelate

II.3.7 Arhitectură

II.3.8 Cum funcționează un Hub

Când codul de pe server apelează o metodă de pe client, un pachet este trimis către client care conține numele parametrilor metodei care urmează să fie apelată. Când este trimis un obiect ca parametru acesta este serializat folosind JSON. Pe client se caută metoda care corespunde cu parametrii trimiși și va fi executată folosind parametrii deserializați.

Un astfel de apel poate fi monitorizat folosind un instrument precum Fiddler. Un exemplu de pachet arată astfel:

Numele hub-ului este identificat prin parametrul H, numele metodei este idenfiticat prin parametrul M, iar data trimisă este identificată prin parametrul A.

II.3.9 Alegerea unui model de comunicare

Cele mai multe aplicații ar trebui să folosească modelul bazat pe API-ul de Hubs. API-ul de tip Connection poate fi folosit ȋn următoarele circumstanțe:

Formatul mesajului actual trimis trebuie să fie specificat.

Dezvoltatorul preferă să lucreze cu un model de messaging și dispatching decât să folosească un model de invocare remote.

O aplicație existentă deja care folosește modelul bazat pe mesaje este portată spre a folosi SignalR.

II.4. Entity Framework

Entity Framework este o platformă open-source pentru ADO.NET folosită pentru maparea unei baze de date ȋntr-un limbaj de programare orientat pe obiecte, procesul numindu-se „object-relational mapping” prescurtat ORM, parte a platformei .NET.

Entity Framework este un set de tehnologii din ADO.NET care suportă dezvoltarea de aplicații software bazate pe una sau mai multe baze de date. Arhitecții și dezvoltatorii de astfel de aplicații doreau să obțină două obiective diferite. Doreau să modeleze entitățile, relațiile dintre acestea și logica de business și ȋn același timp să lucreze cu engine-ul de date folosit pentru stocarea și reluarea datelor. Datele puteau să fie ȋmpărțite ȋn mai multe medii de stocare, fiecare cu propriul protocol. Chiar și aplicațiile care operează cu un singur mediu de stocare trebuie să-și echilibreze necesitățile sistemului de stocare ȋmpreună cu necesitățile scrierii unui cod eficient și ușor de ȋntreținut.

Entity Framework permite dezvoltatorilor să lucreze cu date ȋntr-un format specific domeniului, precum angajati sau adresele angajatilor, fără ca aceștia să-și facă griji ȋn privința tabelelor din baza de date, a numelor de coloane ȋn care datele sunt stocate. Cu ajutorul acestei platforme, dezvoltatorii pot lucra cu datele la un nivel foarte ȋnalt de abstractizare și pot crea și ȋntreține aplicații de acest gen cu mai puțin cod decât tradiționalele aplicații.

Datorită faptului că Entity Framework este o componentă a .NET Framework, acest tip de aplicații pot rula doar pe sisteme care au .NET framework instalat, ȋncepând cu versiunea 3.5 SP1.

II.4.1 Istoric

Prima versiune de Entity Framework (EFv1) a fost inclusă ȋn .NET Framework 3.5 Service Pack 1 și Visual Studio 2008 Service Pack 1, lansată ȋn 11 August 2008. Această versiune a fost criticată de mulți dezvoltatori.

O a doua versiune numita Entity Framework 4.0 (Efv4) a fost lansată ca parte a .NET 4.0 ȋn 12 Aprilie 2010 ca un răspuns la criticile aduse primei versiuni.

A treia versiune 4.1 a fost lansată in 12 Aprilie 2011, cu suport Code First.

O actualizare a acestei versiuni a fost lansată in 25 Iulie 2011, anumite bug-uri fiind fixate și s-au adăugat noi tipuri de date.

Versiunea 4.3.1 a fost lansată ȋn 29 Februarie 2012 oferind suport pentru migrare. Versiunea 5.0 a fost lansată ȋn 11 August 2012 și viza .NET Framework 4.5.

Versiunea 6.0 a fost lansată ȋn 17 Octombrie 2013 și este acum un proiect open-source licențiat de Apache License v2 și codul sursă este găzduit pe CodePlex folosind Git. Această versiune conține multe ȋmbunătățiri pe partea de code-first.

II.4.2 Arhitectură

Sau o versiune mai simplificată a arhitecturii:

Arhitectura este compusă din următoarele:

Data source specific providers – care abstractizează interfețele ADO.NET când programăm o schemă conceptuală

Map Provider – este un furnizor de baze de date care translatează ierarhia de comenzi Entity SQL ȋntr-un query nativ SQL. Include Store-specific bridge care este componenta responsabilă pentru translatarea ierarhiei generice de comenzi ȋntr-o ierarhie de comenzi specifică mediului de stocare.

EDM parser and view mapping – care preia specificațiile SDL ale modelului de date și felul ȋn care se mapează ȋntr-un model relațional și permite programarea modelului conceptual. Din schema relațională se creează view-uri de date corespunzătoare modelului conceptual.

Query and update pipeline – procesează query-urile, filtrează și actualizează cererile pentru a le converti ȋntr-o ierarhie canonică de comenzi care sunt convertite ȋn query-uri specifice mediului de stocare de către Map Provider.

Metadata services – care se ocupă de toate datele despre entități, relații și mapare.

Transactions – pentru integrarea mediului cu capabilități de tranzacționare. Dacă mediul nu suportă tranzacții, acesta trebuie implementat la acest nivel.

Conceptual layer API – este runtime-ul care expune modelul programatic al schemei conceptuale. Respecte șablonul ADO.NET folosind obiecte de conexiune pentru a face referire către Map Provider, folosind obiecte de comandă pentru a trimite query-uri și pentru a returna EntityResultSets sau EntitySets care conțin rezultatul.

Disconnected components – care stochează local seturi de date pentru a utiliza ADO.NET Entity Framework ȋntr-un mediu conectat ocazional.

Embedded databse – ADO.NET Entity Framework include o bază de date simplă pentru stocarea query-urilor pe partea de client.

Design tools – precum Mapping Designer sunt incluse ȋn ADO.NET Entity Framework și simplifică procesul de mapare a schemei conceptuale ȋntr-o schemă relațională specificând care proprietăți ale unei entități corespund cărui tabel din baza de date.

Programming layer – care expune modelul ca o structură programatică care poate fi folosită de limbajele de programare.

Object services – automat genereaza cod pentru clasele CLR și expun aceleași proprietăți ca și entitățile, permițând instanțierea acestor obiecte ȋn obiecte .NET.

Web services – care expune entitățile ca servicii web.

Servicii de nivel ȋnalt – precum serviciile pentru rapoarte care operează pe entități decât pe date relaționale.

II.4.2 Entity Data Model

Entity Data Model (EDM) reprezintă modelul conceptual al datelor, folosind o metodă de modelare numită la fel Entity Data Model, o versiune extinsă a Entity Relationship model. Model de date descrie entitățile și asociațiile dintre ele.

Schema EDM este exprimată ȋn SDL (Schema Definition Language) care este bazat pe XML. De asemenea maparea elementelor schemei conceptuale ȋn schema de stocare este de asemenea bazată pe XML. Visual Studio ofera un designer de entități pentru crearea vizuală a EDM-ului și specificațiile de mapare pentru acesta. Rezultatul acestui instrument este un fișier XML cu extensia .edmx reprezentănd schema și specificațiile de mapare. Fișierul edmx conține conținut metadata CSDL/MSL/SSDL care poate fi creat și editat manual.

II.4.3 Maparea

Ȋn Visual Studio prompterul pentru Entity Data Model generează inițial o mapare de 1 la 1 ȋntre schema bazei de date și schema conceptuală, ȋn cele mai multe cazuri. Ȋn schema relațională, elementele sunt compuse din tabele, unite prin chei primare și chei de referință. Ȋn contrast, ET (Entity Types) definește schema conceptuală de date.

Entity types reprezintă o agregare de câmpuri multiple, fiecare mapându-se la o anumită coloană din baza de date și poate conține informații din mai multe tabele fizice. Aceste tipuri pot fi legate unul de altul, independente de relația din tabela fizică. Entitățile asemănătoare sunt expuse simultan printr-un câmp a cărui nume denotă relația dintre ele și tranversează relația și se returnează entitatea legată de ea.

Aceste tipuri de entități numite Entity Types formeaza o clasă de obiecte entități, entitățile reprezentând instanțe ale tipurilor de entități. Entitățile reprezintă obiecte individuale care formează obiecte ce ilustrează o parte a problemei pentru care au fost implementate ȋn aplicație.

Schema logică și maparea acestei scheme logice cu schema fizică sunt reprezentate ca un Entity Data Model reprezentând un fișier XML. ADO.NET Entity Framework folosește EDM pentru a realiza maparea permițând aplicației să lucreze cu entități, ȋn timp ce intern se abstractizează utilizarea unor construcții ADO.NET precum DataSet și RecordSet.

ADO.NET Entity Framework realizează join-urile necesare pentru ca o entitate să referențieze informația din mai multe tabele. Când o entitate este actualizată, se verifică din care tabel a venit informația și se folosesc instrucțiuni SQL pentru a actualiza aceste tabele ȋn care datele au fost modificate. ADO.NET Entity Framework folosește eSQL care derivă din SQL pentru a executa query-uri, seturi de operații pentru actualizarea entităților și a relațiilor dintre ele. Aceste query-uri eSQL sunt translatate ȋn limbaj nativ SQL.

Tipurile de entități și seturile de entități formează schema logică EDM ce poate fi expusă ca orice. ADO.NET Entity Framework include Object Service care reprezintă aceste entități sub forma unor obiecte având elementele și relațiile expuse ca proprietăți. De aceea entitățile obiect reprezintă doar un front-end al instanțelor tipurilor de entități ale EDM, care permite programării orientate pe obiecte să le acceseze și să le utilizeze. Similar, alte front-ends pot fi create, care vor expune entitățile prin servicii web sau XML care este folosit atunci când entitățile sunt serializate ȋn transferul pe fir.

II.4.4 Entitățile

Entitățile sunt instanțe ale tipurilor de entități (Entity Types). Ele reprezintă instanțe individuale ale obiectelor (precum angajat sau comanda). Identitatea unei entități este definită de tipul de entitate a cărui instanță o reprezintă, ceea ce ȋnseamnă că un tip de entitate definește o clasa căreia ii aparține o entitate ȋn care sunt definite proprietățile acestei entități.

Proprietățile descriu anumite aspecte ale entității printr-un nume și un tip. Proprietățile unui tip de entitate sunt compatibile cu tipurile sistem utilizate ȋn sistemul DBMS precum si de Common Type System din .NET Framework. O proprietate poate avea un tip simplu (SimpleType) sau un tip complex (ComplexType) și poate conține multiple valori. Toate tipurile de entități aparțin aceluiași spațiu de nume și au o proprietate EntityKey care identifică ȋn mod unic fiecare instanță a tipurilor de entități. Diferitele tipuri de proprietăți se disting astfel:

SimpleType corespunde tipurilor de date primitive precum integer, character, floating point

ComplexType reprezintă o agregare de mai multe proprietăți de tip SimpleType sau ComplexType. Spre deosebire de EntityTypes, ComplexTypes nu pot conține un EntityKey. Ȋn Entity Framework v1 tipurile complexe nu pot fi moștenite.

Toate instanțele entităților sunt găzduite ȋntr-un recipient de entități numit EntityContainer. Fiecare proiect are unul sau mai multe astfel de EntityContainers, care pot referenția entități din mai multe spații de nume. Mai multe entități al unui tip de entitate poate fi stocat ȋntr-o colecție numită EntitySets. Un tip de entitate poate avea multiple seturi de entități.

II.4.5 Legăturile dintre entități

Fiecare două entități pot fi legate una de cealaltă fie printr-o relație de asociere fie printr-o relație de izolare. De exemplu o comandă este legată de un client printr-o relație de asociere ȋn schimb o comandă care conține detalii despre comandă reprezintă o relație de izolare. O relație de izolare poate fi folosită pentru moștenirea dintre entități. Relația dintre două tipuri de entități este specificată de un tip de relație, a carei instanță referențiază instanțe de entități. Ȋn viitoarele versiuni ar putea fi introduse alte tipuri de relații precum relații de compoziție sau identificare.

Tipurile de relații sunt caracterizate de gradul sau numărul de tipuri de entități de care se leagă și multiplicitatea lor. Totuși ȋn primele versiuni ale ADO.NET Entity Framework legăturile erau limitate la o relație bidirecționala. Multiplicitatea definește cât de multe instanțe de entități pot fi legate una de alta. Bazându-ne pe multiplicitate, relațiile pot fi fie de tipul unul la unu, unu la mai multe sau mai multe la mai multe. Legăturile dintre entități sunt numite și numele lor este numit un rol, definind scopul relației.

Unui tip de legătură i se poate asocia o operație și o acțiune, care permite ca anumite acțiuni să fie executate asupra unei entități ȋn evenimentul unei acțiuni care este executată asupa unei entități comune. Unei relații i se poate specifica să execute o acțiune atunci când o operație este executață asupra unei entități asociate. De exemplu la ștergerea unei entități care formează o relație cu o altă entitate acțiunile ce se pot executa sunt:

Cascade care ȋnseamnă ștergerea instanței asociate legăturii si toate instanțele asociate entității șterse.

None nu se ȋntâmplă nimic.

Pentru relațiile de tip asociere care pot avea o semantică diferită la fiecare capăt, se pot specifica acțiuni diferite pentru fiecare capăt.

II.4.6 Limbajul de definire al schemei

ADO.NET Entity Framework folosește un limbaj de definire a datelor bazat pe XML numit Schema Definition Language (SDL), pentru definirea schemei EDM. Limbajul SDL definește tipuri simple de date precum String, Int32, Double, Decimal, Guid, DateTime si multe altele. O enumerație care definește o mapare de valori și nume primitive este de asemenea considerată un tip simplu de data. Tipurile complexe de date sunt create ȋn urma unei agregări de tipuri multiple. O colecție de astfel de proprietăți definesc un tip de entitate.

II.4.7 Interogarea datelor

ADO.NET Entity Framework folosește un limbaj SQL numit Entity SQL care vizează scrierea de interogări declarative asupra entităților și legaturilor dintre entități la un nivel conceptual. Diferă de SQL prin faptul că nu dispune de construcții explicite pentru join-uri deoarece EDM este conceput să abstractizeze partiționarea datelor peste tabele. Interogarea modelului conceptual este facilitată de clasele client EntityClient, care acceptă o interogare de tip Entity SQL.

Entity SQL ȋmbunătățește SQL prin adăugarea unui suport intrinsec pentru:

Tipuri, având ȋn vedere faptul că entitățile ADO.NET sunt fuly typed.

EntitySets, care sunt tratate ca și colecții de entități

Composability, care elimină restricțiile unde pot fi folosite subinterogări.

II.4.8 Funcții canonice Entity SQL

Funcțiile canonice sunt suportate de toți furnizorii de date ai Entity Framework. Ele pot fi folosite ȋntr-o interogare de tip Entity SQL. De asemenea multe metode extinse ȋn Linq to Entities sunt translatate ȋn funcții canonice. Ele sunt independente de orice bază de date. Când un furnizor de date ADO.NET primește o funcție o translatează ȋn instrucțiuni SQL.

Totuși nu toți furnizorii de baze de date oferă aceeași funcționalitate și un set standard de metode. Există diferențe ȋn acuratețea calculelor, de aceea nu toate funcțiile canonice sunt suportate de către toate bazele de date și nu toate funcțiile canonice returnează același rezultat.

II.5. WCF RIA Services

RIA Services este o tehnologie server-side care generează automat obiecte client-side (Silverlight) care se ocupă de comunicarea cu serverul și oferă validare la nivel de client. Principalul obiectiv ȋn interiorul acestei tehnologii este un DomainService, de obicei LinqToEntitiesDomainService care este conectat la un model de tip LinqToEntities.

Când se crează un domain service iar soluția este compilată, se generează pe partea de client o reprezentare a domain service-ului. Această reprezentare are aceeași interfață. Presupunând că se creează un domain service numit „CustomerService” cu o metoda Iqueryable<Customer> GetAllCustomers, când soluția este compilată se generează o clasă ȋn proiectul Silverlight numită CustomerContext care conține o metodă GetAllCustomersQuery. Metoda aceasta poate fi apelată pe partea de client ca și cum ar fi apelată pe server.

Actualizările, inserările și ștergerile urmează un șablon diferit. Când se creează un domain service, se poate specifica dacă se dorește să se activeze funcționalitatea de editare. Metodele corespunzătoare pentru update/insert/delete sunt generate pe partea de server a domain service-ului. Totuși pe partea de client nu există aceste metode. Ceea ce există pe partea de client este o metodă numită SubmitChanges care operează ȋn felul următor:

Pentru actualizări pur și simplu se actualizează proprietătile unei entități care au fost ȋncărcate de pe server.

Pentru inserări se adaugă pe context entitatea nou creată

Pentru ștergere se elimină entitatea de pe context.

Când se finalizează procesul de editare se poate apela metoda SubmitChanges pentru a se salva modificările.

Ȋn ceea ce privește validarea, obiectele de pe partea de server pot fi decorate cu atribute de validare din spațiul de nume Sytem.ComponentModel.DataAnnotations. Când codul este compilat se generează din nou cod pentru obiectele de pe partea de client.

II.6 Windows Communication Foundation

Windwos Communication Foundation este un framework pentru construirea de aplicații bazate pe servicii, componentă a platformei .NET. Folosind WCF se pot trimite date ca și mesaje asincrone de la un anumit endpoint al serviciului către altul. Un endpoint poate fi o parte a unui serviciu cu o disponibilitate continuă gazduit ȋn IIS sau poate fi un serviciu găzduit ȋntr-o aplicatie. Un endpoint poate fi un client al unui serviciu care cere date de la un endpoint al serviciului. Mesajele trimise pot fi simple precum un caracter sau un cuvânt trimis ca XML sau complexe precum fluxuri de date. Un astfel de serviciu poate fi folosit ȋn următoarele scenarii:

– Un serviciu securizat pentru procesarea unor tranzacții business

– Un serviciu care oferă date curente precum rapoarte sau servicii de monitorizare

– Un serviciu de chat care permite comunicarea sau schimbul de date ȋntre doi sau mai mulți clienți

– Expunerea unui flux de lucru implementat folosind Windows Workflow Foundation ca un serviciu WCF.

– O aplicație de tip dashboard care interoghează unul sau mai multe servicii pentru date.

– O aplicație Silverlight care folosește un astfel de serviciu pentru a prelua cele mai recente date.

II.6.1 Caracteristicile serviciului:

Service Orientation – o consecintă a utilizării standardelor de servicii web este aceea că WCF permite crearea de aplicații orientate pe servicii. Aceste arhitecturi orientate pe servicii numite SOA (service oriented architecture) ȋnseamnă recurgerea la servicii web pentru a trimite sau prelua date. Aceste servicii au avantajul că sunt ușor cuplate ȋntre ele și nu hard codate de la o aplicație la alta. Faptul că aceste servicii sunt ușor cuplate implică faptul că orice client creat pe orice platformă se poate conecta la orice serviciu atâta timp cât contractele esențiale există.

Interoperabilitate – WCF implementează standarde moderne ceea ce sporește ideea de interoperabilitate.

Multiple sabloane pentru mesaje – Mesajele sunt schimbate ȋn funcție de mai multe șabloane. Cel mai comun șablon este acela bazat pe cerere/răspuns ȋn care un endpoint cere date de la un al doilea endpoint care ȋi răspunde. Mai sunt și alte șabloane precum cele de transmitere unidirecțională a mesajelor ȋn care un singur endpoint trimite un mesaj fără să aștepte un răspuns. Un șablon mai complex este acela bidirecțional ȋn care două endpoints realizează o conexiune ȋntre ele și ȋși trimit date ȋntre ele, similar cu un program de chat.

Service metadata – WCF suportă publicarea de metadata care descrie serviciul folosind formate standard precum WSDL, XML și WS-Policy. Acest metadata poate fi folosit pentru a genera și configura automat clienți care vor accesa serviciul. Metadata-ul poate fi publicat prin HTTP sau HTTPS sau folosind standardul Web Service Metadata Exchange.

Data contracts – Având ȋn vedere faptul că WCF este construit folosind framework-ul .NET include metode care descriu contractele serviciului. Un tip universal de contract este acela de date. Ȋn esență pe măsură ce se scrie cod pentru construirea serviciului, cea mai simplă metodă de manevrare a datelor este aceea de a crea clase care reprezintă o entitate cu proprietăți. WCF include un sistem cuprinzător de operare a datelor ȋn acest sens. Odată ce au fost create aceste clase care reprezintă datele, serviciul va genera automat metadata care permite clienților să utilizeze tipurile de date create.

Securitate – Mesajele pot fi criptate pentru o securitate sporită sau se poate cere utilizatorilor să se autentifice ȋnainte de a li se permite să primească mesaje. Securitatea poate fi implementată folosind standarde cunoscute precum SLL sau WS – SecureConversation.

Multiple mesaje și codificare – Mesajele pot fi trimise prin unul din multele protocoale de transport. Cel mai comun protocol este acela de a trimite mesaje SOAP prin HTTP. Alternativ, WCF permite trimiterea de mesaje prin TCP, named pipes sau MSMQ. Aceste mesaje pot fi codificate ca text sau date binare. Datele binare pot fi trimise eficient folosind standardul MTOM. Dacă nici unul dintre aceste transporturi sau metode de codificare nu se potrivesc cu nevoile dezvoltatorilor se poate crea o metodă de transport sau codificare personalizată.

Reliable and Queued Messages – WCF suportă schimbul de mesaje prin sesiuni de ȋncredere implementate prin WS – Reliable Messaging si folosind MSMQ.

Mesaje durabile – Un mesaj durabil este un mesaj care nu se pierde din pricina unor distorsiuni ȋn comunicare. Aceste mesaje sunt tot timpul salvate ȋntr-o bază de date. Dacă apare o distorsiune sau ȋntrerupere, baza de date permite restaurarea mesajelor atunci când conexiunea este restabilită.

Tranzacții – WCF suportă tranzacții folosind unul dintre cele două modele de tranzacție: WS-AtomicTransactions găsit ȋn namespace-ul System.Transactions și Microsoft Distributed Transaction Coordinator.

Suport AJAX și REST – WCF poate fi configurat să proceseze date ȋn format XML care nu este ȋnconjurat de un strat SOAP. WCF poate de asemenea fi extins astfel ȋncât să suporte formate specifice XML precum ATOM sau chiar formate non-XML precum JavaScript Object Notation (JSON).

Extensibilitate – Dacă este necesară extinderea unui serviciu, există un numar de entry points care permite particularizarea comportamentului unui serviciu.

Arhitectura

Stratul ce reprezintă contractele este acela ȋn care dezvoltatorii vor crea metode care descriu serviciul.

Contract Service descrie operațiile pe care un serviciu le oferă.

Data Contract descrie tipurile de date care sunt expuse pe partea de client. El definește tipurile de date care vin de la serviciu sau pleacă către serviciu. Tipurile de date precum int, string sunt identificate de către client ȋnsă tipurile complexe de date nu pot fi identificate cum ar fi un tip de dată care reprezintă un Angajat. Folosint ȋnsă DataContracts putem ȋnștiința clientul că folosim un tip de dată Angajat, pentru trimiterea de parametri sau pentru tipurile returnate de metode.

Message Contract – Formatul SOAP prestabilit pentru mesaje este oferit de WCF runtime pentru comunicarea dintre client și serviciu. Dacă nu respectă necesitățile putem crea propriul tip de format pentru mesaje. Aceasta se ȋntâmplă folosind atributul pentru Message Contract.

Policies și Bindings – Specifică condițiile necesare pentru comunicarea cu un serviciu, de exemplu necesitățile privind securitatea ȋn comunicarea cu un serviciu, protocolul și codificarea folosită pentru bindings.

Service Runtime – Descrie comportamentul care poate să apară ȋn timpul rulării unui serviciu:

Throttling Behavior – controlează câte mesaje sunt procesate.

Error Behavior – specifică ceea ce s-a ȋntâmplat când apare o eroare ȋn serviciu

Metadata Behavior – Specifică cum și dacă conținutul metadata este disponibil ȋn exterior

Instance Behavior – Specifică câte instanțe ale serviciului trebuiesc create ȋn timpul rulării.

Transaction Behavior – Permite amânarea tranzacțiilor dacă apare o eroare.

Dispatch Behavior – Controlează felul ȋn care un mesaj este procesat de infrastructura WCF.

Messaging – acest strat este compus din canale. Un canal este o componentă care procesează un mesaj ȋntr-un anumit fel, de exemplu prin autentificarea unui mesaj. Un set de canale este cunoscut și ca o stivă de canale. Canalele reprezintă abstracția de bază pentru trimiterea de mesaje către un endpoint și primirea de mesaje de la acesta. Aceste canale se pot clasifica astfel:

Canale de transport – care se ocupă de trimiterea și primirea de mesaje prin protocoale precum HTTP, TCP și MSMQ.

Canale de protocol – implementează protocoale bazate pe SOAP prin procesarea și posibil modificarea unui mesaj.

Activare și găzduire

Serviciile pot fi găzduite sau executate ca să fie disponibile tuturor clientilor. Un serviciu WCF poate fi găzduit astfel:

IIS – Internet information service care oferă un număr de avantaje. Dacă serviciul folosește protocolul HTTP nu este necesar cod pentru activarea serviciului ci va fi activat automat.

Windows Activation Service – este un nou mecanism de activare parte a IIS 7.0. Pe lângă comunicarea bazată pe HTTP, WCF poate folosi WAS pentru activarea folosind alte protocoale, precum TCP.

Self-Hosting – Serviciile WCF pot fi găzduite ȋntr-o aplicație consolă, WinForms sau WPF.

Windows Service – WCF poate fi găzduit ca un Serviciu Windows, fiind sub control SCM ( Service Control Manager).

III. Concluzii

Aplicația prezentață implementează o soluție pentru facilitarea comenzii de mâncare ȋn orice societate comercială care urmează să implementeze o astfel de soluție.

Soluția constă ȋntr-o aplicație mobilă nativă Windows Phone și o aplicație web cu rol administrativ folosită ȋn prealabil de persoana sau persoanele ȋntrebuințate cu responsabilitatea de a comanda mâncare pentru angajați.

Aplicația mobilă a fost realizată pe platforma Windows Phone 8.x care vine cu un spectru larg de noi funcționalități față de versiunile anterioare ale platformei, o impresie și un aspect mai rafinat, care ȋncepe să ocupe poziții cât mai bune ȋn rândul celorlalte platforme precum iOS, Android sau BlackBerry.

Aplicația web este realizată folosind Silverlight care este o platforma puternică pentru dezvoltarea unor aplicații atât web cât și mobile care oferă utilizatorilor experiente captivante și interactive, fiind compatibilă cu o suită de browsere web, sisteme de operare și dispozitive, aducând un plus de interactivitate conceptului de pagină web.

Aplicatia cu numele „FoodOrder” facilitează comanda de mancare ȋntr-o companie permițând administrarea ȋntregului proces de comandă a mâncării pentru angajații unei companii. De la alegerea unui meniu de la unul din furnizorii prezenți ȋn sistem, până la adăugarea și monitorizarea unui depozit ȋn lei a fiecărui angajat și până la trimiterea și confirmarea comenzii.

Ca și dezvoltări ulterioare care ar putea fi aduse aplicației ar fi un sistem de plată ȋn timp real la plasarea comenzii și ȋncheierea unei ȋnțelegeri cu diverși furnizori care ar putea folosi ȋn mod direct partea de administrare web pentru procesarea comenzilor.

IV. Bibliografie

http://en.wikipedia.org/wiki/.NET_Framework

http://msdn.microsoft.com/en-us/library/windows/apps/hh464925.aspx

http://www.ubelly.com/2011/09/metro-style-design-and-principles/

http://www.codeproject.com/Articles/200028/Introduction-to-Microsoft-Silverlight

http://msdn.microsoft.com/en-us/library/bb404700(v=vs.95).aspx

http://coreclr.files.wordpress.com/2009/10/silverlight_architecture.pdf

http://www.rau.ro/websites/e-society/lucrari/dragos%20pop%201.pdf

http://www.cio.com/article/128700/10_Things_You_Should_Know_About_Microsoft_s_Silverlight_?page=1&taxonomyId=3039

http://computer.howstuffworks.com/silverlight.htm

http://www.asp.net/signalr/overview/signalr-20/getting-started-with-signalr-20/introduction-to-signalr

http://en.wikipedia.org/wiki/Entity_Framework

Bibliografie

http://en.wikipedia.org/wiki/.NET_Framework

http://msdn.microsoft.com/en-us/library/windows/apps/hh464925.aspx

http://www.ubelly.com/2011/09/metro-style-design-and-principles/

http://www.codeproject.com/Articles/200028/Introduction-to-Microsoft-Silverlight

http://msdn.microsoft.com/en-us/library/bb404700(v=vs.95).aspx

http://coreclr.files.wordpress.com/2009/10/silverlight_architecture.pdf

http://www.rau.ro/websites/e-society/lucrari/dragos%20pop%201.pdf

http://www.cio.com/article/128700/10_Things_You_Should_Know_About_Microsoft_s_Silverlight_?page=1&taxonomyId=3039

http://computer.howstuffworks.com/silverlight.htm

http://www.asp.net/signalr/overview/signalr-20/getting-started-with-signalr-20/introduction-to-signalr

http://en.wikipedia.org/wiki/Entity_Framework

Similar Posts