documentatie-cercetare

43
Universitatea Politehnica Facultatea: Automatica si Calculatoare Master: Managementul si protectia informatiei, Anul I , Sem. I UTILIZAREA TEHNOLOGIILOR JAVA SI SQL IN DEZVOLTAREA ARHITECTURILOR MULTI-TIER - Raport Cercetare - Bucuresti 2014

Upload: lethal11

Post on 13-Nov-2015

225 views

Category:

Documents


6 download

DESCRIPTION

6645644

TRANSCRIPT

Universitatea PolitehnicaFacultatea: Automatica si CalculatoareMaster: Managementul si protectia informatiei, Anul I , Sem. I

Utilizarea tehnologiilor JAVA si SQL in dezvoltarea arhitecturilor Multi-tier - Raport Cercetare -

Coordonator : Student : Sl.dr.ing. Mocanu Stefan Alexandru Mincu Cristian Marian Bucuresti 2014

24

Cuprins :

1. Limbajul de programare Java2. Arhitectura Multi-tier3. Tehnologiile Java utilizate3.1. Swing framework3.2. Spring & MVC framework3.3. Server web java3.4. Tehnologii web incorporate 4. Platforma Android5. Protocoale de comunicare client-server

1. Limbajul de programare Java

Java este o tehnologie inovatoare lansat a de compania Sun Microsystems in 1995, care a avut un impact remarcabil asupra intregii comunitatii a dezvoltatorilor de software, impunandu-se prin calitatii deosebite cum ar fi simplitate, robustete si nu in ultimul rand portabilitate. Denumita initial OAK, tehnologia Java este formata dintr-un limbaj de programare de nivel inalt pe baza caruia sunt construite o serie de platforme destinate implementarii de aplicatii pentru toate segmentele industriei software.

Tehnologia Java este alcatuita dintr-un conglomerat de concepte dintre care amintim : limbajul de programare Java dezvoltat pe baza paradigmei obiect orientate; platforma de dezvoltare Java consituita din masina virtuala Java JVM si setul de pachete de dezvoltare oragnizate in Java Application Programming Interface.

Java este un limbaj de programare de nivel nalt, dezvoltat de JavaSoft, companie n cadrul firmei Sun Microsystems. Dintre caracteristicile principale ale limbajului amintim: simplitate Java este uor de nvat, caracteristicile complicate (suprancrcarea operatorilor, motenirea multipl, abloane) ntlnite n alte limbaje de programare sunt eliminate. robustee, elimin sursele frecvente de erori ce apar n programare prin eliminarea pointerilor, administrarea automat a memoriei i eliminarea fisurilor de memorie printr-o procedur de colectare a 'gunoiului' care ruleaz n fundal. Un program Java care a trecut de compilare are proprietatea c la execuia sa nu "crap sistemul". complet orientat pe obiecte - elimin complet stilul de programare procedural; se bazeaz pe ncapsulare, motenire, polimorfism. uurin n ceea ce privete programarea n reea securitate, este cel mai sigur limbaj de programare disponibil n acest moment, asigurnd mecanisme stricte de securitate a programelor concretizate prin: verificarea dinamic a codului pentru detectarea secvenelor periculoase, impunerea unor reguli stricte pentru rularea programelor lansate pe calculatoare aflate la distanta, etc este neutru din punct de vedere arhitectural portabilitate, cu alte cuvinte Java este un limbaj independent de platforma de lucru, aceeai aplicaie rulnd, fr nici o modificare, pe sisteme diferite cum ar fi Windows, UNIX sau Macintosh, lucru care aduce economii substaniale firmelor care dezvolt aplicaii pentru Internet. Sloganul de baz este: Write once, run anywhere compilat i interpretat asigur o performan ridicat a codului de octei conine o librrie de clase i interfee pentru domenii specifice cum ar fi programarea interfeelor utilizator (JFC, AWT, Swing), programare distribuit (comunicare TCP/IP, CORBA, RMI etc.) permite programarea cu fire de execuie (multithreaded) dinamicitate este modelat dup C i C++, trecerea de la C / C++ la Java fcndu-se foarte uor. face diferena ntre literele mici i mari (este case sensitive) permite dezvoltarea aplicaiilor pentru Internet crearea unor documente Web mbuntite cu animaie i multimedia. Java Development Kit (JDK) este disponibil gratis

n funcie de modul de execuie al programelor, limbajele de programare se mpart n dou categorii : interpretate: instruciunile sunt citite linie cu linie de un program numit interpretor i traduse n instruciuni main; avantaj: simplitate; dezavantaj: viteza de execuie redus; compilate: codul surs al programelor este transformat de compilator ntr-un cod ce poate fi executat direct de procesor; avantaj: execuie rapid; dezavantaj: lipsa portabilitii, codul compilat ntr-un format de nivel sczut nu poate fi rulat dect pe platforma pe care a fost compilat.

Programele Java sunt att interpretate ct i compilate.Codul de octei este diferit de codul main. Codul main este reprezentat de o succesiune de 0 i 1; codurile de octei sunt seturi de instruciuni care seamn cu codul scris n limbaj de asamblare. Codul main este executat direct de ctre procesor i poate fi folosit numai pe platforma pe care a fost creat; codul de octei este interpretat de mediul Java i de aceea poate fi rulat pe orice platform care folosete mediul de execuie Java. Fazele prin care trece un program Java sunt:

Platforme de lucru Java

Limbajul de programare Java a fost folosit la dezvoltarea unor tehnologii dedicate rezolvarii unor probleme din cele mai diverse domenii. Aceste tehnologii au fost grupate in asa numitele platforme de lucru, ce reprezinta seturi de librarii scrise in limbajul Java, precum si diverse programe utilitare, folosite pentru dezvoltarea de aplicatii sau componente destinate unei anume categorii de utilizatori.

J2SE (Standard Edition) Este platforma standard de lucru ce ofera suport pentru crearea de aplicatii independente si appleturi. De asemenea, aici este inclusa si tehnologia Java Web Start ce furnizeaza o modalitate extrem de facila pentru lansarea si instalarea locala a programelor scrisa in Java direct de pe Web, oferind cea mai comoda solutie pentru distributia si actualizarea aplicatiilor Java.

J2ME (Micro Edition)

Folosind Java, programarea dispozitivelor mobile este extrem de simpla,platforma de lucru J2ME oferind suportul necesar scrierii de programe dedicate acestui scop.

J2EE (Enterprise Edition)

Aceasta platforma ofera API-ul necesar dezvoltarii de aplicatii complexe, formate din componente ce trebuie sa ruleze in sisteme eterogene, cu informatiile memorate in baze de date distribuite, etc. Tot aici gasim si suportul necesar pentru crearea de aplicatii si servicii Web, bazate pe componente cum ar fi servleturi, pagini JSP, etc.

Diagrama conceptuala a structurii Java developer Kit

2. Arhitectura multi-tier

Arhitectura multi-tier este o arhitectura client/server cu mai multe niveluri. n acest arhitectur componenta server este la rndul ei client pentru o alt componentserver. Aplicaiile distribuite N-Tier se refer la folosirea oricrui numr de combinaii ntre nivele Hardware i/sau nivele Software cu scopul de a furniza o colecie modularizat de servicii de informaii. Pot exista astfel nivele de: client, interfa, agent, tranzacie, servere de date etc. De asemenea, aceste nivele opereaz ca uniti logice, pe aceeai main sau pe un numr oarecare de maini, acest lucru ducnd la o flexibilitate i scalabilitate crescute ale sistemului. O astfel de abordare a unei aplicaii permite: tot mai mare parte a aplicaiei este eliminat din partea clientului, ducnd astfel la situaia unui thin client; deprtarea clientului de date i prelucrarea lor; nivelul client are ca sarcin doar manevrarea interfeei grafice cu utilizatorul; integrarea diverselor colecii de resurse ntr-un sistem unic.

Aplicaiile distribuite N-Tier pot fi create folosind o larg varietate de limbaje de programare, sisteme de operare i platforme. Scopul unei asemenea arhitecturi este acela de a permite fiecrui nivel al aplicaiei s fie dezvoltat, dirijat, instalat, extins, absolut independent de celelalte nivele.Java, ca limbaj i main virtual, este un nou tip de client n sistemele pe 2 sau mai multe nivele. Deoarece noul client poate rula pe orice computer i sistem de operare, software-ul ncepe s fie scris nu pentru aplicaii pe 2 sau 3 nivele ci pentru N nivele.

Arhitectura Middleware

Arhitectura Middleware reprezint o soluie software pe un nivel intermediar care ofer servicii pentru dezvoltarea aplicaiilor distribuite. Arhitectura Middleware simplifica constructia sistemelor distribuite:

rezolva problemele de eterogenitate faciliteaza comunicatia si coordonarea componentelor distribuite solutioneaza probleme de toleranta la defecte rezolva probleme de securitate.

Diagrama arhitecturii multi-tier

3. Tehnologiile Java utilizate

De la aparitia limbajului Java, bibliotecile de clase care ofera servicii grafice au suferit probabil cele mai mari schimbari in trecerea de la o versiune la alta. Acest lucru se datoreaza, pe de o parte dificultatii legate de implementarea notiunii de portabilitate, pe de alta parte nevoii de a integra mecanismele GUI cu tehnologii aparute si dezvoltate ulterior, cum ar fi Java Beans. Interfata grafica cu utilizatorul (GUI), este un termen cu inteles larg care se refera la toate tipurile de comunicare vizuala intre un program si utilizatorii sai. Aceasta este o particularizare a interfetei cu utilizatorul (UI), prin care vom intelege conceptul generic de interactiune dintre program si utilizatori. Limbajul Java pune la dispozitie numeroase clase pentru implementarea diverselor functionalitati UI, insa ne vom ocupa in continuare de cele care permit realizarea intefetei grafice cu utilizatorul (GUI).

3.1. Swing

Tehnologia Swing face parte dintr-un proiect mai amplu numit JFC (Java Foundation Classes) care pune la dispozitie o serie intreaga de facilitati pentru scrierea de aplicatii cu o interfata grafica mult imbogatita functional siestetic fatta de vechiul model AWT. In JFC sunt incluse urmatoarele:

Componente SwingSunt componente ce inlocuiesc si in acelasi timp extind vechiul set oferit de modelul AWT.

Look-and-FeelPermite schimbarea infatisarii si a modului de interactiune cu aplicatiain functie de preferintele fiecaruia. Acelasi program poate utiliza diverse moduri Look-and-Feel, cum ar fi cele standard Windows, Mac, Java, Motif sau altele oferite de diversi dezvoltatori, acestea putand fi interschimbate de catre utilizator chiar la momentul executiei .

Accessibility APIPermite dezvoltarea de aplicatii care sa comunice cu dispozitive utilizatede catre persoane cu diverse tipuri de handicap, cum ar fi cititoarede ecran, dispozitive de recunoastere a vocii, ecrane Braille, etc.

Java 2D API Folosind Java 2D pot fi create aplicatii care utilizeaza grafica la unnivel avansat. Clasele puse la dispozitie permit crearea de desene complexe,efectuarea de operatii geometrice (rotiri, scalari, translatii, etc.),prelucrarea de imagini, tiparire, etc.

Drag-and-Drop Ofera posibilitatea de a efectua operatii drag-and-drop ntre aplicatiiJava si aplicatii native.

Internat ionalizare Internationalizarea si localizarea aplicatiilor sunt doua facilitati extremde importante care permit dezvoltarea de aplicatii care sa poata fi configuratepentru exploatarea lor in diverse zone ale globului, utilizandlimba si particularitatile legate de formatarea datei, numerelor sau amonedei din zona respectiva.

3.2. Spring MVC

Spring framewaork este o platform pentru dezvoltarea i rularea de aplicaii care poate fi mprit n 2 moduri majore de funcionalitate. n centrul Spring se afl un Kernel care este responsabil cu configurarea, administrarea i imbuntirea componentelor Spring n aplicaii. Pe lang acesta, Enterprise Service Layer ofer funcionalitate i abstracii asupra caracteristicilor enterprise cum ar fi tranzacii, acces de date, mesagerie, acces la distan i altele. Comparativ cu cadre similare bazate pe componente cum ar fi EJB, unul dintre difereniatorii cheie al containerului de baza din Spring este acela c elementele administrate sunt de obicei POJO-uri (Plain Old Java Object) care nu necesit implementarea de interfee speciale sau cunotine despre ciclul de via al containerului. Aceste obiecte sunt configurate folosind principiul Inversion of Control (IoC), principiu ce nseamn c dezvoltatorii nu leag direct obiectele prin cod java, ci se bazeaz pe container pentru crearea, scrierea i administrarea obiectelor. Unele beneficii ale IoC, cnd sunt mbinate cu abstraciile enterprise Spring, includ: Decuplarea componentelor de mediul de execuie; Separarea datelor de configurare de codul aplicaiei; Abilitate facil de a testa componentele n izolare folosind teste pe unitate, sau n combinaie prin teste de integrare, far modificarea codului existent; Abilitatea de a schimba POJO-urile existente printr-o modalitate transparent i declarativ de injectare de funcionaliti n interiorul acestora, cum ar fi suport transparent, securitate, audit, creare de loguri, cache i altele. Toate caracteristicile spring pot fi instalate ntr-un singur container web free cum ar fi Tomcat, ntruct facilitile containerului EJB sunt obionale. ntr-un scenariu web, gruparea clasic este un fisier WAR coninnd fiierele JAR. Componentele majore ale unei aplicaii web Spring clasice includ: Componentele administrate spring: folosind facilitile de configurare n timpul execuiei, orice obiect poate fi administrat de Spring i orchestrat de alte caracteristici spring cum ar fi securitate, suport pentru tranzacii, loguri, i multe altele. Complexitatea legrii componentelor este ridicat din componente i permite dezvoltatorilor s se concentreze la scrierea aplicaiilor n sine. API-urile i funcionalitatea serviciilor spring enterprise Funcionalitatea i abstraciile oferite de Spring asupra variatelor servicii enterprise simplific complexitatea aplicaiei i scade timpul de dezvoltare. Aceste servicii sunt accesibile prin API-uri programatice, sau transparent n momentul n care componentele administrate spring sunt grupate pentru a oferi aceast funcionalitate. Componentele i codul care nu sunt administrat de Spring: Spring este folosit doar pentru a lega i administra obiecte unde se adaug valori concrete. Unele clase de obiecte nu sunt administrate, cum ar fi obiecte de transfer de date, obiecte de domeniu, cod third-party, etc. Aceste obiecte nc mai pot folosi serviciile API enterprise Spring ntr-o manier programatic. Cadre web: MVC-ul Spring reprezint un cadru web integral care este cu uurin legat la o aplicaie spring existent. Spring suport de asemenea orice alt cadru, i include clase de integrare direct pentru Struts, JSF, i alte platforme gata fcute. Orice container web standard poate susine o aplicaie web spring. SpringSource recomand Apache Tomcat care s-a dovedit a fi popular, rentabil, fr cost, sau cu un cost mic de hostare a aplicaiilor bazate pe spring.

Arhitectura springSpring const n 7 module bine definite: Spring AOP Una dintre componentele cheie ale spring este cadrul AOP. Acesta este folosit pentru a oferi servicii enterprise declarative, mai ales ca un nlocuitor pentru serviciile EJB declarative. Cel mai important asemenea serviciu este managementul tranzacional declarativ. Alt utilitate a AOP este de a permite utilizatorilor s implementeze aspecte personalizate, completnd utilitatea OOP-ului cu AOP. Spring ORM Pachetul ORM este legat de accesul la baza de date. Ofer niveluri de integrare pentru mapri obiectual-relaionale populare, incluznd JDO, Hibernate i IBatis. Spring Web Acesta este o parte a modulului spring de dezoltare de aplicaii web care include Spring MVC. Spring DAO Suportul DAO (Data Access Object) n spring are ca rol principal standardizarea accesului de date folosind tehnologii ca JDBC, Hibernate i JDO. Spring Context Acest pachet este construit mprejurul pachetului beans pentru a adauga suport pentru surse de mesaje i pentru ablonul Observer, i abilitatea obiectelor aplicaiilor de a obine resurse folosind un API consistent. Sproig Web MVC Ofer implementrile MVC pentru aplicaii web. Spring Core Aceast component este cea mai important a cadrului spring. Suport injecia de dependene. BeanFactory ofer un ablon de construcie care separ dependenele ca iniializarea, creearea i accesarea obiectelor din logica programului propriu.

3.3 Server web Java

Java Server Faces este un framework folosit pentru dezvoltarea de aplicatii web gazduita in cadrul unui web server. A fost creat de Java Community Process (JPC) format din experti in dezvoltarea de aplicatii web din diferite grupuri, ca: Jakarta Struts, Oracle, Sun, IBM, ATG etc.

Arhitectura aplicaiei cu nivelele aferente: Achiziie Server - Client

JSF face parte din sabloanele Web bazate pe MVC (Model-View-Controller) design pattern. Aplicatiile create folosind framework-ul JSF sunt usor de dezvoltat si de intretinut comparativ cu alte aplicatii create folosind JSP si Servlet.Ce ofera JSF: permite crearea UI folosind componente standard, reutilizabile permite accesarea si manipularea componentelor UI folosind taguri JSP salveaza starea componentelor UI cnd clientul face o solicitare pentru o nou pagin i o restaureaza cnd solicitarea este returnat (asigura persistenta starii la nivel Web) ofera un model de interactiune bazat pe evenimente furnizeaza mecanisme pentru dezvoltarea de componente proprii separa prezentarea componentelor de functionalitate, astfel incat acestea sa poata fi utilizate in pagini HTML, WML, etc simplifica modul de creare a IDE-urilor pentru dezvoltarea de aplicatii Web

Componente JSF: Un set de API pentru reprezentarea componentelor interfeei utilizatorului (UI) i administrarearea strii lor, tratarea evenimentelor i validarea intrrilor, convetirea valorilor, definirea navigarii in pagini, i suport pentru internationalizare i accesibilitate Librarii de taguri JSP folosite la crearea componentelor UI

1. Caracteristi

JSF este un framework orientat pe partea de server, nu pe partea de client. Acest lucru inseamna ca in arhitectura JSF, majoritatea evenimentelor legate de UI management sunt tratate pe partea de server. Un exemplu de framework UI orientat pe partea de client este Swing.O caracteristica importanta a framework-ului JSF este faptul ca se separa tipurile de activitati efectuate la crearea unei aplicatii web: Design - editarea paginilor JSP, HTML Dezvoltare - implementarea logicii aplicatiei Crearea componentelor UI - componente ce vor fi utilizate de designeri pentru realizarea UI Arhitectura - asigurarea fluxului aplicatiei, a scalabilitatii, configurare, etc.

Caracteristici generale pe care functioneaza framework-ul: Definirea regulilor de navigare ntre pagini JSF are propriile componente care faciliteaza navigarea printe pagini si ofera posibilitatea controlului navigarii. Validator este componenta care se ocupa cu validarea datelor de intrare Convertors - JSF converteste valori de tip date si numere in valori ce pot fi afisate cu usurinta (strings) Messages folosite pentru afisarea de mesaje de success/failure utilizatorului Beans se ocupa de logica aplicatie; sunt obiecte de pe partea de server asociate unor UI components folosite in pagini web Event handling JSF simplifica tratarea evenimentelor Internationalizare Custom GUI controls JSF ofera un set de API si taguri associate pentru a crea forme HTML cu interfete complexe

Comparatii intre JSF si Struts: Componente customizate JSF simplifica imbinarea unor componente GUI complexe intr-o singura componenta flexibila; Struts nu ofera acest avantaj Suport mai bun pentru Ajax mai multe librarii third-party au support pentru Ajax ( Apache Tomahawk, Jboss, RichFaces, Oracle ADF, IceFaces). Suport pentru alte tehnologii Struts este limitat doar la HTML si HTTP. Accesarea componentelor beans dupa nume JSF ofera posibilitatea asignarii de nume beans-urilor, iar apoi referirea acestora dupa nume. Controller si bean definitions mai simple JSF nu necesita derivarea claselor controller-ului sau a beans-urilor din anumite clase parinte (ex: Action) sau folosirea anumitor metode (ex. execute) Fisier de configurare mai simplu fisierul faces-config.xml este mai simplu de folosit decat struts-config.xml Foloseste componente, nu actiuni; asemanator cu Swing, diferit de Struts

3. Arhitectura framework-ului JSF

JSF este un User Interface framework orientat pe partea de server. In cazul in care un client face o cerere, cererea ajunge prin intermediul retelei la server, unde framework-ul JSF construieste o reprezentare UI si o afiseaza clientului in mark-up language-ul corespunzator clientului. Userul interactioneaza cu pagina web si submite o cerere de procesare serverului. Framework-ul JSF interpreteaza parametrii cererii, in decodeaza si ii converteste la evenimente apoi le propaga catre logica de tratare a evenimentelor.JSF este unul din framework-urile care se bazeaza pe structura Model-View-Controller(MVC).Ca orice alt framework bazat pe MVC, arhitectura JSF are propriul Front controller, numit FacesServlet. Rolul acestui controller este de gatekeeper.MVC este un model arhitectural folosit in ingineria software. El separa interfata aplicatiilor web in trei parti: model, view si controller, rezultand astfel o aplicatie unde este mai usor de modificat aspectul vizual sau nivelele inferioare ale regulilor de business fara a afecta alte nivele.Datele introduse de user, modelarea lumii externe si feedback-ul visual catre user sunt tratate separat de fiecare componenta a modelului. Controlerul interpreteaza intrarile de la mouse si tastatura si mapeaza aceste actiuni la comenzi care sunt trimise catre model sau/si view pentru a efectua schimbarile corespunzatoare. Modelul prelucreaza unul sau mai multe elemente, raspunde la interogari asupra starii lui si raspunde la instructiuni de schimbare a starii. View-ul controleaza o zona din suprafata de afisat si este responsabil cu prezentarea datelor catre user printr-o combinatie de grafica si text.

Model-ul este responsabil cu reprezentarea datelor si a actiunilor ce opereaza asupra datelor de la nivelul Web al aplicatie. folosit pentru a controla informatiile si a notifica observatorii cand aceastea se modifica. Pe langa controlarea informatiilor si notificarea observatorilor cand starea acestora se modifica, modelul mai este folosit ca o abstractizare a proceselor sau sistemelor din lumea reala. El surprinde nu numai starea unui proces sau a unui sistem, ci si cum acesta functioneaza. View-ul este reponsabil cu prezentarea rezultatelor catre utilizator. View-ul are o relatie de corespondenta de 1 la 1 cu suprafata de afisare si stie cum sa afiseze continutul catre utilizator. In plus, cand modelul se modifica, view-ul automat redeseneaza partea afectata pentru a reflecta modificarile aparute. Componenta View este creata uzual folosind: pagini JSP, taguri proprii, taguri definite de utilizator, JSTL, sabloane Velocity, Transformari XSLT.Controler-ul reprezinta componenta prin care userul interactioneaza cu aplicatia. Controller-ul primeste informatii de la user si instruieste model-ul si view-ul sa execute actiuni bazate pe input-ul primit. In principiu, controller-ul este responsabil cu maparea actiunilor efectuate de user la raspunsul care trebuie oferit de aplicatie. De exemplu, data userul selecteaza un meniu item, controlerul trebuie sa determine cum ar trebui aplicatia sa raspunda acestei actiuni.

Diagrama Model-View-Controller

Modelul, view-ul si controller-ul sunt strans legate intre ele si intr-un continuu contact. Diagrama de mai sus ilustreaza modul de comunicare dintre cele trei componente. Modelul comunica cu view-ul, fara sa stie informatii despre acesta, transmitandu-i notificari asupra schimbarilor intamplate, iar view-ul comunica la randul lui cu modelul, dar acesta stie tipul modelului observat, ceea ce ii ofera posibilitatea sa apeleze metodele modelului. View-ul comunica deaseamenea si cu controlerul, dar acesta nu-i poate apela decat metodele din clasa de baza. Controlerul comunica cu amandoua: model-ul si view-ul si stie tipul ambelor componente, deoarece acesta trebuie sa stie sa raspunda corect la orice input primit de la user. Arhitectura componentelor UI cuprinde cinci tipuri de modele: Modelul claselor UI Modelul de prezentare Modelul de conversie Modelul de tratare a evenimentelor Modelul de validare

Modelul claselor UI descriu functionalitatea componentelor UI prin extinderea clasei UIComponent ( ex. UICommand, UIForm, UIPanel, UIOutput, UIInput, UIMessage, UIColumn, etc.) Implementeaza interfete comportamentale precum: ActionSource, ValueHolder, StateHolder, NamingContainer Nu definesc reprezentarea grafica a componentelor

Modelul de prezentare: Defineste reprezentarea grafica a componentelor UI prin folosirea de obiecte de tip Renderer converteste componente din si in un limbaj markup specific Claselor de tip UIComponent ii pot fi asociate mai multe tipuri de reprezentari

Modelul de conversie: Componentele UI pot avea asociate date, memorate la nivelul serverului intr-un bean Datele componentelor sunt organizate astfel: - model: informatia propriu-zisa, reprezentata printr-un tip de date Java (int, long, String); - prezentare: reprezentarea la nivel de client astfel incat sa permita citirea/editarea informatiei JSF va face automat conversia intre model si prezentare, si invers.

Modelul Event-Listener Interactiunea utilizatorului cu componente UI genereaza evenimente La aparitia unui eveniment, sunt notificate metodele claselor listener inregistrate pentru componenta sursa a evenimentului

