sobota, 3. marec 2007

AJAX

Ponovno sem se lotil nekega resnejšega učenja in spoznavanja "novih" tehnologij. Tokrat sem nekoliko bolj vzel pod drobnogled AJAX. Hmm, se mi zdi prav smešno, ko govorim o novi tehnologiji, ki je v resnici na ljubo že skoraj vsesplošno znana, poznana in sprejeta. Bi lahko govoril že o običajni praksi izdelave resnejše spletne aplikacije.

In kaj je sploh tako zelo zanimivega, novega, "oh-in-sploh" pri tem AJAX-u. V bistvu je res en tak večji premik na področju izdelave spletne aplikacije, saj spletno aplikacijo približa, po občutku dela in izgleda, "navadnim/običajnim" namiznim aplikacijam. Spletna stran npr. lahko komunicira s strežnikom (bere ali pošlje podatke) brez da bi se spletna stran "poslala" na spletni strežnik; tako kot je bilo to potrebno do sedaj (podatki so bili v form-ah in so se poslali zgumbom submit). Najbolj viden predstavnik te tehnologije je prav gotovo Google, kateremu sledi Yahoo! in Microsoft ter številni drugi.

AJAX je okrajšava za : "Asynchronous Javascript and XML", kar pomeni asinhroni JavaScript in XML (dobesedni prevod). A, v resnici AJAX ni samo asinhroni JavaScript in XML; ker prvič ni nujno da je asinhron in drugič, ni nujno da je XML, lahko je tudi npr. TXT. Ima pa še drugo lastnost oz. omejitev, da je zelo odvisen od platforme na kateri se nahaja. Temu problemu so namenjene različne knjižnice, ki popolnoma odpravljajo to lastnost. Govoril sem, da so z AJAX-om spletne aplikacije podobne namiznim. Namizne aplikacije niso več "privlačne" ker so 100% odvisne od okolja na katerem se izvajajo: torej, aplikacija napisana v Visual C++ (ali pa katerem drugrem programskem jezikiku) za Windows okolje se ne more izvajat na katerem drugem okolju npr. Linux, Mac, BeOS, ... V posameznih primerih je aplikacija omejena tudi na verzijo Windows-ov. Je pa tudi obratno, da aplikacija napisana za Mac ni prenosljiva na drugo okolje. Nekdo bi mi že oporekal v prvem stavku, rekoč: Kaj pa ta sanja, saj sploh ne ve kaj govori, saj poznamo polno programov, ki delujejo v vseh okoljih. No, sedaj pa pridemo do te "knjižnice", o katerih sem govoril na začetku, pri AJAX-u. Nekateri proizvajalci uporabljajo za svoje aplikacije knjižnice, ki naredijo nivo kateri je enak za vsa okolja. Pod tem nivojem, pa je za vsako okolje posebaj specifična implementacija. Dober primer tega je npr. QT okolje, ki omogoča prenos aplikacije iz Linux-a na Windows ter na Mac in tako dalje (in obratno). Dobra lastnost tega pri AJAX-u je, da je teh različnosti bore malo in jih je dokaj enostavno združiti v eno knjižnico, ki naredi nivo nad katerim se ni potrebno ubadati z vprašanjem: Na katerem sistemu se nahajam? Je to Windows in IE 6, 7, ... ali je to SuSE Linux in FF 1.5, 2, ... ali je to Mac OS X in Safari 2, ... Torej, ravno zaradi tega so se pojavile te knjižnice, ki omogočajo odstranitev teh problemov pri vsakdanjem razvoju aplikacij. Da se še malo vrnem. Knjižnice, ki niso več tako enostavne, za razvoj namiznih aplikacij imajo bistveno težjo nalogo kot jo ima ta pri AJAX-u.

Za kak tip aplikacije se odločimo je odvisno od zahtev, ki jih imamo oz. katerim moramo zadovoljiti in od številnih drugih kriterijev npr. se nam splača, imamo znanje, kako je z varnostjo, vzdrževanjem in podobno. Seveda vsak tip naloge zahteva svoj tip rešitve in pristopa k problemu oz. rešitvi le tega. Dandanes je vse večje povpraševanje in zahteva po spletnih aplikacijah, ki v veliki meri tudi odstranijo stroške iz stročkov potrebnih za nakup računalniške opreme posameznega odjemalca in nekoliko povečajo stroške centralnega strežnika, kjer se sedaj dogajajo vsa procesiranja. Dober primer bi bil npr. Microsoft Office paket. Za uporabo tega paketa ni potrebno imeti zmogljivega računalnika. Za izmenjavo dokumentov je potrebno poskrbeti tako, da vsak posamezen računalnik pošlje in sprejme dokument z nekega centralnega računalnika. Nova rešitev je taka, da se celoten Microsoft Office paket prenese (namesti) na centralni računalnik, odjemalci poganjajo ta paket neposredno iz centralnega računalnika (ki mora sedaj biti nekoliko zmogljivejši). Takšna rešitev omogoča, da odjemalci ne rabijo biti posebaj zmogljivi in tudi varnost podatkov je večja, saj dokomenti so zmerom na centralnem računalniku in se le na zahtevo prenesejo (kopirajo) na odjemalčev računalnik. Seveda, tak centralni računalnik je sedaj, ko je dokaj hitro internetno omrežje, dostopen tudi npr. od doma, kjer ni potrebno imetni ne posebne strojne opreme ne namensih programov (Microsoft Office paketa). Do takšne aplikacije je mogoče tudi dostopat s sistemom, ki poganja npr. Linux. Torej tak način zelo, zelo razširi krog uporabe oz. uporabnikov. Seveda je na drugi strani npr. program Autodesk AutoCAD; ki pa je zelo zahteven in potrebuje namenski računalnik in ga ni mogoče tako enostavno, če sploh, predelati v spletno aplikacijo. Tako da, vse aplikacije ni mogoče predelati v spletno različico, jih je pa zelo veliko. In ravno pri tem je AJAX v zelo veliko pomoč, saj do sedaj je spletnim aplikacijam manjkala ravno odzivnost, ki so jo nudile namizne aplikacije.

Vsebina spletne strani se je osvežila, ko smo osvežili spletno stran (ali pa ko smo prvič dostopali do nje). Seveda, včasih se stvari tudi spremenijo v odzadju, ko ne osvežimo stani. Dober primer bi bila npr. aplikacija za izmenjavo sporočil. Napišemo sporočilo in ga pošljemo, nato pa čakamo, da dobimo odgovor. Kako hitro bomo videli odgovor (po tistem, ko je le ta dospel v naš nabiralnik) je odvisno, kako pogosto bomo osvežili spletno stran. Tak primer je npr. Hotmail. To je star način. Nov način je, Google-ov način. Pošlješ sporočilo, stran se niti ne osveži, napiše "Sporočilo poslano", čakaš in čakaš... napis v dospeli pošti se spremeni, ki nakazuje na novo dospelo sporočilo. In v vsem tem času ni potrebno niti enkrat osvežiti spletne strani. V tem je sedaj ta "bistvena" razlika za uporabnika. Za razvijalca je pa toliko bolj zanimivo, ker lahko sedaj dela več stvari hkrati, hitreje, pregledneje in seveda do neke mere tudi enostavneje.

Ni komentarjev: