SlideShare a Scribd company logo
1 of 53
Download to read offline
Universitatea „Alexandru Ioan Cuza”

               Facultatea de Informatică




 Tehnici de tip mashup pentru
  interacţiuni Web în sisteme
   informaţionale geografice
                        Iaşi, 2007




Candidat: Ecaterina Valică

Coordonator: Lect. univ. dr. Sabin Corneliu Buraga
Cuprins
Cuprins...........................................................................................................................2
2. Tehnologii Web .........................................................................................................4
   2.1 Web 2.0 ................................................................................................................4
      2.1.1 Aspecte generale ...........................................................................................4
      2.1.2 Dezvoltare de Software 2.0...........................................................................9
   2.2 Servicii Web.......................................................................................................12
      2.2.1 Arhitectura orientată spre servicii...............................................................12
   2.3 JavaScript...........................................................................................................15
      2.3.1 Aspecte generale .........................................................................................15
   2.4 AJAX .................................................................................................................18
      2.4.1 Aspecte generale .........................................................................................18
      2.4.2 JavaScript Object Notation .........................................................................20
3. Sisteme informaţionale geografice ..........................................................................22
   3.1 Aspecte generale ................................................................................................22
   3.2 Formate de date..................................................................................................27
      3.2.1 Geography Markup Language ....................................................................27
      3.2.2 Keyhole Markup Language.........................................................................27
      3.2.3 GeoRSS.......................................................................................................28
      3.2.4 GPS eXchange Format................................................................................28
      3.2.5 Microformate ..............................................................................................29
4. Mashup.....................................................................................................................31
   4.1 Aspecte generale ................................................................................................31
      4.1.1 Tipuri de Mashup........................................................................................33
      4.1.2 Provocări, Beneficii, Neajunsuri.................................................................34
   4.2 Studiu de caz: GeoLink......................................................................................36
      4.2.1 Concept .......................................................................................................36
      4.2.2 Analiză şi Proiectare ...................................................................................37
      4.2.3 Detalii de implementare..............................................................................39
      4.2.4 Utilizare.......................................................................................................45
5. Concluzii ..................................................................................................................49
Acronime......................................................................................................................50
Bibliografie…………………………………………………………………………...51




                                                                                                                                 2
1. Introducere
Suntem obişnuiţi de a organiza informaţiile, locurile şi obiectele din jurul nostru.
Avem capacităţi native de a reţine şi actualiza numele zonelor care prezintă interes,
cât şi modul în care putem ajunge în aceste locuri. Totuşi acest număr de locaţii pe
care le putem gestiona reprezintă un număr limitat per individ şi natura acestuia este
una subiectivă.

În zilele noastre conţinutul informaţional din întreaga lume este convertit la o formă
digitală, făcând astfel informaţiile disponibile oricui, oriunde şi oricând. În ultimele
decenii, Web-ul a devenit o componentă esenţială în vieţile noastre, fiind folosit în
cele mai diverse domenii de activitate. Prin intermediul Web-ului, a serviciilor oferite
de acesta, multe dintre activităţile pe care omul le întreprinde pot fi uşurate şi chiar
evident eficientizate.

Web-ul a devenit un sistem distribuit care permite programatorilor să creeze aplicaţii
combinând date şi servicii în moduri originale spre realizarea unor produse
inovatoare.

Pe măsură ce platformele Web încep să se maturizeze se dezvoltă un număr mare de
tehnologii care duc aplicaţiile actuale la un nivel nou de putere şi accesibilitate.
Hărţile interactive devin din ce în ce mai prezente în aplicaţiile Web moderne. Două
dintre domeniile cele mai evidente în care această tehnologie are un mare impact sunt
turismul şi piaţa imobiliară. Deşi majoritatea aplicaţiilor Web din ziua de astăzi ar
putea beneficia de un sistem cartografic integrat, dezvoltatorii se izbesc de
complexitatea integrării unui sistem geografic de baze de date.

Hărţile interactive, care să comunice în timp real cu un server, au fost considerate
dificil de realizat până la apariţia tehnologiilor recente ca Google Maps şi Ajax.

Convergenţa dintre SOA/Client şi aplicaţiile de tip mashup va duce la realizarea de
unelte de dezvoltare care vor facilita transferul de servicii între graniţele interne ale
organizaţiilor. Informaţia devenind total accesibilă va permite arhitecţilor,
dezvoltatorilor şi utilizatorilor să pună în spaţiul Web orice idee.




                                                                                       3
2. Tehnologii Web
2.1 Web 2.0
     Web-ul pune la dispoziţie un sistem global şi standardizat de comunicare
multimedia, informaţiile fiind organizate asociativ şi distribuite în funcţie de cererile
utilizatorilor.

   Web-ul se îndreaptă de la o colecţie descentralizată de situri Web către o platformă
computaţională ubicuă. Acest nou concept îl întâlnim sub denumirea de Web 2.0.

     Web 2.0 doreşte să ofere suport pentru realizarea de marcaje definite de utilizatori,
manieră deschisă de participare, grad ridicat de descentralizare a datelor şi a
serviciilor existente, încredere radicală şi interacţiune tot mai bogată şi complexă cu
utilizatorul. Mai mult, utilizatorii actuali doresc flexibilitate, internaţionalizare,
calitate, funcţionalitate, utilizabilitate, adaptabilitate şi consistenţă.

    Momentan, suntem martorii unei tranziţii în care Web-ul este văzut mai mult ca o
platformă software, în care utilizatorul îşi controlează propriile date, punându-le în
mod uzual la dispoziţia altora, prin intermediul unor instrumente colaborative.
Asistăm la proliferarea de servicii specializate, acestea putând fi invocate într-o
manieră transparentă, de către oricine.

2.1.1 Aspecte generale
Principalele competenţe ale unei aplicaţii Web 2.0:

        Oferirea de servicii, nu de pachete software, cu o scalabilitate eficientă cost;
        Controlul asupra surselor de date, care sunt îmbunătăţite pe măsură ce mai
        mulţi utilizatori le folosesc;
        Încredinţarea utilizatorilor ca co-dezvoltatori;
        Utilizarea inteligenţei colective;
        Permiterea de auto-serviciu (self-service) şi participare pentru client;
        Distribuirea de software pentru mai multe dispozitive;
        Descentralizare radicală;
        Mixarea datelor din surse de calitate, combinând micro-conţinut pentru a oferi
        noi funcţionalităţi;
        Comportament emergent: funcţionalitatea poate fi reutilizată, remixată,
        agregată;
        Interfeţe utilizator intuitive, modele de dezvoltare şi modele de afacere.

    Ideea centrală a Web 2.0 este aceea a manipulării inteligenţei colective,
posibilitatea utilizării de lucruri şi idei pe care ceilalţi le consideră ca fiind folositoare,
interesante.

   Se generează conceptul de sit Web care să fie întreţinut de către comunitate şi care
să ofere acesteia serviciile dorite. Funcţionalităţi de genul self-service îl fac pe


                                                                                             4
utilizator să aibă încredere în informaţiile pe care le stochează, să depună timp şi
răbdare pentru îmbunătăţirea serviciilor de care beneficiază. Acest lucru nu arată
numai puterea utilizatorilor în cadrul Web ci demonstrează şi interesul general pentru
software-ul online de calitate, care beneficiază de un „marketing viral”.

    Din moment ce majoritatea conţinutul disponibil este generat de către utilizator se
impune un anumit factor de control şi proprietate, astfel încât dacă utilizatorilor le este
refuzat controlul asupra propriilor date, aceştia vor schimba respectivul furnizor
pentru unul care le va oferi această facilitate.

     Un serviciu de acest gen devine din ce în ce mai puternic cu cât mai mulţi
utilizatori în folosesc, încadrându-se astfel în acea „arhitectură a participării”.

    Una din promisiunile Web 2.0 era aceea de piese de dimensiuni reduse, slab
interconectate. Acest aspect este benefic deoarece reduce complexitatea aplicaţiilor şi
efortul de integrare.

    Dezvoltarea mashup-urilor este o dovadă că acest model de integrare aduce
îmbunătăţiri modelului de programare, totul fiind datorat sutelor de API-uri
disponibile ce pot fi combinate şi utilizate pentru ca rezultatul să aducă mai multă
valoare decât suma componentelor.

   Comunitatea Web 2.0 a arătat că există metode mai flexibile de a conecta sisteme
decât cele în care se impunea control absolut şi constrângeri rigide. Web 2.0 si
mashup-urile ne oferă o nouă perspectivă asupra arhitecturii orientată-servicii.

    Unul dintre conceptele cheie când vine vorba de Web 2.0 este ideea de a
transforma aplicaţiile în platforme şi de a focaliza atenţia pe crearea de software prin
intermediul serviciilor (fie că e vorba de interfeţe utilizator sau servicii Web).




                          Figura 2.1: Web 2.0 ca platformă [15]

    Web 2.0 se concentrează asupra utilizării de integrări lightweight cu scopul de a
avea o barieră inexistentă în crearea comunităţilor şi pentru a permite schimbul dual
de tehnologie pentru crearea ecosistemelor şi a relaţiilor dintre acestea.


                                                                                         5
Un sit Web 2.0 poate folosi unele din tehnologiile următoare [36]:

       Aplicaţii Internet complexe (RIA – Rich Internet Applications), realizate
       opţional prin Ajax;
       Utilizare CSS (Cascading Style Sheets) pentru partea de prezentare;
       Marcaje XHTML valide, îmbunătăţite prin utilizarea microformatelor;
       Agregarea datelor în format RSS/Atom;
       URL-uri curate şi semnificative;
       Utilizarea extensivă de folksonomi (în formă de taguri);
       Utilizarea de software wiki complet sau parţial, pentru generarea de platforme;
       Utilizarea de software open-source complet sau parţial;
       XACML (eXtensible Access Control Markup Language) sau SOAP pentru
       controlul acces-ului între organizaţii şi domenii;
       Publicare prin blog-uri;
       Mashups - aplicaţii Web hibridă;
       REST (Representational State Transfer) sau XML Web Service API.

    Ajax este o tehnologie extrem de puternică care pune la dispoziţie aplicaţii
puternice, cu aceeaşi flexibilitate cu programele care rulează pe computer, fără a avea
nevoie de nimic mai mult decât un simplu navigator Web. Ajax necesită pentru a
putea funcţiona utilizarea serviciilor Web, mai ales a celor pure HTTP. Astfel, Ajax
este aliniat cu conceptele prezente la ora actuală în Web şi reprezintă o soluţie naturală
pentru multe probleme întâlnite în software-ul online.

    Asta ne aduce la arhitectura informaţiei stilului Web. Informaţia este stocată în
XML şi referenţiată prin ierarhii URL. Inabilitatea de a accesa informaţia prin
intermediul unui URL împiedică indexarea la nivel de motor de căutare, posibilitatea
de a integrare sau accesa acea informaţie.

    Astfel, modul Web 2.0 de testare, design sau menţinere a software-ului prin
combinarea de componente ca simple incluziuni JavaScript (mashup pe partea de
client) sau servicii Web în stil REST, facilitează dezvoltarea Global SOA (Service-
Oriented Architecture) sau a sferei mashup-urilor.

    Serviciile Web lightweight şi modelele ca RSS şi Atom creează un ecosistem
informaţional care nu cunoaşte limite din punct de vedere al consumului şi al
integrării.

    O posibilă problemă care poate intervine este aceea a securităţii aplicaţiilor Ajax
din cauza codului disponibil şi uşurinţei cu care acesta poate fi manipulat.

    Aplicaţiile de acest gen sunt folositoare pentru că acestea sunt disponibile de
fiecare dată când sunt necesare, indiferent de locaţie, oferind mereu informaţia
căutată.

     O îmbunătăţire a acestui model poate fi adusă de publicarea informaţiilor într-un
loc foarte social. Astfel, aceasta devine mult mai valoroasă şi completă, prin
interacţiunea utilizatorilor care pot să-i adauge valoare prin comentarii, tag-uri,
agregări, bookmarking, etc. Informaţia devine o componentă din inteligenţa colectivă
a Web-ului.


                                                                                        6
Unul dintre punctele tari Web 2.0 este acela de a încuraja protocoalele deschise şi
API-urile pentru răspândirea informaţiei prin servicii, în loc de pagini statice, pentru a
lucru permite informaţiei în stare brută pe care utilizatorii o adaugă aplicaţiilor Web
2.0 să fie distribuită pentru reutilizare. Acest lucru a dus la dezvoltarea rapidă a
fenomenului de mashup şi dezvoltarea unui lanţ dinamic de distribuire de informaţie,
denumit Global SOA şi caracterizat de tehnologii ca RSS, REST.

    Web 2.0 asigură lumii SOA tehnici lightweight de construire de soluţii scalabile,
valoroase, atât în interiorul, cât şi în exteriorul firewall-urilor.

    SOA devine astfel coloana vertebrală a fenomenului mashup, realizând aspectele
dificile în fundal şi rezolvând problematici ca versiuni multiple, transformări de date,
etc. Mashup-urile sunt aflate la un nivel superior, bazându-se pe arhitecturi dinamice.




                  Figura 2.2: Imagine de ansamblu asupra Web 2.0 [7]

    Aplicaţiile de tip situational software, sunt aplicaţii instante ce pot fi asamblate
just-in-time prin utilizarea unor palete de servicii şi feed-uri disponibile în cadrul Web
sau în cadrul întreprinderii. Se numesc situaţionale deoarece pot fi create doar când o
anumită situaţie apare şi distruse când nu mai sunt necesare. Acest tip de aplicaţii
poate fi inclus în conceptul Web 2.0 de self-service, consumatorul realizând soluţii din
concatenarea blog-urilor, wiki-urilor, adăugând feed-uri, widget-uri şi servicii Web.
Această soluţie este încadrată în managementul personalizat al relaţiilor cu clientul în
care utilizatorii obţin ceea ce îşi doresc ajutându-se singuri şi creând respectiva
aplicaţie. Toate aceste realizează aplicaţii mult mai rapide, ieftine, mai uşor de
refolosit şi menţinut.




                                                                                        7
Pentru realizarea acestui tip de aplicaţie este nevoie de:

       Servicii, nu aplicaţii monolitice. Se realizează o conexiune mult mai strânsă
       între produs şi consumator. Se urmăreşte succesul serviciilor focalizate pe
       adopţia cerinţelor utilizator, date la cerere, costuri scăzute, ridicarea
       infrastructurii publice şi feedback între furnizor şi consumator.
       Comunitate. Crearea unei locaţii virtuale în care utilizatorul să poată adăuga
       informaţii personalizate (tag-uri, comentarii, ratings) şi care să ofere
       caracteristici sociale şi mecanisme de feedback.
       Simplitate. Uşurinţa de folosire a unui program este un aspect cheie. Api-urile
       actuale se concentrează asupra experienţei utilizator şi procesul de mixare de
       informaţii devine simplu pentru dezvoltator datorită uşurinţei de utilizare a
       API-urilor respective, cât şi a formatelor simple de transport a informaţiei ca
       RSS sau Atom.

     Există cantităţi masive de conţinut generat utilizator creat non-stop. Acest lucru
face ca un utilizator să devină cea mai importantă componentă a Web-ului. Apoi este
ecosistemul mashup care îşi atinge din ce în ce mai mult scopul de a oferi
utilizatorilor o experienţă ghidată, prin alegerea informaţiei prezentate. Blog-urile şi
wiki-urile sunt aproape în totalitate self-service, ceea ce arată că transferul puterii de
creare de software în mâna utilizatorilor este în desfăşurare.

   Inovaţia va veni din partea utilizatorilor ce deţin timpul, energia, creativitatea,
motivaţia şi contextul pentru a realiza software mai bun, în felul lor. Şi aceasta devine
productivă când este împărţită, încurajând şi ceilalţi utilizatori de a aduce
îmbunătăţiri.

    RSS, Ajax au bariere foarte mici în reutilizare. Majoritatea software-ului folositor
este open source. Opţiunea navigatoarelor „View Source” permite oricărui utilizator
să înţeleagă şi refolosească componentele folositoare întâlnite. RSS a dat utilizatorului
posibilitatea de a selecta informaţia pe care doreşte să o vizualizeze.




                                                                                        8
2.1.2 Dezvoltare de Software 2.0

Satisfacerea consumatorilor reprezintă un scop al afacerilor online şi offline. Acest
lucru este posibil în modelul Web 2.0 datorită aplicaţiilor, şabloanelor care au fost
introduse, oferind potenţialul de prezentare clienţilor de produse mai bune, mai
complete şi într-un mod cât mai rapid.




     Figura 2.3: Redarea controlului utilizatorilor pentru realizarea de aplicaţii [13]

    Având în vedere că numărul de potenţiali clienţi depăşeşte mereu numărul de
dezvoltatori, este greu de oferit consultanţă, mai ales într-un mod individual. Mediul
de interacţiune fiind cel online, se pot oferi acum unelte utilizatorilor pentru a rafina,
adapta şi contribui la produsele şi serviciile oferite, adăugându-le acestora inovaţie.
YouTube este poate cel mai bun exemplu de co-dezvoltare din partea clienţilor (mai
mult de 65.000 fişiere video adăugate în fiecare zi). Dezvoltarea de Software 2.0
înseamnă în primul rând colectarea de contribuţii utilizator, realizând o bază de date
de „intenţii” şi clasificând feedback-ul primit pentru a identifica cel mai bun şi cel mai
popular conţinut sau capabilitate.

    Acest transfer de dezvoltare de la instituţii către utilizatori, transformă pe
beneficiari mai mult în mediatori şi facilitatori, decât în creatori sau deţinători. Acesta
reprezintă un aspect al aplicaţiilor aflate în stadiul de beta continuu, concept care
reflectă că produsele şi serviciile online nu sunt niciodată complete sau în formă
finală, mereu fiind adăugat conţinut şi funcţionalitate.




                                                                                          9
Dezvoltarea de Software 1.0      Dezvoltarea de Software 2.0
Canal de interacţiune     Telefon, e-mail, contact         Web, e-mail, IM
cu utilizatorul           personal (face-to-face)
Sursa de inovaţie         Organizaţiile                    Clienţii
Ciclul inovaţiei          Luni, Ani                        Minute, ore, zile
Creatori de conţinut      Producători interni              Producători externi
Mecanisme feedback        Studiu de piaţă, chestionare,    Analiză, cereri online,
                          reclamări, grupuri de interes    schimbări produse de clienţi
Stilul clienţilor         Controlat, proces bine definit   Spontan şi haotic
Proces de dezvoltare      Desing Preconceput               Mai mult emergent
Arhitectura               Închisă, neflexibilă             Deschisă, uşor de extins,
produsului                extensiilor                      creată pentru remixare şi
                                                           mashup
Cultura de                Ierarhică, centralizată,         Decentralizată, colaborativă,
dezvoltare                realizată de experţi             inteligenţă colectivă
Testarea produsului       Intern, dedicată grupului de     Utilizatori ca testeri
                          test, testeri selectaţi
Suport pentru client      Serviciu client                  Comunitate de useri
Promovare Produs          Publicitate şi marketing într-   Propagare virală, publicitate
                          o singură direcţie               generată de utilizator şi
                                                           bidirecţională
Relaţii client            Cumpărător extern                Partener (consumator ca
                                                           producător)
Deţinerea produsului      Instituţie, acţionari,           Întreaga comunitate de
                          management executiv              utilizatori
Proces de parteneriat     Formal, explicit, mediat         Ad hoc, parteneri online,
                                                           nemediat


Dezvoltarea               Heavyweight, formal,             Lightweight, informal,
produsului                complex, costisitor,             simple, gratuit, rapid, orientat
                          consumator de timp, orientat     consumator
                          întreprindere
Avantaje                  Produse superioare, avantaje     Personalizare, popularitate,
competitive               de branding, preţ                simţ de proprietate, audienţă

                 Tabel 2.1: Tranziţia către Dezvoltarea de Software 2.0 [13]

Astfel produsele Web 2.0 ar trebui să ofere:

        Lansări frecvente ce au ca beneficii înlăturarea erorilor nou găsite, ceea ce
        face experienţa pe care o are utilizatorul să fie într-o evoluţie lină;
         Bucăţi mai puţin specialitate, slab interconectate, ce permit realizarea
        schimbărilor într-un mod rapid şi neriscant;
        Modele de programare lightweight prin utilizarea de limbaje dinamice şi
        formate de date simple ca RSS, REST, ce fac dezvoltarea, integrarea, testarea şi
        refolosirea simple şi eficiente;
        Feedback în timp real şi utilizarea informaţiilor primite de la utilizator pentru
        îmbunătăţirea aplicaţiilor.


                                                                                           10
Un astfel de produs va fi criticat în funcţie de următoarele criterii [35]:

        Aplicabilitate (35%) – evaluarea soluţiei în mod realist în funcţie de problema
        pe care trebuia să o rezolve. Ar trebui să deţină un răspuns pozitiv la
        următoarele întrebări: Vor folosi angajaţii vreunei companii această aplicaţie?
        Aduce îmbunătăţiri productivităţii, stilului de viaţă? Poate obţine finanţare
        pentru dezvoltări ulterioare?
         Funcţionalitate (35%) – testarea soluţiei pentru asigurarea corectitudinii.
        Există funcţii care nu merg? Sunt mesaje de eroare generate? Sunt întâlnite
        erori serioase? Împiedică erorile utilitatea aplicaţiei? Există funcţii care aduc
        inovaţie?
        Design (20%) – evaluarea uşurinţei de folosire, simplitatea de afişare a
        informaţiilor, manevre de navigaţie, grade de efort de înţelegere. Navigarea se
        realizează cu uşurinţă şi rapiditate? Utilizează metode intuitive? Sunt
        aplicabile instrucţiunile minimale?
         Ansamblul soluţiei (10%) – se testează dacă aplicaţia îndeplineşte scopurile
        pentru care a fost creată şi modalităţile de realizare a acestora. Confruntarea se
        face la nivel de documentaţie Rezumatul lucrării descrie concis scopul
        aplicaţiei? Este prezentat modul de utilizare al aplicaţiei? Sunt toate funcţiile
        descrise?

Alte criterii de jurizare ale unei aplicaţii pot fi:

        Interes (25%) – soluţia prezintă interes din punct de vedere al consumatorilor?
        Utilitate (25%) – rezolvă o problemă existentă pe piaţă?
        Unicitate (20%) – oferă o funcţionalitate indisponibilă până atunci?
        Uşurinţă (20%) – soluţia este uşor de utilizat?
        General (10%) – este o aplicaţie care ar putea fi cumpărată?




                                                                                       11
2.2 Servicii Web
O aplicaţie Web reprezintă o colecţie interconectată de pagini Web cu un conţinut
dinamic, menită să ofere o funcţionalitate specifică utilizatorilor.

    Serviciile Web reprezintă o particularizare a aplicaţiilor Web. Principala diferenţă
este dată de faptul că serviciile Web nu sunt destinate direct utilizatorilor umani, ci
sunt destinate „consumării” sau exploatării, de către alte aplicaţii. De asemenea, un
serviciu Web poate fi consumat de alte servicii Web pentru a asigura un plus de
funcţionalitate şi integrare. Serviciile Web sunt deci componente care oferă capacitate
de procesare adiţională, aplicaţiilor consumator.

    Serviciile Web implică utilizarea unor protocoale de comunicaţie, având asociate
descrieri ale datelor procesate şi alte interacţiuni cu aplicaţii terţe. O altă caracteristică
de bază a serviciilor Web derivă din necesitatea de interoperabilitate (capacitatea de
colaborare între componente, aplicaţii şi sisteme eterogene). Un serviciu Web poate fi
considerat ca fiind compus dintr-o colecţie de funcţii împachetate, interpretate ca o
entitate unică şi publicate în spaţiul WWW cu scopul de a fi folosite de alte programe.

2.2.1 Arhitectura orientată spre servicii
Arhitectura orientată spre servicii (SOA) impune adoptarea unui stil de dezvoltare de
aplicaţii, considerate drept servicii ce vor fi invocate de alte aplicaţii. SOA presupune
că noile servicii pot fi create pe baza celor deja existente, dar componentele sistemului
în ansamblu trebuie să aibă un grad mare de independenţă.

    Astfel, arhitectura SOA trebuie să suporte între aplicaţii paradigme de comunicare
bazate pe Web, să ofere o localizare transparentă a serviciilor şi să permită adăugarea,
înlocuirea şi eliminarea serviciilor în mod dinamic.

    Prin intermediul SOA, consumatorii de servicii nu sunt dependenţi de ofertanţii de
servicii, putând avea acces la o paletă largă de servicii oferind aceleaşi funcţionalităţi
dorite.

    Pentru a adresa această necesitate serviciile Web trebuie să deţină abilitatea de a
comunica folosind standarde ale industriei precum SOAP şi WSDL, ambele
recomandări ale consorţiului Web. Protocoalele de comunicare trebuie să permită
vehicularea de mesaje oricât de complexe şi interacţiuni avansate între maşinile care
le utilizează, asigurând extensibilitatea, securitatea, fiabilitatea şi performanţa ce pot
surveni.

    Descrierea serviciilor Web (locaţie, operaţiuni, parametri, tipuri de date) se
realizează prin intermediul limbajului WSDL (Web Service Description Language),
dezvoltat de IBM şi Microsoft. Folosind WSDL se pot crea fişiere XML care conţin
seturi de definiţii pentru descrierea serviciilor Web. Conceptual, WSDL constituie o
modalitate de specificare a sintacticii serviciilor Web, nu a semanticii acestora.




                                                                                           12
Înregistrarea şi regăsirea serviciilor Web se realizează prin intermediul
standardului UDDI (Universal Description, Discovery and Integration). Aceasta oferă
utilizatorului o modalitate sistematică şi unitară de a regăsi furnizorii serviciilor Web,
cu ajutorul unui catalog al acestor servicii.

    Mecanismul de invocare a serviciilor Web şi de schimb al mesajelor între client şi
server este descris de un protocol de comunicare, independent de platformă, limbaj de
programare, reţea sau protocol de transport: XML-RPC (XML-Remote Procedure
Call), SOAP (Simple Object Access Protocol).

2.2.1.1 SOAP

SOAP reprezintă un standard ce utilizează paradigma XML-RPC pentru a transporta
mesaje serializate XML într-o manieră extensibilă, utilizabil indiferent de
infrastructura conexiunii şi independent de modelul programatic utilizat de aplicaţie.

    SOAP reprezintă o recomandare a Consorţiului Web. Mesajul SOAP este compus
din trei părţi:

       un plic (envelope) – care defineşte cadrul de lucru pentru a descrie ceea ce
       conţine mesajul şi modul de procesare a acestui conţinut. Datele din corpul
       mesajului pot fi transportate indiferent de protocolul folosit (HTTP);
        un set de reguli de codificare (encoding rules) pentru exprimarea instanţelor
       tipurilor de date definite în aplicaţie;
       o convenţie de reprezentare (reprezentation) a apelurilor de metode
       implementate de serviciul Web şi răspunsurilor furnizate în urma invocării
       acestora.

    SOAP poate specifica o cale de la expeditor la destinatar, via un intermediar
(proxy) opţional, în vederea realizării de dirijări de mesaje.

    SOAP poate fi privit ca fiind un protocol de mesagerie (serializare), cererea
incluzând un obiect-cerere serializat, iar răspunsul stochează un obiect-răspuns
serializat.

2.2.1.2 REST (Representational State Transfer)

Arhitectura REST este o arhitectură de dezvoltare a aplicaţiilor Web, în cadrul căreia
rezultatul unei procesări conduce la returnarea unei reprezentări a unei resurse Web.
Orice accesare a unei reprezentări plasează aplicaţia-client într-o stare care va fi
schimbată în urma unui transfer de date. Principiile REST oferă o abordare diferită de
una în stilul RPC (abordată de protocolul SOAP). În cazul RPC, punctul focal e
reprezentat de mulţimea de operaţii ce pot fi executate, pe când în viziunea REST totul
se axează pe diversitatea resurselor disponibile.

    Ca şi alte tipuri de servicii Web, arhitectura REST este bazată pe conceptul de
resursă. Unui serviciu Web de tip REST îi sunt impuse de anumite constrângeri.




                                                                                       13
Interfeţele sale sunt limitate la protocolul HTTP:

       GET - utilizată pentru a obţine o reprezentare a unei resurse; folosind un URI,
       un consumator recurge la această metodă pentru a regăsi o reprezentare;
       DELETE – utilizată pentru a elimina reprezentările unei resurse;
       POST – utilizată pentru actualizarea sau crearea reprezentărilor unei resurse;
       PUT – utilizată pentru crearea reprezentărilor unei resurse.

   Mesajele utilizează formatul XML, putând fi validate prin intermediul unor
specificaţii precum XML Schema sau RELAX NG.

    Crearea şi utilizarea serviciilor Web de tip REST necesită o infrastructură software
minimală. Astfel, aceasta trebuie să implementeze protocolul HTTP şi o serie de
tehnologii de procesare XML, suportate de cele mai multe platforme li limbaje de
programare. Filozofia serviciilor Web REST este aceea de a nu instala instrumente
suplimentare pentru trimiterea şi primirea de date, ci de a le utiliza pe cele existente.

    Un număr de companii (Google, Yahoo!, Amazon, eBay, etc.) au pus la dispoziţia
programatorilor servicii Web bazate pe REST. În mod obişnuit, clientul trimite o
cerere GET serviciului. Acesta procesează cererea primită şi întoarce rezultatele
obţinute.




                                                                                      14
2.3 JavaScript
 JavaScript a fost creat pentru a adăuga interacţiune paginilor XHTML şi este folosit
de milioane de pagini Web pentru o îmbunătăţire a design-ul, validarea de formulare,
detectarea navigatorului, crearea de cookies, tratarea evenimentelor, scrierea de noi
elemente.

2.3.1 Aspecte generale
JavaScript este un limbaj orientat obiect foarte puternic, portabil, rapid, simplu în
ciuda reputaţiei că nu ar fi potrivit pentru programatorii profesionişti.

    JavaScript este un limbaj interpretat. Deoarece este folosit cu preponderenţă
pentru procesare pe partea de client a aplicaţiilor Web, majoritatea navigatoarelor au
integrate interpretoare JavaScript.

    JavaScript este un limbaj de scripting, cu o sintaxă apropiată de C, având la bază
conceptul de prototip. Mediul gazdă în care este înglobat este navigatorul Web, care
creează obiecte responsabile pentru implementarea modelului DOM.

    În mod uzual, codul JavaScript este înglobat direct în paginile XHTML, prin
intermediul marcajului script sau în fişiere externe cu extensia .js, urmate a fi incluse
ulterior în pagini.

    Nucleul limbajului include elementele de bază ale limbajului: tipuri de variabile şi
constante, operatori, structuri de control, instrucţiuni, reguli pentru definirea funcţiilor
şi obiectelor, funcţii şi obiecte predefinite, etc.

    JavaScript este un limbaj flexibil în ceea ce priveşte datele utilizate. O variabilă
este numele simbolic atribuit unei locaţii de memorie în care sunt stocate date.
Domeniul de accesibilitate al variabilelor şi al constantelor poate fi unul global sau
local, declaraţie facută prin utilizarea cuvântului var, respectiv const. Dacă o variabilă
sau o constantă este declarată în interiorul unei funcţii, ea este numită locală, fiind
accesibilă numai în cadrul funcţiei. Variabilele declarate fără var sunt globale în
întreg programul. Flexibilitatea limbajului se datorează faptului că la declararea
variabilelor nu se cere specificarea tipului de date stocate. În plus, este posibil ca în
script să se modifice tipul datelor stocate în variabile.

   JavaScript este case-sensitive.

    Funcţiile sunt secvenţe de cod care realizează o anumită operaţie şi care poate fi
apelată în mod repetat. Din punct de vedere al modalităţilor de definire există funcţii
definite de utilizator şi funcţii predefinite.

   Definiţia unei funcţii JavaScript constă din cuvântul-cheie function, urmat de
numele funcţiei, o listă de argumente inclusă între paranteze rotunde şi separate prin
operatorul virgulă şi un bloc de instrucţiuni inclus între acolade:




                                                                                         15
function numeFuncţie(arg1, arg2, arg3) {
instrucţiuni; return expresie;
}

    Sunt permise şi funcţiile anonime:

var funcţie = function(arg1, arg2) {
instrucţiuni;
return expresie;
};

     Este posibil ca unei funcţii JavaScript să-i fie transferate mai multe argumente
decât au fost specificate la declarare. Acest lucru este util, mai ales în situaţiile în care
nu se ştie de la început câte argumente trebuie transmise acesteia. Valorile
suplimentare nu sunt pierdute, ci sunt stocate într-un tablou numit arguments.
Transferul argumentelor având tipuri simple(e.g. şir, întreg) este realizat prin valoare,
în timp ce argumentele de tip obiect sunt transferate prin referinţă.

    Funcţiile predefinite de nivel înalt prezente în limbaj sunt: decodeURI(),
decodeURIComponent(), encodeURI(), encodeURIComponent(), escape(), eval(),
isFinite(), isNAN(), Number(), parseFloat(), parseInt(), String(), unescape().

    JavaScript este un limbaj bazat pe obiecte. Spre deosebire de alte limbaje
orientate obiect, bazate pe clase şi instanţe, în JavaScript nu avem decât obiecte. Un
obiect JavaScript este un tip de date care include proprietăţi şi funcţii, numite şi
metode. Pentru a adăuga o proprietate unui obiect creat anterior se utilizează
proprietatea prototype. Prototipul unui obiect este la rândul său un obiect, în care se
caută metodele şi proprietăţile cerute în cazul în care nu sunt găsite în obiectul iniţial.
Se creează astfel un lanţ de obiecte ce definesc un comportament, într-o manieră
asemănătoare moştenirii din OOP (programare orientată obiect). Filozofia limbajului
are în vedere asocierile de tip cheie-valoare folosite pentru descrierea proprietăţilor
obiectelor.

   Nucleul JavaScript include mai multe obiecte predefinite: Array, Boolean, Date,
Function, Math, Number, String şi RegExp, fiecare dintre aceste obiecte având
metode proprii specifice.

     JavaScript este utilizat, în special, pentru accesarea arborelui DOM al
documentelor XHTML şi XML. Interfaţa DOM furnizează o reprezentare structurală a
unui document, oferind posibilitatea modificării dinamice a conţinutului, a structurii şi
stilurilor acestuia. Utilizând DOM se pot construi documente, naviga prin structura
acestora şi adăuga, modifica sau şterge elemente sau atribute incluse. Documentul
poate fi procesat în continuare, iar rezultatul procesării poate fi inclus înapoi în pagina
afişată. În DOM, documentul XHTML este văzut ca un arbore de noduri. În vârful
arborelui se află obiectul document, prin intermediul căruia avem acces la colecţii de
obiecte asociate elementelor existente în document. Până în prezent există trei niveluri
de specificare DOM.

   Evenimentele DOM permit înregistrarea unor handlere de eveniment asociate
nodurilor arborelui. Printre evenimentele suportate de toate navigatoarele actuale
avem evenimente de mouse (click, mousedown, mouseup, mouseover, mouseover,


                                                                                          16
mousemove), evenimente de tastatură (keydown, keypressed, keyup), evenimente
declanşate în formulare (select, change, submit, reset, focus, blur), evenimente legate
de ferestre (load, unload, abort, error, resize, scroll).

    Astfel, JavaScript este cel mai utilizat limbaj de scripting pentru client în Web.
Problemele care pot apărea sunt datorate diferenţelor de implementare dintre
navigatoarele Web, totuşi se remarcă o tendinţă comună de implementare a modelului
standardizat al Consorţiului Web.




                                                                                    17
2.4 AJAX
„if the traditional web was letter writing, Ajax is instant messaging.” Derek Powazek

2.4.1 Aspecte generale
AJAX este o componentă cheie a aplicaţiilor Web 2.0 ce are scopul de a crea aplicaţii
cu proprietăţi asemănătoare aplicaţiilor desktop din punct de vedere al conţinutului şi
modului de răspuns, dar cu avantajul că pot fi accesate de navigatoare Web.

   Interacţiunea AJAX derivă dintr-o necesitate de a mări viteza de navigare prin
micşorarea timpilor de răspuns la acţiunile utilizatorilor, aceasta bazându-se pe o
comunicare asincronă între client şi serverul Web, care realizează actualizarea
conţinutului fără necesitatea reîncărcării paginii de prezentare.

     AJAX este tehnologia care permite codului JavaScript să trimită o cerere către
server, să primească datele din răspuns (în format XML sau JSON), să procese aceste
date şi să actualizeze conţinutul paginii în mod corespunzător. Cererile AJAX,
realizate prin obiectul XMLHttpRequest, se pot trimite serverului fără a întrerupe
utilizatorul, în mod asincron. Când răspunsul este primit de navigatorul clientului, o
funcţie callback este apelată pentru procesare datelor şi afişarea acestora în cadrul
paginii Web.

   Avantajele majore aduse de AJAX sunt cele legate de eliminarea reîncărcării
paginilor, de facilitatea interacţiunii cu utilizatorul, de micşorarea timpilor morţi,
accesarea doar a unei anumite părţi din cadrul paginii Web.

    Pe măsură ce deţinem navigatoare puternice, conexiuni la Internet de mare viteză,
direcţii de dezvoltare de software online şi unelte pentru a le implementa, atingem un
punct în care Ajax devine popular şi permite lumii să îmbrăţişeze nevoia de a
transforma paginile statice şi plictisitoare în aplicaţii sofisticate.

     Ajax este deseori asociat cu Rich Internet Applications (RIA), reprezentând
aplicaţii cu interfeţe complexe utilizator sunt din ce în ce mai prezente pe scena Web,
utilizând grafice complexe, informaţie diversă şi o experienţă utilizator cât mai
completă.

     Ajax este diferit de modul tradiţional de dezvoltare şi design Web, datorită
pierderii de convenţii de interfaţă, permiterea integrării de funcţionalităţi ascunse sau
latente, şi crearea programatică în loc de declarativă a elementelor. Pentru proiectarea
interfeţei, designeri Web au nevoie de o întelegere mai aprofundată a capabilităţilor
DOM, JavaScript, CSS şi a modalităţii în care navigatorul randează grafice, elemente
şi dispunerea acestora. Un alt neajuns datorat lipsei de unelte de dezvoltare este
testarea aplicaţiilor care este dificilă. Va mai fi nevoie de câţiva ani pentru ca
industria să dezvolte practici şi şabloane eficiente de dezvoltare.

   Nu se poate preciza încă un lider al pieţei, uneltele şi componentele de dezvoltare
Ajax fiind în continuă dezvoltare. Dintre aceste unelte, putem aminti: Dojo,



                                                                                      18
script.aculo.us, Prototype, Google Web Toolkit, Yahoo! UI Library, JackBe, Zapatec,
Bindows, Nexaweb, General Interface, Backbase, ActiveWidgets sau Microsoft Atlas.

     Ajax este o componentă de bază al fenomenului de dezvoltare de mashup-uri în
interiorul navigatoarelor. Datorită Global SOA, componente Ajax online, ca Google
Maps, pot fi referenţiate prin linii de cod JavaScript şi folosite pentru mixare într-o
formă sau alta.

    Astfel, AJAX este o tehnică de tip remote scripting prin care sunt utilizate
împreună, în mod specific, mai multe tehnologii existente, în scopul creării aplicaţiilor
Web cu interactivitate crescută şi cu viteză de execuţie ridicată. AJAX include:

       HTML/XHTML şi CSS, pentru reprezentarea datelor;
       DOM pentru redarea dinamică şi interacţiune;
       XML sau JSON, precum şi XSLT, pentru schimbul de date şi manipularea
       acestora;
       obiectul XMLHttpRequest pentru transferul asincron al datelor;
       JavaScript pentru procesarea informaţiilor.

    Modul de lucru al aplicaţiilor Web bazate pe tehnica AJAX are următoarele
caracteristici:

       Foloseşte interacţiunea la nivel de componentă a paginii;
        O componentă poate face un apel JavaScript către motorul AJAX;
        Procesorul AJAX face o cerere HTTP pentru o resursă situată pe server, pe
       care o trimite unui modul pentru procesare;
       După procesare, serverul utilizează un anumit format pentru date pe care le
       trimite apoi procesorului AJAX;
        Procesorul AJAX actualizează componenta care a iniţializat procesul.

    Din punct de vedere AJAX, întreaga aplicaţie se regăseşte la nivelul navigatorului,
ceea ce poate avea repercusiuni nedorite privind sincronizarea serverului cu clientul.
Alte dezavantaje vizează dependenţa de tehnologia JavaScript (implementată în mod
diferit de fiecare navigator în parte), dificultatea testării şi depanării aplicaţiilor,
necesitatea folosirii navigatoarelor de ultimă generaţie, accesul oricui la codul-sursă
(probleme de securitate) şi imposibilitatea folosiri mecanismului istoric al navigării
(history).

    Componenta de bază este obiectul XMLHttpRequest [37] pus la dispoziţie de către
navigatorul Web. Acest obiect permite realizarea de cereri HTTP (e.g. GET şi POST)
dintr-un program rulând la nivel de client spre o aplicaţie de pe server, într-un mod
asincron.

    Obiectul XMLHttpRequest este o interfaţă de programare a aplicaţiilor (API) care
permite scripturilor să realizeze funcţionalităţile unui client HTTP, cum ar fi
trimiterea datelor incluse în formulare sau încărcarea datelor stocate pe un sit Web.
Obiectul XMLHttpRequest are o serie de metode definite în specificaţia publicată de
Consorţiul Web:




                                                                                      19
Open() – iniţializează o conexiune HTTP cu serverul, trimiţând o cerere către
       acesta;
       Send() – transmite date, în manieră asincronă, către aplicaţia care rulează pe
       server;
       Abort() – abandonează transferul curent;
       setRequestHeader() – specifică diverse câmpuri ale antetului HTTP;

   şi proprietăţi:

       readyState – conţine codul de stare a transferului (0 - uninitialized, 1 – open, 2
       - sent, 3 – receiving, 4 - loaded);
       status – reprezintă codul de stare HTTP întors de serverul Web (200 – OK,
       404 – Not Found, 500 – Server Error);
       statusText – desemnează şirul de caracter care descrie codul de stare obţinut;
       onreadystatechange – desemnează funcţia care va fi invocată la modificările
       privind schimbarea stării de transfer a datelor

   O alternativă la XML în ceea ce priveşte interschimbul de date este JSON.

2.4.2 JavaScript Object Notation
JSON (JavaScript Object Notation) [38] este un format complementar XML pentru
reprezentarea datelor schimbate între server şi client în AJAX. Formatul JSON este
complet independent de limbaj şi este bazat pe două structuri de date universale: o
colecţie de perechi nume/valoare; o listă ordonată de valori.

  JSON este popular pentru serviciile de tip REST care sunt consumate de aplicaţii
Web 2.0.

   În JSON, cele două structuri iau următoarele forme:

       obiect – set neordonat de perechi nume/valoare inclus între acolade. Fiecare
       nume este urmat de caracterul două puncte şi valoarea sa. O pereche
       nume/valoare este separată de următoarea prin simbolul virgulă;
       tablou – este o colecţie ordonată de valori, inclusă între paranteze drepte,
       valorile fiind separate prin virgulă;
       valoare – poate fi un şir inclus între ghilimele duble, un număr, un obiect, un
       tablou, precum şi valorile true, false sau null. Aceste structuri pot fi imbricate;
       şir – este o colecţie încadrată de ghilimele duble, formată din zero, unul sau
       mai multe caractere Unicode;
       număr – este asemănător cu tipul similar utilizat în JavaScript.

    Simplicitatea JSON a determinat o gamă largă de utilizări ale acestuia. El
reprezintă o alternativă la XML în AJAX, ca format utilizat pentru schimbul de date.

   În JavaScript, JSON poate fi procesat utilizând funcţia eval(). Acest lucru a fost
important pentru acceptarea JSON de către comunitatea de programatori AJAX,
deoarece JavaScript este prezent în toate navigatoarele moderne.




                                                                                       20
Un exemplu de obiect JSON în formă serializată:

{"location":
        {"id": "WashingtonDC",
         "city": "Washington DC",
         "venue": "Hilton Hotel, Tysons Corner",
         "address": "7920 Jones Branch Drive"
        }
}




                                                    21
3. Sisteme informaţionale geografice
Sistemele informaţionale geografice (GIS) sunt sisteme de captare, stocare, analiză şi
prelucrare de date care sunt raportate geografic. Scopul sistemelor informaţionale
geografice este acela de a localiza informaţia, de a o face accesibilă, de a vizualiza
relaţiile acesteia cu alte componente de acelaşi fel şi de a realiza rapoarte statistice
între aceste componente. În alte cuvinte, scopul este acela de a oferi un punct de start
pentru organizarea din punct de vedere geografic a tuturor informaţiilor.



3.1 Aspecte generale
Organizaţiile care utilizează sau întreţin date geografice întâmpină multe provocări.
Tehnicile curente de colectare şi management de date sunt costisitoare şi producătoare
de erori. Analiştii din industrie susţin că circa 80% din informaţia guvernamentală
este asociată cu informaţii geografice. De asemenea, un număr ridicat de organizaţii
doresc să incorporeze date geografice în producţie (e.g. Yahoo!, Google). O astfel de
ce cerere a acestui tip de date necesită un management eficient şi distribuţia
informaţiilor devine critică. Rezultatul este apariţia unei pieţe noi în arena GIS care să
satisfacă cerinţa de informaţia geografică calitativă distribuită pe Internet în timp real.

    Informaţia geografică stă la baza aplicaţiilor care au la bază locaţia. Aceste
aplicaţii pun la dispoziţie utilizatorului posibilitatea de a vizualiza hărţi şi de a:

       Crea rute către o destinaţie, calculând calea cea mai scurtă;
       Sorta categoriile, cum ar fi instituţiile comerciale, după distanţă şi timp faţă de
       locaţia clientului;
       Modifica dinamic rute pentru a evita obstacolele, cum ar fi traficul;
       Marca locaţiile vehiculelor şi de a elimina pe cele mai apropiate sau care ating
       anumite obiective.

   Deciziile corecte de cele mai multe ori se bazează pe hărţi cât mai complete,
precise, actuale şi provenite din surse de încredere, care sunt utilizate pentru
navigaţie, trafic, căutare de puncte de interes, reţele sociale, turism, etc.

    Hărţile conţin date topologice de tip vector sau raster care pot fi organizate prin
multiple metode, cum ar fi baze de date relaţionale. Aceste date sunt folosite pentru
calcularea rutelor, găsirea punctelor de interes apropiate, sau pentru orice alte tipuri de
analiză geografică.

    În termeni simpli, informaţia spaţială constă din puncte, linii şi-sau poligoane.
Fiecare dintre aceste elemente pot fi asociate unuia sau mai multor atribute pentru a
defini calitatea sau caracteristicile unui obiect. În contextul unei hărţi, un atribut
reprezintă orice tip de informaţie care poate fi asociat direct sau indirect unei locaţii la
un anumit punct, despre o anumită linie sau poligon. Aceste atribute conţin atât
dimensiuni statice (drumuri, semne, râuri), cât şi dinamice (trafic, condiţii de vreme).



                                                                                         22
Există 204 atribute geografice clasificate de NAVTEQ, furnizor mondial de GIS,
 în 14 categorii. Aceste atribute descriu calităţile esenţiale care sunt necesare unei
hărţi pentru a reda informaţii estetice şi folositoare, care vor fi folosite în planificare
de rute sau în ghidare.

    Categoriile se împart în [39]:

       Legătură – include atribute de clasificare ale drumurilor folosite pentru a
       determina eficienţa drumului respectiv pentru un turist. Sub-categoriile cheie
       sunt:

               General – include categoria de viteza, direcţia de mers, clasa drumului;
               Caracteristici de acces – identifică tipurile de trafic permise pe un
               drum (pietoni, autobuze, camioane);
               Caracteristici de afişare – descrie aspecte ale drumului ca poduri,
               tuneluri;
               Nume şi Adresă – se orientează asupra convenţiilor asociate numelor şi
               adresei, cum ar fi formatul adresei, tipul străzii, tipul rutei;
                Statutul de Nume – include numărul de ieşire, numele de joncţiune şi
               numele semnului de circulaţie folosit în aplicaţii de navigare în
               momentul anunţurilor de stradă pe care conducătorul trebuie să le
               urmeze pentru îndrumările de direcţie ale unei rute;

       Zone administrative – identifică entităţile guvernamentale asociate cu un
       drum, cum ar fi: ţară, stat, oraş, cod poştal, zonă;
       Punct de interes (POI) – include nume, locuri ca bănci, benzinării sau
       restaurante. Peste 30 de atribute sunt folosite pentru a caracteriza un POI, cum
       ar fi felul benzinăriei, tipul de mâncare servit în restaurant sau număr de
       telefon;
       Semne – include reprezentările textuale sau grafice de informaţie, întâlnite pe
       parcursul drumului, ca: textul semnului, codul de limbă, numărul de ieşire,
       numărul de sector;
       Utilizare terestră - include informaţii cartografice referitoare la obiective
       create de om, ca şcoli, aeroporturi, parcuri, etc.;
       Ţară – deţine informaţii ca fus orar, codul de telefon, etc.;
        Nod – include intersecţii, descrise de atribute ca coordonată x, y, z, aliniere;
       Condiţii – identifică limitările şi calificările pentru utilizarea unui drum, de
       exemplu, zonele cu acces interzis pentru rezidenţi;
       Trafic – include un set de coduri care descriu condiţiile de trafic, cum ar fi
       fluxul de trafic, accidente, disponibilitate;
       General – conţin atribute ca intersecţii, drumuri şi obiecte ca intersecţii
       complexe sau noduri multiple, care pot fi reprezentate simplificat pentru a
       eficientiza calculele rutelor;
       Adiţional – extinde valoarea unei baze de date prin informaţii referitoare la:
       limita de viteză, numărul de benzi de circulaţie, etc.;
       Informaţii extinse despre străzi – ce descriu conectivitatea, dependenţa,
       direcţia şi numărul de străzi, alei existente;
       Date Vocale – conţin pronunţie şi reprezentare textuală a informaţiilor
       prezente în baza de date;



                                                                                        23
Altele – este un atribut adiţional care indică pe care parte a drumului trebuie
       afişată o anumită informaţie;

    Pentru managementul bazei de date, aceste puncte, linii, poligoane şi atribute
asociate au asociate structuri de date, elemente de date adiţionale, şi-sau metode care
fac procesarea mai rapidă şi mai uşor de întreţinut pentru a face tranziţia către harta
virtuală. Acestea includ:

       Topologie spaţială – datele spaţiale şi datele geografice consistă din
       menţinerea şi structurarea componentelor lineare cum ar fi reţele de drumuri,
       poligoane cum sunt limitele de zonă sau ţară, şi puncte ca oraşe sau locaţii de
       spital;
       Geocoding – acest proces asignează o poziţie pe hartă unei înregistrări adresă.
       Procesul potriveşte informaţiile din două baze de date: o bază de date de
       adrese şi o referinţă către locaţia hărţii, astfel adresând informaţiile căutate cu
       poziţia corectă pe hartă, prin coordonate latitudine-longitudine;
       Referinţă lineară – datele din cadrul reţelelor de transport sunt măsurate în
       funcţie de un punct fix de referinţă ales. Aceste metode includ distanţele
       rutelor complete, coordonatele geografice şi coordonatele GPS (Global
       Positioning System).
       Segmentarea dinamică – această funcţie localizează un punct sau un segment
       de linie prin interpolarea distanţelor dintre două puncte şi permiţând
       înregistrarea informaţiei pe parcursul caracteristicilor lineare, de obicei
       utilizând GPS.
       Stratificare – Combinând două sau mai multe hărţi care au aceeaşi referinţă
       geodezică. Hărţile digitale realizează stratificări (layouts) pe mai multe nivele
       de date, integrându-le cu informaţii referitoare la alte entităţi.

    Pe viitor, aplicaţiile orientate locaţie vor creşte numărul de informaţie
tridimensională, permiţând utilizatorilor să acceseze locuri distante având o experienţă
3D: „plimbarea” pe Fifth Avenue în Manhattan, „intrarea” în diferite magazine.

   Toate aceste lucruri sunt posibile datorită avansului tehnologic din ultimii ani care
a oferit conexiuni puternice la Internet, plăci video, procesoare şi programe de
compresie îmbunătăţite pentru transferul masiv de date, procesarea acestora şi
managementul lor în spaţii tridimensionale.

    Pentru crearea unei hărţi de succes este necesar să se ia în consideraţie audienţa.
Hărţile au avut mereu scopuri precise, de cele mai multe ori, acestea fiind accesul la
informaţie într-un mod vizual şi structurat.

    Sisteme informaţionale geografice ca Google Maps sau Google Earth permit
computerului să perceapă informaţia având şi o componentă fizică, geografică şi să
poată astfel asocia date pentru respectiva locaţie. Google Maps pune la dispoziţie hărţi
şi imagini aeriale de pe întreaga planetă, oferind date despre instituţiile şi obiectivele
de atracţie a unei zone specificate. În plus, oferă posibilitatea de a crea aplicaţii care
combină informaţia geografică cu setul propriu de date pentru crearea de reprezentări
personalizate ale informaţiei de interes.




                                                                                       24
Această tehnologie poate fi folosită pentru multiple scopuri, cum ar fi obţinerea de
informaţie referitoare la:

       Localizarea datelor: se pot afla toate restaurantele(sau orice alt fel de
       instituţie) în jurul unei anumite locaţii;
       Hărţi şi rute: se pot afla rute detaliate între două locaţii, care includ punctele
       intermediare;
       Reprezentări topografice: se oferă imagini detaliate ale unei locaţii putând afla
       relaţia între un punct şi elementele înconjurătoare, cum ar fi un munte, un lac.
       Date statistice: se pot descrie grafic date statistice (cum ar fi nivelul
       populaţiei) printr-o hartă specializată.

    Până acum, o componentă crucială lipsea din scenariul aplicaţiilor Web, şi anume
locaţia. Orice obiect este caracterizat de o anumită locaţie, care poate fi vizualizată
acum prin intermediul Google Maps, care ne pune la dispoziţie o interfaţă intuitivă,
imagini cartografice pregenerate şi un API prin intermediul căruia putem adăuga o
astfel de hartă pe orice pagină personală.

    Utilizarea în Google Maps a tehnologiei AJAX ajută mult la succesul interfeţei şi
la rapiditatea interacţiunii cu utilizatorul. Un alt motiv este acela că datele
interschimbate între server şi navigator sunt de cele mai multe ori în format XML,
astfel încât toată informaţia vehiculată este accesibilă oricui. Google Maps, aplicaţii
bazate AJAX şi filozofia Web 2.0 în general fac parte din mentalitatea „View Source”
în care oricine poate să-ţi vizualizeze pagina, să înveţe din cod şi să încerce să
refolosească această informaţie în scopuri proprii.

    GeoWeb este un termen relativ nou care implică îmbinarea informaţiei geografice
cu informaţia abstractă care se găseşte pe Internet. Astfel se creează un mediu de
lucru în care se pot căuta informaţii după locaţia pe care o au şi nu neapărat după un
anumit cuvânt cheie.

  Succesul GeoWeb-ului este datorat noilor tehnologii şi produse ca Google Earth,
NASA World Wind, Windows Live Local, Yahoo Maps.

    Sistemele GIS erau deţinute de către profesionişti experimentaţi şi utilizate în
organizaţii mari cum ar fi guverne sau municipalităţi. GeoWeb-ul promite de a
transforma informaţia geografică într-un concept mult mai ubicuu, deschizând accesul
către piaţa de masă. Una din ţintele GeoWeb-ului este aceea de a crea un mediu digital
care să oglindească propria realitate şi care să ne permită de a ne gestiona resursele,
găsind informaţii despre serviciile, oamenii din imediata vecinătate.

    Geo Search, tradusă căutare la nivel geografic, are ca scop organizarea tuturor
informaţiilor ce au conţinut geografic şi transformarea acestora în conţinut accesibil şi
care poate fi folosit ulterior.

     Una dintre avantajele acestui tip de căutare este acela că informaţia poate fi
indexată şi se pot realiza interogări la nivelul bazei de date ce conţine astfel de
informaţii. Standardele acceptate de Google Search conţin tipurile de formate KML
[26]
     şi GeoRSS [40].



                                                                                      25
Geotagging este procesul de adăugare de meta-date geografice diferitelor pagini
Web, feed-uri RSS sau imaginilor. Aceste date cuprind coordonate de latitudine şi
longitudine, dar pot fi caracterizate şi de altitudine.




                                                                               26
3.2 Formate de date
Pentru a realiza această sarcină există mai multe tipuri de formate de date ce pot fi
utilizate pentru găsirea sau crearea de conţinut cu relevanţă geografică, ca GML,
KML, GeoRSS, GPX, LOC, care fiind simple fişiere XML pot fi uşor parsate şi
refolosite în funcţie de necesităţi.

3.2.1 Geography Markup Language
Geography Markup Language (GML) [41] este un limbaj de modelare pentru sistemele
geografice utilizat şi ca format de schimb de date între tranzacţiile efectuate pe
Internet.

    GML este standard-ul XML pentru infrastructura GeoWeb, permiţând
dispozitivelor conectate la Internet să acceseze informaţie geografică, incluzând, de
exemplu, locaţii ale unor anumite magazine sau condiţii de trafic. Aşa cum XML
permite Web-ului de a separa conţinutul de prezentare, GML oferă acelaşi lucru
pentru lumea geografică. Dacă GML este un limbaj ce codifică conţinut geografic prin
descrierea unui spectru de obiecte şi a proprietăţilor acestora (e.g. poduri, drumuri),
KML este un limbaj care permite vizualizarea informaţiei geografice.

Un exemplu de reprezentare a coordonatelor utilizând GML:

<gml:Point gml:id="p1" srsName="#srs1">
   <gml:coordinates>45.67, 88.56</gml:coordinates>
</gml:Point>

3.2.2 Keyhole Markup Language
KML [26] foloseşte structură bazată pe etichete ce conţin elemente şi atribute
încapsulate bazate pe standardul XML.

    KML, ca format de date, este folosit de Google Maps, Google Earth şi Google
Maps Mobile, şi este descris ca fiind „PDF-ul GIS-ului” (Brian McClendon). Este
realizat pentru a fi un format de fişier pachet, care să conţină sau să conecteze
resursele necesare afişării conţinutului descris de Google Earth.

   KML este folosit pentru:

       Specificarea de etichete şi pictograme pentru identificare locaţiilor;
       Schimbarea poziţiei camerei pentru permiterea de vizualizări 3D;
          Utilizarea de imagini suprapuse ataşate componentelor terestre sau
       vizualizării;
       Definirea de stiluri de afişare;
       Integrarea de cod XHTML în cadrul descrierii unei locaţii;
       Crearea structurilor ierarhice pentru grupuri de caracteristici;
        Schimbări şi afişări de texturi şi obiecte 3D.




                                                                                    27
Un exemplu de fişier KML:

<?xml version="1.0" encoding="UTF-8"?>
<kml xmlns="http://earth.google.com/kml/2.1">
<Placemark>
<name>Stonehenge, England</name>
<description>Stonehenge was built around 2500BC</description>
 <Point>
  <coordinates>-1.826752,51.179045,0 </coordinates>
 </Point>
</Placemark>
</kml>


3.2.3 GeoRSS
RSS este un vocabular de meta-date, folosit pentru mediatizarea (syndication) a ştirilor
Web şi a schimbărilor survenite în cadrul sit-urilor. RSS face parte din familia XML şi
a fost adoptat pentru a distribui documente diverse, de la ştiri şi articole la date audio-
vizuale. În ultimii ani RSS a devenit protocolul de mashup prin excelenţă, datorită
simplităţii de utilizare.

   GeoRSS (Geographically Encoded Objects for RSS feeds) [40] adaugă tag-uri
formatului RSS pentru a descrie date geografice. GeoRss a fost adoptat de Yahoo şi
Microsoft. GeoRss foloseşte ubicuitatea RSS şi schema GML pentru a crea cea mai
bună metodă de geo-distribuire (syndication). GeoRSS este folosit în GeoSearch şi
agregare.

   GeoRSS este identificat prin spaţiul de nume "georss:" şi scufundate în fişiere RSS
normale, de exemplu:

<georss:point>43.127697 -77.573776</georss:point>


3.2.4 GPS eXchange Format
Printr-un receptor GPS (Global Positioning System) se pot determina locaţia, viteza şi
direcţia unui anumit obiect. GPS a devenit un ajutor pentru crearea de hărţi,
supravegherea zonelor, comerţ şi uz ştiinţific.

    GPX (GPS eXchange Format) este un format XML proiectat pentru transferul
datelor GPS între aplicaţiile software. Este utilizat pentru a descrie puncte şi rute.
Deoarece GPX este bazat pe XML, acesta moşteneşte toate beneficiile acestuia. GPX
defineşte un set comun de tag-uri pentru descrierea datelor geografice şi GPS în XML.
Este un format simplu dar destul de puternic pentru a descrie obiecte complexe
geografice. GPX permite dezvoltatorilor să-şi definească propriile obiecte şi atribute.

   Un exemplu:

<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
<gpx xmlns="http://www.topografix.com/GPX/1/1" creator="byHand"
version="1.1" xmlns:xsi=”http://www.w3.org/2001/XMLSchema-instance
xsi:schemaLocation="http://www.topografix.com/GPX/1/1
http://www.topografix.com/GPX/1/1/gpx.xsd">



                                                                                        28
<wpt lat="39.921055008" lon="3.054223107">
   <ele>12.863281</ele>
   <time>2005-05-16T11:49:06Z</time>
   <name>Cala Sant Vicenç - Mallorca</name>
   <sym>City</sym>
 </wpt>
</gpx>


3.2.5 Microformate
Microformatele sunt seturi de vocabulare pentru realizarea de adnotări semantice în
cadrul unor limbaje prezentaţionale, precum XHTML. Microformatele sunt uşor de
parcurs de către oameni, nefiind marcate de experţi ai domeniului, dar pot fi procesate
şi de către maşină.

    Companiile mari ca Google, Yahoo, Microsoft utilizând sisteme necostisitoare ca
unelte GPS (Global Positioning System), au încurajat explozia marcării informatice
din cadrul Web-ului din ultimii ani. Dar tot acest timp a fost caracterizat de lipsa unui
standard, fiecare dintre companiile amintite dezvoltându-şi propriul fel de marcare al
datelor, Google utilizând KML (Keyhole Markup Language), un format XML, iar
Yahoo! utilizând GeoRss, o variaţie de RSS. Această lipsă de uniformitate a dus la
adoptarea de către dezvoltatori a diferitelor convenţii, cum sunt tagurile geo folosite
de către Flickr.

   Astfel, au fost introduse microformatele geo şi adr.

3.2.5.1 Geo

Orice loc de pe planetă poate fi descris în mod unic utilizând latitudine şi longitudine.
Microformatul geo permite încapsularea acestor date în cadrul conţinutul unei pagini
Web. În cazul în care avem ca informaţie numai aceste coordonate, este preferabil de
folosit microformatul geo. În cazul în care deţinem informaţii mai detaliate despre
respectiva adresă, cum ar fi numele străzii, etc. este indicat de folosit microformatul
adr. Ambele microformate pot fi încapsulate microformatele compuse cum este
hCard.

    Informaţiile turistice (jurnale de călătorie, informaţii meteo, postări de blog sau
sit-uri de turism comerciale) sunt menite a fi descrise cu geo, la fel şi evenimentele
istorice în care locaţia joacă un rol important. Locaţia este o componentă importantă şi
fenomenul de utilizare a acesteia este încontinuă creştere datorită aplicaţiilor ca
Google Maps, Yahoo Maps sau mashup-urilor ce au la bază hărţi.

    În geo, elementul rădăcină conţine două proprietăţi, fiecare fiind un element
XHTML: unul pentru latitudine şi unul pentru longitudine. Latitudinea şi longitudinea
trebuie să fie exprimate în format decimal, sau grade decimale. De exemplu:

<span class="geo">
      <span class="latitude">27.976628</span>,
      <span class="longitude">86.933302</span>
</span>




                                                                                      29
Succesul unui mashup ţine de deţinerea de informaţie ce poate fi interpretată de
către maşină pentru a putea interacţiona cu un serviciu de mapare. În prezent, există
un număr de formate de Geo-date asemănătoare, ca KML sau GeoRss, dar acestea nu
sunt larg adoptate. Simplitatea formatului Geo este un plus şi poate fi preferat de către
dezvoltatorii de aplicaţii.


3.2.5.2 Adr

Spre deosebire de Geo-date, adresele fizice sunt utilizate de mai mult timp, dar la fel
nu a existat nici un fel de mod standardizat de a introduce aceste informaţii în cadrul
paginilor Web.

   De obicei, adr este componentă a microformat-ului hCard şi poate să conţină
următoarele câmpuri:

       post-office-box;
       extended-address;
       street-address;
       locality;
       region;
       postal-code;
       country-name.

   Şablonul de clasă necesită utilizarea atributului class şi precizarea atributelor
prezentate. De exemplu:

<div class="adr">
      <div class="street-address">2560 Ninth Street </div>
      <div class="extended-address">Suite 219</div>
      <span class="locality">Berkeley</span>,
      <span class="region">CA</span>
      <span class="postal-code">94710</span>
      <div class="country-name">USA</div>
</div>




                                                                                      30
4. Mashup
"We know we don't have a corner on creativity. There are creative people all around
the world, hundreds of millions of them, and they are going to think of things to do
with our basic platform that we didn't think of." Vint Cerf


4.1 Aspecte generale
Unul din conceptele promiţătoare ale Web-ului 2.0 este acela de a divide informaţia în
părţi de dimensiuni reduse, slab conectate, astfel încât să putem reduce complexitatea
aplicaţiilor şi efortul de integrare.

    Avem sute de API-uri disponibile pentru reutilizare şi integrare în noile noastre
aplicaţii Web, permiţându-ne realizarea unui întreg mai valoros decât suma
componentelor sale.

    Un mashup este o aplicaţie Web hibridă, ce combină în mod agil diverse date din
surse externe într-o formă unitară şi mai complexă. Sursele externe sunt de obicei alte
aplicaţii Web, servicii Web sau RSS feed-uri.




                Figura 4.1: Mashup, aplicaţie ce încapsulează servicii

    Pentru a putea crea un mashup este nevoie de combinarea datelor din minim două
surse externe, pentru a realiza un serviciu care nu este disponibil dintr-o altă sursă.
Astfel se pot combina servicii geospaţiale ca Google Maps sau Yahoo Maps, cu alte
informaţii despre produse, acţiuni, evaluări din surse ca Amazon sau eBay.

    Se recomandă utilizarea unui număr rezonabil de servicii Web pe care un mashup
le foloseşte şi mai ales „seriozitatea” acestor servicii, pentru că ele stau la baza
funcţionării şi succesului aplicaţiei respective.

     Mashups-urile se bazează pe interacţiunea cu utilizatorul pentru personalizarea şi
utilitatea informaţiilor afişate.


                                                                                    31
Reutilizarea de software a devenit un crez al industriei IT şi acesta este unul din
motivele pentru care mashup-urile sunt atât de fascinante.

    Unul din conceptele Web 2.0 este acela de a încuraja dezvoltatorii de a-şi
încapsula aplicaţiile ca un set de servicii ce pot fi folosite ulterior. Această teorie
susţine valoarea pe care un dezvoltator poate să o aducă comunităţii dacă software-ul
creat de acesta poate fi refolosit în noi modalităţi.

    Un alt aspect de succes este utilizarea tehnologiei Ajax şi a formatelor de date
JSON, RSS. O bună aplicaţie Ajax încarcă o dată scripturile JavaScript în cadrul unui
navigator Web şi apoi manipulează conţinutul prin CSS şi HTML pentru a obţine
efectele vizuale scontate.




               Figura 4.2: Anatomia Mashup, prezentarea nivelelor [10]




                                                                                    32
4.1.1 Tipuri de Mashup
Există două tipuri principale de mashup-uri:

       Mashup-uri client: în care codul şi datele sunt combinate în cadrul unei pagini
       folosind incluziuni JavaScript. Un avantaj al acestui model de dezvoltare este
       portabilitatea pe care o oferă.
       Mashup-uri server: ce oferă o infrastructură de programare mult mai puternică
       şi completă.

Aceste tipuri principale se împart în cinci stiluri de dezvoltare, care stratifică modul
de utilizare al informaţiei şi elementelor vizuale în multiple nivele [10]:

       Mashup de prezentare: este cea mai superficială formă de mashup, informaţia
       fiind pur şi simplu extrasă şi prezentată. Nu este adăugat nici un fel de
       funcţionalitate. În această categorie se înscriu portalurile şi alte forme de
       prezentare de genul mashup.
       Mashup de date la nivelul clientului: informaţiile preluate de mashup provin
       din surse ca servicii Web, feed-uri sau sit-uri HTML şi sunt combinate cu date
       provenite din alte surse. Se generează informaţie nouă care nu exista înainte,
       cum ar fi locaţii specifice vizualizate în cadrul unei hărţi.
       Mashup de software la nivelul clientului: în acest caz este integrat cod în
       navigator cu scopul de a realiza o funcţionalitate nouă.
       Mashup de software la nivel de server: la acest nivel fiind mai uşoară
       combinarea serviciilor neexistând restricţii de securitate sau probleme de acces
       între domenii diferite.
       Mashup de date la nivel de server: care utilizează date din baze de date aflate
       pe server, facilitând transferul de informaţie provenit din furnizori distincţi.




      Figura 4.3: Diferenţă mashup la nivel de navigator şi la nivel de server [8]



                                                                                     33
4.1.2 Provocări, Beneficii, Neajunsuri
Asemeni Web 2.0, mashup-urile sunt rezultatul direcţiei actuale a tehnologiilor, fiind
caracterizate de conectivitate sporită, viteză de dezvoltare, consum de informaţie
generată utilizator, suport din partea comunităţilor online, îmbunătăţind rapid
informaţia găsită pe Internet.

    Astfel, mashup-urile devin din ce în ce mai mult orientate către utilizatorul final şi
facilităţile oferite devin din ce în ce mai sofisticate.

   Criteriile care trebuie să fie luate în considerare în crearea unui mashup sunt:
unicitate, creativitate, experienţa utilizatorului, utilitate şi conţinut.

   Aspecte cheie şi beneficii ale abordării Mashup:

       Combinarea eficientă între componente Web reutilizabile şi SOA. Mashup-
       urile sunt construite din componente şi servicii deja existente în alte aplicaţii
       Web, fiind adăugat cod pentru a integra aceste părţi într-un tot unitar. Această
       reutilizare este benefică şi se caracterizează prin „building on the shoulder’s of
       giants.”
       Simplitate în dezvoltare şi integrare. Concentrându-se asupra formatelor şi
       tehnicilor lightweight, mashup-urile au succes datorită simplităţii de
       dezvoltare. Mashup-urile folosesc feed-uri şi XML pentru a conecta
       componentele, structuri şi incluziuni JavaScript utilizate pentru integrarea de
       elemente externe, ca Google Maps sau player YouTube. Mashup-urile devin
       astfel Software as a Service (SaaS), având nevoie doar de un navigator Web şi
       a adresă URL şi eliminând necesitatea unei instalării, a update-urilor, plug-in-
       urilor sau drepturilor de administrator.
       Focus pe auto-dezvoltare. Mashup-urile sunt disponibile dezvoltării şi de către
       utilizatori neexperimentaţi, cât şi de dezvoltatori de software profesionişti. Ca
       toate componentele Web care oferă puterea de publicare şi participare oricărui
       utilizator, mashup-urile prezintă potenţialul de a creare software inovator şi
       folositor. Se pot dezvolta aplicaţii de către un utilizator sau un grup de
       colaboratori care să ofere exact facilitatea de care aceştia aveau nevoie.
       Există şi alte beneficii ca: faptul că sunt orientate Web, tind să fie mai deschise
       şi transparente în privinţa schimbului de informaţie şi oferă sursele oricui este
       interesat de acest lucru.

    O provocare este conflictul dintre cele două modele de mashup-uri, cele
dezvoltate de utilizatori şi cele dezvoltate de companii pentru uz comercial. Există în
jur de 2000 de dezvoltatori independenţi (conform ProgrammableWeb.com [30]) care
îşi utilizează blog-urile, profilurile sau alte pagini Web pentru a crea noi mashup-uri,
widget-uri sau gadget-uri. Pe lângă aceştia există un număr în creştere de produse
comerciale care încercă să aducă utilitatea mashup-urilor în cadrul Web-ului sau a
intranet-ului. Aceste două modele sunt diferite una faţă de cealaltă. Prima încurajează
fenomenul natural de reutilizare, folosind componente Web furnizate de alţi
distribuitori şi încercând să aplice acestora diferite strategii, găsindu-o pe care se
potriveşte scopului iniţial. Modelul comercial încearcă să adauge instrumentelor pe
care le oferă funcţionalităţi care lipsesc, cum ar fi securitate, suport pentru local SOA,



                                                                                       34
sau interfaţă vizuală pentru a facilita procesul de creaţie şi pentru cei care nu au
cunoştinţe de programare. Modelul comercial de cele mai multe ori ignoră vasta
colecţie de îmbunătăţiri adusă de utilizatori, lucru pe care aplicaţiile de succes ar
trebui să-l aibă în vedere

   Un neajuns este reprezentat de numărul de servicii Web disponibile care să