Modelul pentru validare: Tipuri de validatori: -standard: referiti prin intermediul tagurilor de validare JSF, include in corpul unui tag unei componente UI; -proprii: validarea din cadrul unei componente bean

4. Limitele framework-ului

Documentatie limitata: in comparatie cu API-urile Servlet si JSP, JSF are foarte putine resurse online, iar incepatori in domeniu considera ca documentatia JSP este confuza si dezorganizata. Mai putin transparenta: in aplicatiile JSF majoritatea activitatii se intampla in spate in comparatie cu alte aplicatii Web bazate pe java Nume de fisiere confuse paginile folosite in JSF se termina in .jsp, dar url-urile folosite se termina in .faces sau .jsf, acestea pot cauza confuzii Performanta scazuta - JSF nu poate fi folosit pentru aplicatii de mare performanta Postback action - fiecare buton sau link activat va avea ca efect o actiune de postback. Destul de problematic este exemplul in cazul in care sunt folosite ferestre modale si o actiune de postback ca avea ca effect inchiderea respetivei ferestre. Componentele de tip dataTable solicita aceleasi date din bean la restore view phase.Daca datele din bean sunt obtinute din baza de date, aceasta va avea impact asupra performatei. Nescalabil - foloseste obiecte de sesiune memoreaza starea componentei peste request. Sunt cazuri in care este costisitoare replicarea variabilei de sesiune5. Utilitatea framework-ului

Cand expertii JSF au inceput sa lucreze la specificatiile JSF, acestia vroiau sa creeze un framework care sa indeplineasca anumite conditii. Sa fie user-friendly sa ofere posibilitatea de a crea aplicatii web prin drag and drop de componente UI (asemanator cu Swing) Sa faca o distinctie clara intre UI component model si afisarea componentelor UI folosind orice tip de client si orice protocol. JSF sa lucreze cu JSP, dar si cu alte tehnologii

3.4 Tehnologii web incorporate (HTML,CSS,Javascript,PHP,XML,SQL)

Limbajul de programare XML : Rolul limbajului de programare n aplicaiile Android este acela de a crea interfee sau un mijloc de interaciune a utilizatorului cu aplicaia devoltata n Java . Cu limbajul XML se realizeaz layout-urile , meniurile , butoanele , afiarea textului dorit pe interfa grafic a aplicaiei. Extensible Markup Language, abreviat XML, descrie o clas de obiecte numite documente XML i, parial, comportamentul unor programe de calculator care le proceseaz. XML este o form restrnsa a SGML (Standard Generalized Markup Language). De asemenea, XML poate fi considerat i un format de stocare a datelor. Prin construcie, documentele XML sunt conforme cu documentele SGML. Documentele XML sunt realizate din uniti de stocare, numite entiti. Un modul software numit procesor XML este utilizat pentru a accesa structura i coninutul documentelor XML. Procesorul XML ruleaz n spatele aplicaiilor care au ca facilitate analizarea i accesarea con-tinutului documentelor XML. De aseme-nea, XML este caracterizat de o specificaie care descrie comportamentul cerut unui procesor XML despre cum trebuie s citeasc datele din documentele XML i ce informaii trebuie s furnizeze aplicaiei n spatele creia ruleaz.

Origini i deziderate

XML a fost dezvoltat de ctre un grup de lucru (XML Working Grup - cunoscut la nceput ca i SGML Editorial Review Board) format sub auspiciile Consoriului World Wide Web (W3C), n anul 1996.

Scopurile proiectate pentru XML sunt:

Trebuie s fie simplu de utilizat pe Internet/Intranet; Trebuie s suporte o mare varietate de aplicaii; Trebuie s fie compatibil cu SGML; Trebuie s fie uor de scris programecare vor procesa documente XML;

Numrul facilitilor opionale din XML sunt reduse la minimum, ideal, la zero; Documentele XML trebuie s poat fi citite uor de ctre utilizatori; Proiectarea XML ar trebui s fie pregtit rapid; Designul XML trebuie s fie formal i concis; Documentele XML trebuie s fie uor de creat.

Problemele apar atunci cnd dorim s schimbm date ntre aceste programe. Trebuie s realizm programe de conversie care s transmit datele de la program la altul, ceea ce nseamn timp, resurse i rata de erori mai mare. Mai mult, sunt cazuri n care datele nu sunt portabile de pe o platform pe alta. De aceea, s-a pus problema gsirii unui format comun de stocare a datelor care s poat fi recunoscut de toate programele i care s fie portabil de pe platforma pe alta. Astfel, a aprut ideea descrierii datelor cu marcaje, Tag-uri. Un exemplu de cod XML utilizat :

Structura logica a documentelor XML :

Prologul este primul element structural ntr-un document XML, optional. Prologul consta din doua componente de baza, de asemenea optionale: declaratia XML si declaratia tipului de document. Declaratia XML identifica versiunea specificatiei XML cu care documentul va fi n conformitate (versiunea analizorului care va parcurge documentul XML. De exemplu, declaratia arata astfel:

O declaratie XML poate contine de asemenea, specificarea setului de caractere utilizat n documente.

n acest caz se utilizeaza setul de caractere UTF-8.Declaratia tipului de document este alcatuita din meta-codul care indica regulilegramaticale ale DTD (Document Type Definition) pentru o anumita clasa de documente. Toate documentele din aceasta clasa, pentru a fi valide, trebuie sa respecte regulile impuse n definirea tipului de document. Tipul de document poate, de asemenea, sa fie precizat ntr-un fisier extern care contine toate partile DTD. Declaratia tipului de document trebuie sa apara dupa declaratia XML si naintea elementului document. De exemplu:

Liniile de cod spun procesorului XML ca documentul este din clasa Cont si se conformeaza regulilor stabilite n fisierul Cont.dtd

Limbajul SQL

SQL (Structured Query Language) este n prezent, unul din cele mai puternice limbaje structurate pentru interogarea bazelor de date relaionale. Este un limbaj neprocedural i declarativ, deoarece utilizatorul descrie ce date vrea s obin, fr a fi nevoie s stabileasc modalitile de a ajunge la datele respective. Nu poate fi considerat un limbaj de programare sau unul de sistem, ci mai degrab face parte din categoria limbajelor de aplicaii, fiind orientat pe mulimi. Foarte frecvent, este utilizat n administrarea bazelor de date client/server, aplicaia client fiind cea care genereaz instruciunile SQL. Lansat iniial de IBM. Standardizat prima dat de ANSI, apoi ISO. Actualmente, ISO 92. Pentru c exist o standardizare a limbajului SQL, multe SGBD (Oracle, Access, Sybase) recunosc principalele instruciuni ale acestuia. Caracteristicile adugate standardului se numesc extensii. De ex, n standard sunt specificate 6 tipuri diferite de date pentru o BD SQL. n multe implementri, aceast list este completat cu o diversitate de extensii. Fiecare implementare se numete dialect. Dialectul ACCSES conine unele particulariti, fiind conceput mai mult pentru crearea interogrilor de selecie.

Exist 3 metode de baz privind implementarea limbajului SQL:

apelare direct (Direct Invocation): const n introducerea instruciunilor direct de la prompter modular (Modul Language): folosete proceduri apelate de programele aplicaie ncapsulat (Embedded SQL): conine instruciuni ncapsulate n codul de program

Instruciunile SQL pot fi grupate n:

instruciuni de definire a datelor, care permit descrierea structurii BD instruciuni de manipulate a datelor: adaug, terge, modific nregistrri instruciuni de selecie a datelor, care permit consultarea BD instruciuni de procesare a tranzaciilor instruciuni de control al cursorului instruciuni pivind controlul accesului la date

n limbajul SQL standardizat de ISO nu se folosesc termenii formali de relaie, atribut, tuplu, ci tabel, coloan, rnd.

Scrierea comenzilor SQL

O instruciuni SQL este format din cuvinte rezervate i cuvinte definite de utilizator. Cuvintele rezervate constituie partea fix i se scriu exact cum este necesar. Cuvintele definite de utilizator reprezint denumirile diverselor obiecte din BD. Dei standardul nu o cere, majoritatea dialectelor cer terminator de instruciune (;). Majoritatea componentelor nu sunt sensibile la tipul de litere (excepie important: cnd datele au caracter literal. Dei SQL este un limbaj cu format liber, o instruciune este mai lizibil dac se utilizeaz indentarea i alinierea. De ex:

fiecare clauz dintr-o instruciune trebuie s nceap pe o linie nou nceputul fiecrei clauze s fie aliniat cu nceputul celorlalte dac o clauz are mai multe pri, fiecare parte trebuie s apar pe cte o linie separati trebuie indentat fa de nceputul clauzei

4. Platforma Android

Android este o platform software i un sistem de operare pentru dispozitive i telefoanemobile bazat pe nucleul Linux, dezvoltat iniial de compania Google, iar mai trziu deconsoriul comercial Open Handset Alliance. Android permite dezvoltatorilor s scriecodgestionat n limbajul Java, controlnd dispozitivul prin intermediul bibliotecilor Javadezvoltate de Google. Aplicaiile scrise n C i n alte limbaje pot fi compilate n cod main ARM i executate, dar acest model de dezvoltare nu este sprijinit oficial de ctre Google.

Lansarea platformei Android la 5 noiembrie 2007 a fost anunat prin fondarea OpenHandset Alliance, un consoriu de 48 de companii de hardware, software i detelecomunicaii, consacrat dezvoltrii de standarde deschise pentru dispozitive mobile. Google a lansat cea mai mare parte a codului Android sub licena Apache, o licen de tip free-software i open source.

Platforma este adaptabila la configuratii mai mari, VGA, biblioteci grafice 2D, biblioteci grafice 3D bazate pe specificatia OpenGL ES 1.0 si configuratii traditionale smartphone.

Software-ul de baze de date SQLite este utilizat n scopul stocarii datelor

Android suporta tehnologii de conectivitate incluznd GSM/EDGE, CDMA, EV-DO, UMTS, Bluetooth si Wi-Fi.

Navigatorul de web disponibil n Android este bazat pe platforma de aplicatii open sourceWebKit.

Software-ul scris n Java poate fi compilat n cod masina Dalvik si executat de masina virtuala Dalvik, care este o implementare specializata de masina virtuala conceputa pentru utilizarea n dispozitivele mobile, desi teoretic nu este o Masina Virtuala Java standard.

Android accepta urmatoarele formate media audio/video/imagine: MPEG-4, H.264, MP3,AAC, OGG, AMR, JPEG, PNG, GIF.

Android poate utiliza camere video/foto, touchscreen, GPS, accelerometru, si grafica accelerata 3D.

Mediul de dezvoltare include un emulator de dispozitive, unelte de depanare, profilare de memorie si deperformanta, un plug-in pentru mediul de dezvoltare Eclipse.

Similar cu App Store-ul de pe iPhone, Piata Android este un catalog de aplicatii care pot fi descarcate si instalate pe hardware-ul tinta prin comunicatie fara fir, fara a se utiliza un PC. Initial au fost acceptate doar aplicatii gratuite. Aplicatii contra cost sunt disponibile pe Piata Android ncepnd cu 19 februarie 2009.

Android are suport nativ pentru multi-touch, dar aceasta functionalitate este dezactivata (posibil pentru a se evita ncalcarea brevetelor Apple pe tehnologia touch-screen ).O modificare neoficiala, care permite multi-touch a fost dezvoltata. Android utilizeaz nucleul Linux, dar, conform Google, nu este sistem de operare Linux, nu are nici un sistem de gestionare a ferestrelor nativ i nici nu suport ntregul set de biblioteci standard Linux. Android OS-Arhitectura

Arhitectura-stiva de layere, alcatuite din mai multe componente de programLayerele sunt: Applications layer Framework services and libraries layer Applications and most framework code executed in a virtual machine layer Native libraries, daemons and services layer Kernel-ul Linux, care include drivere pentru hardware, retea, accesul la fiierele din sistem i comunicarea inter-proces. SDK-ul Android include un set cuprinztor de instrumente de dezvoltare :program de depanare, biblioteci, un emulator de receptor (bazat pe QEMU), documentaie, mostre de cod, i tutoriale Include, de asemenea, Java Development Kit, Apache Ant, i Python 2.2 sau o versiune ulterioar.Mediul IDE este Eclipse (3.2 sau o versiune ulterioar);foloseste Android Development Tools (ADT) Plugin.

Ce este Android OS-Arhitectura-Runtime si aplicatii framework-Dalvik Runtime si aplicatii framework-Dalvik virtual machine si biblioteci Core Java. Bibliotecile Core Java-reprezinta un subset derivat din implementarea Apache Harmony Java. Dalvik virtual machine- execut fiiere cu extensia .dex, provenite din fisiere cu extensia .class. permite crearea de instante multiple ale masinii virtuale simultan,oferind securitate , izolarea instantei, managementul memoriei si suport pentru threading. Aplicatii Framework- gestioneaza funciile de baz ale telefonului, cum ar fi managementul resurselor, managementul apelurilor de voce.Contine urmatoarele blocuri: Activity Content Providers Telephony LocationManager Resource Manager

Metode pentru thread-safe-mode : Android ofer un mecanism pentru inter-comunicare (IPC), folosind Remote Procedure Calls (RPC), n care o metod este apelata de ctre o activitate sau o component a unei aplicaii, dar executata la distan (ntr-un alt proces), returnand orice rezultat napoi la apelant.Stocarea datelor la Android OS : Baza de date - API-ul Android contine suport pentru crearea i utilizarea bazelor de date SQLite. Fiecare baz de date este asociata aplicaiei care o creeaz.Obiectul SQLiteDatabase reprezint o baz de date ce contine metode pentru a interaciona cu acesta - de interogri i gestionarea a datelor. Pentru crearea unei baza de date, se apeleaza rutina SQLiteDatabase.create() i, de asemenea, subclasa SQLiteOpenHelper. Tipuri de fisiere si preferences - Pentru a citi date dintr-un fiier, se apeleaza Context.openFileInput () i se trece numele i pathul fiierului. Returneaz un obiect standard Java FileInputStream. Pentru a scrie ntr-un fiier, se apeleaza Context.openFileOutput () cu numele i pathul fisierului. Returneaz un obiect FileOutputStream. Apelarea acestor metode nu funcioneaza decat pentru fiierele locale Programarea pentru Android

Aplicatiile standard pentru Android se scriu in limbaj Java si sunt compilate in bytecode Dalvik, ceea ce le ofera o viteza medie de executie si acces la cele mai multe biblioteci ale sistemului. Pentru dezvoltarea unor astfel de aplicatii este nevoie de AndroidSDK. In urma compilarii rezulta pachete .apk care pot fi instalate de dispozitiv sau pot fi rulate in dispozitive virtuale (AVD).Aplicatii pot fi dezvoltate si folosind Android NDK (Native Development Kit), care este un set de tooluri pentru crearea de biblioteci din cod C/C++ si pentru incorporarea acestora in pachete .apk. Este recomandata utilizarea NDK nu doar pentru programatorul care are o preferinta pentru C/C++, ci doar acolo unde APIul clasic nu ofera functionalitatile necesare. O alta modalitate de a implementa aplicatii este suita HTML5 +AJAX+CSS. Diversitatea platformelor mobile creste si crearea unei aplicatii presupune dezvoltarea pentru mai multe platforme simultan. Rularea in browser a unei aplicatiiAJAXeste o forma de a contracara aceasta fragmentare. Nu toate aplicatiile sunt insa potrivite pentru aceasta forma de dezvoltare, fiind uneori limitata in termeni de functionalitate si performanta.

5.Protocoale de comunicare client-server

Web services descrie o metoda standard de a integra aplicatii de tip Web folosind standardele XML (Extensible Markup Language), SOAP (Simple Object Access Protocol), WSDL (Web Services Description Language) si UDDI (Universal Description, Discovery and Integration) prin intermediul protocoalelor de Internet. Un serviciu Web (Web Service) este o aplicatie Web de tip client-server, n care un server furnizor de servicii (numit si "Service Endpoint") este accesibil unor aplicatii client (care nu sunt de tip browser) pe baza adresei URL a serviciului. Serviciul Web si clientii si pot rula pe platforme diferite si pot fi scrise n limbaje diferite,deoarece se comunic prin protocoale standard HTTP, XML, SOAP, JSON, s.a. De aceea principalul merit al serviciilor Web este acela c asigur interoperabilitatea unor aplicatii software implementate pe platforme diferite si cu instrumente (framework-uri) diferite. In acelasi timp aplicatiile sunt slab cuplate (loosely coupled), n sensul c mesajele schimbate sunt standard (self-contained) si oricare dintre aplicatii nu presupune existenta la cellalt capt a altor facilitti dect cele continute n standarde.Furnizorul de servicii expune un API pe Internet, adic o serie de metode ce pot fi apelate de clienti. Aplicatia client trebuie s cunoasc adresa URL a furnizorului de servicii si metodele prin care are acces la serviciul oferit (nume, parametri, rezultat). Interfata API este limitat la cteva operatii n cazul serviciilor de tip REST si nelimitat ca numr si ca diversitate a operatiilor n cazul serviciilor de tip SOAP.Diferenta dintre o aplicatie Web clasic si un serviciu Web const n principal n formatul documentelor primite de client si a modului cum sunt ele folosite : ntr-o aplicatie Web clientul primeste documente HTML transformate de un browser n pagini afisate, iar clientul unui serviciu Web primeste un document XML (sau JSON) folosit de aplicatia client, dar care nu se afiseaz direct pe ecran (dect n anumite programe de verificare a serviciilor Web). Pentru comparatie vom folosi exemplul unui client care foloseste un browser pentru a intra pe un site ca s afle rata de schimb ntre dou valute , dar o aplicatie de comert electronic va apela un serviciu Web cu rate de schimb pentru a calcula si comunica clientilor suma de plata n valuta local.Din punct de vedere al tehnologiilor folosite exist dou tipuri de servicii Web:- Servicii de tip REST ( RESTful Web Services), n care cererile de la client se exprim prin comenzi HTTP (GET, PUT, POST,DELETE), iar rspunsurile sunt primite ca documente XML sau JSON;- Servicii de tip SOAP (Simple Object Access Protocol), n care cererile si rspunsurile au forma unor mesaje SOAP (documente XML cu un anumit format) transmise tot peste HTTP. In astfel de servicii furnizorul expune si o descriere a interfetei API sub forma unui document WSDL (Web Service Description Language), care este tot XML si poate fi prelucrat de client. Un client trebuie s cunoasc metodele oferite de ctre Service Endpoint, pe care le poate afla din descrierea WSDL.Serviciile de tip SOAP ofer mai mult flexibilitate, o mai bun calitate a serviciilor si interoperabilitate dect serviciile REST si sunt recomandate pentru un API mai mare oferit clientilor. Serviciile de tip SOAP pot fi combinate pentru realizarea de operatii complexe, ceea ce a condus la o arhitectur orientat pe servicii (SOA=Service Oriented Architecture). In JEE cele dou tipuri de servicii sunt numite JAS-RS (REST) si JAX-WS (SOAP), iar JavaEE Tutorial contine o comparatie ntre avantajele si limitele fiecrei solutii si recomandri privind alegerea uneia sau alteia. Majoritatea serviciilor Web reale sunt de tip SOAP, dar exist si cteva servicii de tip REST notabile : Amazon S3 (Simple Storage Service) pentru memorarea si regsirea de obiecte, reteaua Twitter si alte site-uri de blog, n care se descarc fisiere XML n format RSS sau Atom cu liste de legturi ctre alte resurse.Ca exemple de servicii SOAP larg utilizate sunt servicii pentru rate de schimb ntre diferite valute, servicii bancare pentru verificare si operare n conturi (de ctre aplicatii Web de comert electronic, de exemplu), servicii de memorare si regsire date, s.a.Exist mai multe instrumente software pentru dezvoltarea de servicii Web pe platforma Java, dintre care mai cunoscute sunt: CXF (fost XFire) (Apache) Metro (Sun) pentru servicii SOAP Axis (Apache) Jersey (Sun) pentru servicii RESTSoapUI este cel mai cunoscut instrument pentru simularea unui client de servicii Web (prin afisarea cererilor client si rspunsurilor primite), pentru testarea si dezvoltarea de servicii SOAP si REST.Site-ul Xmethod.com contine o lista de servicii Web (de tip SOAP) publice si gratuite, cu adresele descrierilor WSDL, care pot fi folosite n SoapUI pentru exersarea metodelor oferite.

Servicii Web de tip SOAP

Un serviciu Web de tip SOAP este versiunea modern a unui apel de proceduri la distant (numite RPC=Remote Procedure Call sau RMI=Remote Method Invocation), cu diferenta c datele schimbate ntre client si server sunt documente XML n locul fisierelor binare care respectau si ele anumite conventii (protocolul RMI-IIOP sau CORBA sau alt protocol).Ca si n orice apel de proceduri la distant, o functie (metod) dintr-un calculator (care se execut ntr-o masin virtual Java) apeleaz o functie (o metod) aflat ntr-un alt calculator (n alt masin virtual Java) folosind urmtoarele operatii:- Un soft din masina client transform apelul si parametrii si ntr-un sir de octeti, deci face o serializare a acelui apel (care poate necesita si serializarea parametrilor de un tip clas);- Un alt soft din masina client (numit si proxy sau stub) transmite sirul de octeti rezultat din serializare ctre masina server, folosind protocolul standard HTTP;- Un soft din masina server (numit si ties) receptioneaz apelul serializat;- Un alt soft din masina server transform sirul de octeti ntr-un apel efectiv de metodRezultatul apelului este si el serializat si trece prin aceleasi faze ca si apelul metodei.Serviciile Web de tip SOAP folosesc pentru serializare fisiere text bazate pe XML. XML este folosit pentru a pune tag pe informatii, SOAP este folosit pentru a transfera datele, WSDL este folosit pentru a descrie serviciile si UDDI este folosit pentru afisa servicii disponibile. Folosite in principal de catre business-uri pentru a comunica intre ele si cu clientii, Web services permit organizatiilor sa comunice date fara a cunoaste amanuntit sistemele IT din spatele firewall-ului. Spre deosebire de modele client/server obisnuite, precum sistemul Web Server/Web Client, Web services nu ofera utilizatorului un GUI. Web services furnizeaza date, procese si business logic printr-o interfata programata. Dezvoltatorii pot adauga serviciile web la o GUI (precum o pagina web sau un program executabil) pentru a oferi o functionalitate anume pentru utilizatori. Web services permit diferitelor aplicatii din diferite surse sa comunice intre ele fara cod personalizat, si pentru ca modul de comunicare se face prin XML, Web Services nu sunt independente de sistemul de operare si de limbajul de programare. Spre exemplu, Java poate comunica cu Perl, aplicatii de Windows pot comunica cu aplicatii UNIX. Web API Web API este o extindere in Web Services, al carei scop este de a trece de la serviciile de tip SOAP la comunicatiile de tip Representional State Transfer (REST). Serviciile de tip REST nu necesita API-urile XML, SOAP sau WSDL.Web API-urile permit combinarea mai multor Web Services in aplicatii noi cunoscute si ca mashups.Cand sunt folosite in cadrul Web development-ului, Web API este definit ca un set mesaje HTTP impreuna cu o definitie a structurii mesajelor raspuns, de obicei sub forma de XML sau de JSON (JavaScript Object Notation). UtilizariCele mai folosite sunt RPC, SOA si REST. Remote Procedure Calls (RPC)Web Services prezinta o functie (sau metoda) de apel care este cunoscuta de catre majoritatea programatorilor. De obicei, unitatea de baza a unui Web service de tip RPC este operatia de tip WSDL.Primele unelte Web services au fost focalizate pe RPC, si prin urmare este foarte raspandit.Alte utilizari asemanatoare cu RPC sunt Object Management Groups (OMG), Common Object Request Broker Arhitecture (CORBA), Distributed Component Object Model (DCOM) sau Remote Method Invocation (RMI). Service Oriented Arhitecture (SOA)Web services pot fi folosite pentru a implemente o arhitectura in concordanta cu conceptul de tip SOA, unde mijlocul de comunicare de baza este mesajul, in loc de metode. Se mai numesc si message-oriented services.Web Services de tip SOA sunt folosite de catre marii vanzatori de software si analistii de industrie. Representional State Transfer (REST)REST incearca sa descrie arhitectura care foloseste HTTP sau protocoale asemanatoare prin limitarea interfetei la un set bine cunoscut de operatii (precum GET, POST, PUT, DELETE pentru HTTP). Aici, focalizarea se face pe interactiunea cu resursele de tip stateful, in loc de mesaje sau metode. O arhitectura bazata pe REST poate folosi WSDL pentru a descrie mesajele de tip SOAP peste HTTP si poate fi implementata si fara SOAP.Arhitectura care este utilizata in aplicatii depind de WSurile cu care interactioneaza

1.Daca cunoastem ca unica interfata la WS este prin SOAP, este natural ca arhitectura aplicatiei sa fie definita ca urmarind SOA.

2.Daca WS este RESTful, construirea aplicatiei pentru a urmari principiile REST este adecvat. Fiecare componenta a unei aplicatii poate fi construita intr-o modalitate, iar alta intr-o modalitate diferita .Aplicatia ca intreg orice stil arhitectural care este necesar pt. proiect (client/server, Model-View- Controller MVC, etc.), pe cand componentele urmaresc propriile modele pe cat ai eficient posibil

Administrator

XML (parametrii)

URL (date)

XML (parametrii)

Nivel Achiziie (Java)

Nivel Web Server (Apache, PHP, TOMCAT)

HTML

Nivel Browser / Client (HTML)