permită accesul la date, în timp ce numărul de API-uri este în continuă creştere.
Majoritatea informaţiei o găsim în pagini statice în format HTML. Un ajutor îl oferă
formatul adiacent Web 2.0, RSS.

   Cerinţe pentru realizarea de unelte mashup eficiente:

       Uşurinţă în folosire: Un adevărat succes ar avea uneltele de mashup care ar
       permite utilizarea lor persoanelor fără cunoştinţe de programare, în cadrul
       oricărui navigator Web, în orice limbă.
       Încapsularea şabloanelor în dezvoltarea de software. Utilizatorii finali nu sunt
       dezvoltatori şi astfel nu înţeleg multe aspecte ale dezvoltării. Acestea includ
       testare, controlul versiunilor, securitate, scalabilitate şi reliabilitate. Cea mai
       bună unealtă mashup va avea grijă de aceste probleme automat şi nu va sta în
       calea utilizatorilor în procesul de dezvoltare.
       Suportul pentru standarde deschise. Aplicaţiile create de către uneltele mashup
       trebuie să fie aplicaţii Web obişnuite bazate pe formate deschise şi nu
       proprietare. Mashup-urile ar trebui alcătuite din componente HTML actuale,
       JavaScript, CSS şi orice alte componente Web necesare. Web-ul este în
       continuă expandare şi popularitate deoarece este un „sistem fără proprietar” ce
       oferă transparenţă.
       Utilizarea de părţi vizuale şi servicii Web. Începând cu snippet-uri JavaScript,
       servicii orientate Web ca REST şi arhitectură orientată servicii ca SOAP, şi
       continuând cu formate ca RSS sau ATOM, uneltele mashup trebuie să suporte
       cea mai mare arie de ingrediente. Generarea oricărei aplicaţii într-un serviciu
       care poate fi utilizat în cadrul unui mashup, oferă uşurinţa de consum ce ar
       trebui suportată de orice unealtă de acest gen.
        Încurajarea utilizării sociale pentru realizarea de sisteme puternice, care să
       permită funcţionalitate de propagare de legături, invitaţii, feedback, etc.




                                                                                       35
4.2 Studiu de caz: GeoLink
4.2.1 Concept
Travel 2.0 reprezintă extensia şi personalizarea conceptului de Web 2.0 pe una dintre
cele mai puternice industrii actuale: turismul. Ca multe alte industrii, industria
turismului online este în tranziţie, adaptându-se noilor tehnologi şi direcţii din
Internet. Turiştii devin din ce în ce mai interesaţi în găsirea de recenzii, comentarii şi
sfaturi profesioniste cu referire la locaţii posibile. Acest lucru a oferit un impact
semnificativ acestui sector economic, turismul ocupând un loc de frunte în comerţul
online. Industria de travel online se împarte în mai multe categorii, cuprinzând: agenţi
online, ghiduri online, planificatoare de călătorie, comunităţi şi forum-uri online.

   Travel 2.0 defineşte transformarea ofertelor în pachete online pentru a da
consumatorului un nou nivel de funcţionalitate şi putere. Travel 2.0 ca şi componentă
a Web 2.0 deţine următoarele caracteristici:

       Transparenţă în date, preţuri, conţinut, imagini: sunt disponibile toate
       informaţiile referitoare la o anumită locaţie;
       Colaborare între utilizatori: pentru uşurinţa schimbului de date şi posibilitatea
       de găsire de informaţii personalizate (recomandări, fotografii, etc.) de la toate
       categoriile de utilizatori;
       Viteză: în însuşirea conţinutului informaţional, datorită motoarelor de căutare
       actuale;
       Informaţie predictivă: asupra utilizatorului, oferindu-i exact datele de care
       acesta are nevoie în funcţie de propriul profil.

    Astfel, cel mai important aspect al turismului online este încrederea şi utilizarea
conţinutului generat utilizator. Cu cât mai mulţi utilizatori folosesc un anumit
serviciu, cu atât acesta devine mai de încredere.

     Aplicaţia GeoLink se încadrează în curentul Travel 2.0 punând la dispoziţie
utilizatorilor o modalitate de realizare şi documentare a traseelor turistice.

    La ora actuală, majoritatea consumatorilor decid asupra locaţiilor pe care doresc a
le vizita în funcţie de reviziile altor consumatori. GeoLink permite realizarea de hărţi
personalizate care pot fi apoi distribuite prietenilor şi cunoscuţilor.

     Scopul aplicaţiei este acela de a permite utilizatorului de a marca puncte de interes
şi trasee turistice adăugând plus de informaţie. Aceste hărţi pot fi apoi distribuite ca
ghiduri turistice, ce conţin comentarii şi legături către sit-uri informative, ştiri, video
şi imagini. Încadrarea acestor date în conţinutul unei hărţi are un impact mai mare
decât simpla vizualizarea a datelor în cadrul unor tabele.

    Navigatorul permite crearea de bookmarks ale site-uri de interes. Această aplicaţie
permite acelaşi lucru, dar pentru locaţii reale din jurul lumii. Utilizând această
aplicaţie, utilizatorul poate gestiona locuri pe care doreşte să le păstreze, viziteze sau
împărtăşească cu alţii.



                                                                                        36
4.2.2 Analiză şi Proiectare
S-a dorit realizarea unei aplicaţii intuitive, uşor de folosit, puternice, care să permită
utilizatorilor introducerea de informaţii în cadrul unei hărţi. Aplicaţia poate servi
pentru crearea de trasee turistice, realizarea de semne de carte cu reprezentare
geografică, crearea de scenarii de desfăşurare a activităţilor sau pentru publicitate, în
cazul în care se doresc introduse legături şi comentarii despre obiective comerciale.

Datorită sutelor de API disponibile dezvoltatorilor, aplicaţiile acestora pot fi
îmbogăţite cu componente avansate, logice sau de interfaţă, reutilizând tehnologia
disponibilă în loc să o reinventeze şi bazând noile proiecte pe experienţa anterioară.
Mashup permite utilizarea de astfel de „rotiţe” iar comunitatea Open Source pune la
dispoziţie exemple de utilizare de cod preexistent, realizând din procesul de
dezvoltare un proces rapid, simplu şi mai puţin costisitor.

Cerinţa ca o aplicaţie să fie publică nu este suficientă pentru a asigura
interoperabilitatea, fiind nevoie de o aplicaţie completă şi neutră. Utilizarea de
componente provenind de la furnizori diferiţi este o dovadă evidentă de neutralitate şi
se încadrează în spiritul Web 2.0.

O aplicaţie bazată JavaScript, nu este necesară instalare, fiind accesibilă în cadrul
unui navigator Web care are suport pentru JavaScript.

Rulând din cadrul navigatorului, aplicaţia devine independentă de platformă şi mai
rapidă, deoarece logica aplicaţiei este executată local utilizând JavaScript, oferind
răspuns fără întârziere şi crescând interactivitatea aplicaţiei.




                        Figura 4.4: Anatomia aplicaţiei GeoLink


                                                                                         37
Modelul facil de programare promovat de Google a dus la utilizarea acestuia în
multiple mashup-uri, Google Maps API fiind lider şi deţinând un procent de 50% de
utilizare, conform ProgrammableWeb.com [30]. Google oferă utilizatorilor încredere şi
credibilitate şi ca furnizor de componente mashup, aceste atribute sunt esenţiale
pentru a stabili relaţii de lungă durată cu clienţii săi.

Google Maps utilizează nativ tehnologia Ajax, utilizatorul nefiind nevoit să reîncarce
pagina, deoarece toate transferurile sunt realizate în fundal, ascunse de către acesta.
Conexiunea dintre client şi server este una dinamică, ce păstrează actualizarea datelor
într-un mod continuu.

Majoritatea mashup-urilor construite pe API-ul Google Maps doar plasează anumite
informaţii pe hartă, dar lasă puţină putere utilizatorului de a prelucra şi selecta sursele
externe utilizate. GeoLink permite personalizarea intrărilor, căutând informaţie
aferentă şi oferă o paletă diversă de categorii de puncte de interes ce pot fi adăugate
(asemeni legendelor). Informaţia introdusă este relaţionată din punct de vedere
geografic şi dispune de unelte pentru interogare, vizualizare şi analiză.

Motoarele de căutare au căpătat un rol vital în experienţa utilizatorului în cadrul sit-
urilor Web, simţindu-se acut inexistenţa acestui mod de navigare în cadrul aplicaţiilor.
Aplicaţia GeoLink utilizează Google Ajax Search API, ce pune la dispoziţie căutarea
de surse provenite din locaţii diferite şi permiţând dezvoltatorului de a aplica restricţii
asupra formatelor rezultatelor. Se pot adăuga informaţii referitoare la ştiri, articole,
imagini şi video, acest lucru diminuând timpul şi efortul căutării acestor date în surse
externe.

Descrierea aspectului, reprezentarea grafică a componentelor este determinată de
fişiere CSS care ajută la separarea conţinutului de prezentare, interfaţa fiind uşor de
modificat în cazul intervenţiilor viitoare. Google Maps şi Google Ajax Search pun la
dispoziţie clase speciale de formatare a datelor conţinute, iar Yahoo! UI Library aduce
plus de funcţionalitate controalelor HTML.

Accesul la server este realizat doar pentru salvarea hărţii şi exportul datelor introduse
în formatul geografic ales: kml sau gpx, având astfel un rol mai mult de stocare de
date, decât un rol de prelucrare.

Un dezavantaj al utilizării JavaScript cu preponderenţă este acela că aplicaţia fiind
dinamic generată la execuţie, conţinutul acesteia este inaccesibil motoarelor de
căutare. O soluţie este exportul informaţiei în format kml, format care poate fi indexat
de către Google. O altă întrebuinţare a formatului kml este utilizarea acestuia în cadrul
Google Earth, permiţând utilizatorului afişarea vizuală a informaţiei atât în mediu
online, cât şi offline.

Pentru a crea o nouă hartă nu este nevoie de a fi un utilizator autentificat. Legăturile
către hărţile personalizate sunt generate aleator, confidenţialitatea unei legături având
şanse de a fi compromisă prin încercări multiple.

Un alt posibil dezavantaj este necesitatea şi dependenţa faţă de cheia utilizator primită
pentru utilizarea API-urilor Google şi a licenţei care impune caracterul deschis şi
necomercial al aplicaţiei.


                                                                                         38
Spaţiul de lucru GeoLink consistă din cinci componente:

       Harta – care redă informaţiile adăugate de utilizator;
       Zona de unelte – care permite selectarea de elemente grafice ce doresc a fi
       adăugate;
       Salvare – permite denumirea hărţii create;
       Zona de Help (Ajutor) – ce conţine un tutorial de folosire al aplicaţiei;
       Zona de căutare – pentru adăugarea de legături.




                         Figura 4.5: Zonele de lucru GeoLink



4.2.3 Detalii de implementare
    GeoLink este o aplicaţie JavaScript ce utilizează ca surse externe două API-uri
Google şi permite personalizarea informaţiei vizualizată pe hartă cu date preluate de
la utilizator (user generated content).

    GeoLink este un mashup de software la nivelul clientului, ce utilizează pentru
partea de interfaţă Google Maps şi Yahoo! UI Library, iar pentru partea de date
Google Ajax Search şi conţinut utilizator.

    API-ul Google Maps este la origine un API JavaScript care ne permite integrarea
de hărţi interactive direct în aplicaţiile noastre Web. Google Maps nu permite numai
vizualizarea de hărţi, ci şi interacţiunea cu anumite zone specifice, cum ar fi plasarea
unui cursor la o anumită locaţie pentru marcarea unui loc anume sau unei adrese.

   Google Maps este suportat pe navigatoarele: Firefox 0.8+, Mozilla 1.4+, IE 5.5+,
Safari 1.2+, Netscape 7.1+, Opera 7+ şi din aprilie 2006 este în versiune 2 cu statutul
de Beta.


                                                                                     39
Pentru utilizarea acestui API este necesară o înregistrare anterioară pentru
obţinerea unei chei de acces utilizată pentru conectarea la serverul Google Maps.
Cheia poate fi folosită doar în cadrul unui domeniu şi este necesară adăugarea ei
pentru orice apel de API Google.

<script
src="http://maps.google.com/maps?file=api&amp;v=2&amp;key=..."
type="text/javascript"></script>

   Inserarea unei hărţi în cadrul unei pagini se realizează prin apelul constructorului
GMap2(). Se pot adăuga controale standard, de exemplu controlul de nivel de zoom,
controlul de reprezentare dorit (imagini satelit, hibrid) sau controale definite utilizator.

if(GBrowserIsCompatible()){
   document.map=new GMap2(document.getElementById("map"));
   document.map.setCenter(new GLatLng(0,0),2);
   document.map.addControl(new GLargeMapControl());
   document.map.addControl(new GMapTypeControl());
   document.map.addControl(new geolink.distance_control());
}

    Spaţiul de nume GEvent este utilizat pentru înregistrarea de handlere de
evenimente şi pentru lansarea acestora în execuţie. Toate evenimentele definite cu
ajutorul acestui API sunt evenimente personalizate şi sunt declanşate intern utilizând
GEvent.trigger().

GEvent.trigger(geolink.poi_markers[i],"click");

    Pentru înregistrarea evenimentelor se foloseşte metoda GEvent.addListener,
care transferă rezultatul apelului de funcţie către hartă. Evenimentele utilizate în
această aplicaţie sunt click, dragend, mouseover şi mouseout.

GEvent.addListener(document.map,"click",function(marker){
    if(!marker){
       geolink.handle_click(marker);
    }
});

    Aplicaţia gestionează două tipuri de puncte care pot fi adăugate: waypoint,
respectiv poi. Există funcţii de gestiune pentru fiecare dintre aceste puncte, diferenţa
fiind că waypoint sunt puncte componente ale rutelor, realizându-se calcule de
distanţă şi inserare de locaţii intermediare.

   Punctele de pe hartă sunt păstrate în liste de obiecte, de genul:

geolink.waypoint_list[i]=    [Object   Lat=47.170151    Lng=27.583549
Text=Iasi Link= [["http://www.google.com/", "Google"]]]

    Există liste pentru waypoint, cât şi pentru poi, ce conţin atât datele (_list), cât şi
referinţe ale obiectelor afişate pe hartă (_marker).

    Uneltele sunt diferite şi în funcţie de tipul de punct selectat. Afişarea acestor
informaţii în format grupat este posibilă folosind metoda openInfoWindowTabsHtml.


                                                                                         40
var i=geolink.find_waypoint_index(marker);
var infoTab= [new
GInfoWindowTab("Links",geolink.editable_waypoint_links(i)),new
GInfoWindowTab("Comments",geolink.editable_waypoint_comments(i)),new
GInfoWindowTab("Tools",geolink.editable_waypoint_tools(marker,i))];
marker.openInfoWindowTabsHtml(infoTab);

    Overlay reprezintă informaţie suplimentară adăugată pe hartă. În această categorie
întră icon şi polyline. Ruta dintre puncte este realizată prin GPolyline:
geolink.waypoints_path=new(GPolyline(points,"#"+geolink.waypoint_line
_color,5);
document.map.addOverlay(geolink.waypoints_path);

    Pentru adăugarea unui nou tip de icon, trebuie specificat locaţia fişierului png,
felul umbrei şi a ancorei.
var f=new GIcon();
f.image=geolink.media_uri+"image.png";
f.shadow=geolink.media_uri+"shadow.png";
f.iconSize=new GSize(12,20);
f.shadowSize=new GSize(22,20);
f.iconAnchor=new GPoint(6,20);
f.infoWindowAnchor=new GPoint(6,1);
f.infoShadowAnchor=new GPoint(13,13);
new_marker=new GMarker(point,{icon:f,draggable:_1d});

   Versiunea 2 Google Maps API permite crearea de controale utilizator pe care le
putem adăuga hărţii, prin subclasarea clasei GControl. În acest mod sunt adăugate
controalele de distanţă, de unelte, de căutare de legături, de alegere a culorii liniei.
geolink.toolbox_control.prototype=new GControl();
geolink.toolbox_control.prototype.initialize = function(map){
map.getContainer().appendChild(document.getElementById("toolbox_contr
ol"));
return document.getElementById("toolbox_control");
};
geolink.toolbox_control.prototype.getDefaultPosition=function(){
return new GControlPosition(G_ANCHOR_TOP_LEFT, new GSize(-180,-17));
};

    Pentru căutarea unei locaţii ce se doreşte a fi adăugată se utilizează geocoder-ul
oferit de Google Map API, care translatează adresele în perechi latitudine-longitudine.
Se poate utiliza obiectul GClientGeocoder pentru trimiterea cererilor către serverul
Google utilizând apeluri JavaScript.
geolink.geocoder=new GClientGeocoder();
geolink.geocoder.getLocations(address, callback);

    Yahoo User Interface Library este o bibliotrecă de componente JavaScript
reutilizabile pentru crearea de aplicaţii Web, ce foloseşte propriul spaţiu de nume.
Yahoo! UI deţine componente pentru controalele standard şi pentru partea de utilities.

   A fost folosită componenta YAHOO.util.Dom.setStyle din cadrul pentru
manipularea stilurilor elementelor XHTML şi YAHOO.widget.ButtonGroup pentru
gruparea tipurilor de puncte ce pot fi adăugate.

    Pentru partea de expandare a componentelor vizuale s-a folosit YAHOO.util.Anim,
iar pentru controlul de schimbare al culorii liniei de traseu YAHOO.widget.Slider şi



                                                                                     41
YAHOO.util.Color. YAHOO.util.Event.addListener se ocupă de adăugarea de triggere
de evenimente pentru diferite componente.

   Salvarea datelor conţinute de hartă este realizată prin utilizarea componentei
YAHOO.util.Connect.asyncRequest(method,             uri,    callback,     postData),
unde:

        method: metode de cerere către server(POST, GET, PUT, DELETE, ect.);
        uri: calea către locaţia care receptează şi prelucrează datele;
        callback: o referinţă către obiectul callback care este transmis;
        postData: datele în format query-string ("new=1&old=2")

YAHOO.util.Connect.asyncRequest(
      'GET', 'save.php', {
           success: function(o) {
                  alert(o.responseText);
            },
            failure: function(o) {
                  alert('Request failed: ' +
                  o.statusText);
            }
      }
);

   Pentru transmisia datelor în postData s-a folosit formatul JSON şi anumite metoda
toJSONString() pentru a putea serializa liste de colecţii de obiecte.
var postData=
"waypoints="+encodeURIComponent(geolink.waypoint_list.toJSONString())
;
postData+=
"&pois="+encodeURIComponent(geolink.poi_list.toJSONString());

    Pe server se va genera noul fişier care conţine datele introduse şi se vor apela
funcţii speciale de afişare (prefixate în acest caz cu saved_) care vor extrage
informaţia din structurile geolink.waypoint_list, geolink.poi_list, etc.
geolink.waypoint_list = stripslashes($_POST['waypoints']);
geolink.waypoint_list[i]=
[{"Lat":47.170151,"Lng":27.583549,"Text":"Iasi","Icon":"yellow",
"Links":[["http://en.wikipedia.org/wiki/Ia%25C5%259Fi","Iasi                         -
Wikipedia, the free encyclopedia"]]}]

   Odată ce harta generată este salvată pe server se vor genera şi fişierele .gpx şi
.kml. Salvarea se realizează utilizând PHP pe partea de server.

    Generarea fişierului .kml se realizează prin adăugarea nodurilor existente pe hartă
şi a traseului generat de acestea. Ca informaţie specifică unui nod este introdus
numele, numărul de legături specifice şi conţinutul lor.
for(var i=0;i<geolink.waypoint_list.length;i++){
   html +="<Placemark>n";
   html +="<styleUrl>#waypoint</styleUrl>";
   html +="<name>"+get_first_line(geolink.waypoint_list[i].Text)+"
("+(i+1)+" of "+geolink.waypoint_list.length+")</name>n";
   html +="<description><![CDATA[<p>"+
geolink.waypoint_list[i].Text+"</p>";
   if (geolink.waypoint_list[i].Links.length != 0){




                                                                                    42
Tehnici De Tip Mashup Pentru Interactiuni Web In Sisteme Informationale Geografice
Tehnici De Tip Mashup Pentru Interactiuni Web In Sisteme Informationale Geografice
Tehnici De Tip Mashup Pentru Interactiuni Web In Sisteme Informationale Geografice
Tehnici De Tip Mashup Pentru Interactiuni Web In Sisteme Informationale Geografice
Tehnici De Tip Mashup Pentru Interactiuni Web In Sisteme Informationale Geografice
Tehnici De Tip Mashup Pentru Interactiuni Web In Sisteme Informationale Geografice
Tehnici De Tip Mashup Pentru Interactiuni Web In Sisteme Informationale Geografice
Tehnici De Tip Mashup Pentru Interactiuni Web In Sisteme Informationale Geografice
Tehnici De Tip Mashup Pentru Interactiuni Web In Sisteme Informationale Geografice
Tehnici De Tip Mashup Pentru Interactiuni Web In Sisteme Informationale Geografice
Tehnici De Tip Mashup Pentru Interactiuni Web In Sisteme Informationale Geografice

More Related Content

Similar to Tehnici De Tip Mashup Pentru Interactiuni Web In Sisteme Informationale Geografice

Date structurate, aplicarea modelului linked data
Date structurate, aplicarea modelului linked dataDate structurate, aplicarea modelului linked data
Date structurate, aplicarea modelului linked dataionut_ignatescu
 
Impactul economic al cloud computing asupra unei institutii publice anger ...
Impactul economic al cloud computing asupra unei  institutii publice   anger ...Impactul economic al cloud computing asupra unei  institutii publice   anger ...
Impactul economic al cloud computing asupra unei institutii publice anger ...silviu_cojocaru
 
Brosura- Noi tehnologii web 2.0 şi instrumente TIC moderne pentru predare- în...
Brosura- Noi tehnologii web 2.0 şi instrumente TIC moderne pentru predare- în...Brosura- Noi tehnologii web 2.0 şi instrumente TIC moderne pentru predare- în...
Brosura- Noi tehnologii web 2.0 şi instrumente TIC moderne pentru predare- în...Mihaela Ursachi
 
Cloud computing caracteristici si modele v greavu
Cloud computing caracteristici si modele   v greavuCloud computing caracteristici si modele   v greavu
Cloud computing caracteristici si modele v greavuMalairauValeria
 
Documentatie
DocumentatieDocumentatie
Documentatiecrytek111
 
Microsoft 23sept2010
Microsoft 23sept2010Microsoft 23sept2010
Microsoft 23sept2010Agora Group
 
Sistemul e learning si aplicatiile web 2.0
Sistemul e learning si aplicatiile web 2.0Sistemul e learning si aplicatiile web 2.0
Sistemul e learning si aplicatiile web 2.0Aurelia Pisau
 
WADe 2014—2015 (02/12): Dezvoltarea de servicii Web în stilul REST
WADe 2014—2015 (02/12): Dezvoltarea de servicii Web în stilul RESTWADe 2014—2015 (02/12): Dezvoltarea de servicii Web în stilul REST
WADe 2014—2015 (02/12): Dezvoltarea de servicii Web în stilul RESTSabin Buraga
 
Web 2020 08/12: Servicii Web. De la arhitecturi orientate spre servicii la SO...
Web 2020 08/12: Servicii Web. De la arhitecturi orientate spre servicii la SO...Web 2020 08/12: Servicii Web. De la arhitecturi orientate spre servicii la SO...
Web 2020 08/12: Servicii Web. De la arhitecturi orientate spre servicii la SO...Sabin Buraga
 
Web 2016 (03/13) Programare Web – Servere de aplicații. Arhitectura aplicații...
Web 2016 (03/13) Programare Web – Servere de aplicații. Arhitectura aplicații...Web 2016 (03/13) Programare Web – Servere de aplicații. Arhitectura aplicații...
Web 2016 (03/13) Programare Web – Servere de aplicații. Arhitectura aplicații...Sabin Buraga
 
WADe 2017-2018 (2/12) Service-based Web Application Development. REST
WADe 2017-2018 (2/12) Service-based Web Application Development. RESTWADe 2017-2018 (2/12) Service-based Web Application Development. REST
WADe 2017-2018 (2/12) Service-based Web Application Development. RESTSabin Buraga
 
IT & C, Volumul 2, Numărul 3, Septembrie 2023 - Rezumate
IT & C, Volumul 2, Numărul 3, Septembrie 2023 - RezumateIT & C, Volumul 2, Numărul 3, Septembrie 2023 - Rezumate
IT & C, Volumul 2, Numărul 3, Septembrie 2023 - RezumateNicolae Sfetcu
 
WADe 2017-2018 (3/12) Web Application Development: Architectural Aspects
WADe 2017-2018 (3/12) Web Application Development: Architectural AspectsWADe 2017-2018 (3/12) Web Application Development: Architectural Aspects
WADe 2017-2018 (3/12) Web Application Development: Architectural AspectsSabin Buraga
 
Diploma Project: Friloc - Retea de socializare bazata pe geolocalizare
Diploma Project: Friloc - Retea de socializare bazata pe geolocalizareDiploma Project: Friloc - Retea de socializare bazata pe geolocalizare
Diploma Project: Friloc - Retea de socializare bazata pe geolocalizareVlad Petre
 
Guvernul romaniai da-sibiu-03052012
Guvernul romaniai da-sibiu-03052012Guvernul romaniai da-sibiu-03052012
Guvernul romaniai da-sibiu-03052012Agora Group
 
Sesiunea de comunicari studentesti
Sesiunea de comunicari studentestiSesiunea de comunicari studentesti
Sesiunea de comunicari studentestiic3hand
 
Web 2016 (10/13) Servicii Web. De la arhitecturi orientate spre servicii (SOA...
Web 2016 (10/13) Servicii Web. De la arhitecturi orientate spre servicii (SOA...Web 2016 (10/13) Servicii Web. De la arhitecturi orientate spre servicii (SOA...
Web 2016 (10/13) Servicii Web. De la arhitecturi orientate spre servicii (SOA...Sabin Buraga
 
Lupu Vitaliy Bachelor thesis Presentation
Lupu Vitaliy Bachelor thesis PresentationLupu Vitaliy Bachelor thesis Presentation
Lupu Vitaliy Bachelor thesis Presentationlogan123
 

Similar to Tehnici De Tip Mashup Pentru Interactiuni Web In Sisteme Informationale Geografice (20)

Date structurate, aplicarea modelului linked data
Date structurate, aplicarea modelului linked dataDate structurate, aplicarea modelului linked data
Date structurate, aplicarea modelului linked data
 
Perioada web 2.0
Perioada web 2.0Perioada web 2.0
Perioada web 2.0
 
Impactul economic al cloud computing asupra unei institutii publice anger ...
Impactul economic al cloud computing asupra unei  institutii publice   anger ...Impactul economic al cloud computing asupra unei  institutii publice   anger ...
Impactul economic al cloud computing asupra unei institutii publice anger ...
 
Brosura- Noi tehnologii web 2.0 şi instrumente TIC moderne pentru predare- în...
Brosura- Noi tehnologii web 2.0 şi instrumente TIC moderne pentru predare- în...Brosura- Noi tehnologii web 2.0 şi instrumente TIC moderne pentru predare- în...
Brosura- Noi tehnologii web 2.0 şi instrumente TIC moderne pentru predare- în...
 
Cloud computing caracteristici si modele v greavu
Cloud computing caracteristici si modele   v greavuCloud computing caracteristici si modele   v greavu
Cloud computing caracteristici si modele v greavu
 
Documentatie
DocumentatieDocumentatie
Documentatie
 
Microsoft 23sept2010
Microsoft 23sept2010Microsoft 23sept2010
Microsoft 23sept2010
 
Sistemul e learning si aplicatiile web 2.0
Sistemul e learning si aplicatiile web 2.0Sistemul e learning si aplicatiile web 2.0
Sistemul e learning si aplicatiile web 2.0
 
WADe 2014—2015 (02/12): Dezvoltarea de servicii Web în stilul REST
WADe 2014—2015 (02/12): Dezvoltarea de servicii Web în stilul RESTWADe 2014—2015 (02/12): Dezvoltarea de servicii Web în stilul REST
WADe 2014—2015 (02/12): Dezvoltarea de servicii Web în stilul REST
 
Web 2020 08/12: Servicii Web. De la arhitecturi orientate spre servicii la SO...
Web 2020 08/12: Servicii Web. De la arhitecturi orientate spre servicii la SO...Web 2020 08/12: Servicii Web. De la arhitecturi orientate spre servicii la SO...
Web 2020 08/12: Servicii Web. De la arhitecturi orientate spre servicii la SO...
 
Web 2016 (03/13) Programare Web – Servere de aplicații. Arhitectura aplicații...
Web 2016 (03/13) Programare Web – Servere de aplicații. Arhitectura aplicații...Web 2016 (03/13) Programare Web – Servere de aplicații. Arhitectura aplicații...
Web 2016 (03/13) Programare Web – Servere de aplicații. Arhitectura aplicații...
 
WADe 2017-2018 (2/12) Service-based Web Application Development. REST
WADe 2017-2018 (2/12) Service-based Web Application Development. RESTWADe 2017-2018 (2/12) Service-based Web Application Development. REST
WADe 2017-2018 (2/12) Service-based Web Application Development. REST
 
IT & C, Volumul 2, Numărul 3, Septembrie 2023 - Rezumate
IT & C, Volumul 2, Numărul 3, Septembrie 2023 - RezumateIT & C, Volumul 2, Numărul 3, Septembrie 2023 - Rezumate
IT & C, Volumul 2, Numărul 3, Septembrie 2023 - Rezumate
 
WADe 2017-2018 (3/12) Web Application Development: Architectural Aspects
WADe 2017-2018 (3/12) Web Application Development: Architectural AspectsWADe 2017-2018 (3/12) Web Application Development: Architectural Aspects
WADe 2017-2018 (3/12) Web Application Development: Architectural Aspects
 
Diploma Project: Friloc - Retea de socializare bazata pe geolocalizare
Diploma Project: Friloc - Retea de socializare bazata pe geolocalizareDiploma Project: Friloc - Retea de socializare bazata pe geolocalizare
Diploma Project: Friloc - Retea de socializare bazata pe geolocalizare
 
Guvernul romaniai da-sibiu-03052012
Guvernul romaniai da-sibiu-03052012Guvernul romaniai da-sibiu-03052012
Guvernul romaniai da-sibiu-03052012
 
Sesiunea de comunicari studentesti
Sesiunea de comunicari studentestiSesiunea de comunicari studentesti
Sesiunea de comunicari studentesti
 
Web 2016 (10/13) Servicii Web. De la arhitecturi orientate spre servicii (SOA...
Web 2016 (10/13) Servicii Web. De la arhitecturi orientate spre servicii (SOA...Web 2016 (10/13) Servicii Web. De la arhitecturi orientate spre servicii (SOA...
Web 2016 (10/13) Servicii Web. De la arhitecturi orientate spre servicii (SOA...
 
Lupu Vitaliy Bachelor thesis Presentation
Lupu Vitaliy Bachelor thesis PresentationLupu Vitaliy Bachelor thesis Presentation
Lupu Vitaliy Bachelor thesis Presentation
 
Ludmila Răileanu, Ana Nagherneac. Oportunităţile erei electronice şi Utilizat...
Ludmila Răileanu, Ana Nagherneac. Oportunităţile erei electronice şi Utilizat...Ludmila Răileanu, Ana Nagherneac. Oportunităţile erei electronice şi Utilizat...
Ludmila Răileanu, Ana Nagherneac. Oportunităţile erei electronice şi Utilizat...
 

More from Ecaterina Moraru (Valica)

UI/UX Tips & Tricks for developers - FOSDEM2020
UI/UX Tips & Tricks for developers - FOSDEM2020UI/UX Tips & Tricks for developers - FOSDEM2020
UI/UX Tips & Tricks for developers - FOSDEM2020Ecaterina Moraru (Valica)
 
Difficulties in having more designers participate in Open Source
Difficulties in having more designers participate in Open SourceDifficulties in having more designers participate in Open Source
Difficulties in having more designers participate in Open SourceEcaterina Moraru (Valica)
 
CSS Variables — Native reusable custom properties
CSS Variables — Native reusable custom propertiesCSS Variables — Native reusable custom properties
CSS Variables — Native reusable custom propertiesEcaterina Moraru (Valica)
 
Interconectarea Semantica A Datelor In Contextul Managementului Informatiilor...
Interconectarea Semantica A Datelor In Contextul Managementului Informatiilor...Interconectarea Semantica A Datelor In Contextul Managementului Informatiilor...
Interconectarea Semantica A Datelor In Contextul Managementului Informatiilor...Ecaterina Moraru (Valica)
 

More from Ecaterina Moraru (Valica) (20)

UI/UX Tips & Tricks for developers - FOSDEM2020
UI/UX Tips & Tricks for developers - FOSDEM2020UI/UX Tips & Tricks for developers - FOSDEM2020
UI/UX Tips & Tricks for developers - FOSDEM2020
 
UI/UX Tips & Tricks for developers
UI/UX Tips & Tricks for developersUI/UX Tips & Tricks for developers
UI/UX Tips & Tricks for developers
 
Sketching Session
Sketching SessionSketching Session
Sketching Session
 
CSS Grid vs. Flexbox
CSS Grid vs. FlexboxCSS Grid vs. Flexbox
CSS Grid vs. Flexbox
 
Designing in the open
Designing in the openDesigning in the open
Designing in the open
 
XWiki Skin 10.x+ ideas
XWiki Skin 10.x+ ideasXWiki Skin 10.x+ ideas
XWiki Skin 10.x+ ideas
 
Difficulties in having more designers participate in Open Source
Difficulties in having more designers participate in Open SourceDifficulties in having more designers participate in Open Source
Difficulties in having more designers participate in Open Source
 
CSS Variables — Native reusable custom properties
CSS Variables — Native reusable custom propertiesCSS Variables — Native reusable custom properties
CSS Variables — Native reusable custom properties
 
Icon Themes
Icon ThemesIcon Themes
Icon Themes
 
Design proposals status 9.x
Design proposals status 9.xDesign proposals status 9.x
Design proposals status 9.x
 
What's new in XWiki 8.x and half of 9.x
What's new in XWiki 8.x and half of 9.x What's new in XWiki 8.x and half of 9.x
What's new in XWiki 8.x and half of 9.x
 
Expectations from Open Source Designers
Expectations from Open Source DesignersExpectations from Open Source Designers
Expectations from Open Source Designers
 
Success stats from OSD community
Success stats from OSD communitySuccess stats from OSD community
Success stats from OSD community
 
Future of XWiki Skins
Future of XWiki SkinsFuture of XWiki Skins
Future of XWiki Skins
 
Design process in an Open Community
Design process in an Open CommunityDesign process in an Open Community
Design process in an Open Community
 
XWiki Usability Testing Sessions
XWiki Usability Testing SessionsXWiki Usability Testing Sessions
XWiki Usability Testing Sessions
 
About XWiki.org
About XWiki.orgAbout XWiki.org
About XWiki.org
 
Evolution of CSS
Evolution of CSSEvolution of CSS
Evolution of CSS
 
XWiki Improvements Review (ver 2.4 - 5.1)
XWiki Improvements Review (ver 2.4 - 5.1)XWiki Improvements Review (ver 2.4 - 5.1)
XWiki Improvements Review (ver 2.4 - 5.1)
 
Interconectarea Semantica A Datelor In Contextul Managementului Informatiilor...
Interconectarea Semantica A Datelor In Contextul Managementului Informatiilor...Interconectarea Semantica A Datelor In Contextul Managementului Informatiilor...
Interconectarea Semantica A Datelor In Contextul Managementului Informatiilor...
 

Tehnici De Tip Mashup Pentru Interactiuni Web In Sisteme Informationale Geografice

  • 1. Universitatea „Alexandru Ioan Cuza” Facultatea de Informatică Tehnici de tip mashup pentru interacţiuni Web în sisteme informaţionale geografice Iaşi, 2007 Candidat: Ecaterina Valică Coordonator: Lect. univ. dr. Sabin Corneliu Buraga
  • 2. Cuprins Cuprins...........................................................................................................................2 2. Tehnologii Web .........................................................................................................4 2.1 Web 2.0 ................................................................................................................4 2.1.1 Aspecte generale ...........................................................................................4 2.1.2 Dezvoltare de Software 2.0...........................................................................9 2.2 Servicii Web.......................................................................................................12 2.2.1 Arhitectura orientată spre servicii...............................................................12 2.3 JavaScript...........................................................................................................15 2.3.1 Aspecte generale .........................................................................................15 2.4 AJAX .................................................................................................................18 2.4.1 Aspecte generale .........................................................................................18 2.4.2 JavaScript Object Notation .........................................................................20 3. Sisteme informaţionale geografice ..........................................................................22 3.1 Aspecte generale ................................................................................................22 3.2 Formate de date..................................................................................................27 3.2.1 Geography Markup Language ....................................................................27 3.2.2 Keyhole Markup Language.........................................................................27 3.2.3 GeoRSS.......................................................................................................28 3.2.4 GPS eXchange Format................................................................................28 3.2.5 Microformate ..............................................................................................29 4. Mashup.....................................................................................................................31 4.1 Aspecte generale ................................................................................................31 4.1.1 Tipuri de Mashup........................................................................................33 4.1.2 Provocări, Beneficii, Neajunsuri.................................................................34 4.2 Studiu de caz: GeoLink......................................................................................36 4.2.1 Concept .......................................................................................................36 4.2.2 Analiză şi Proiectare ...................................................................................37 4.2.3 Detalii de implementare..............................................................................39 4.2.4 Utilizare.......................................................................................................45 5. Concluzii ..................................................................................................................49 Acronime......................................................................................................................50 Bibliografie…………………………………………………………………………...51 2
  • 3. 1. Introducere Suntem obişnuiţi de a organiza informaţiile, locurile şi obiectele din jurul nostru. Avem capacităţi native de a reţine şi actualiza numele zonelor care prezintă interes, cât şi modul în care putem ajunge în aceste locuri. Totuşi acest număr de locaţii pe care le putem gestiona reprezintă un număr limitat per individ şi natura acestuia este una subiectivă. În zilele noastre conţinutul informaţional din întreaga lume este convertit la o formă digitală, făcând astfel informaţiile disponibile oricui, oriunde şi oricând. În ultimele decenii, Web-ul a devenit o componentă esenţială în vieţile noastre, fiind folosit în cele mai diverse domenii de activitate. Prin intermediul Web-ului, a serviciilor oferite de acesta, multe dintre activităţile pe care omul le întreprinde pot fi uşurate şi chiar evident eficientizate. Web-ul a devenit un sistem distribuit care permite programatorilor să creeze aplicaţii combinând date şi servicii în moduri originale spre realizarea unor produse inovatoare. Pe măsură ce platformele Web încep să se maturizeze se dezvoltă un număr mare de tehnologii care duc aplicaţiile actuale la un nivel nou de putere şi accesibilitate. Hărţile interactive devin din ce în ce mai prezente în aplicaţiile Web moderne. Două dintre domeniile cele mai evidente în care această tehnologie are un mare impact sunt turismul şi piaţa imobiliară. Deşi majoritatea aplicaţiilor Web din ziua de astăzi ar putea beneficia de un sistem cartografic integrat, dezvoltatorii se izbesc de complexitatea integrării unui sistem geografic de baze de date. Hărţile interactive, care să comunice în timp real cu un server, au fost considerate dificil de realizat până la apariţia tehnologiilor recente ca Google Maps şi Ajax. Convergenţa dintre SOA/Client şi aplicaţiile de tip mashup va duce la realizarea de unelte de dezvoltare care vor facilita transferul de servicii între graniţele interne ale organizaţiilor. Informaţia devenind total accesibilă va permite arhitecţilor, dezvoltatorilor şi utilizatorilor să pună în spaţiul Web orice idee. 3
  • 4. 2. Tehnologii Web 2.1 Web 2.0 Web-ul pune la dispoziţie un sistem global şi standardizat de comunicare multimedia, informaţiile fiind organizate asociativ şi distribuite în funcţie de cererile utilizatorilor. Web-ul se îndreaptă de la o colecţie descentralizată de situri Web către o platformă computaţională ubicuă. Acest nou concept îl întâlnim sub denumirea de Web 2.0. Web 2.0 doreşte să ofere suport pentru realizarea de marcaje definite de utilizatori, manieră deschisă de participare, grad ridicat de descentralizare a datelor şi a serviciilor existente, încredere radicală şi interacţiune tot mai bogată şi complexă cu utilizatorul. Mai mult, utilizatorii actuali doresc flexibilitate, internaţionalizare, calitate, funcţionalitate, utilizabilitate, adaptabilitate şi consistenţă. Momentan, suntem martorii unei tranziţii în care Web-ul este văzut mai mult ca o platformă software, în care utilizatorul îşi controlează propriile date, punându-le în mod uzual la dispoziţia altora, prin intermediul unor instrumente colaborative. Asistăm la proliferarea de servicii specializate, acestea putând fi invocate într-o manieră transparentă, de către oricine. 2.1.1 Aspecte generale Principalele competenţe ale unei aplicaţii Web 2.0: Oferirea de servicii, nu de pachete software, cu o scalabilitate eficientă cost; Controlul asupra surselor de date, care sunt îmbunătăţite pe măsură ce mai mulţi utilizatori le folosesc; Încredinţarea utilizatorilor ca co-dezvoltatori; Utilizarea inteligenţei colective; Permiterea de auto-serviciu (self-service) şi participare pentru client; Distribuirea de software pentru mai multe dispozitive; Descentralizare radicală; Mixarea datelor din surse de calitate, combinând micro-conţinut pentru a oferi noi funcţionalităţi; Comportament emergent: funcţionalitatea poate fi reutilizată, remixată, agregată; Interfeţe utilizator intuitive, modele de dezvoltare şi modele de afacere. Ideea centrală a Web 2.0 este aceea a manipulării inteligenţei colective, posibilitatea utilizării de lucruri şi idei pe care ceilalţi le consideră ca fiind folositoare, interesante. Se generează conceptul de sit Web care să fie întreţinut de către comunitate şi care să ofere acesteia serviciile dorite. Funcţionalităţi de genul self-service îl fac pe 4
  • 5. utilizator să aibă încredere în informaţiile pe care le stochează, să depună timp şi răbdare pentru îmbunătăţirea serviciilor de care beneficiază. Acest lucru nu arată numai puterea utilizatorilor în cadrul Web ci demonstrează şi interesul general pentru software-ul online de calitate, care beneficiază de un „marketing viral”. Din moment ce majoritatea conţinutul disponibil este generat de către utilizator se impune un anumit factor de control şi proprietate, astfel încât dacă utilizatorilor le este refuzat controlul asupra propriilor date, aceştia vor schimba respectivul furnizor pentru unul care le va oferi această facilitate. Un serviciu de acest gen devine din ce în ce mai puternic cu cât mai mulţi utilizatori în folosesc, încadrându-se astfel în acea „arhitectură a participării”. Una din promisiunile Web 2.0 era aceea de piese de dimensiuni reduse, slab interconectate. Acest aspect este benefic deoarece reduce complexitatea aplicaţiilor şi efortul de integrare. Dezvoltarea mashup-urilor este o dovadă că acest model de integrare aduce îmbunătăţiri modelului de programare, totul fiind datorat sutelor de API-uri disponibile ce pot fi combinate şi utilizate pentru ca rezultatul să aducă mai multă valoare decât suma componentelor. Comunitatea Web 2.0 a arătat că există metode mai flexibile de a conecta sisteme decât cele în care se impunea control absolut şi constrângeri rigide. Web 2.0 si mashup-urile ne oferă o nouă perspectivă asupra arhitecturii orientată-servicii. Unul dintre conceptele cheie când vine vorba de Web 2.0 este ideea de a transforma aplicaţiile în platforme şi de a focaliza atenţia pe crearea de software prin intermediul serviciilor (fie că e vorba de interfeţe utilizator sau servicii Web). Figura 2.1: Web 2.0 ca platformă [15] Web 2.0 se concentrează asupra utilizării de integrări lightweight cu scopul de a avea o barieră inexistentă în crearea comunităţilor şi pentru a permite schimbul dual de tehnologie pentru crearea ecosistemelor şi a relaţiilor dintre acestea. 5
  • 6. Un sit Web 2.0 poate folosi unele din tehnologiile următoare [36]: Aplicaţii Internet complexe (RIA – Rich Internet Applications), realizate opţional prin Ajax; Utilizare CSS (Cascading Style Sheets) pentru partea de prezentare; Marcaje XHTML valide, îmbunătăţite prin utilizarea microformatelor; Agregarea datelor în format RSS/Atom; URL-uri curate şi semnificative; Utilizarea extensivă de folksonomi (în formă de taguri); Utilizarea de software wiki complet sau parţial, pentru generarea de platforme; Utilizarea de software open-source complet sau parţial; XACML (eXtensible Access Control Markup Language) sau SOAP pentru controlul acces-ului între organizaţii şi domenii; Publicare prin blog-uri; Mashups - aplicaţii Web hibridă; REST (Representational State Transfer) sau XML Web Service API. Ajax este o tehnologie extrem de puternică care pune la dispoziţie aplicaţii puternice, cu aceeaşi flexibilitate cu programele care rulează pe computer, fără a avea nevoie de nimic mai mult decât un simplu navigator Web. Ajax necesită pentru a putea funcţiona utilizarea serviciilor Web, mai ales a celor pure HTTP. Astfel, Ajax este aliniat cu conceptele prezente la ora actuală în Web şi reprezintă o soluţie naturală pentru multe probleme întâlnite în software-ul online. Asta ne aduce la arhitectura informaţiei stilului Web. Informaţia este stocată în XML şi referenţiată prin ierarhii URL. Inabilitatea de a accesa informaţia prin intermediul unui URL împiedică indexarea la nivel de motor de căutare, posibilitatea de a integrare sau accesa acea informaţie. Astfel, modul Web 2.0 de testare, design sau menţinere a software-ului prin combinarea de componente ca simple incluziuni JavaScript (mashup pe partea de client) sau servicii Web în stil REST, facilitează dezvoltarea Global SOA (Service- Oriented Architecture) sau a sferei mashup-urilor. Serviciile Web lightweight şi modelele ca RSS şi Atom creează un ecosistem informaţional care nu cunoaşte limite din punct de vedere al consumului şi al integrării. O posibilă problemă care poate intervine este aceea a securităţii aplicaţiilor Ajax din cauza codului disponibil şi uşurinţei cu care acesta poate fi manipulat. Aplicaţiile de acest gen sunt folositoare pentru că acestea sunt disponibile de fiecare dată când sunt necesare, indiferent de locaţie, oferind mereu informaţia căutată. O îmbunătăţire a acestui model poate fi adusă de publicarea informaţiilor într-un loc foarte social. Astfel, aceasta devine mult mai valoroasă şi completă, prin interacţiunea utilizatorilor care pot să-i adauge valoare prin comentarii, tag-uri, agregări, bookmarking, etc. Informaţia devine o componentă din inteligenţa colectivă a Web-ului. 6
  • 7. Unul dintre punctele tari Web 2.0 este acela de a încuraja protocoalele deschise şi API-urile pentru răspândirea informaţiei prin servicii, în loc de pagini statice, pentru a lucru permite informaţiei în stare brută pe care utilizatorii o adaugă aplicaţiilor Web 2.0 să fie distribuită pentru reutilizare. Acest lucru a dus la dezvoltarea rapidă a fenomenului de mashup şi dezvoltarea unui lanţ dinamic de distribuire de informaţie, denumit Global SOA şi caracterizat de tehnologii ca RSS, REST. Web 2.0 asigură lumii SOA tehnici lightweight de construire de soluţii scalabile, valoroase, atât în interiorul, cât şi în exteriorul firewall-urilor. SOA devine astfel coloana vertebrală a fenomenului mashup, realizând aspectele dificile în fundal şi rezolvând problematici ca versiuni multiple, transformări de date, etc. Mashup-urile sunt aflate la un nivel superior, bazându-se pe arhitecturi dinamice. Figura 2.2: Imagine de ansamblu asupra Web 2.0 [7] Aplicaţiile de tip situational software, sunt aplicaţii instante ce pot fi asamblate just-in-time prin utilizarea unor palete de servicii şi feed-uri disponibile în cadrul Web sau în cadrul întreprinderii. Se numesc situaţionale deoarece pot fi create doar când o anumită situaţie apare şi distruse când nu mai sunt necesare. Acest tip de aplicaţii poate fi inclus în conceptul Web 2.0 de self-service, consumatorul realizând soluţii din concatenarea blog-urilor, wiki-urilor, adăugând feed-uri, widget-uri şi servicii Web. Această soluţie este încadrată în managementul personalizat al relaţiilor cu clientul în care utilizatorii obţin ceea ce îşi doresc ajutându-se singuri şi creând respectiva aplicaţie. Toate aceste realizează aplicaţii mult mai rapide, ieftine, mai uşor de refolosit şi menţinut. 7
  • 8. Pentru realizarea acestui tip de aplicaţie este nevoie de: Servicii, nu aplicaţii monolitice. Se realizează o conexiune mult mai strânsă între produs şi consumator. Se urmăreşte succesul serviciilor focalizate pe adopţia cerinţelor utilizator, date la cerere, costuri scăzute, ridicarea infrastructurii publice şi feedback între furnizor şi consumator. Comunitate. Crearea unei locaţii virtuale în care utilizatorul să poată adăuga informaţii personalizate (tag-uri, comentarii, ratings) şi care să ofere caracteristici sociale şi mecanisme de feedback. Simplitate. Uşurinţa de folosire a unui program este un aspect cheie. Api-urile actuale se concentrează asupra experienţei utilizator şi procesul de mixare de informaţii devine simplu pentru dezvoltator datorită uşurinţei de utilizare a API-urilor respective, cât şi a formatelor simple de transport a informaţiei ca RSS sau Atom. Există cantităţi masive de conţinut generat utilizator creat non-stop. Acest lucru face ca un utilizator să devină cea mai importantă componentă a Web-ului. Apoi este ecosistemul mashup care îşi atinge din ce în ce mai mult scopul de a oferi utilizatorilor o experienţă ghidată, prin alegerea informaţiei prezentate. Blog-urile şi wiki-urile sunt aproape în totalitate self-service, ceea ce arată că transferul puterii de creare de software în mâna utilizatorilor este în desfăşurare. Inovaţia va veni din partea utilizatorilor ce deţin timpul, energia, creativitatea, motivaţia şi contextul pentru a realiza software mai bun, în felul lor. Şi aceasta devine productivă când este împărţită, încurajând şi ceilalţi utilizatori de a aduce îmbunătăţiri. RSS, Ajax au bariere foarte mici în reutilizare. Majoritatea software-ului folositor este open source. Opţiunea navigatoarelor „View Source” permite oricărui utilizator să înţeleagă şi refolosească componentele folositoare întâlnite. RSS a dat utilizatorului posibilitatea de a selecta informaţia pe care doreşte să o vizualizeze. 8
  • 9. 2.1.2 Dezvoltare de Software 2.0 Satisfacerea consumatorilor reprezintă un scop al afacerilor online şi offline. Acest lucru este posibil în modelul Web 2.0 datorită aplicaţiilor, şabloanelor care au fost introduse, oferind potenţialul de prezentare clienţilor de produse mai bune, mai complete şi într-un mod cât mai rapid. Figura 2.3: Redarea controlului utilizatorilor pentru realizarea de aplicaţii [13] Având în vedere că numărul de potenţiali clienţi depăşeşte mereu numărul de dezvoltatori, este greu de oferit consultanţă, mai ales într-un mod individual. Mediul de interacţiune fiind cel online, se pot oferi acum unelte utilizatorilor pentru a rafina, adapta şi contribui la produsele şi serviciile oferite, adăugându-le acestora inovaţie. YouTube este poate cel mai bun exemplu de co-dezvoltare din partea clienţilor (mai mult de 65.000 fişiere video adăugate în fiecare zi). Dezvoltarea de Software 2.0 înseamnă în primul rând colectarea de contribuţii utilizator, realizând o bază de date de „intenţii” şi clasificând feedback-ul primit pentru a identifica cel mai bun şi cel mai popular conţinut sau capabilitate. Acest transfer de dezvoltare de la instituţii către utilizatori, transformă pe beneficiari mai mult în mediatori şi facilitatori, decât în creatori sau deţinători. Acesta reprezintă un aspect al aplicaţiilor aflate în stadiul de beta continuu, concept care reflectă că produsele şi serviciile online nu sunt niciodată complete sau în formă finală, mereu fiind adăugat conţinut şi funcţionalitate. 9
  • 10. Dezvoltarea de Software 1.0 Dezvoltarea de Software 2.0 Canal de interacţiune Telefon, e-mail, contact Web, e-mail, IM cu utilizatorul personal (face-to-face) Sursa de inovaţie Organizaţiile Clienţii Ciclul inovaţiei Luni, Ani Minute, ore, zile Creatori de conţinut Producători interni Producători externi Mecanisme feedback Studiu de piaţă, chestionare, Analiză, cereri online, reclamări, grupuri de interes schimbări produse de clienţi Stilul clienţilor Controlat, proces bine definit Spontan şi haotic Proces de dezvoltare Desing Preconceput Mai mult emergent Arhitectura Închisă, neflexibilă Deschisă, uşor de extins, produsului extensiilor creată pentru remixare şi mashup Cultura de Ierarhică, centralizată, Decentralizată, colaborativă, dezvoltare realizată de experţi inteligenţă colectivă Testarea produsului Intern, dedicată grupului de Utilizatori ca testeri test, testeri selectaţi Suport pentru client Serviciu client Comunitate de useri Promovare Produs Publicitate şi marketing într- Propagare virală, publicitate o singură direcţie generată de utilizator şi bidirecţională Relaţii client Cumpărător extern Partener (consumator ca producător) Deţinerea produsului Instituţie, acţionari, Întreaga comunitate de management executiv utilizatori Proces de parteneriat Formal, explicit, mediat Ad hoc, parteneri online, nemediat Dezvoltarea Heavyweight, formal, Lightweight, informal, produsului complex, costisitor, simple, gratuit, rapid, orientat consumator de timp, orientat consumator întreprindere Avantaje Produse superioare, avantaje Personalizare, popularitate, competitive de branding, preţ simţ de proprietate, audienţă Tabel 2.1: Tranziţia către Dezvoltarea de Software 2.0 [13] Astfel produsele Web 2.0 ar trebui să ofere: Lansări frecvente ce au ca beneficii înlăturarea erorilor nou găsite, ceea ce face experienţa pe care o are utilizatorul să fie într-o evoluţie lină; Bucăţi mai puţin specialitate, slab interconectate, ce permit realizarea schimbărilor într-un mod rapid şi neriscant; Modele de programare lightweight prin utilizarea de limbaje dinamice şi formate de date simple ca RSS, REST, ce fac dezvoltarea, integrarea, testarea şi refolosirea simple şi eficiente; Feedback în timp real şi utilizarea informaţiilor primite de la utilizator pentru îmbunătăţirea aplicaţiilor. 10
  • 11. Un astfel de produs va fi criticat în funcţie de următoarele criterii [35]: Aplicabilitate (35%) – evaluarea soluţiei în mod realist în funcţie de problema pe care trebuia să o rezolve. Ar trebui să deţină un răspuns pozitiv la următoarele întrebări: Vor folosi angajaţii vreunei companii această aplicaţie? Aduce îmbunătăţiri productivităţii, stilului de viaţă? Poate obţine finanţare pentru dezvoltări ulterioare? Funcţionalitate (35%) – testarea soluţiei pentru asigurarea corectitudinii. Există funcţii care nu merg? Sunt mesaje de eroare generate? Sunt întâlnite erori serioase? Împiedică erorile utilitatea aplicaţiei? Există funcţii care aduc inovaţie? Design (20%) – evaluarea uşurinţei de folosire, simplitatea de afişare a informaţiilor, manevre de navigaţie, grade de efort de înţelegere. Navigarea se realizează cu uşurinţă şi rapiditate? Utilizează metode intuitive? Sunt aplicabile instrucţiunile minimale? Ansamblul soluţiei (10%) – se testează dacă aplicaţia îndeplineşte scopurile pentru care a fost creată şi modalităţile de realizare a acestora. Confruntarea se face la nivel de documentaţie Rezumatul lucrării descrie concis scopul aplicaţiei? Este prezentat modul de utilizare al aplicaţiei? Sunt toate funcţiile descrise? Alte criterii de jurizare ale unei aplicaţii pot fi: Interes (25%) – soluţia prezintă interes din punct de vedere al consumatorilor? Utilitate (25%) – rezolvă o problemă existentă pe piaţă? Unicitate (20%) – oferă o funcţionalitate indisponibilă până atunci? Uşurinţă (20%) – soluţia este uşor de utilizat? General (10%) – este o aplicaţie care ar putea fi cumpărată? 11
  • 12. 2.2 Servicii Web O aplicaţie Web reprezintă o colecţie interconectată de pagini Web cu un conţinut dinamic, menită să ofere o funcţionalitate specifică utilizatorilor. Serviciile Web reprezintă o particularizare a aplicaţiilor Web. Principala diferenţă este dată de faptul că serviciile Web nu sunt destinate direct utilizatorilor umani, ci sunt destinate „consumării” sau exploatării, de către alte aplicaţii. De asemenea, un serviciu Web poate fi consumat de alte servicii Web pentru a asigura un plus de funcţionalitate şi integrare. Serviciile Web sunt deci componente care oferă capacitate de procesare adiţională, aplicaţiilor consumator. Serviciile Web implică utilizarea unor protocoale de comunicaţie, având asociate descrieri ale datelor procesate şi alte interacţiuni cu aplicaţii terţe. O altă caracteristică de bază a serviciilor Web derivă din necesitatea de interoperabilitate (capacitatea de colaborare între componente, aplicaţii şi sisteme eterogene). Un serviciu Web poate fi considerat ca fiind compus dintr-o colecţie de funcţii împachetate, interpretate ca o entitate unică şi publicate în spaţiul WWW cu scopul de a fi folosite de alte programe. 2.2.1 Arhitectura orientată spre servicii Arhitectura orientată spre servicii (SOA) impune adoptarea unui stil de dezvoltare de aplicaţii, considerate drept servicii ce vor fi invocate de alte aplicaţii. SOA presupune că noile servicii pot fi create pe baza celor deja existente, dar componentele sistemului în ansamblu trebuie să aibă un grad mare de independenţă. Astfel, arhitectura SOA trebuie să suporte între aplicaţii paradigme de comunicare bazate pe Web, să ofere o localizare transparentă a serviciilor şi să permită adăugarea, înlocuirea şi eliminarea serviciilor în mod dinamic. Prin intermediul SOA, consumatorii de servicii nu sunt dependenţi de ofertanţii de servicii, putând avea acces la o paletă largă de servicii oferind aceleaşi funcţionalităţi dorite. Pentru a adresa această necesitate serviciile Web trebuie să deţină abilitatea de a comunica folosind standarde ale industriei precum SOAP şi WSDL, ambele recomandări ale consorţiului Web. Protocoalele de comunicare trebuie să permită vehicularea de mesaje oricât de complexe şi interacţiuni avansate între maşinile care le utilizează, asigurând extensibilitatea, securitatea, fiabilitatea şi performanţa ce pot surveni. Descrierea serviciilor Web (locaţie, operaţiuni, parametri, tipuri de date) se realizează prin intermediul limbajului WSDL (Web Service Description Language), dezvoltat de IBM şi Microsoft. Folosind WSDL se pot crea fişiere XML care conţin seturi de definiţii pentru descrierea serviciilor Web. Conceptual, WSDL constituie o modalitate de specificare a sintacticii serviciilor Web, nu a semanticii acestora. 12
  • 13. Înregistrarea şi regăsirea serviciilor Web se realizează prin intermediul standardului UDDI (Universal Description, Discovery and Integration). Aceasta oferă utilizatorului o modalitate sistematică şi unitară de a regăsi furnizorii serviciilor Web, cu ajutorul unui catalog al acestor servicii. Mecanismul de invocare a serviciilor Web şi de schimb al mesajelor între client şi server este descris de un protocol de comunicare, independent de platformă, limbaj de programare, reţea sau protocol de transport: XML-RPC (XML-Remote Procedure Call), SOAP (Simple Object Access Protocol). 2.2.1.1 SOAP SOAP reprezintă un standard ce utilizează paradigma XML-RPC pentru a transporta mesaje serializate XML într-o manieră extensibilă, utilizabil indiferent de infrastructura conexiunii şi independent de modelul programatic utilizat de aplicaţie. SOAP reprezintă o recomandare a Consorţiului Web. Mesajul SOAP este compus din trei părţi: un plic (envelope) – care defineşte cadrul de lucru pentru a descrie ceea ce conţine mesajul şi modul de procesare a acestui conţinut. Datele din corpul mesajului pot fi transportate indiferent de protocolul folosit (HTTP); un set de reguli de codificare (encoding rules) pentru exprimarea instanţelor tipurilor de date definite în aplicaţie; o convenţie de reprezentare (reprezentation) a apelurilor de metode implementate de serviciul Web şi răspunsurilor furnizate în urma invocării acestora. SOAP poate specifica o cale de la expeditor la destinatar, via un intermediar (proxy) opţional, în vederea realizării de dirijări de mesaje. SOAP poate fi privit ca fiind un protocol de mesagerie (serializare), cererea incluzând un obiect-cerere serializat, iar răspunsul stochează un obiect-răspuns serializat. 2.2.1.2 REST (Representational State Transfer) Arhitectura REST este o arhitectură de dezvoltare a aplicaţiilor Web, în cadrul căreia rezultatul unei procesări conduce la returnarea unei reprezentări a unei resurse Web. Orice accesare a unei reprezentări plasează aplicaţia-client într-o stare care va fi schimbată în urma unui transfer de date. Principiile REST oferă o abordare diferită de una în stilul RPC (abordată de protocolul SOAP). În cazul RPC, punctul focal e reprezentat de mulţimea de operaţii ce pot fi executate, pe când în viziunea REST totul se axează pe diversitatea resurselor disponibile. Ca şi alte tipuri de servicii Web, arhitectura REST este bazată pe conceptul de resursă. Unui serviciu Web de tip REST îi sunt impuse de anumite constrângeri. 13
  • 14. Interfeţele sale sunt limitate la protocolul HTTP: GET - utilizată pentru a obţine o reprezentare a unei resurse; folosind un URI, un consumator recurge la această metodă pentru a regăsi o reprezentare; DELETE – utilizată pentru a elimina reprezentările unei resurse; POST – utilizată pentru actualizarea sau crearea reprezentărilor unei resurse; PUT – utilizată pentru crearea reprezentărilor unei resurse. Mesajele utilizează formatul XML, putând fi validate prin intermediul unor specificaţii precum XML Schema sau RELAX NG. Crearea şi utilizarea serviciilor Web de tip REST necesită o infrastructură software minimală. Astfel, aceasta trebuie să implementeze protocolul HTTP şi o serie de tehnologii de procesare XML, suportate de cele mai multe platforme li limbaje de programare. Filozofia serviciilor Web REST este aceea de a nu instala instrumente suplimentare pentru trimiterea şi primirea de date, ci de a le utiliza pe cele existente. Un număr de companii (Google, Yahoo!, Amazon, eBay, etc.) au pus la dispoziţia programatorilor servicii Web bazate pe REST. În mod obişnuit, clientul trimite o cerere GET serviciului. Acesta procesează cererea primită şi întoarce rezultatele obţinute. 14
  • 15. 2.3 JavaScript JavaScript a fost creat pentru a adăuga interacţiune paginilor XHTML şi este folosit de milioane de pagini Web pentru o îmbunătăţire a design-ul, validarea de formulare, detectarea navigatorului, crearea de cookies, tratarea evenimentelor, scrierea de noi elemente. 2.3.1 Aspecte generale JavaScript este un limbaj orientat obiect foarte puternic, portabil, rapid, simplu în ciuda reputaţiei că nu ar fi potrivit pentru programatorii profesionişti. JavaScript este un limbaj interpretat. Deoarece este folosit cu preponderenţă pentru procesare pe partea de client a aplicaţiilor Web, majoritatea navigatoarelor au integrate interpretoare JavaScript. JavaScript este un limbaj de scripting, cu o sintaxă apropiată de C, având la bază conceptul de prototip. Mediul gazdă în care este înglobat este navigatorul Web, care creează obiecte responsabile pentru implementarea modelului DOM. În mod uzual, codul JavaScript este înglobat direct în paginile XHTML, prin intermediul marcajului script sau în fişiere externe cu extensia .js, urmate a fi incluse ulterior în pagini. Nucleul limbajului include elementele de bază ale limbajului: tipuri de variabile şi constante, operatori, structuri de control, instrucţiuni, reguli pentru definirea funcţiilor şi obiectelor, funcţii şi obiecte predefinite, etc. JavaScript este un limbaj flexibil în ceea ce priveşte datele utilizate. O variabilă este numele simbolic atribuit unei locaţii de memorie în care sunt stocate date. Domeniul de accesibilitate al variabilelor şi al constantelor poate fi unul global sau local, declaraţie facută prin utilizarea cuvântului var, respectiv const. Dacă o variabilă sau o constantă este declarată în interiorul unei funcţii, ea este numită locală, fiind accesibilă numai în cadrul funcţiei. Variabilele declarate fără var sunt globale în întreg programul. Flexibilitatea limbajului se datorează faptului că la declararea variabilelor nu se cere specificarea tipului de date stocate. În plus, este posibil ca în script să se modifice tipul datelor stocate în variabile. JavaScript este case-sensitive. Funcţiile sunt secvenţe de cod care realizează o anumită operaţie şi care poate fi apelată în mod repetat. Din punct de vedere al modalităţilor de definire există funcţii definite de utilizator şi funcţii predefinite. Definiţia unei funcţii JavaScript constă din cuvântul-cheie function, urmat de numele funcţiei, o listă de argumente inclusă între paranteze rotunde şi separate prin operatorul virgulă şi un bloc de instrucţiuni inclus între acolade: 15
  • 16. function numeFuncţie(arg1, arg2, arg3) { instrucţiuni; return expresie; } Sunt permise şi funcţiile anonime: var funcţie = function(arg1, arg2) { instrucţiuni; return expresie; }; Este posibil ca unei funcţii JavaScript să-i fie transferate mai multe argumente decât au fost specificate la declarare. Acest lucru este util, mai ales în situaţiile în care nu se ştie de la început câte argumente trebuie transmise acesteia. Valorile suplimentare nu sunt pierdute, ci sunt stocate într-un tablou numit arguments. Transferul argumentelor având tipuri simple(e.g. şir, întreg) este realizat prin valoare, în timp ce argumentele de tip obiect sunt transferate prin referinţă. Funcţiile predefinite de nivel înalt prezente în limbaj sunt: decodeURI(), decodeURIComponent(), encodeURI(), encodeURIComponent(), escape(), eval(), isFinite(), isNAN(), Number(), parseFloat(), parseInt(), String(), unescape(). JavaScript este un limbaj bazat pe obiecte. Spre deosebire de alte limbaje orientate obiect, bazate pe clase şi instanţe, în JavaScript nu avem decât obiecte. Un obiect JavaScript este un tip de date care include proprietăţi şi funcţii, numite şi metode. Pentru a adăuga o proprietate unui obiect creat anterior se utilizează proprietatea prototype. Prototipul unui obiect este la rândul său un obiect, în care se caută metodele şi proprietăţile cerute în cazul în care nu sunt găsite în obiectul iniţial. Se creează astfel un lanţ de obiecte ce definesc un comportament, într-o manieră asemănătoare moştenirii din OOP (programare orientată obiect). Filozofia limbajului are în vedere asocierile de tip cheie-valoare folosite pentru descrierea proprietăţilor obiectelor. Nucleul JavaScript include mai multe obiecte predefinite: Array, Boolean, Date, Function, Math, Number, String şi RegExp, fiecare dintre aceste obiecte având metode proprii specifice. JavaScript este utilizat, în special, pentru accesarea arborelui DOM al documentelor XHTML şi XML. Interfaţa DOM furnizează o reprezentare structurală a unui document, oferind posibilitatea modificării dinamice a conţinutului, a structurii şi stilurilor acestuia. Utilizând DOM se pot construi documente, naviga prin structura acestora şi adăuga, modifica sau şterge elemente sau atribute incluse. Documentul poate fi procesat în continuare, iar rezultatul procesării poate fi inclus înapoi în pagina afişată. În DOM, documentul XHTML este văzut ca un arbore de noduri. În vârful arborelui se află obiectul document, prin intermediul căruia avem acces la colecţii de obiecte asociate elementelor existente în document. Până în prezent există trei niveluri de specificare DOM. Evenimentele DOM permit înregistrarea unor handlere de eveniment asociate nodurilor arborelui. Printre evenimentele suportate de toate navigatoarele actuale avem evenimente de mouse (click, mousedown, mouseup, mouseover, mouseover, 16
  • 17. mousemove), evenimente de tastatură (keydown, keypressed, keyup), evenimente declanşate în formulare (select, change, submit, reset, focus, blur), evenimente legate de ferestre (load, unload, abort, error, resize, scroll). Astfel, JavaScript este cel mai utilizat limbaj de scripting pentru client în Web. Problemele care pot apărea sunt datorate diferenţelor de implementare dintre navigatoarele Web, totuşi se remarcă o tendinţă comună de implementare a modelului standardizat al Consorţiului Web. 17
  • 18. 2.4 AJAX „if the traditional web was letter writing, Ajax is instant messaging.” Derek Powazek 2.4.1 Aspecte generale AJAX este o componentă cheie a aplicaţiilor Web 2.0 ce are scopul de a crea aplicaţii cu proprietăţi asemănătoare aplicaţiilor desktop din punct de vedere al conţinutului şi modului de răspuns, dar cu avantajul că pot fi accesate de navigatoare Web. Interacţiunea AJAX derivă dintr-o necesitate de a mări viteza de navigare prin micşorarea timpilor de răspuns la acţiunile utilizatorilor, aceasta bazându-se pe o comunicare asincronă între client şi serverul Web, care realizează actualizarea conţinutului fără necesitatea reîncărcării paginii de prezentare. AJAX este tehnologia care permite codului JavaScript să trimită o cerere către server, să primească datele din răspuns (în format XML sau JSON), să procese aceste date şi să actualizeze conţinutul paginii în mod corespunzător. Cererile AJAX, realizate prin obiectul XMLHttpRequest, se pot trimite serverului fără a întrerupe utilizatorul, în mod asincron. Când răspunsul este primit de navigatorul clientului, o funcţie callback este apelată pentru procesare datelor şi afişarea acestora în cadrul paginii Web. Avantajele majore aduse de AJAX sunt cele legate de eliminarea reîncărcării paginilor, de facilitatea interacţiunii cu utilizatorul, de micşorarea timpilor morţi, accesarea doar a unei anumite părţi din cadrul paginii Web. Pe măsură ce deţinem navigatoare puternice, conexiuni la Internet de mare viteză, direcţii de dezvoltare de software online şi unelte pentru a le implementa, atingem un punct în care Ajax devine popular şi permite lumii să îmbrăţişeze nevoia de a transforma paginile statice şi plictisitoare în aplicaţii sofisticate. Ajax este deseori asociat cu Rich Internet Applications (RIA), reprezentând aplicaţii cu interfeţe complexe utilizator sunt din ce în ce mai prezente pe scena Web, utilizând grafice complexe, informaţie diversă şi o experienţă utilizator cât mai completă. Ajax este diferit de modul tradiţional de dezvoltare şi design Web, datorită pierderii de convenţii de interfaţă, permiterea integrării de funcţionalităţi ascunse sau latente, şi crearea programatică în loc de declarativă a elementelor. Pentru proiectarea interfeţei, designeri Web au nevoie de o întelegere mai aprofundată a capabilităţilor DOM, JavaScript, CSS şi a modalităţii în care navigatorul randează grafice, elemente şi dispunerea acestora. Un alt neajuns datorat lipsei de unelte de dezvoltare este testarea aplicaţiilor care este dificilă. Va mai fi nevoie de câţiva ani pentru ca industria să dezvolte practici şi şabloane eficiente de dezvoltare. Nu se poate preciza încă un lider al pieţei, uneltele şi componentele de dezvoltare Ajax fiind în continuă dezvoltare. Dintre aceste unelte, putem aminti: Dojo, 18
  • 19. script.aculo.us, Prototype, Google Web Toolkit, Yahoo! UI Library, JackBe, Zapatec, Bindows, Nexaweb, General Interface, Backbase, ActiveWidgets sau Microsoft Atlas. Ajax este o componentă de bază al fenomenului de dezvoltare de mashup-uri în interiorul navigatoarelor. Datorită Global SOA, componente Ajax online, ca Google Maps, pot fi referenţiate prin linii de cod JavaScript şi folosite pentru mixare într-o formă sau alta. Astfel, AJAX este o tehnică de tip remote scripting prin care sunt utilizate împreună, în mod specific, mai multe tehnologii existente, în scopul creării aplicaţiilor Web cu interactivitate crescută şi cu viteză de execuţie ridicată. AJAX include: HTML/XHTML şi CSS, pentru reprezentarea datelor; DOM pentru redarea dinamică şi interacţiune; XML sau JSON, precum şi XSLT, pentru schimbul de date şi manipularea acestora; obiectul XMLHttpRequest pentru transferul asincron al datelor; JavaScript pentru procesarea informaţiilor. Modul de lucru al aplicaţiilor Web bazate pe tehnica AJAX are următoarele caracteristici: Foloseşte interacţiunea la nivel de componentă a paginii; O componentă poate face un apel JavaScript către motorul AJAX; Procesorul AJAX face o cerere HTTP pentru o resursă situată pe server, pe care o trimite unui modul pentru procesare; După procesare, serverul utilizează un anumit format pentru date pe care le trimite apoi procesorului AJAX; Procesorul AJAX actualizează componenta care a iniţializat procesul. Din punct de vedere AJAX, întreaga aplicaţie se regăseşte la nivelul navigatorului, ceea ce poate avea repercusiuni nedorite privind sincronizarea serverului cu clientul. Alte dezavantaje vizează dependenţa de tehnologia JavaScript (implementată în mod diferit de fiecare navigator în parte), dificultatea testării şi depanării aplicaţiilor, necesitatea folosirii navigatoarelor de ultimă generaţie, accesul oricui la codul-sursă (probleme de securitate) şi imposibilitatea folosiri mecanismului istoric al navigării (history). Componenta de bază este obiectul XMLHttpRequest [37] pus la dispoziţie de către navigatorul Web. Acest obiect permite realizarea de cereri HTTP (e.g. GET şi POST) dintr-un program rulând la nivel de client spre o aplicaţie de pe server, într-un mod asincron. Obiectul XMLHttpRequest este o interfaţă de programare a aplicaţiilor (API) care permite scripturilor să realizeze funcţionalităţile unui client HTTP, cum ar fi trimiterea datelor incluse în formulare sau încărcarea datelor stocate pe un sit Web. Obiectul XMLHttpRequest are o serie de metode definite în specificaţia publicată de Consorţiul Web: 19
  • 20. Open() – iniţializează o conexiune HTTP cu serverul, trimiţând o cerere către acesta; Send() – transmite date, în manieră asincronă, către aplicaţia care rulează pe server; Abort() – abandonează transferul curent; setRequestHeader() – specifică diverse câmpuri ale antetului HTTP; şi proprietăţi: readyState – conţine codul de stare a transferului (0 - uninitialized, 1 – open, 2 - sent, 3 – receiving, 4 - loaded); status – reprezintă codul de stare HTTP întors de serverul Web (200 – OK, 404 – Not Found, 500 – Server Error); statusText – desemnează şirul de caracter care descrie codul de stare obţinut; onreadystatechange – desemnează funcţia care va fi invocată la modificările privind schimbarea stării de transfer a datelor O alternativă la XML în ceea ce priveşte interschimbul de date este JSON. 2.4.2 JavaScript Object Notation JSON (JavaScript Object Notation) [38] este un format complementar XML pentru reprezentarea datelor schimbate între server şi client în AJAX. Formatul JSON este complet independent de limbaj şi este bazat pe două structuri de date universale: o colecţie de perechi nume/valoare; o listă ordonată de valori. JSON este popular pentru serviciile de tip REST care sunt consumate de aplicaţii Web 2.0. În JSON, cele două structuri iau următoarele forme: obiect – set neordonat de perechi nume/valoare inclus între acolade. Fiecare nume este urmat de caracterul două puncte şi valoarea sa. O pereche nume/valoare este separată de următoarea prin simbolul virgulă; tablou – este o colecţie ordonată de valori, inclusă între paranteze drepte, valorile fiind separate prin virgulă; valoare – poate fi un şir inclus între ghilimele duble, un număr, un obiect, un tablou, precum şi valorile true, false sau null. Aceste structuri pot fi imbricate; şir – este o colecţie încadrată de ghilimele duble, formată din zero, unul sau mai multe caractere Unicode; număr – este asemănător cu tipul similar utilizat în JavaScript. Simplicitatea JSON a determinat o gamă largă de utilizări ale acestuia. El reprezintă o alternativă la XML în AJAX, ca format utilizat pentru schimbul de date. În JavaScript, JSON poate fi procesat utilizând funcţia eval(). Acest lucru a fost important pentru acceptarea JSON de către comunitatea de programatori AJAX, deoarece JavaScript este prezent în toate navigatoarele moderne. 20
  • 21. Un exemplu de obiect JSON în formă serializată: {"location": {"id": "WashingtonDC", "city": "Washington DC", "venue": "Hilton Hotel, Tysons Corner", "address": "7920 Jones Branch Drive" } } 21
  • 22. 3. Sisteme informaţionale geografice Sistemele informaţionale geografice (GIS) sunt sisteme de captare, stocare, analiză şi prelucrare de date care sunt raportate geografic. Scopul sistemelor informaţionale geografice este acela de a localiza informaţia, de a o face accesibilă, de a vizualiza relaţiile acesteia cu alte componente de acelaşi fel şi de a realiza rapoarte statistice între aceste componente. În alte cuvinte, scopul este acela de a oferi un punct de start pentru organizarea din punct de vedere geografic a tuturor informaţiilor. 3.1 Aspecte generale Organizaţiile care utilizează sau întreţin date geografice întâmpină multe provocări. Tehnicile curente de colectare şi management de date sunt costisitoare şi producătoare de erori. Analiştii din industrie susţin că circa 80% din informaţia guvernamentală este asociată cu informaţii geografice. De asemenea, un număr ridicat de organizaţii doresc să incorporeze date geografice în producţie (e.g. Yahoo!, Google). O astfel de ce cerere a acestui tip de date necesită un management eficient şi distribuţia informaţiilor devine critică. Rezultatul este apariţia unei pieţe noi în arena GIS care să satisfacă cerinţa de informaţia geografică calitativă distribuită pe Internet în timp real. Informaţia geografică stă la baza aplicaţiilor care au la bază locaţia. Aceste aplicaţii pun la dispoziţie utilizatorului posibilitatea de a vizualiza hărţi şi de a: Crea rute către o destinaţie, calculând calea cea mai scurtă; Sorta categoriile, cum ar fi instituţiile comerciale, după distanţă şi timp faţă de locaţia clientului; Modifica dinamic rute pentru a evita obstacolele, cum ar fi traficul; Marca locaţiile vehiculelor şi de a elimina pe cele mai apropiate sau care ating anumite obiective. Deciziile corecte de cele mai multe ori se bazează pe hărţi cât mai complete, precise, actuale şi provenite din surse de încredere, care sunt utilizate pentru navigaţie, trafic, căutare de puncte de interes, reţele sociale, turism, etc. Hărţile conţin date topologice de tip vector sau raster care pot fi organizate prin multiple metode, cum ar fi baze de date relaţionale. Aceste date sunt folosite pentru calcularea rutelor, găsirea punctelor de interes apropiate, sau pentru orice alte tipuri de analiză geografică. În termeni simpli, informaţia spaţială constă din puncte, linii şi-sau poligoane. Fiecare dintre aceste elemente pot fi asociate unuia sau mai multor atribute pentru a defini calitatea sau caracteristicile unui obiect. În contextul unei hărţi, un atribut reprezintă orice tip de informaţie care poate fi asociat direct sau indirect unei locaţii la un anumit punct, despre o anumită linie sau poligon. Aceste atribute conţin atât dimensiuni statice (drumuri, semne, râuri), cât şi dinamice (trafic, condiţii de vreme). 22
  • 23. Există 204 atribute geografice clasificate de NAVTEQ, furnizor mondial de GIS, în 14 categorii. Aceste atribute descriu calităţile esenţiale care sunt necesare unei hărţi pentru a reda informaţii estetice şi folositoare, care vor fi folosite în planificare de rute sau în ghidare. Categoriile se împart în [39]: Legătură – include atribute de clasificare ale drumurilor folosite pentru a determina eficienţa drumului respectiv pentru un turist. Sub-categoriile cheie sunt: General – include categoria de viteza, direcţia de mers, clasa drumului; Caracteristici de acces – identifică tipurile de trafic permise pe un drum (pietoni, autobuze, camioane); Caracteristici de afişare – descrie aspecte ale drumului ca poduri, tuneluri; Nume şi Adresă – se orientează asupra convenţiilor asociate numelor şi adresei, cum ar fi formatul adresei, tipul străzii, tipul rutei; Statutul de Nume – include numărul de ieşire, numele de joncţiune şi numele semnului de circulaţie folosit în aplicaţii de navigare în momentul anunţurilor de stradă pe care conducătorul trebuie să le urmeze pentru îndrumările de direcţie ale unei rute; Zone administrative – identifică entităţile guvernamentale asociate cu un drum, cum ar fi: ţară, stat, oraş, cod poştal, zonă; Punct de interes (POI) – include nume, locuri ca bănci, benzinării sau restaurante. Peste 30 de atribute sunt folosite pentru a caracteriza un POI, cum ar fi felul benzinăriei, tipul de mâncare servit în restaurant sau număr de telefon; Semne – include reprezentările textuale sau grafice de informaţie, întâlnite pe parcursul drumului, ca: textul semnului, codul de limbă, numărul de ieşire, numărul de sector; Utilizare terestră - include informaţii cartografice referitoare la obiective create de om, ca şcoli, aeroporturi, parcuri, etc.; Ţară – deţine informaţii ca fus orar, codul de telefon, etc.; Nod – include intersecţii, descrise de atribute ca coordonată x, y, z, aliniere; Condiţii – identifică limitările şi calificările pentru utilizarea unui drum, de exemplu, zonele cu acces interzis pentru rezidenţi; Trafic – include un set de coduri care descriu condiţiile de trafic, cum ar fi fluxul de trafic, accidente, disponibilitate; General – conţin atribute ca intersecţii, drumuri şi obiecte ca intersecţii complexe sau noduri multiple, care pot fi reprezentate simplificat pentru a eficientiza calculele rutelor; Adiţional – extinde valoarea unei baze de date prin informaţii referitoare la: limita de viteză, numărul de benzi de circulaţie, etc.; Informaţii extinse despre străzi – ce descriu conectivitatea, dependenţa, direcţia şi numărul de străzi, alei existente; Date Vocale – conţin pronunţie şi reprezentare textuală a informaţiilor prezente în baza de date; 23
  • 24. Altele – este un atribut adiţional care indică pe care parte a drumului trebuie afişată o anumită informaţie; Pentru managementul bazei de date, aceste puncte, linii, poligoane şi atribute asociate au asociate structuri de date, elemente de date adiţionale, şi-sau metode care fac procesarea mai rapidă şi mai uşor de întreţinut pentru a face tranziţia către harta virtuală. Acestea includ: Topologie spaţială – datele spaţiale şi datele geografice consistă din menţinerea şi structurarea componentelor lineare cum ar fi reţele de drumuri, poligoane cum sunt limitele de zonă sau ţară, şi puncte ca oraşe sau locaţii de spital; Geocoding – acest proces asignează o poziţie pe hartă unei înregistrări adresă. Procesul potriveşte informaţiile din două baze de date: o bază de date de adrese şi o referinţă către locaţia hărţii, astfel adresând informaţiile căutate cu poziţia corectă pe hartă, prin coordonate latitudine-longitudine; Referinţă lineară – datele din cadrul reţelelor de transport sunt măsurate în funcţie de un punct fix de referinţă ales. Aceste metode includ distanţele rutelor complete, coordonatele geografice şi coordonatele GPS (Global Positioning System). Segmentarea dinamică – această funcţie localizează un punct sau un segment de linie prin interpolarea distanţelor dintre două puncte şi permiţând înregistrarea informaţiei pe parcursul caracteristicilor lineare, de obicei utilizând GPS. Stratificare – Combinând două sau mai multe hărţi care au aceeaşi referinţă geodezică. Hărţile digitale realizează stratificări (layouts) pe mai multe nivele de date, integrându-le cu informaţii referitoare la alte entităţi. Pe viitor, aplicaţiile orientate locaţie vor creşte numărul de informaţie tridimensională, permiţând utilizatorilor să acceseze locuri distante având o experienţă 3D: „plimbarea” pe Fifth Avenue în Manhattan, „intrarea” în diferite magazine. Toate aceste lucruri sunt posibile datorită avansului tehnologic din ultimii ani care a oferit conexiuni puternice la Internet, plăci video, procesoare şi programe de compresie îmbunătăţite pentru transferul masiv de date, procesarea acestora şi managementul lor în spaţii tridimensionale. Pentru crearea unei hărţi de succes este necesar să se ia în consideraţie audienţa. Hărţile au avut mereu scopuri precise, de cele mai multe ori, acestea fiind accesul la informaţie într-un mod vizual şi structurat. Sisteme informaţionale geografice ca Google Maps sau Google Earth permit computerului să perceapă informaţia având şi o componentă fizică, geografică şi să poată astfel asocia date pentru respectiva locaţie. Google Maps pune la dispoziţie hărţi şi imagini aeriale de pe întreaga planetă, oferind date despre instituţiile şi obiectivele de atracţie a unei zone specificate. În plus, oferă posibilitatea de a crea aplicaţii care combină informaţia geografică cu setul propriu de date pentru crearea de reprezentări personalizate ale informaţiei de interes. 24
  • 25. Această tehnologie poate fi folosită pentru multiple scopuri, cum ar fi obţinerea de informaţie referitoare la: Localizarea datelor: se pot afla toate restaurantele(sau orice alt fel de instituţie) în jurul unei anumite locaţii; Hărţi şi rute: se pot afla rute detaliate între două locaţii, care includ punctele intermediare; Reprezentări topografice: se oferă imagini detaliate ale unei locaţii putând afla relaţia între un punct şi elementele înconjurătoare, cum ar fi un munte, un lac. Date statistice: se pot descrie grafic date statistice (cum ar fi nivelul populaţiei) printr-o hartă specializată. Până acum, o componentă crucială lipsea din scenariul aplicaţiilor Web, şi anume locaţia. Orice obiect este caracterizat de o anumită locaţie, care poate fi vizualizată acum prin intermediul Google Maps, care ne pune la dispoziţie o interfaţă intuitivă, imagini cartografice pregenerate şi un API prin intermediul căruia putem adăuga o astfel de hartă pe orice pagină personală. Utilizarea în Google Maps a tehnologiei AJAX ajută mult la succesul interfeţei şi la rapiditatea interacţiunii cu utilizatorul. Un alt motiv este acela că datele interschimbate între server şi navigator sunt de cele mai multe ori în format XML, astfel încât toată informaţia vehiculată este accesibilă oricui. Google Maps, aplicaţii bazate AJAX şi filozofia Web 2.0 în general fac parte din mentalitatea „View Source” în care oricine poate să-ţi vizualizeze pagina, să înveţe din cod şi să încerce să refolosească această informaţie în scopuri proprii. GeoWeb este un termen relativ nou care implică îmbinarea informaţiei geografice cu informaţia abstractă care se găseşte pe Internet. Astfel se creează un mediu de lucru în care se pot căuta informaţii după locaţia pe care o au şi nu neapărat după un anumit cuvânt cheie. Succesul GeoWeb-ului este datorat noilor tehnologii şi produse ca Google Earth, NASA World Wind, Windows Live Local, Yahoo Maps. Sistemele GIS erau deţinute de către profesionişti experimentaţi şi utilizate în organizaţii mari cum ar fi guverne sau municipalităţi. GeoWeb-ul promite de a transforma informaţia geografică într-un concept mult mai ubicuu, deschizând accesul către piaţa de masă. Una din ţintele GeoWeb-ului este aceea de a crea un mediu digital care să oglindească propria realitate şi care să ne permită de a ne gestiona resursele, găsind informaţii despre serviciile, oamenii din imediata vecinătate. Geo Search, tradusă căutare la nivel geografic, are ca scop organizarea tuturor informaţiilor ce au conţinut geografic şi transformarea acestora în conţinut accesibil şi care poate fi folosit ulterior. Una dintre avantajele acestui tip de căutare este acela că informaţia poate fi indexată şi se pot realiza interogări la nivelul bazei de date ce conţine astfel de informaţii. Standardele acceptate de Google Search conţin tipurile de formate KML [26] şi GeoRSS [40]. 25
  • 26. Geotagging este procesul de adăugare de meta-date geografice diferitelor pagini Web, feed-uri RSS sau imaginilor. Aceste date cuprind coordonate de latitudine şi longitudine, dar pot fi caracterizate şi de altitudine. 26
  • 27. 3.2 Formate de date Pentru a realiza această sarcină există mai multe tipuri de formate de date ce pot fi utilizate pentru găsirea sau crearea de conţinut cu relevanţă geografică, ca GML, KML, GeoRSS, GPX, LOC, care fiind simple fişiere XML pot fi uşor parsate şi refolosite în funcţie de necesităţi. 3.2.1 Geography Markup Language Geography Markup Language (GML) [41] este un limbaj de modelare pentru sistemele geografice utilizat şi ca format de schimb de date între tranzacţiile efectuate pe Internet. GML este standard-ul XML pentru infrastructura GeoWeb, permiţând dispozitivelor conectate la Internet să acceseze informaţie geografică, incluzând, de exemplu, locaţii ale unor anumite magazine sau condiţii de trafic. Aşa cum XML permite Web-ului de a separa conţinutul de prezentare, GML oferă acelaşi lucru pentru lumea geografică. Dacă GML este un limbaj ce codifică conţinut geografic prin descrierea unui spectru de obiecte şi a proprietăţilor acestora (e.g. poduri, drumuri), KML este un limbaj care permite vizualizarea informaţiei geografice. Un exemplu de reprezentare a coordonatelor utilizând GML: <gml:Point gml:id="p1" srsName="#srs1"> <gml:coordinates>45.67, 88.56</gml:coordinates> </gml:Point> 3.2.2 Keyhole Markup Language KML [26] foloseşte structură bazată pe etichete ce conţin elemente şi atribute încapsulate bazate pe standardul XML. KML, ca format de date, este folosit de Google Maps, Google Earth şi Google Maps Mobile, şi este descris ca fiind „PDF-ul GIS-ului” (Brian McClendon). Este realizat pentru a fi un format de fişier pachet, care să conţină sau să conecteze resursele necesare afişării conţinutului descris de Google Earth. KML este folosit pentru: Specificarea de etichete şi pictograme pentru identificare locaţiilor; Schimbarea poziţiei camerei pentru permiterea de vizualizări 3D; Utilizarea de imagini suprapuse ataşate componentelor terestre sau vizualizării; Definirea de stiluri de afişare; Integrarea de cod XHTML în cadrul descrierii unei locaţii; Crearea structurilor ierarhice pentru grupuri de caracteristici; Schimbări şi afişări de texturi şi obiecte 3D. 27
  • 28. Un exemplu de fişier KML: <?xml version="1.0" encoding="UTF-8"?> <kml xmlns="http://earth.google.com/kml/2.1"> <Placemark> <name>Stonehenge, England</name> <description>Stonehenge was built around 2500BC</description> <Point> <coordinates>-1.826752,51.179045,0 </coordinates> </Point> </Placemark> </kml> 3.2.3 GeoRSS RSS este un vocabular de meta-date, folosit pentru mediatizarea (syndication) a ştirilor Web şi a schimbărilor survenite în cadrul sit-urilor. RSS face parte din familia XML şi a fost adoptat pentru a distribui documente diverse, de la ştiri şi articole la date audio- vizuale. În ultimii ani RSS a devenit protocolul de mashup prin excelenţă, datorită simplităţii de utilizare. GeoRSS (Geographically Encoded Objects for RSS feeds) [40] adaugă tag-uri formatului RSS pentru a descrie date geografice. GeoRss a fost adoptat de Yahoo şi Microsoft. GeoRss foloseşte ubicuitatea RSS şi schema GML pentru a crea cea mai bună metodă de geo-distribuire (syndication). GeoRSS este folosit în GeoSearch şi agregare. GeoRSS este identificat prin spaţiul de nume "georss:" şi scufundate în fişiere RSS normale, de exemplu: <georss:point>43.127697 -77.573776</georss:point> 3.2.4 GPS eXchange Format Printr-un receptor GPS (Global Positioning System) se pot determina locaţia, viteza şi direcţia unui anumit obiect. GPS a devenit un ajutor pentru crearea de hărţi, supravegherea zonelor, comerţ şi uz ştiinţific. GPX (GPS eXchange Format) este un format XML proiectat pentru transferul datelor GPS între aplicaţiile software. Este utilizat pentru a descrie puncte şi rute. Deoarece GPX este bazat pe XML, acesta moşteneşte toate beneficiile acestuia. GPX defineşte un set comun de tag-uri pentru descrierea datelor geografice şi GPS în XML. Este un format simplu dar destul de puternic pentru a descrie obiecte complexe geografice. GPX permite dezvoltatorilor să-şi definească propriile obiecte şi atribute. Un exemplu: <?xml version="1.0" encoding="UTF-8" standalone="no" ?> <gpx xmlns="http://www.topografix.com/GPX/1/1" creator="byHand" version="1.1" xmlns:xsi=”http://www.w3.org/2001/XMLSchema-instance xsi:schemaLocation="http://www.topografix.com/GPX/1/1 http://www.topografix.com/GPX/1/1/gpx.xsd"> 28
  • 29. <wpt lat="39.921055008" lon="3.054223107"> <ele>12.863281</ele> <time>2005-05-16T11:49:06Z</time> <name>Cala Sant Vicenç - Mallorca</name> <sym>City</sym> </wpt> </gpx> 3.2.5 Microformate Microformatele sunt seturi de vocabulare pentru realizarea de adnotări semantice în cadrul unor limbaje prezentaţionale, precum XHTML. Microformatele sunt uşor de parcurs de către oameni, nefiind marcate de experţi ai domeniului, dar pot fi procesate şi de către maşină. Companiile mari ca Google, Yahoo, Microsoft utilizând sisteme necostisitoare ca unelte GPS (Global Positioning System), au încurajat explozia marcării informatice din cadrul Web-ului din ultimii ani. Dar tot acest timp a fost caracterizat de lipsa unui standard, fiecare dintre companiile amintite dezvoltându-şi propriul fel de marcare al datelor, Google utilizând KML (Keyhole Markup Language), un format XML, iar Yahoo! utilizând GeoRss, o variaţie de RSS. Această lipsă de uniformitate a dus la adoptarea de către dezvoltatori a diferitelor convenţii, cum sunt tagurile geo folosite de către Flickr. Astfel, au fost introduse microformatele geo şi adr. 3.2.5.1 Geo Orice loc de pe planetă poate fi descris în mod unic utilizând latitudine şi longitudine. Microformatul geo permite încapsularea acestor date în cadrul conţinutul unei pagini Web. În cazul în care avem ca informaţie numai aceste coordonate, este preferabil de folosit microformatul geo. În cazul în care deţinem informaţii mai detaliate despre respectiva adresă, cum ar fi numele străzii, etc. este indicat de folosit microformatul adr. Ambele microformate pot fi încapsulate microformatele compuse cum este hCard. Informaţiile turistice (jurnale de călătorie, informaţii meteo, postări de blog sau sit-uri de turism comerciale) sunt menite a fi descrise cu geo, la fel şi evenimentele istorice în care locaţia joacă un rol important. Locaţia este o componentă importantă şi fenomenul de utilizare a acesteia este încontinuă creştere datorită aplicaţiilor ca Google Maps, Yahoo Maps sau mashup-urilor ce au la bază hărţi. În geo, elementul rădăcină conţine două proprietăţi, fiecare fiind un element XHTML: unul pentru latitudine şi unul pentru longitudine. Latitudinea şi longitudinea trebuie să fie exprimate în format decimal, sau grade decimale. De exemplu: <span class="geo"> <span class="latitude">27.976628</span>, <span class="longitude">86.933302</span> </span> 29
  • 30. Succesul unui mashup ţine de deţinerea de informaţie ce poate fi interpretată de către maşină pentru a putea interacţiona cu un serviciu de mapare. În prezent, există un număr de formate de Geo-date asemănătoare, ca KML sau GeoRss, dar acestea nu sunt larg adoptate. Simplitatea formatului Geo este un plus şi poate fi preferat de către dezvoltatorii de aplicaţii. 3.2.5.2 Adr Spre deosebire de Geo-date, adresele fizice sunt utilizate de mai mult timp, dar la fel nu a existat nici un fel de mod standardizat de a introduce aceste informaţii în cadrul paginilor Web. De obicei, adr este componentă a microformat-ului hCard şi poate să conţină următoarele câmpuri: post-office-box; extended-address; street-address; locality; region; postal-code; country-name. Şablonul de clasă necesită utilizarea atributului class şi precizarea atributelor prezentate. De exemplu: <div class="adr"> <div class="street-address">2560 Ninth Street </div> <div class="extended-address">Suite 219</div> <span class="locality">Berkeley</span>, <span class="region">CA</span> <span class="postal-code">94710</span> <div class="country-name">USA</div> </div> 30
  • 31. 4. Mashup "We know we don't have a corner on creativity. There are creative people all around the world, hundreds of millions of them, and they are going to think of things to do with our basic platform that we didn't think of." Vint Cerf 4.1 Aspecte generale Unul din conceptele promiţătoare ale Web-ului 2.0 este acela de a divide informaţia în părţi de dimensiuni reduse, slab conectate, astfel încât să putem reduce complexitatea aplicaţiilor şi efortul de integrare. Avem sute de API-uri disponibile pentru reutilizare şi integrare în noile noastre aplicaţii Web, permiţându-ne realizarea unui întreg mai valoros decât suma componentelor sale. Un mashup este o aplicaţie Web hibridă, ce combină în mod agil diverse date din surse externe într-o formă unitară şi mai complexă. Sursele externe sunt de obicei alte aplicaţii Web, servicii Web sau RSS feed-uri. Figura 4.1: Mashup, aplicaţie ce încapsulează servicii Pentru a putea crea un mashup este nevoie de combinarea datelor din minim două surse externe, pentru a realiza un serviciu care nu este disponibil dintr-o altă sursă. Astfel se pot combina servicii geospaţiale ca Google Maps sau Yahoo Maps, cu alte informaţii despre produse, acţiuni, evaluări din surse ca Amazon sau eBay. Se recomandă utilizarea unui număr rezonabil de servicii Web pe care un mashup le foloseşte şi mai ales „seriozitatea” acestor servicii, pentru că ele stau la baza funcţionării şi succesului aplicaţiei respective. Mashups-urile se bazează pe interacţiunea cu utilizatorul pentru personalizarea şi utilitatea informaţiilor afişate. 31
  • 32. Reutilizarea de software a devenit un crez al industriei IT şi acesta este unul din motivele pentru care mashup-urile sunt atât de fascinante. Unul din conceptele Web 2.0 este acela de a încuraja dezvoltatorii de a-şi încapsula aplicaţiile ca un set de servicii ce pot fi folosite ulterior. Această teorie susţine valoarea pe care un dezvoltator poate să o aducă comunităţii dacă software-ul creat de acesta poate fi refolosit în noi modalităţi. Un alt aspect de succes este utilizarea tehnologiei Ajax şi a formatelor de date JSON, RSS. O bună aplicaţie Ajax încarcă o dată scripturile JavaScript în cadrul unui navigator Web şi apoi manipulează conţinutul prin CSS şi HTML pentru a obţine efectele vizuale scontate. Figura 4.2: Anatomia Mashup, prezentarea nivelelor [10] 32
  • 33. 4.1.1 Tipuri de Mashup Există două tipuri principale de mashup-uri: Mashup-uri client: în care codul şi datele sunt combinate în cadrul unei pagini folosind incluziuni JavaScript. Un avantaj al acestui model de dezvoltare este portabilitatea pe care o oferă. Mashup-uri server: ce oferă o infrastructură de programare mult mai puternică şi completă. Aceste tipuri principale se împart în cinci stiluri de dezvoltare, care stratifică modul de utilizare al informaţiei şi elementelor vizuale în multiple nivele [10]: Mashup de prezentare: este cea mai superficială formă de mashup, informaţia fiind pur şi simplu extrasă şi prezentată. Nu este adăugat nici un fel de funcţionalitate. În această categorie se înscriu portalurile şi alte forme de prezentare de genul mashup. Mashup de date la nivelul clientului: informaţiile preluate de mashup provin din surse ca servicii Web, feed-uri sau sit-uri HTML şi sunt combinate cu date provenite din alte surse. Se generează informaţie nouă care nu exista înainte, cum ar fi locaţii specifice vizualizate în cadrul unei hărţi. Mashup de software la nivelul clientului: în acest caz este integrat cod în navigator cu scopul de a realiza o funcţionalitate nouă. Mashup de software la nivel de server: la acest nivel fiind mai uşoară combinarea serviciilor neexistând restricţii de securitate sau probleme de acces între domenii diferite. Mashup de date la nivel de server: care utilizează date din baze de date aflate pe server, facilitând transferul de informaţie provenit din furnizori distincţi. Figura 4.3: Diferenţă mashup la nivel de navigator şi la nivel de server [8] 33
  • 34. 4.1.2 Provocări, Beneficii, Neajunsuri Asemeni Web 2.0, mashup-urile sunt rezultatul direcţiei actuale a tehnologiilor, fiind caracterizate de conectivitate sporită, viteză de dezvoltare, consum de informaţie generată utilizator, suport din partea comunităţilor online, îmbunătăţind rapid informaţia găsită pe Internet. Astfel, mashup-urile devin din ce în ce mai mult orientate către utilizatorul final şi facilităţile oferite devin din ce în ce mai sofisticate. Criteriile care trebuie să fie luate în considerare în crearea unui mashup sunt: unicitate, creativitate, experienţa utilizatorului, utilitate şi conţinut. Aspecte cheie şi beneficii ale abordării Mashup: Combinarea eficientă între componente Web reutilizabile şi SOA. Mashup- urile sunt construite din componente şi servicii deja existente în alte aplicaţii Web, fiind adăugat cod pentru a integra aceste părţi într-un tot unitar. Această reutilizare este benefică şi se caracterizează prin „building on the shoulder’s of giants.” Simplitate în dezvoltare şi integrare. Concentrându-se asupra formatelor şi tehnicilor lightweight, mashup-urile au succes datorită simplităţii de dezvoltare. Mashup-urile folosesc feed-uri şi XML pentru a conecta componentele, structuri şi incluziuni JavaScript utilizate pentru integrarea de elemente externe, ca Google Maps sau player YouTube. Mashup-urile devin astfel Software as a Service (SaaS), având nevoie doar de un navigator Web şi a adresă URL şi eliminând necesitatea unei instalării, a update-urilor, plug-in- urilor sau drepturilor de administrator. Focus pe auto-dezvoltare. Mashup-urile sunt disponibile dezvoltării şi de către utilizatori neexperimentaţi, cât şi de dezvoltatori de software profesionişti. Ca toate componentele Web care oferă puterea de publicare şi participare oricărui utilizator, mashup-urile prezintă potenţialul de a creare software inovator şi folositor. Se pot dezvolta aplicaţii de către un utilizator sau un grup de colaboratori care să ofere exact facilitatea de care aceştia aveau nevoie. Există şi alte beneficii ca: faptul că sunt orientate Web, tind să fie mai deschise şi transparente în privinţa schimbului de informaţie şi oferă sursele oricui este interesat de acest lucru. O provocare este conflictul dintre cele două modele de mashup-uri, cele dezvoltate de utilizatori şi cele dezvoltate de companii pentru uz comercial. Există în jur de 2000 de dezvoltatori independenţi (conform ProgrammableWeb.com [30]) care îşi utilizează blog-urile, profilurile sau alte pagini Web pentru a crea noi mashup-uri, widget-uri sau gadget-uri. Pe lângă aceştia există un număr în creştere de produse comerciale care încercă să aducă utilitatea mashup-urilor în cadrul Web-ului sau a intranet-ului. Aceste două modele sunt diferite una faţă de cealaltă. Prima încurajează fenomenul natural de reutilizare, folosind componente Web furnizate de alţi distribuitori şi încercând să aplice acestora diferite strategii, găsindu-o pe care se potriveşte scopului iniţial. Modelul comercial încearcă să adauge instrumentelor pe care le oferă funcţionalităţi care lipsesc, cum ar fi securitate, suport pentru local SOA, 34
  • 35. sau interfaţă vizuală pentru a facilita procesul de creaţie şi pentru cei care nu au cunoştinţe de programare. Modelul comercial de cele mai multe ori ignoră vasta colecţie de îmbunătăţiri adusă de utilizatori, lucru pe care aplicaţiile de succes ar trebui să-l aibă în vedere Un neajuns este reprezentat de numărul de servicii Web disponibile care să permită accesul la date, în timp ce numărul de API-uri este în continuă creştere. Majoritatea informaţiei o găsim în pagini statice în format HTML. Un ajutor îl oferă formatul adiacent Web 2.0, RSS. Cerinţe pentru realizarea de unelte mashup eficiente: Uşurinţă în folosire: Un adevărat succes ar avea uneltele de mashup care ar permite utilizarea lor persoanelor fără cunoştinţe de programare, în cadrul oricărui navigator Web, în orice limbă. Încapsularea şabloanelor în dezvoltarea de software. Utilizatorii finali nu sunt dezvoltatori şi astfel nu înţeleg multe aspecte ale dezvoltării. Acestea includ testare, controlul versiunilor, securitate, scalabilitate şi reliabilitate. Cea mai bună unealtă mashup va avea grijă de aceste probleme automat şi nu va sta în calea utilizatorilor în procesul de dezvoltare. Suportul pentru standarde deschise. Aplicaţiile create de către uneltele mashup trebuie să fie aplicaţii Web obişnuite bazate pe formate deschise şi nu proprietare. Mashup-urile ar trebui alcătuite din componente HTML actuale, JavaScript, CSS şi orice alte componente Web necesare. Web-ul este în continuă expandare şi popularitate deoarece este un „sistem fără proprietar” ce oferă transparenţă. Utilizarea de părţi vizuale şi servicii Web. Începând cu snippet-uri JavaScript, servicii orientate Web ca REST şi arhitectură orientată servicii ca SOAP, şi continuând cu formate ca RSS sau ATOM, uneltele mashup trebuie să suporte cea mai mare arie de ingrediente. Generarea oricărei aplicaţii într-un serviciu care poate fi utilizat în cadrul unui mashup, oferă uşurinţa de consum ce ar trebui suportată de orice unealtă de acest gen. Încurajarea utilizării sociale pentru realizarea de sisteme puternice, care să permită funcţionalitate de propagare de legături, invitaţii, feedback, etc. 35
  • 36. 4.2 Studiu de caz: GeoLink 4.2.1 Concept Travel 2.0 reprezintă extensia şi personalizarea conceptului de Web 2.0 pe una dintre cele mai puternice industrii actuale: turismul. Ca multe alte industrii, industria turismului online este în tranziţie, adaptându-se noilor tehnologi şi direcţii din Internet. Turiştii devin din ce în ce mai interesaţi în găsirea de recenzii, comentarii şi sfaturi profesioniste cu referire la locaţii posibile. Acest lucru a oferit un impact semnificativ acestui sector economic, turismul ocupând un loc de frunte în comerţul online. Industria de travel online se împarte în mai multe categorii, cuprinzând: agenţi online, ghiduri online, planificatoare de călătorie, comunităţi şi forum-uri online. Travel 2.0 defineşte transformarea ofertelor în pachete online pentru a da consumatorului un nou nivel de funcţionalitate şi putere. Travel 2.0 ca şi componentă a Web 2.0 deţine următoarele caracteristici: Transparenţă în date, preţuri, conţinut, imagini: sunt disponibile toate informaţiile referitoare la o anumită locaţie; Colaborare între utilizatori: pentru uşurinţa schimbului de date şi posibilitatea de găsire de informaţii personalizate (recomandări, fotografii, etc.) de la toate categoriile de utilizatori; Viteză: în însuşirea conţinutului informaţional, datorită motoarelor de căutare actuale; Informaţie predictivă: asupra utilizatorului, oferindu-i exact datele de care acesta are nevoie în funcţie de propriul profil. Astfel, cel mai important aspect al turismului online este încrederea şi utilizarea conţinutului generat utilizator. Cu cât mai mulţi utilizatori folosesc un anumit serviciu, cu atât acesta devine mai de încredere. Aplicaţia GeoLink se încadrează în curentul Travel 2.0 punând la dispoziţie utilizatorilor o modalitate de realizare şi documentare a traseelor turistice. La ora actuală, majoritatea consumatorilor decid asupra locaţiilor pe care doresc a le vizita în funcţie de reviziile altor consumatori. GeoLink permite realizarea de hărţi personalizate care pot fi apoi distribuite prietenilor şi cunoscuţilor. Scopul aplicaţiei este acela de a permite utilizatorului de a marca puncte de interes şi trasee turistice adăugând plus de informaţie. Aceste hărţi pot fi apoi distribuite ca ghiduri turistice, ce conţin comentarii şi legături către sit-uri informative, ştiri, video şi imagini. Încadrarea acestor date în conţinutul unei hărţi are un impact mai mare decât simpla vizualizarea a datelor în cadrul unor tabele. Navigatorul permite crearea de bookmarks ale site-uri de interes. Această aplicaţie permite acelaşi lucru, dar pentru locaţii reale din jurul lumii. Utilizând această aplicaţie, utilizatorul poate gestiona locuri pe care doreşte să le păstreze, viziteze sau împărtăşească cu alţii. 36
  • 37. 4.2.2 Analiză şi Proiectare S-a dorit realizarea unei aplicaţii intuitive, uşor de folosit, puternice, care să permită utilizatorilor introducerea de informaţii în cadrul unei hărţi. Aplicaţia poate servi pentru crearea de trasee turistice, realizarea de semne de carte cu reprezentare geografică, crearea de scenarii de desfăşurare a activităţilor sau pentru publicitate, în cazul în care se doresc introduse legături şi comentarii despre obiective comerciale. Datorită sutelor de API disponibile dezvoltatorilor, aplicaţiile acestora pot fi îmbogăţite cu componente avansate, logice sau de interfaţă, reutilizând tehnologia disponibilă în loc să o reinventeze şi bazând noile proiecte pe experienţa anterioară. Mashup permite utilizarea de astfel de „rotiţe” iar comunitatea Open Source pune la dispoziţie exemple de utilizare de cod preexistent, realizând din procesul de dezvoltare un proces rapid, simplu şi mai puţin costisitor. Cerinţa ca o aplicaţie să fie publică nu este suficientă pentru a asigura interoperabilitatea, fiind nevoie de o aplicaţie completă şi neutră. Utilizarea de componente provenind de la furnizori diferiţi este o dovadă evidentă de neutralitate şi se încadrează în spiritul Web 2.0. O aplicaţie bazată JavaScript, nu este necesară instalare, fiind accesibilă în cadrul unui navigator Web care are suport pentru JavaScript. Rulând din cadrul navigatorului, aplicaţia devine independentă de platformă şi mai rapidă, deoarece logica aplicaţiei este executată local utilizând JavaScript, oferind răspuns fără întârziere şi crescând interactivitatea aplicaţiei. Figura 4.4: Anatomia aplicaţiei GeoLink 37
  • 38. Modelul facil de programare promovat de Google a dus la utilizarea acestuia în multiple mashup-uri, Google Maps API fiind lider şi deţinând un procent de 50% de utilizare, conform ProgrammableWeb.com [30]. Google oferă utilizatorilor încredere şi credibilitate şi ca furnizor de componente mashup, aceste atribute sunt esenţiale pentru a stabili relaţii de lungă durată cu clienţii săi. Google Maps utilizează nativ tehnologia Ajax, utilizatorul nefiind nevoit să reîncarce pagina, deoarece toate transferurile sunt realizate în fundal, ascunse de către acesta. Conexiunea dintre client şi server este una dinamică, ce păstrează actualizarea datelor într-un mod continuu. Majoritatea mashup-urilor construite pe API-ul Google Maps doar plasează anumite informaţii pe hartă, dar lasă puţină putere utilizatorului de a prelucra şi selecta sursele externe utilizate. GeoLink permite personalizarea intrărilor, căutând informaţie aferentă şi oferă o paletă diversă de categorii de puncte de interes ce pot fi adăugate (asemeni legendelor). Informaţia introdusă este relaţionată din punct de vedere geografic şi dispune de unelte pentru interogare, vizualizare şi analiză. Motoarele de căutare au căpătat un rol vital în experienţa utilizatorului în cadrul sit- urilor Web, simţindu-se acut inexistenţa acestui mod de navigare în cadrul aplicaţiilor. Aplicaţia GeoLink utilizează Google Ajax Search API, ce pune la dispoziţie căutarea de surse provenite din locaţii diferite şi permiţând dezvoltatorului de a aplica restricţii asupra formatelor rezultatelor. Se pot adăuga informaţii referitoare la ştiri, articole, imagini şi video, acest lucru diminuând timpul şi efortul căutării acestor date în surse externe. Descrierea aspectului, reprezentarea grafică a componentelor este determinată de fişiere CSS care ajută la separarea conţinutului de prezentare, interfaţa fiind uşor de modificat în cazul intervenţiilor viitoare. Google Maps şi Google Ajax Search pun la dispoziţie clase speciale de formatare a datelor conţinute, iar Yahoo! UI Library aduce plus de funcţionalitate controalelor HTML. Accesul la server este realizat doar pentru salvarea hărţii şi exportul datelor introduse în formatul geografic ales: kml sau gpx, având astfel un rol mai mult de stocare de date, decât un rol de prelucrare. Un dezavantaj al utilizării JavaScript cu preponderenţă este acela că aplicaţia fiind dinamic generată la execuţie, conţinutul acesteia este inaccesibil motoarelor de căutare. O soluţie este exportul informaţiei în format kml, format care poate fi indexat de către Google. O altă întrebuinţare a formatului kml este utilizarea acestuia în cadrul Google Earth, permiţând utilizatorului afişarea vizuală a informaţiei atât în mediu online, cât şi offline. Pentru a crea o nouă hartă nu este nevoie de a fi un utilizator autentificat. Legăturile către hărţile personalizate sunt generate aleator, confidenţialitatea unei legături având şanse de a fi compromisă prin încercări multiple. Un alt posibil dezavantaj este necesitatea şi dependenţa faţă de cheia utilizator primită pentru utilizarea API-urilor Google şi a licenţei care impune caracterul deschis şi necomercial al aplicaţiei. 38
  • 39. Spaţiul de lucru GeoLink consistă din cinci componente: Harta – care redă informaţiile adăugate de utilizator; Zona de unelte – care permite selectarea de elemente grafice ce doresc a fi adăugate; Salvare – permite denumirea hărţii create; Zona de Help (Ajutor) – ce conţine un tutorial de folosire al aplicaţiei; Zona de căutare – pentru adăugarea de legături. Figura 4.5: Zonele de lucru GeoLink 4.2.3 Detalii de implementare GeoLink este o aplicaţie JavaScript ce utilizează ca surse externe două API-uri Google şi permite personalizarea informaţiei vizualizată pe hartă cu date preluate de la utilizator (user generated content). GeoLink este un mashup de software la nivelul clientului, ce utilizează pentru partea de interfaţă Google Maps şi Yahoo! UI Library, iar pentru partea de date Google Ajax Search şi conţinut utilizator. API-ul Google Maps este la origine un API JavaScript care ne permite integrarea de hărţi interactive direct în aplicaţiile noastre Web. Google Maps nu permite numai vizualizarea de hărţi, ci şi interacţiunea cu anumite zone specifice, cum ar fi plasarea unui cursor la o anumită locaţie pentru marcarea unui loc anume sau unei adrese. Google Maps este suportat pe navigatoarele: Firefox 0.8+, Mozilla 1.4+, IE 5.5+, Safari 1.2+, Netscape 7.1+, Opera 7+ şi din aprilie 2006 este în versiune 2 cu statutul de Beta. 39
  • 40. Pentru utilizarea acestui API este necesară o înregistrare anterioară pentru obţinerea unei chei de acces utilizată pentru conectarea la serverul Google Maps. Cheia poate fi folosită doar în cadrul unui domeniu şi este necesară adăugarea ei pentru orice apel de API Google. <script src="http://maps.google.com/maps?file=api&amp;v=2&amp;key=..." type="text/javascript"></script> Inserarea unei hărţi în cadrul unei pagini se realizează prin apelul constructorului GMap2(). Se pot adăuga controale standard, de exemplu controlul de nivel de zoom, controlul de reprezentare dorit (imagini satelit, hibrid) sau controale definite utilizator. if(GBrowserIsCompatible()){ document.map=new GMap2(document.getElementById("map")); document.map.setCenter(new GLatLng(0,0),2); document.map.addControl(new GLargeMapControl()); document.map.addControl(new GMapTypeControl()); document.map.addControl(new geolink.distance_control()); } Spaţiul de nume GEvent este utilizat pentru înregistrarea de handlere de evenimente şi pentru lansarea acestora în execuţie. Toate evenimentele definite cu ajutorul acestui API sunt evenimente personalizate şi sunt declanşate intern utilizând GEvent.trigger(). GEvent.trigger(geolink.poi_markers[i],"click"); Pentru înregistrarea evenimentelor se foloseşte metoda GEvent.addListener, care transferă rezultatul apelului de funcţie către hartă. Evenimentele utilizate în această aplicaţie sunt click, dragend, mouseover şi mouseout. GEvent.addListener(document.map,"click",function(marker){ if(!marker){ geolink.handle_click(marker); } }); Aplicaţia gestionează două tipuri de puncte care pot fi adăugate: waypoint, respectiv poi. Există funcţii de gestiune pentru fiecare dintre aceste puncte, diferenţa fiind că waypoint sunt puncte componente ale rutelor, realizându-se calcule de distanţă şi inserare de locaţii intermediare. Punctele de pe hartă sunt păstrate în liste de obiecte, de genul: geolink.waypoint_list[i]= [Object Lat=47.170151 Lng=27.583549 Text=Iasi Link= [["http://www.google.com/", "Google"]]] Există liste pentru waypoint, cât şi pentru poi, ce conţin atât datele (_list), cât şi referinţe ale obiectelor afişate pe hartă (_marker). Uneltele sunt diferite şi în funcţie de tipul de punct selectat. Afişarea acestor informaţii în format grupat este posibilă folosind metoda openInfoWindowTabsHtml. 40
  • 41. var i=geolink.find_waypoint_index(marker); var infoTab= [new GInfoWindowTab("Links",geolink.editable_waypoint_links(i)),new GInfoWindowTab("Comments",geolink.editable_waypoint_comments(i)),new GInfoWindowTab("Tools",geolink.editable_waypoint_tools(marker,i))]; marker.openInfoWindowTabsHtml(infoTab); Overlay reprezintă informaţie suplimentară adăugată pe hartă. În această categorie întră icon şi polyline. Ruta dintre puncte este realizată prin GPolyline: geolink.waypoints_path=new(GPolyline(points,"#"+geolink.waypoint_line _color,5); document.map.addOverlay(geolink.waypoints_path); Pentru adăugarea unui nou tip de icon, trebuie specificat locaţia fişierului png, felul umbrei şi a ancorei. var f=new GIcon(); f.image=geolink.media_uri+"image.png"; f.shadow=geolink.media_uri+"shadow.png"; f.iconSize=new GSize(12,20); f.shadowSize=new GSize(22,20); f.iconAnchor=new GPoint(6,20); f.infoWindowAnchor=new GPoint(6,1); f.infoShadowAnchor=new GPoint(13,13); new_marker=new GMarker(point,{icon:f,draggable:_1d}); Versiunea 2 Google Maps API permite crearea de controale utilizator pe care le putem adăuga hărţii, prin subclasarea clasei GControl. În acest mod sunt adăugate controalele de distanţă, de unelte, de căutare de legături, de alegere a culorii liniei. geolink.toolbox_control.prototype=new GControl(); geolink.toolbox_control.prototype.initialize = function(map){ map.getContainer().appendChild(document.getElementById("toolbox_contr ol")); return document.getElementById("toolbox_control"); }; geolink.toolbox_control.prototype.getDefaultPosition=function(){ return new GControlPosition(G_ANCHOR_TOP_LEFT, new GSize(-180,-17)); }; Pentru căutarea unei locaţii ce se doreşte a fi adăugată se utilizează geocoder-ul oferit de Google Map API, care translatează adresele în perechi latitudine-longitudine. Se poate utiliza obiectul GClientGeocoder pentru trimiterea cererilor către serverul Google utilizând apeluri JavaScript. geolink.geocoder=new GClientGeocoder(); geolink.geocoder.getLocations(address, callback); Yahoo User Interface Library este o bibliotrecă de componente JavaScript reutilizabile pentru crearea de aplicaţii Web, ce foloseşte propriul spaţiu de nume. Yahoo! UI deţine componente pentru controalele standard şi pentru partea de utilities. A fost folosită componenta YAHOO.util.Dom.setStyle din cadrul pentru manipularea stilurilor elementelor XHTML şi YAHOO.widget.ButtonGroup pentru gruparea tipurilor de puncte ce pot fi adăugate. Pentru partea de expandare a componentelor vizuale s-a folosit YAHOO.util.Anim, iar pentru controlul de schimbare al culorii liniei de traseu YAHOO.widget.Slider şi 41
  • 42. YAHOO.util.Color. YAHOO.util.Event.addListener se ocupă de adăugarea de triggere de evenimente pentru diferite componente. Salvarea datelor conţinute de hartă este realizată prin utilizarea componentei YAHOO.util.Connect.asyncRequest(method, uri, callback, postData), unde: method: metode de cerere către server(POST, GET, PUT, DELETE, ect.); uri: calea către locaţia care receptează şi prelucrează datele; callback: o referinţă către obiectul callback care este transmis; postData: datele în format query-string ("new=1&old=2") YAHOO.util.Connect.asyncRequest( 'GET', 'save.php', { success: function(o) { alert(o.responseText); }, failure: function(o) { alert('Request failed: ' + o.statusText); } } ); Pentru transmisia datelor în postData s-a folosit formatul JSON şi anumite metoda toJSONString() pentru a putea serializa liste de colecţii de obiecte. var postData= "waypoints="+encodeURIComponent(geolink.waypoint_list.toJSONString()) ; postData+= "&pois="+encodeURIComponent(geolink.poi_list.toJSONString()); Pe server se va genera noul fişier care conţine datele introduse şi se vor apela funcţii speciale de afişare (prefixate în acest caz cu saved_) care vor extrage informaţia din structurile geolink.waypoint_list, geolink.poi_list, etc. geolink.waypoint_list = stripslashes($_POST['waypoints']); geolink.waypoint_list[i]= [{"Lat":47.170151,"Lng":27.583549,"Text":"Iasi","Icon":"yellow", "Links":[["http://en.wikipedia.org/wiki/Ia%25C5%259Fi","Iasi - Wikipedia, the free encyclopedia"]]}] Odată ce harta generată este salvată pe server se vor genera şi fişierele .gpx şi .kml. Salvarea se realizează utilizând PHP pe partea de server. Generarea fişierului .kml se realizează prin adăugarea nodurilor existente pe hartă şi a traseului generat de acestea. Ca informaţie specifică unui nod este introdus numele, numărul de legături specifice şi conţinutul lor. for(var i=0;i<geolink.waypoint_list.length;i++){ html +="<Placemark>n"; html +="<styleUrl>#waypoint</styleUrl>"; html +="<name>"+get_first_line(geolink.waypoint_list[i].Text)+" ("+(i+1)+" of "+geolink.waypoint_list.length+")</name>n"; html +="<description><![CDATA[<p>"+ geolink.waypoint_list[i].Text+"</p>"; if (geolink.waypoint_list[i].Links.length != 0){ 42