Comparison of Seaside and Ruby on Rails web application frameworks
Full text
(2)
(3) I. Univerza v Mariboru Fakulteta za elektrotehniko računalništvo in informatiko Smetanova ulica 17 2000 Maribor, Slovenija. Diplomsko delo univerzitetnega študijskega programa. PRIMERJAVA SPLETNIH OGRODIJ SEASIDE IN RUBY ON RAILS. Študent:. Boštjan Ritonja. Študijski program:. Računalništvo in informatika. Smer:. Informatika. Mentor:. red. prof. dr. Marjan Heričko. Lektorica:. Mateja Rogan. Maribor, januar 2016.
(4) II.
(5) III. ZAHVALA Iskreno se zahvaljujem profesorju Marjanu Heričku za vso podporo, strokovno pomoč in navdihe pri izdelavi diplomskega dela. Zahvaljujem se tudi svoji družini, ki mi je omogočila študij, in ženi Petri za izkazano razumevanje in moralno podporo..
(6) IV. PRIMERJAVA SPLETNIH OGRODIJ SEASIDE IN RUBY ON RAILS. Ključne besede:. informacijski sistemi, spletne aplikacije, programska ogrodja, Ruby, Smalltalk. UDK:. 004.4'22:004.775(043.2). Povzetek:. Izbira ustreznega spletnega ogrodja je pomemben korak pred pričetkom razvoja spletnih aplikacij. Pričujoča naloga podaja rezultate primerjave in vrednotenja spletnih ogrodij Seaside in Ruby on Rails. Podrobneje so prikazane karakteristike in klasifikacija spletnih ogrodij ter različni pristopi za primerjavo in izbiro spletnih ogrodij, ki jih uporabljajo razvijalci spletnih rešitev. V nadaljevanju se seznanimo z obema ogrodjema in predstavimo pristop, s pomočjo katerega smo vrednotili in ocenili ogrodji Seaside in Ruby on Rails. Praktični del diplomske naloge zajema izvedbo primerjalne metode in ocenitev izbranih programskih ogrodij..
(7) V. COMPARISON OF SEASIDE AND RUBY ON RAILS WEB APPLICATION FRAMEWORKS. Key words:. information systems, web applications, application frameworks, Ruby, Smalltalk. UDK:. 004.4'22:004.775(043.2). Abstract. Selection of an appropriate web development framework is an important task before the development phase in the lifecycle of a web application. The thesis presents research results of a project where two web frameworks, namely Seaside and Ruby on Rails, were compared evaluated and assessed. In the first part of the research different metrics,. assessment. methodologies. and. approaches. to. comparison and selection of web frameworks are reviewed. In second part the two web frameworks are presented and an appropriate method for assessment of the two tools is proposed. In the experimental part the assessment method is applied against the two web frameworks, Seaside and Ruby on Rails. Finally, results of the experimental part are analysed and evaluated..
(8) VI. Vsebina 1 Uvod................................................................................................................................ 1 2 Programska ogrodja........................................................................................................ 3 3 Spletna ogrodja............................................................................................................... 6 3.1 Klasifikacija spletnih ogrodij.....................................................................................7 3.2 Karakteristike spletnih ogrodij..................................................................................8 4 Pristopi za primerjavo in izbiro spletnega ogrodja..........................................................13 4.1 Primerjalne metode................................................................................................14 4.2 Statistične metode..................................................................................................19 4.3 Motivacija za izbiro primerjanih spletnih ogrodij.....................................................22 5 Opis primerjanih ogrodij.................................................................................................24 5.1 Ogrodje Seaside....................................................................................................25 5.2 Ogrodje Ruby on Rails...........................................................................................34 6 Praktična primerjava ogrodij..........................................................................................41 6.1 Definicija primerjalne metode.................................................................................41 6.2 Funkcionalna aplikacija..........................................................................................43 6.3 Primerjava in rezultati primerjave...........................................................................49 7 Sklep............................................................................................................................. 57 8 Literatura....................................................................................................................... 58 9 Priloge........................................................................................................................... 61.
(9) VII. Kazalo slik Slika 1: Matrika primerjave ([9])........................................................................................16 Slika 2: Matrika primerjave z utežmi ([9])..........................................................................16 Slika 3: Kategorizacija glede na velikost aplikacije ([5])....................................................17 Slika 4: Model primerjave Kai Wähner ([5]).......................................................................18 Slika 5: URL aplikacije, napisane z ogrodjem Seaside.....................................................27 Slika 6: Aplikacija Spletni števec – ogrodje Seaside.........................................................29 Slika 7: Komunikacija Seaside komponent – Gnezdi........................................................32 Slika 8: Komunikacija Seaside komponent – Pokliči/Odgovori..........................................33 Slika 9: Preslikava vzorca MVC v ogrodju Rails................................................................38 Slika 10: Aplikacija Spletni števec – ogrodje Rails............................................................38 Slika 11: Razredni diagram aplikacije za naročanje..........................................................45 Slika 12: Predstavitev aplikacije – prijava uporabnika.......................................................45 Slika 13: Predstavitev aplikacije – vnos rezervacije..........................................................46 Slika 14: Predstavitev aplikacije – nova stranka...............................................................47 Slika 15: Predstavitev aplikacije – upravljanje s strankami...............................................47 Slika 16: Predstavitev aplikacije – upravljanje s storitvami................................................48 Slika 17: Predstavitev aplikacije – pregled rezervacij........................................................48. Kazalo tabel Tabela 1: Uporaba programskih jezikov na strani strežnika..............................................19 Tabela 2: Uporabe programskih jezikov na strani odjemalca............................................20 Tabela 3: Priljubljenost spletnih ogrodij.............................................................................21 Tabela 4: Hotframeworks statistika priljubljenosti spletnih ogrodij.....................................22 Tabela 5: Uporabljena strojna in programska oprema za implementacijo rešitve..............43 Tabela 6: Ciljna platforma.................................................................................................43 Tabela 7: Porabljen čas implementacije programske rešitve.............................................50 Tabela 8: Statistika programske kode...............................................................................51 Tabela 9: Pogostost izdaje ogrodja Seaside.....................................................................52 Tabela 10: Pogostost izdaje ogrodja Rails........................................................................52 Tabela 11: Povpraševanje po razvijalcih (število oglasov).................................................54 Tabela 12: Ocenitev ogrodij Rails in Seaside....................................................................56.
(10) VIII. Izseki programske kode Izsek 1: Definicija razreda Števec – ogrodje Seaside.......................................................30 Izsek 2: Inicializacija razreda Števec – ogrodje Seaside...................................................30 Izsek 3: Instančne metode za manipulacijo števca – ogrodje Seaside..............................30 Izsek 4: Metoda za prezentacijo komponente Števec – ogrodje Seaside.........................31 Izsek 5: Registracija aplikacije Števec – ogrodje Seaside.................................................31 Izsek 6: Generirana HTML koda spletne aplikacije Števec – ogrodje Seaside..................32 Izsek 7: Gradnik krmilnika spletne aplikacije Števec – ogrodje Rails................................39 Izsek 8: Gradnik preglednika spletne aplikacije Števec – ogrodje Rails............................40 Izsek 9: Gradnik modela spletne aplikacije Števec – ogrodje Rails...................................40 Izsek 10: Generirana HTML koda spletne aplikacije Števec – ogrodje Rails.....................40.
(11) IX UPORABLJENE KRATICE CGI – Common Gateway Interface CMS – Content Management System CRUD – Create, Read, Update, Delete CSS – Cascading Style Sheets HTML – Hypertext Markup Language IDE – Integrated Development Environment JRE – Java Runtime Environment JSF – Java Server Faces JSP – Java Server Pages JVM – Java Virtual Machine MVC – Model View Controller ORM – Object Relational Mapping PaaS – Platform-as-a-Service REST – Representational State Transfer RIA – Rich Internet Application URL – Universal Resource Locator VCS – Version Control System WWW – World Wide Web XHR – XML Http Request XHTLM – Extensible Hypertext Markup Language.
(12) Primerjava spletnih ogrodij Seaside in Ruby on Rails. 1 Uvod Dandanes si le stežka predstavljamo svet brez interneta. Vse več podjetij se zanaša nanj, saj omogoča, da ponujajo svoje produkte in storitve enostavno, hitro in razmeroma ceneje kot kdajkoli prej. Brez zadržkov lahko rečemo, da je internet ena najpomembnejših poslovnih platform današnjega časa. Razvoj tehnologij je omogočil, da se na splet selijo celotni informacijski sistemi, med njimi tudi aplikacije, ki so bile še nedavno v domeni specifičnih programskih okolij. Nove internetne tehnologije ne omogočajo zgolj razvoja preprostih spletnih aplikacij, temveč tudi razvoj celovitih informacijskih sistemov. Pri razvoju informacijskih sistemov igrajo nepogrešljivo vlogo programska ogrodja, ki zagotavljajo boljšo kakovost programske rešitve in z avtomatizacijo skupnih opravil tudi hitrejši razvoj. V zadnjih nekaj letih je mogoče opaziti poplavo spletnih ogrodij. Za podjetja, ki se ukvarjajo z razvojem programskih rešitev, je zelo pomembno, da skrbno izberejo programski jezik in ogrodje, s katerim bodo realizirali programsko rešitev, kar pa je vse prej kot enostavna naloga. Izbira spletnega ogrodja je zahtevna naloga, ker ne obstajajo enostavna navodila ali pa orodja, ki bi izbiro poenostavila ali avtomatizirala. Namen diplomskega dela je predstaviti pristope, ki se v strokovnih krogih uporabljajo za primerjavo in izbiro spletnih orodij ter s pomočjo podobnega pristopa primerjati in oceniti ogrodji Seaside in Ruby on Rails. V uvodnih dveh poglavjih bomo predstavili definicijo in možne kategorizacije spletnih programskih ogrodij. Opisali bomo želene atribute kakovosti in pričakovani nabor funkcionalnosti spletnih programskih ogrodji, kot množico kriterijev, ki jih je mogoče uporabiti pri primerjavi. V četrtem poglavju podamo opise različnih pristopov za izbiro in primerjavo spletnih ogrodij, ki se uporabljajo v strokovnih krogih. V istem poglavju opišemo motivacijo za izbiro ogrodij Seaside in Ruby on Rails, ki ju v nadaljevanju primerjamo in ocenimo. Peto poglavje je namenjeno opisu obeh primerjanih spletnih ogrodij. V šestem poglavju najprej definiramo pristop, ki ga bomo uporabili za primerjavo in ocenitev. S pomočjo definirane metode obe ogrodji vrednotimo, primerjamo in ocenimo. V okviru vrednotenja obeh ogrodij implementiramo dve funkcionalno ekvivalentni aplikaciji s pomočjo primerjanih ogrodij. 1.
(13) Primerjava spletnih ogrodij Seaside in Ruby on Rails. V sklepnem delu podamo ugotovitve uporabe pristopa primerjave in glede na rezultate primerjave poizkušamo upravičiti izbiro in uporabo enega ali drugega ogrodja v praksi.. 2.
(14) Primerjava spletnih ogrodij Seaside in Ruby on Rails. 2 Programska ogrodja Podjetja za razvoj programske opreme se danes spopadajo z vedno večjimi konkurenčnimi pritiski trga. Ta jih sili, da svoje produkte lansirajo hitro, po konkurenčni ceni, hkrati pa od njih zahteva, da produkti zadovoljujejo najrazličnejše standarde, da so povezljivi itd. Da bi podjetja uspela zadovoljiti potrebe trga in hkrati ostala konkurenčna, morajo biti sposobna graditi aplikacije hitro in s čim manj vloženega dela, s čim manjšo količino programske kode in potem te aplikacije z minimalnim naporom vzdrževati in posodabljati. Eden izmed pristopov, ki lahko pomaga podjetjem ostati konkurenčno, je uporaba programskih ogrodij. Definicija programskega ogrodja: »Množica razredov in/ali komponent, ki vključujejo abstraktni načrt rešitev za družino povezanih problemov« [1]. Definicija ogrodja, ki jo je predlagal Mattsson [2]: »Ogrodje predstavlja generično arhitekturo, ki je zasnovana z namenom zviševanja ponovne uporabnosti. Ogrodja vključujejo množico sodelujočih abstraktnih in konkretnih razredov, ki enkapsulirajo obnašanje podedovanih specializacij«. Če povzamemo definicije programskih ogrodij, bi lahko dejali, da je ogrodje ponovno uporabna nedokončana aplikacija, ki jo specializiramo tako, da lahko na njeni osnovi gradimo aplikacije po meri. Na programska ogrodja lahko gledamo kot na tehniko ponovne uporabe, ki razvijalcem omogočajo znatne izboljšave iz vidika produktivnosti in kakovosti razvoja programske opreme. Razvijala so se iz objektno-orientiranih konceptov in tehnik ponovne uporabe. Predstavljajo programsko opremo, ki je namenjena razvijalcem, da jo lahko uporabijo, razširijo in po potrebi prilagodijo, tako da ustreza zahtevam končne programske rešitve. Pomembno je, da je izbira oziroma razvoj ogrodja smotrn, saj ogrodje samo po sebi še ni zadostna rešitev. Odločitev za uporabo oziroma razvoj programskega ogrodja je smiseln le v primeru, če bomo ogrodje uporabili v več različnih aplikacijah ali fragmentih razvojne kode. Implementacija ali učenje že obstoječega ogrodja zahteva določen čas, vložen trud in zato mora biti njegova uporaba dobro premišljeni korak. Če vidimo dolgoročne pridobitve v uvedbi ali implementaciji programskega ogrodja, je njegova uvedba smiselna. Ogrodje. 3.
(15) Primerjava spletnih ogrodij Seaside in Ruby on Rails. ima svoj življenjski cikel, v katerem se nenehno izboljšuje v smislu stabilnosti, uporabnosti in razširljivosti. Vse naše programske rešitve, ki temeljijo na določenem programskem ogrodju, se po tej predpostavki samodejno izboljšujejo. Ogrodja se med seboj razlikujejo predvsem po namenu uporabe, svoji obsežnosti, zasnovi in tipu. Glede na tip programskih ogrodij ločimo odprtokodna ogrodja, lastniška ogrodja in ogrodja, ki so bila razvita za lastne potrebe (na primer: podjetja, programske skupine itd.). Ogrodja lahko klasificiramo tudi po tem, ali so razširljiva ali zaprta. Kljub več različnim klasifikacijam se ogrodja najpogosteje delijo na [4]: •. aplikacijska – naslavljajo različne programske in problemske domene, kot so npr. operacijski sistemi, spletne aplikacije itd.. •. domenska. –. naslavljajo. določene. problemske. domene,. kot. so. npr.. zavarovalništvo, bančništvo itd. •. orodna – naslavljajo določene programske domene, kot so npr. uporabniški vmesnik, testiranje kode itd.. Prednosti, ki jih programska ogrodja prinašajo, so [2][3]: •. omogočajo konsistenten način za upravljanje skupnih opravil. S tem omogočajo razvijalcem enostavnejše branje, spreminjanje programske kode drugih razvijalcev in tako povečajo produktivnost.. •. vnašajo veliko mero avtomatizacije skupnih opravil. Razvijalci ne rešujejo problema vsak po svoje, ampak jim ogrodje ponuja rešitev in tako se lahko posvetijo reševanju specifičnih domenskih problemov.. •. ločujejo tematska področja. Kot primer v arhitekturi MVC (angl. model view controller) se lahko teoretično grafični oblikovalci ukvarjajo s predstavitvenim delom logike, razvijalci pa se osredotočijo na logiko modela in krmilnika.. •. omogočajo hiter razvoj in prototipiranje. Ogrodje lahko pripomore k skrajšanju cikla razvoja programske opreme, in sicer tako, da skrajša odzivne čase med razvijalcem in stranko oziroma načrtovalcem. Aplikacije ni potrebno graditi od začetka, ker je programska koda, ki jo ogrodje zagotavlja, ponovno uporabna.. •. zagotavljajo boljšo kakovost programske opreme. Ogrodja običajno temeljijo na preizkušenih vzorcih in so dobro testirana.. 4.
(16) Primerjava spletnih ogrodij Seaside in Ruby on Rails. •. omogočajo, da se razvijalec ne ukvarja s problemi sistemskega področja, ampak se lahko osredotoči na področje domene.. Ogrodja lahko imajo pri razvoju programske opreme tudi slabe strani, ki so posledica samega ogrodja ali pa napačne uporabe ogrodja [2]: •. avtomatizacija opravil in vzorci v ogrodju lahko zmanjšajo kreativnost razvijalcev. S tem, ko razvijalec rešuje problem s pomočjo ogrodja, pride do dobre rešitve, kar pa še ne pomeni, da je rešitev najboljša.. •. razvijalci lahko z uporabo ogrodja kodirajo zapletene rešitve in se ne zavedajo, da je uporaba ogrodja neustrezna ali da bi bilo potrebno ogrodje razširiti za potrebe realizacije cilja.. •. za enostavna opravila je potrebno včasih ogrodja v celoti zaobiti.. •. odvisnost od programskega jezika. Ogrodja so običajno napisana v določenem programskem jeziku in so zato vezana nanj.. •. razhroščevanje aplikacij, ki uporabljajo ogrodje, je lahko težavno, ker je napake težko lokalizirati. Težko je identificirati, ali napaka izhaja iz aplikacije ali ogrodja, ki ga uporabljamo.. •. pomanjkljiva dokumentacija ogrodja, ki pogosto odvrne razvijalca od uporabe ogrodja.. Prva programska ogrodja so se pojavila že v osemdesetih letih prejšnjega stoletja. Prvo širše uporabljeno ogrodje je bilo ogrodje, znano pod imenom MVC, in je bilo del uporabniškega vmesnika jezika Smalltalk-80. Šele kasneje (v devetdesetih letih) so se ogrodja preselila iz področja uporabniških vmesnikov na druge programske domene.. 5.
(17) Primerjava spletnih ogrodij Seaside in Ruby on Rails. 3 Spletna ogrodja Svetovni splet ali drugače rečeno WWW (World Wide Web) je bil prvič predstavljen leta 1989. Na začetku je internet služil za predstavitev in povezovanje statičnih vsebin. Kar hitro po rojstvu interneta je prišlo do potrebe po dinamiki na internetu. Po letu 1993 je bila predstavljena specifikacija CGI (Common Gateway Interface) in dobili smo prvi način za dinamično generacijo informacij na svetovnem spletu. Ta je služil kot način za komunikacijo med spletnim strežnikom in zunanjo programsko opremo, ki je bila sposobna prikazovati informacije glede na interakcijo uporabnika. In prav po predstavitvi specifikacije CGI lahko rečemo, da se je začel čas spletnih aplikacij in z njimi čas spletnih ogrodij. Dandanes CGI ne predstavlja več celotne rešitve za razvoj spletnih aplikacij. Programska oprema je in postaja vse bolj kompleksna in zaradi tega sili razvijalce spletnih aplikacij v predstavitev novih abstraktnih nivojev v aplikacije oziroma ogrodja, ki bodo zaobšli ovire, ki jih na žalost še vedno povzroča svetovni splet. Spletne aplikacije postajajo vse bolj uporabne. Razvoj tehnologij je omogočil, da se na splet selijo celotni informacijski sistemi, med njimi aplikacije, ki so bile še nedavno v domeni specifičnih programskih okolij. Nove internetne tehnologije ne omogočajo zgolj razvoja preprostih spletnih aplikacij, temveč tudi razvoj celovitih informacijskih sistemov. Definicija spletne aplikacije pravi, da je to aplikacija, ki je dostopna s pomočjo spletnega brskalnika preko omrežja, kot je Internet ali Intranet [4]. Prednosti, ki jih prinašajo spletne aplikacije v primerjavi s tradicionalnimi samostojnimi aplikacijami, vidijo tako razvijalci kot tudi uporabniki. Glavna in pomembna prednost aplikacij tega tipa je njihova enostavna uporaba, neodvisnost od programske platforme. Uporabniku ni potrebno namestiti nobene dodatne programske opreme in aplikacija je dostopna preko spletnega brskalnika z različnih lokacij. S tem se privarčuje diskovni prostor pri uporabniku in ta lahko uporablja svoj najljubši spletni brskalnik. Razvijalci vidijo prednost v tem, da je potrebno namestiti in servisirati aplikacijo le na strežniku in s tem jim ni potrebno voditi uporabnika skozi zapletene postopke namestitve, posodobitev in popravkov aplikacije. Glede na to, da aplikacija teče na strežniku, to pomeni hitrejše izvajanje aplikacije, manjše varnostne luknje in bolj stabilno delovanje. Kar je pa najpomembnejše, so nižji stroški za uporabnika in ponudnika programske opreme. Spletne aplikacije in njihov razvoj imajo tudi svoje pomanjkljivosti. Pomanjkljivost, ki jo 6.
(18) Primerjava spletnih ogrodij Seaside in Ruby on Rails. vidijo uporabniki, je seveda povezava do strežnika preko interneta ali intraneta ter pogosto slabša odzivnost aplikacije. Razvijalci se pri razvoju spletnih aplikacij ukvarjajo predvsem z naravo spletne aplikacije, ki se močno razlikuje od namiznih aplikacij. Ravno zaradi kompleksnosti gradnje spletnih aplikacij se razvijalci poslužujejo uporabe spletnih ogrodjih, ki z različnimi abstrakcijskimi nivoji pomagajo pri razvoju aplikacij. Spletno ogrodje je programsko ogrodje, namenjeno podpori razvoja dinamičnih spletnih strani, spletnih aplikacij in spletnim storitvam. Njegov namen je razvijalca razbremeniti pri vseh ponavljajočih se aktivnostih, ki so skupne pri razvoju spletnih aplikacij. Kot primer: spletna ogrodja nudijo v podporo razvijalcu knjižnice za dostop do podatkovne baze ogrodja za predložne sisteme, funkcionalnosti za upravljanje s sejami itd. Spletna ogrodja, ki ponujajo popolno podporo pri razvoju programske rešitve od grafičnega vmesnika vse do komunikacije s podatkovno bazo, seveda preko različnih knjižnic, imenujemo tudi popolna ogrodja (angl. full stack).. 3.1 Klasifikacija spletnih ogrodij Spletna ogrodja lahko klasificiramo glede na arhitekturni tip. Arhitekturni tip spletnih ogrodij določa način, kako se zahtevki procesirajo in mesto, kjer se to procesiranje dogaja. MVC je pogosto uporabljen programski vzorec v arhitekturi spletnih programskih ogrodij. Značilnost tega vzorca je ločevanje nivoja podatkovnega modela, nivoja krmilnika in nivoja predstavitve. Vsi ti nivoji so šibko sklopljeni in prav ta ločitev dovoljuje neodvisen razvoj, testiranje in vzdrževanje vsake posamezne komponente oziroma dela aplikacije. Nivo modela je odgovoren za dostop do podatkovne baze in izvrševanje najrazličnejših povpraševanj v podatkovni bazi. Naloga krmilnika je upravljanje s poslovno logiko aplikacije. Krmilnik je odgovoren, da glede na zahtevo uporabnika izvede želeno akcijo ali pa pridobi določene podatke preko nivoja modela. Nivo predstavitve je tisti del, ki je viden uporabniku. Podatki, ki jih je na zahtevo uporabnika pripravil krmilnik, so prikazani uporabniku preko pogleda. Nivo predstavitve je odgovoren, da posreduje vse podatke in akcije uporabnika krmilniku. V arhitekturi MVC je pri spletnih aplikacijah rezultat nivoja predstavitve generirana koda HTML ali XHTML. Krmilnik prejme ukaz GET ali POST in ga posreduje domenskim objektom, ki vsebujejo pravila in logiko za obdelavo zahteve uporabnika. 7.
(19) Primerjava spletnih ogrodij Seaside in Ruby on Rails. Ogrodja, temelječa na vzorcu MVC, delimo na [31]: •. akcijsko orientirana (push usmerjena arhitektura). •. komponento orientirana (pull usmerjena arhitektura). Večina spletnih ogrodij MVC je akcijsko orientirana. Razlika med akcijsko in komponentno orientirani arhitekturi je specificirana v razmerju med nivojem predstavitve in nivojem krmilnika. Glede na »push« usmerjeno arhitekturo so vse uporabniške akcije interpretirane s strani krmilnika, ki generira ter pripravi podatke in jih potem potisne/posreduje nivoju predstavitve. Pri komponentno orientiranih ogrodjih je nivo predstavitve odgovoren, da si pridobi/potegne podatke s pomočjo enega ali več krmilnikov in potem te podatke predstavi. Ogrodja običajno uporabljajo eno od obeh metod in ne obeh hkrati. Ruby on Rails, Play, Spring MVC so tipični predstavniki ogrodij, ki temeljijo na arhitekturi »push«. Primeri komponentnih ogrodij so: Seaside, JSF, Wicket, Lift itd. Ena izmed klasifikacij spletnih ogrodij je možna glede na tip aplikacije, ki jo je najlažje implementirati s pomočjo ogrodja. Aplikacije pa so kategorizirane v naslednje skupine [5]: •. odjemalci CRUD (angl. create, read, update, delete),. •. klasične spletne aplikacije,. •. obogatene klasične spletne aplikacije (angl. Rich Client),. •. bogate spletne aplikacije (RIA – Rich Internet Application),. •. portal,. •. sistem za upravljanje vsebin (CMS – Content Management System).. 3.2 Karakteristike spletnih ogrodij Vsako spletno ogrodje ima svoj krog privržencev in zagovornikov, bodisi zaradi jezika, v katerem je ogrodje napisano, ali pa zaradi značilnosti in odlik, ki jih ogrodje nudi. Glede na številčnost spletnih ogrodij se razvijalci spletnih aplikacij velikokrat sprašujejo, katero spletno ogrodje je najboljše in katero najbolj primerno za uporabo pri razvoju spletnih aplikacij. Razvijalcem po svetu se porajajo dvomi, ali uporabiti plačljivo ali odprtokodno spletno programsko ogrodje, ali ima ogrodje dobro podporo skupnosti, se bo ogrodje obdržalo, se bo uveljavilo, kako je z upravljanjem novih različic ogrodij, je ogrodje dobro 8.
(20) Primerjava spletnih ogrodij Seaside in Ruby on Rails. dokumentirano, je težko za uporabo, je razširljivo in še mnogi drugi dvomi. Podjetja in razvijalci se dobro zavedajo, da je izbira spletnega ogrodja kritičen korak v fazi razvoja družine več izdelkov (v našem primeru spletnih aplikacij). V glavnem se pri izbiri spletnega ogrodja podjetja poslužujejo določenega semantičnega pristopa, medtem ko se ljubiteljski razvijalci odločajo predvsem glede na jezik, v katerem je ogrodje napisano, in glede na to, kako je določeno ogrodje uveljavljeno v spletni skupnosti. Oboji pa se zavedajo, da izbrano spletno ogrodje mora zadostovati določenim atributom kakovosti, ki so pomembni za uspešen razvoj spletnih aplikacij. Želeni atributi kakovosti, ki bi jih naj imelo programsko ogrodje, so [6]: •. visoka stopnja ponovne uporabe,. •. dobro zasnovana in jasna struktura ogrodja, temelječa na uveljavljenih načrtovalskih vzorcih,. •. visoke zmogljivosti z vidika zanesljivosti in skalabilnosti,. •. neodvisnost od tipa strežnika, podatkovne baze in operacijskega sistema,. •. jasen, varen in evidentiran nadzor nad ogrodjem,. •. visoka prožnost pri uporabi programskega ogrodja.. Pričakovani nabor funkcionalnosti, ki jih različna spletna ogrodja nudijo v osnovi oziroma preko vtičnikov, so običajno varnost, dostop do podatkovne baze in objektno relacijske preslikave, preslikave enoličnega krajevnika vira, sistem predlog, medpomnjenje, podpora za Ajax, podpora internacionalizaciji in lokalizaciji, orodje za testiranje, orodje za migracijo podatkovne baze, orodje za avtomatsko preverjanje spletnih obrazcev, spletne storitve, hitro grajenje delov aplikacije (angl. Scaffolding) [7].. Varnost Nekatera spletna ogrodja vključujejo ogrodja za avtentifikacijo in avtorizacijo. Taka varnostna ogrodja omogočajo spletnemu strežniku, da identificira uporabnike spletne aplikacije in omeji dostop do določenih funkcij glede na predpisane kriterije. Ogrodje Django je primer varnostnega ogrodja, ki omogoča dostop do spletnih strani preko definiranih vlog, hkrati pa ponuja vmesnike za kreiranje uporabnikov in določanje pravil dostopa glede na definirane vloge uporabnikov.. 9.
(21) Primerjava spletnih ogrodij Seaside in Ruby on Rails. Dostop do podatkovne baze in objektno relacijske preslikave (angl. ORM) Veliko današnjih spletnih ogrodij vključuje vmesnike za dostop do podatkovne baze. Ti vmesniki omogočajo razvijalcem, da spletne aplikacije komunicirajo z množico različnih podatkovnih baz. Komunikacija s podatkovnimi bazami je rešena preko visokonivojskih konceptov, ki razvijalcu omogočajo, da je spletna aplikacija brez dodatne implementacije povezljiva z različnimi podatkovnimi bazami, hkrati pa omogočajo objektno relacijske preslikave podatkov.. Preslikave enoličnega krajevnika vira (angl. universal resource locator mapping) Preslikave enoličnega krajevnika vira je mehanizem, s pomočjo katerega spletno ogrodje interpretira naslove URL (universal resource locator). Nekatera ogrodja primerjajo zunanji naslov URL glede na pred definirane vzorce z uporabo regularnih izrazov, druga pa zunanji naslov enostavno prevedejo v naslov, ki ga spodaj ležeči nivoji znajo razpoznati. V obeh primerih omogoča mehanizem preslikave uporabo uporabniku prijaznih naslovov in s tem poveča enostavnost spletnih strani. Dobra stran tega mehanizma je, da nudi spletnim iskalnim mehanizmom boljše informacije in več informacij o strukturi spletnih strani in s tem lažje indeksiranje.. Sistem predlog Sistemi predlog se največkrat omenjajo kot podsistem nivoja predstavitve v arhitekturi MVC in jih najdemo v sistemih za upravljanje spletnih vsebin in v spletnih ogrodjih. Namen sistema predlog je ločevanje vsebine od predstavitvenega statičnega dela pri gradnji spletnih dokumentov. Sestavljen je iz dveh komponent: •. stroja sistema predlog (angl. template engine),. •. vsebinskega in predložnega vira (angl. content resource and template resource).. Stroj sistema predlog je odgovoren za generacijo spletnih dokumentov s pomočjo spletne predloge in vsebine, ki je shranjena v podatkovni bazi ali kjerkoli drugje.. Medpomnjenje Pri spletnem medpomnjenju gre za medpomnjenje spletnih dokumentov, kot so HTML 10.
(22) Primerjava spletnih ogrodij Seaside in Ruby on Rails. strani in druge datoteke, z namenom zmanjšanja porabe omrežnih virov in razbremenitve spletnih strežnikov, aplikacij. Princip delovanja spletnega medpomnjenja je enostaven in deluje tako, da spletni strežnik shranjuje kopije že zahtevanih HTML strani na disk. Za vsako naslednje poizvedovanje strani gre spletni strežnik najprej pogledat, ali dokument že obstaja na disku. V primeru, da dokument obstaja, je ta vrnjen, v drugem primeru je spletni dokument najprej generiran znotraj procesa generacije spletnih dokumentov, shranjen na disk in vrnjen akciji poizvedovanja. Določena ogrodja, kot na primer Rails, podpirajo tudi medpomnjenje delov strani HTML.. Ajax Ajax je skupek med seboj povezanih tehnik, namenjen razvoju interaktivnih spletnih aplikacij. Ajax omogoča spletnim aplikacijam, da v ozadju (asinhrono) pridobivajo podatke od strežnika, pri čemer ostaja prikaz in obnašanje trenutne spletne aplikacije nespremenjen. Komunikacija s strežnikom poteka preko programskega vmesnika XHR (XMLHttpRequest), ki ga znajo uporabljati skriptni jeziki znotraj brskalnika, npr. JavaScript. Tehnika je nastala z namenom izboljšati interaktivnost spletnih strani, zato se tudi ogrodja za gradnjo spletnih aplikacij dobro zavedajo pomembnosti te tehnike. Primeri ogrodij, ki so zgrajena vključno v jeziku Javascript, so JQuery, Prototype, Echo3, AngularJS itd.. Podpora internacionalizaciji in lokalizaciji Nekatera ogrodja vsebujejo mehanizme za internacionalizacijo in lokalizacijo spletne aplikacije. V tem primeru ogrodje podpira mehanizme, s pomočjo katerih lahko razvijalec določi, kateri deli aplikacije morajo biti prevedeni v različne jezike, in zagotovi katalog prevodov za različne jezike. Ogrodje pa ustrezno poskrbi za predstavitev spletne aplikacije glede na jezikovne in regionalne nastavitve uporabnika.. Ogrodje za migracijo podatkovne baze To so orodja, ki omogočajo konsistenten in enostaven način upravljanja podatkovne sheme skozi življenjski cikel razvoja spletne aplikacije. Omogočajo, da so spremembe 11.
(23) Primerjava spletnih ogrodij Seaside in Ruby on Rails. sheme verzionirane in predvsem neodvisne od implementacije podatkovne baze. Ogrodja za testiranje Spletna ogrodja ponavadi podpirajo uporabo različnih orodij za testiranje, in sicer preko vtičnikov. Nekatera gredo celo korak dalje in podpirajo svoje izpeljanke testnih ogrodij. Danes skorajda ni spletnega ogrodja, ki ne bi podpiralo vsaj enega od testnih orodij.. Orodja za avtomatsko validacijo spletnih obrazcev V tem primeru gre za mehanizme, ki omogočajo razvijalcu spletne aplikacije, da parametrizira posamezna vnosna polja spletnega obrazca ali pa kar celotni obrazec s pravili za validacijo, ogrodje pa poskrbi, da se pravila validacije ustrezno izvajajo.. Spletne storitve Nekatera ogrodja nudijo orodja za kreiranje in nudenje spletnih storitev. Spletne storitve se v grobem delijo na storitve, skladne z arhitekturnim stilom REST, in spletne storitve, ki imajo izpostavljeno poljubno množico operacij. Druga skupina spletnih storitev za komuniciranje med odjemalcem in strežnikom uporablja protokol SOAP [8].. Hitro grajenje delov aplikacije (angl. Scaffolding) Ogrodja lahko nudijo možnost, da za osnovne operacije CRUD generirajo programsko kodo, vključno s predstavitveno logiko, podatkovno shemo in dostopom do podatkov. Ta tehnika je postala popularna potem, ko je bila podprta v ogrodju Ruby on Rails. Sprejela so jo tudi druga ogrodja, kot npr. Django, Grails, Seam, Play itd.. 12.
(24) Primerjava spletnih ogrodij Seaside in Ruby on Rails. 4 Pristopi za primerjavo in izbiro spletnega ogrodja Proces izbire in primerjave programskega ogrodja ni znanstvena panoga. Na spletu je mogoče zaslediti strokovne članke in akademska dela, ki se ukvarjajo s primerjavo in procesom izbire različnih spletnih ogrodij, ni pa jasnega in enostavnega modela, ki bi podajal način, kako primerjati množico spletnih programskih ogrodij in iz te množice potem izbrati tisto najboljše za naš primer uporabe. Izbira pravih kriterijev in spremenljivk za primerjavo ali izbiro je težka naloga zaradi narave in arhitekture spletnih ogrodij ter težav z objektivnostjo tistega, ki primerjavo izvaja. Pridobiti znanje in izkušnje, potrebne za podrobno primerjavo spletnih ogrodij, ni enostavna naloga. Naučiti se uporabljati spletno ogrodje je časovno zahtevno opravilo, ki lahko traja več mesecev, da pa bi dosegli določeno mero učinkovitosti in postali napreden uporabnik ogrodja, pa traja še več časa. Po drugi strani pa dejstvo, da obstaja že več sto različnih spletnih ogrodij in to število še vedno strmo narašča, onemogoča konkretne primerjave vseh teh ogrodij. Zaslediti je možno nekaj znanstvenih člankov, ki se ukvarjajo s tematiko vrednotenja programskih ogrodij. Avtor Gregor Polančič je v svoji doktorski disertaciji predstavil model za ocenjevanje sprejetosti ogrodij in model sistematičnega vrednotenja ogrodij na osnovi ocenitve kakovosti in primernosti [6]. V nadaljevanju se ne bomo ukvarjali z analizo znanstvenih metod vrednotenja ogrodij, ampak bomo pogledali načine, kako na vrednotenje ogrodij gleda stroka in spletna skupnost. V večini primerjalnih metod, ki jih bomo opisali, bomo zasledili pomanjkanje objektivnosti, kar pa ni nič nenavadnega, saj je objektivnost pri določenih kriterijih nemogoče doseči. Pri primerjavi spletnih ogrodij je najprej potrebno določiti kriterije primerjave. Ko so kriteriji jasno določeni, moramo te kriterije primerno obtežiti. Obtežitev določenih kriterijev ni in ne more biti objektivna naloga, saj se v različnih programskih rešitvah, ki pokrivajo različna domenska področja, ti kriteriji lahko med seboj zelo razlikujejo. Za utemeljitev te teze si bomo pogledali dva primera. Primer1: Če vzamemo kot primer kriterij »produktivnost« in se vprašamo, koliko nam bo določeno ogrodje povečalo produktivnost v primerjavi z drugim ogrodjem. Kako sploh objektivno izmeriti produktivnost in ga primerjati? 13.
(25) Primerjava spletnih ogrodij Seaside in Ruby on Rails. Primer2: Imamo podjetje z 10 zaposlenimi razvijalci, ki imajo večletne izkušnje z Java tehnologijami in razvijajo namizno aplikacijo, napisano v programskem jeziku Java. Podjetju se ponudi priložnost prodati aplikacijo pod pogojem, da je ta dostopna na spletu. Ker si podjetje želi pridobiti novo stranko, se mora hitro odločiti in izbrati primerno spletno ogrodje. Zelo verjetno je, da se bo podjetje v takem scenariju odločilo za ogrodje, ki temelji na javanskih tehnologijah. Izbira ogrodja, ki bi temeljilo na drugem programskem jeziku, bi pomenila priučitev razvijalcev na druge tehnologije, kar bi lahko bilo s časovnega in stroškovnega vidika za projekt pogubno. S tem, ko se je podjetje omejilo na izbiro ogrodja glede na programski jezik, je izločilo iz možne primerjave veliko drugih, mogoče tudi boljših ogrodij. Izbira ogrodja v tem primeru je bila neobjektivna s stališča zunanjega opazovalca, a prava s stališča vodstva podjetja. V praksi se velikokrat dogaja, da je programski jezik eden izmed izločitvenih kriterijev, ki ima zelo veliko težo. V nadaljevanju bomo predstavili nekaj primerov primerjav spletnih ogrodij oziroma postopkov, ki so se jih avtorji poslužili pri primerjavah. Kriterij za izbiro primerov je bil pogostost referenc na te primere pri prebiranju razprav na spletnih forumih in spletnih dnevnikih.. 4.1 Primerjalne metode Primerjava Matt Raible Matt Raible je samozaposlen svetovalec iz ZDA, ki se ukvarja s spletnimi tehnologijami. Že več let predstavlja model primerjave ogrodij JVM (Java Virtual Machine) s pomočjo primerjalne matrike, ki jo je sam razvil. Na spletu je bil deležen pohval, da mu je uspelo vzpostaviti model primerjave, po drugi strani pa tudi veliko kritik zaradi pomanjkanja objektivnosti v modelu. Njegova zadnja predstavitev primerjave spletnih ogrodij je bila objavljena februarja 2014 na spletni konferenci »Denver's Open Source User Group«. Model primerjave temelji na matriki, ki vsebuje želene cilje spletnih ogrodij, ki jih avtor ocenjuje kot pomembne. Matrika (Slika 1) je nastavljena tako, da ima vrstice kot kriterij primerjave in vsako primerjano spletno ogrodje ima oceno za vsak kriterij primerjave. 14.
(26) Primerjava spletnih ogrodij Seaside in Ruby on Rails. Ocene so postavljene glede na naslednje kriterije: •. 0 – ogrodje te karakteristike nima,. •. 0,5 – ogrodje le delno zadovoljuje te karakteristike,. •. 1 – orodje ima to karakteristiko.. Matriko primerjave je možno izboljšati na način, da je vsak kriterij primerjave dodatno obtežen (Slika 2). S pomočjo dodatne obtežitve kriterijev lahko dosežemo, da posamezen kriterij poudarimo kot bolj pomembnega od drugega ali pa kriterij enostavno izpustimo. Glede na primerjavo spletnih ogrodij v prikazanih matrikah vidimo, da je v primeru, ko kriteriji niso obteženi, najbolje ocenjeno ogrodje Grails, sledijo ogrodja Rails, GWT in Spring. Ko kriterije obtežimo, se zaporedje spremeni tako, da je najbolje ocenjeno ogrodje Grails, sledijo pa mu ogrodja Play, Spring MVC in Rails. Avtor matriko deli s spletno skupnostjo in jo prilagaja glede na odzive tako, da dodaja nove kriterije in ogrodja za primerjavo. Ocenitev kriterijev za posamezno ogrodje je avtor podal sam na podlagi dolgoletnih izkušenj uporabe omenjenih ogrodij in jih ne spreminja glede na odziv spletne skupnosti. Ne glede na omenjeno matriko primerjave avtor predlaga, da je dobra praksa pri izbiri spletnih ogrodij slediti naslednjim korakom: 1. Oblikuj prioritetno listo ciljev, ki so pomembni za tip spletne aplikacije, ki jo boš razvijal. 2. Izberi 3–4 ogrodja in z njihovo pomočjo implementiraj prototipe enako funkcionalne aplikacije. 3. Ovrednoti listo ciljev glede na izkušnje uporabe ogrodij pri prototipiranju. 4. Glede na ovrednoteno listo ciljev izberi najboljše.. 15.
(27) Primerjava spletnih ogrodij Seaside in Ruby on Rails. Slika 1: Matrika primerjave ([9]). Slika 2: Matrika primerjave z utežmi ([9]). Primerjava Kai Wähner Kai Wähner je nemški informatik, zaposlen v podjetju »International Presales for Tibco«, ki se ukvarja z integracijo poslovnih sistemov. Naredil je zanimivo primerjavo spletnih ogrodij, in sicer na način, da je vsako ogrodje uvrstil v kategorijo glede na tip aplikacije [5]. Definiral je naslednje tipe spletnih aplikacij: •. Odjemalci CRUD – so spletne aplikacije, ki omogočajo osnovne operacije upravljanja s spletnimi viri, kot so: ustvari, beri, spremeni in briši. Karakteristike ogrodij za ta tip aplikacije so orientirane v smeri »Dogovor pred nastavitvami« (angl. »Convention over Configuration«) in vsebujejo orodja za generacijo kode.. 16.
(28) Primerjava spletnih ogrodij Seaside in Ruby on Rails. Glavni cilj teh ogrodij je povečanje produktivnosti za enostavna opravila. •. Klasične spletne aplikacije – so strežniško orientirane (angl. server centric) in njihova značilnost je, da so sestavljene iz več spletnih strani in uporabljajo AJAX.. •. Bogate spletne aplikacije (RIA) – so spletne aplikacije, ki vsebujejo veliko animacij, različnih grafičnih učinkov in drugih multimedijskih dodatkov. Ne vsebujejo standardnih spletnih gradnikov, kot so običajne forme in table, hkrati pa za svoje delovanje zahtevajo dodaten vtičnik, kot je na primer JRE (Java Runtime Environment), Adobe Flash Player ali Silverlight.. •. Obogatene klasične spletne aplikacije (angl. Rich Client) – so po definiciji zmes klasičnih in RIA aplikacij. Aplikacije so odjemalsko orientirane (angl. client centric), kjer se grafični vmesnik naloži pri prvi komunikaciji s strežnikom. Aplikacije vsebujejo standardne spletne gradnike in ne tiste, omenjene v aplikacijah tipa RIA. Vseeno pa ponujajo sodobni izgled in izboljšano uporabniško izkušnjo glede na klasične spletne aplikacije.. •. Portal – predstavlja možnost predstavitve več spletnih aplikacij, spletnih komponent ali pa spletnih strani kot izvirno rešitev. Običajno je realiziran s pomočjo več spletnih ogrodij.. Spletne aplikacije kategorizira glede na njihovo velikost (Slika 3). Večja je spletna aplikacija, več časa je potrebnega za njeno implementacijo.. Slika 3: Kategorizacija glede na velikost aplikacije ([5]) Glede na predlagano tipologijo spletnih aplikacij je javanska spletna ogrodja opredelil glede na kategorije (Slika 4). Horizontalna os predstavlja tip spletne aplikacije, vertikalna os pa kompleksnost spletne aplikacije. Kompleksnost spletne aplikacije je definirana kot dejstvo, kako težko je s stališča razvijalca naučiti se in uporabiti ogrodje. Ogrodji Grails in 17.
(29) Primerjava spletnih ogrodij Seaside in Ruby on Rails. Lift je avtor ocenil kot kompleksni zaradi dejstva, ker uporabljata jezika Groovy and Scala, ki po njegovem mnenju povečujeta kompleksnost ogrodja. Glede na rezultate primerjave je najbolje za CRUD odjemalec aplikacije uporabiti ogrodja Spring Roo, Roma, Grails ali Lift. Za klasične spletne aplikacije Spring MVC, JSF, Tapestry in Wicket. Za bogate spletne aplikacije pa ogrodja GWT, Vaadin and ZK in za RIA priporoča JavaFX in Flex. Kai Wärner poskuša s svojim načinom zagotoviti večjo neodvisnost in objektivnost pri primerjavi spletnih ogrodij. Spletna skupnost je njegov način sprejela kot zanimivega in se v glavnem strinjala s primerjavo. Določanje položaja oblačkov/spletnih ogrodij (Slika 4) je relativna ocena glede na izkušnje posameznega razvijalca/ocenjevalca. Med komentarji spletne skupnosti lahko zasledimo, da bi nekateri določena ogrodja premikali po vertikalni ali horizontalni osi.. Slika 4: Model primerjave Kai Wähner ([5]) Avtor z modelom primerjave sporoča, da je za različne tipe aplikacij potrebno izbrati pravo ogrodje. Kljub temu, da model uporablja le eno kategorijo, kompleksnost aplikacije za primerjavo predstavlja zanimiv pristop. Predstavljen model je mogoče uporabiti tudi za primerjavo nejavanskih spletnih ogrodij.. 18.
(30) Primerjava spletnih ogrodij Seaside in Ruby on Rails. 4.2 Statistične metode Pogosto se pri izbiri ogrodij upoštevajo tudi različne statistike popularnosti programskih jezikov in spletnih ogrodij. V nadaljevanju bomo predstavili nekaj teh statistik. Statistike so bile zbrane kot izhodna referenca spletnih razprav o programskih jezikih in spletnih ogrodjih iz spletnih dnevnikov in forumov. Podjetja, ki nudijo te statistike, pridobivajo podatke o pogostosti uporabe različnih tehnologij in njihovi priljubljenosti s pomočjo različnih metod. V glavnem so podatki pridobljeni s pomočjo različnih iskalnih mehanizmov, ki analizirajo splet. V veliko primerih so te statistike kombinirane z javno dostopnimi statistikami drugih podjetij ali organizacij. Statistike, ki se tičejo recimo priljubljenosti programskih jezikov ali ogrodij, so velikokrat tema razprav na različnih forumih. Pogosto je zaslediti opombe kot na primer, zakaj se rezultati neke analitske hiše razlikujejo od rezultatov druge, ki opravlja podobne analize, in kako natančni so dejansko rezultati podanih statistik oziroma v kakšni meri jim lahko zaupamo.. Statistike uporabe tehnologij podjetja W3Techs Podjetje W3Techs se ukvarja s pripravo različnih analiz, ki se tičejo uporabe tehnologij v spletnih aplikacijah. Podatke za statistike pridobivajo sami s pomočjo iskalnih mehanizmov, ki analizirajo spletne strani. V svojih statistikah upoštevajo še javno dostopne statistike podjetja Google in Alexa. Statistike podjetja se dnevno osvežujejo. Tabela (Tabela 1) [10] prikazuje statistiko programskih jezikov, ki so uporabljeni na strani strežnika. Iz tabele razberemo, da so pogosteje uporabljeni programski jeziki PHP, ASP.NET programski jeziki, Java, Cold Fusion in Ruby. Daleč največji delež pripada jeziku PHP. PHP. 82.1%. ASP.NET. 17.0%. Java. 2.8%. ColdFusion. 0.7%. Ruby. 0.6%. Tabela 1: Uporaba programskih jezikov na strani strežnika. 19.
(31) Primerjava spletnih ogrodij Seaside in Ruby on Rails. Tabela (Tabela 2) [11] prikazuje statistiko uporabe programskih jezikov na strani odjemalca. Tu je daleč najbolj uporabljen jezik JavaScript, in to kar v več kot 88 odstotkih vseh primerov. JavaScript. 88.1%. Flash. 12.1%. Silverlight. 0.1%. Java. 0.1%. Tabela 2: Uporabe programskih jezikov na strani odjemalca V obeh navedenih tabelah lahko vidimo, da seštevek odstotkov uporabe presega število 100. Dejstvo izhaja iz analize, ki upošteva, da spletna stran lahko uporablja enega ali več programskih jezikov. Če bi bila analiza narejena drugače, potem npr. 50 % ne bi pomenilo, da je programski jezik uporabljen na vsaki drugi spletni strani.. Statistika uporabe priljubljenih ogrodij podjetja Builtwith Podjetje se ukvarja s pripravo in prodajo različnih spletnih statistik. Kot primer v Tabeli (Tabela 3) vidimo najbolj priljubljena ogrodja za izdelavo spletnih strani [12]. Drugi, tretji in četrti stolpec prikazujeta, kolikokrat je bilo ogrodje uporabljeno za izdelavo spletne strani glede na analiziranih 10000,100000 in 1000000 najbolj priljubljenih strani. Podjetje samo izvaja analize. Podatke npr. 10000 najbolj priljubljenih spletnih strani podjetje dobi iz statistik podjetja Quantcast. Podjetje BuiltWith definira izraz ogrodje kot tehnologijo, uporabljeno za izdelavo spletne strani. V pravem pomenu besede PHP in JEE nista ogrodji. PHP je programski jezik in JEE je razvojna platforma. Ko podjetje navaja ogrodje PHP, so v okviru tega izraza mišljena vsa ogrodja, ki temeljijo na jeziku PHP. Enako velja za platformo JEE, kjer so mišljena javanska strežniško orientirana ogrodja.. 20.
(32) Primerjava spletnih ogrodij Seaside in Ruby on Rails. Ogrodje. 10000. 100000. 1000000. PHP. 2733. 33106. 529148. ASP.NET. 1507. 18629. 285407. JEE. 542. 3206. 57460. ASP.NET MVC. 365. 5009. 68812. Ruby on Rails. 246. 1337. 19307. Tabela 3: Priljubljenost spletnih ogrodij Statistika priljubljenosti ogrodij hotframeworks.com Na spletni strani hotframeworks [13] je mogoče pridobiti listo najbolj priljubljenih spletnih ogrodij. Kot zanimivost – spletna stran nima nobene reference o upravljavcu spletne strani oziroma skupini, odgovorni za omenjeno statistiko. Stran je zanimiva, ker je za razliko od drugih statistik ena redkih, kjer so ocenjena dejanska spletna ogrodja in ne programski jeziki ali pa kakšne druge tehnologije. Omenjena statistika temelji na priljubljenosti posameznega spletnega ogrodja. Kriterija za primerjavo spletnih ogrodij sta dva, in sicer [13]: •. ocena iz repozitorija GitHub – temelji na številu zvezdic, ki ga ima ogrodje na repozitoriju GitHub in. •. ocena s strani Stack Ovewflow – temelji na številu vprašanj, ki so označene z imenom ogrodja.. Vsaka izmed ocen je normalizirana na skali 0–100. V primeru, da ogrodje nima ene ali obeh ocen, pomeni, da ni prisotno na repositoriju GitHub ali pa strani StackOverflow. Odsotnost prve ali pa druge ocene ne vpliva na skupno oceno. Glede na statistiko (Tabela 4) lahko vidimo, da so najbolje ocenjena ogrodja ASP.NET, Rails in AngularJS. Ogrodje Seaside se nahaja s svojo oceno 38 nekje na sredini lestvice.. 21.
(33) Primerjava spletnih ogrodij Seaside in Ruby on Rails. Ogrodje. Ocena GitHub. Ocena Stack Owerflow. ASP.NET Ruby on Rails AngularJS. Skupna ocena. 100. 100. 96. 98. 97. 100. 90. 95. 93. 93. ASP.NET MVC Django. 89. 91. 90. .... .... .... .... 38. 38. .... .... Seaside .... .... Tabela 4: Hotframeworks statistika priljubljenosti spletnih ogrodij. 4.3 Motivacija za izbiro primerjanih spletnih ogrodij V poplavi spletnih ogrodij in trendu nastajanja novih spletnih ogrodij je težko povedati, katere bo skupnost in industrija sprejela in obravnavala kot zaupanja vredne. Izbira in primerjava spletnih ogrodij je težka naloga, saj ne obstajajo jasno definirani koraki, kako objektivno izbrati in primerjati različna programska ogrodja. Ob površinski analizi in prebiranju dokumentacij različnih spletnih ogrodij je bilo jasno, da je primerjava ogrodij možna le s poglobljeno analizo in uporabo ogrodja. Pred procesom primerjave spletnih ogrodij se je najprej potrebno odločiti, katera spletna ogrodja bodo izbrana za primerjavo. Zaradi omejenih okvirjev diplomske naloge bomo za primerjavo izbrali dve ogrodji. Obe ogrodji bomo poskušali poglobljeno analizirati in s pomočjo obeh implementirati funkcionalno ekvivalentno spletno aplikacijo. Aplikaciji bosta klasični, strežniško orientirani in ne bosta vsebovali posebnih grafičnih učinkov (npr. RIA). Kot kriterije za izbiro spletnih ogrodij, ki jih bomo v nadaljevanju primerjali, smo definirali: •. primerjali bomo odprtokodna spletna ogrodja,. •. pri razvoju spletne aplikacije ne želimo uporabljati komercialnih produktov,. •. izbrano ogrodje je namenjeno za implementacijo klasičnih spletnih aplikacij,. 22.
(34) Primerjava spletnih ogrodij Seaside in Ruby on Rails. •. ogrodje. omogoča. pri. razvoju. spletne. aplikacije. uporabo. dinamičnega. programskega jezika. Navedeni kriteriji dejansko izhajajo iz praktičnega primera, ki jih je podjetje Skupina Novum, d. o. o., uporabilo leta 2009 pri izbiri spletnega ogrodja za prototipiranje zavarovalniške aplikacije. Kot razvijalec, ki je dolgo let programiral v jeziku Smalltalk in imel možnost spoznati in uporabljati ta programski jezik v praksi, se mi je zdelo zanimivo, da bi za primerjavo izbrali ogrodje, ki je napisano prav v tem programskem jeziku. Spletni ogrodji, ki sta na voljo za programski jezik Smalltalk, sta Seaside in AIDAWeb. AIDAWeb je spletno ogrodje slovenskega avtorja in ima v primerjavi z ogrodjem Seaside manjšo spletno skupnost. Vsak Smalltalk programer, ki spremlja majhno spletno skupnost jezika, je že naletel na izrek znanega guruja Kent Becka, ki je leta 2007 povedal [14]: »I always knew that one day Smalltalk would replace Java. I just didn't know it would be called Ruby«. Spletnih ogrodij, napisanih v programskem jeziku Ruby, je več, in sicer Rails, Sinatra in Padrino, Cuba. Največkrat uporabljeno ogrodje je Ruby on Rails. Ogrodje Seaside in AIDAWeb nista široko uporabljeni ogrodji za razliko od ogrodja Rails, ki ima veliko spletno skupnost in se aktivno razvija. Kot zanimivost, avtor spletnega ogrodja Seaside je razmišljal, da bi ga napisal v programskem jeziku Ruby, a se mu je takrat jezik Smalltalk zdel bolj zrel. Ker o ogrodju Seaside nismo zasledili nobene dokumentacije ali publikacije v slovenskem jeziku, smo se odločili, da ga izberemo kot eno od ogrodij, ki ju bomo primerjali. Kot drugo ogrodje za primerjavo smo izbrali Rails.. 23.
(35) Primerjava spletnih ogrodij Seaside in Ruby on Rails. 5 Opis primerjanih ogrodij Ogrodji Seaside in Ruby on Rails sta napisani v programskih jezikih, ki sta kategorizirana kot dinamična. Za programe, napisane s pomočjo dinamičnih jezikov, je značilno, da lahko spreminjajo svojo kodo oziroma logično strukturo v času izvajanja, s tem, ko spreminjajo tipe spremenljivk, imena modulov in funkcij. Po definiciji je dinamičen programski jezik termin, ki v računalništvu opisuje visokonivojski programski jezik. Ta programski jezik v času izvajanja izvršuje določene rutine, ki jih drugi programski jeziki izvršujejo pri prevajanju [15]. Dinamični jeziki poudarjajo berljivost, preprostost, intuitivnost, dobro podporo pri testiranju enot in s tem omogočajo programerju hitro graditi kakovostne aplikacije. S svojo preprostostjo in berljivostjo omogočajo programerju lažje vzdrževanje in spreminjanje že napisane aplikacije. Zaradi narave dinamičnih jezikov so ti pogosto uporabljeni v agilnih pristopih razvoja programske opreme. Imajo veliki potencial predvsem na področju hitrosti razvoja programske opreme. Priljubljenost dinamičnih jezikov se vztrajno veča, kar se odraža v številu novo nastalih spletnih ogrodij, ki so napisane s pomočjo teh programskih jezikov. Ena izmed statistik, ki nazorno prikazuje rast zanimanja za dinamične jezike, je statistika podjetja Tiobe Software, ki se primarno ukvarja z ocenjevanjem in s sledenjem kvalitete razvoja programske opreme [16]. S pomočjo tako imenovanega indeksa »TIOBE Programming Community index« ocenjujejo popularnost programskih jezikov.. 24.
(36) Primerjava spletnih ogrodij Seaside in Ruby on Rails. 5.1 Ogrodje Seaside 5.1.1 Programski jezik ogrodja Seaside Programski jezik ogrodja Seaside je Smalltalk. Smalltalk je objektno orientiran, dinamičen, samoreflektiven programski jezik. Njegov razvoj se je začel v zgodnjih sedemdesetih v podjetju Xerox Corporation (Palo Alto Research Center). Raziskovalec Alan C. Kay, znan po tem, da je eden izmed očetov ideje objektnega programiranja, je vodil takratni razvoj jezika. Za razliko od tedaj uveljavljenega programskega jezika C, Smalltalk ni bil zgrajen na sintaksi proceduralnih jezikov. Prva verzija, znana pod imenom Smalltalk-71, je nastala pod močnim vplivom jezika Simula, po katerem je Smalltalk prevzel koncept pošiljanja sporočil. Ta koncept pravi, da je komunikacija med objekti realizirana s pomočjo pošiljanja sporočil prejemniku. Takratna sintaksa jezika bila zelo drugačna od te, ki jo poznamo danes v jeziku Smalltalk. Vse naslednje verzije jezika Smalltalk-72, Smalltalk-76, Smalltalk-80 so nastajale znotraj podjetja Xerox. Šele verzija Smalltalk-80 Version 1 je bila poslana podjetjem Appple Computer, Tektronix, DEC in univerzi UC Berkeley kot programski jezik, namenjen za razvoj. Leta 1983 je bil »Smalltalk-80 Version2« prvič izdan kot »image«, platformno neodvisna datoteka z objektno definicijo in s specifikacijo za navidezni stroj (angl. virtual machine) [17]. Squeak in VisualWorks, potomca jezika Smalltalk-80, sta eni izmed popularnih implementacij jezika. Squeak je nastajal znotraj podjetja Apple pod imenom Apple Smalltalk. VisualWorks pa je nastajal znotraj podjetja Xerox PARC z namenom ponuditi ga kot komercialni produkt na trgu. Najbolj znane implementacije jezika Smalltalk so [18]: •. Squeak je odprtokodna implementacija jezika Smalltalk-80. Licenčna politika jezika ni jasna in okrog nje se poraja veliko debat. Leta 2006 je bila verzija izdana kot prosta in odprtokodna verzija pod licenco Apple Public Source License.. •. VisualWorks je komercialna različica v lasti podjetja Cincom.. •. Pharo je odprtokodna različica in je licencirana pod licenčno politiko MIT. Nastala je kot klon implementacije distribucije Squeak.. •. GNU Smalltalk je prosta odprtokodna implementacija Smalltalk-80.. 25.
(37) Primerjava spletnih ogrodij Seaside in Ruby on Rails. •. GemStone/S je komercialni produkt podjetja Gemtalk systems. Je objektni strežnik, napisan v jeziku Smalltalk. Namenjen je za razvoj ter upravljanje s časovno in podatkovno zahtevnimi aplikacijami.. •. Amber Smalltalk je odprtokodna implementacija jezika Smalltalk-80. Namenjen je za implementacijo odjemalsko orientiranih (angl. client centic) aplikacij. Koda, napisana v jeziku Amber Smalltalk, se prevede v jezik Javascript, ki se potem izvaja na strani uporabnika.. Smalltalk je jezik, po katerem so se zgledovali mnogi novodobni programski jeziki, kot so Java, Ruby, Python, Pearl, Objective-C itd. Znan je kot jezik s čisto in z enostavno sintakso. Smalltalk ni nikoli doživel takšne slave in razširjenosti, kot so jo na primer Java, C, C++ ali Ruby. Razlogov za to je več: •. v letih, ko je bil Smalltalk prvič predstavljen, je bil daleč pred svojim časom, a na žalost tudi pred svojim časom glede na strojne zahteve,. •. na trgu ne obstaja samo ena varianta jezika, ampak množica teh,. •. plačilna politika glavnih ponudnikov jezika,. •. leta 1995, ko je Java začela žeti svojo slavo kot brezplačni programski jezik, so glavni ponudniki jezika Smalltalk zaspali, ubadajoč se s problemi združitve podjetij namesto s promoviranjem jezika. Ko je leta 2000 podjetje Cincom pridobilo licenco za trženje VisualWorks, je Smalltalk že zbledel na listi popularnih jezikov,. •. integrirano razvojno okolje in pomanjkanje alternativnih integriranih razvojnih okolij,. •. po mnenju mnogih programerjev neprivlačna sintaksa.. Kljub vsemu je Smalltalk preživel svojih 35 let, še vedno je prisoten na trgu in teče na mnogih produkcijskih sistemih po svetu. S svojo malo spletno skupnostjo se mu je uspelo ohraniti kljub množici mlajših programskih jezikov. Ponovni vzpon in zanimanje širše množice je doživel po letu 2004, ko je bilo predstavljeno spletno ogrodje Seaside, namenjeno razvoju spletnih aplikacij.. 26.
(38) Primerjava spletnih ogrodij Seaside in Ruby on Rails. 5.1.2 Ogrodje Seaside Seaside je odprtokodno spletno ogrodje, napisano v programskem jeziku Smalltalk. Ime Seaside predstavlja kratico izraza Squeak Enterprise Aubergines Server with Integrated Development Environment. Navdih za nastanek ogrodja je avtor Avi Briant dobil, ko se je seznanil s spletnim ogrodjem Iowa, napisanem v jeziku Ruby. Skupaj z razvijalcem Julianom Fitzellom sta 21. februarja 2002 objavila ogrodje v verziji 0.9 širši Smalltalk skupnosti. Ta je ogrodje dobro sprejela in naslednje leto, oktobra 2003, je bila izdana verzija 2.0. Ta verzija je bila še vedno eksperimentalne narave, in sicer je bila izdana brez predložnega sistema. Kljub vsemu nadaljnjemu razvoju ogrodja ta namenoma še danes ne vključuje predložnega sistema. Aktualna različica ogrodja Seaside je 3.1 (januar 2016). Seaside je odprtokodno ogrodje za prosto uporabo, ki se po namestitvi v Smalltalk image datoteki odraža kot skupek razredov, katerim lahko uporabnik poljubno spreminja obnašanje. Ogrodje je namenjeno razvoju interaktivnih spletnih aplikacij. Podprto je v večini implementacij jezika Smalltalk, kot so: Pharo Smalltalk, Squeak, Cincom Smalltalk, GemStone Smalltalk, GNU Smalltalk in VA Smalltalk. Ogrodje Seaside velikokrat opišejo kot krivoversko ogrodje (angl. heretic web framework«) v smislu, da je pravo nasprotje s standardi razvoja spletnih aplikacij. Ne sledi predpisani dobri praksi, kot so uporaba predložnega sistema, skrbno izbran in smiseln URL. Namesto tega je predložni sistem ogrodju neznan in URL ne sledi principu stila REST (Slika 5). V primeru, da aplikacija zahteva smiseln URL, ogrodje tega tudi podpira. ključ aktivne seje uporabnika. http://localhost:8080/spletniStevec?_s=qyeuR_zEHgnM7Gjl&_k=raX2H-d80bWs0OSe vhodna točka aplikacije. ključ akcije (angl. continuation key). Slika 5: URL aplikacije, napisane z ogrodjem Seaside Ogrodje ne podpira predložnega sistema, ker zagovarja princip enostavnosti in predvsem dejstva, da logika aplikacije mora biti centralizirana zaradi lažjega vzdrževanja programske kode. V primeru predložnih sistemov kot so npr. JSP, ASP in ERB, je logika predstavitve razpršena v več datotekah, kar posledično pomeni težje vzdrževanje aplikacije. V primerjavi z ostalimi ogrodji je Seaside zelo enostaven za uporabo in učenje. Od 27.
(39) Primerjava spletnih ogrodij Seaside in Ruby on Rails. razvijalca ne zahteva poglobljenega znanja različnih tehnologij. Če vzamemo za primerjavo JSF (JavaServer Faces), ta od razvijalca zahteva, da pozna tehnologije, kot so Servleti, XML, JSP (JavaServer Pages), konfiguracija navigacije v datoteki »faces.config« in še druge. V ogrodju Seaside zadostuje, da poznaš jezik Smalltalk, kjer sta logika in znanje zgoščeni v jeziku samem, ta je pa enostaven za učenje. Ogrodje Seaside se razlikuje od drugih spletnih ogrodij v naslednjih vidikih [19]: •. ne uporablja posebnega jezika in nastavitvenih datotek za definicijo navigacije med spletnimi stranmi aplikacije. Namesto tega je uporabljena čista Smalltalk koda,. •. HTML koda je generirana v celoti v jeziku Smalltalk. Ni predložnega sistema, čeprav ga ne bi bilo težko implementirati znotraj ogrodja,. •. spletni strežnik upravlja s spletni sejo,. •. uporaba povratnih klicev (angl. callback) za sidranje povezav s spletnimi sidri in gumbi.. Princip povratnih klicev je v jeziku Smalltalk zelo dobro podprt in široko uporabljen. Dolgo je pomenil veliko prednost pred programskimi jeziki, ki tega programskega konstrukta niso poznali. V računalništvu je povratni klic (angl. callback) del izvršljive programske kode, ki je predana kot argument drugemu delu programske kode, ki je odgovoren, da v nekem časovnem trenutku ta del kode izvrši. Izvrševanje kode je lahko sinhrono ali asinhrono. V različnih programskih jezikih je princip povratnih klicev implementiran na različne načine, in sicer kot lambda funkcije, podprogrami ali s pomočjo blokov programske kode [20]. Kombinacija vseh zgoraj naštetih lastnosti uporabniku omogoča, da s pomočjo ogrodja razvija spletno aplikacijo na način, kot smo ga vajeni pri razvoju namiznih aplikacij. Spletne aplikacije, napisane s pomočjo ogrodja Seaside, so sestavljene iz množice neodvisnih komponent. Te komponente so odgovorne za svojo vizualno predstavitev, svoje stanje in interakcijo z drugimi komponentami v smislu prehoda med stanji. Ko razvijalec razvija aplikacijo, ne razmišlja o njej kot o sklopu med seboj povezanih neodvisnih strani, ampak v smislu medsebojno povezanih komponent, ki tvorijo uporabniški vmesnik. Komponente lahko med seboj poljubno povezujemo s pomočjo mehanizma pokliči/odgovori (angl. call/answer) ali z gnezdenjem komponent.. 28.
(40) Primerjava spletnih ogrodij Seaside in Ruby on Rails. Ogrodje ne predpisuje ali sili uporabnika v sledenje dogovorjenih konvencij v smislu organizacije programske kode. Uporabnik je odgovoren, da poskrbi, da je logika predstavitve ločena od podatkovnega modela in da je vsebina spletne strani ločena od njene predstavitve v smislu uporabe predlog CSS (Cascading Style Sheets). Vsi objekti jezika Smalltalk živijo v tako imenovani datoteki »image«. Datoteka je binarna platformno neodvisna datoteka, ki vsebuje posnetek vseh živečih objektov v nekem časovnem trenutku, ki so del te slike. Omenjeni objekti so v bistvu vsi uporabnikovi poslovni objekti, celotna knjižnica razredov jezika in ogrodij (ker so tudi razredi in metode v jeziku Smalltalk objekti) ter skupek razvijalskih orodij, ki predstavljajo Smalltalk integrirano razvojno okolje. Smalltalk koda se izvaja s pomočjo navideznega stroja (angl. virtual machine). Ko navidezni stroj naloži Smalltalk sliko iz diska, se vsi objekti, ki so del te slike, naložijo v pomnilnik, vključno s procesi, ki so tekli v času, ko je bila slika zajeta in shranjena na disk. Iz zapisanega je razvidno, da je celotno ogrodje Seaside z vsemi uporabniško definiranimi komponentami, tudi spletni aplikacijski strežnik, del Smalltalk slike. Koncept upravljanja s sliko omogoča, da lahko spletno aplikacijo zaradi njene narave razhroščujemo kot katerokoli namizno aplikacijo. Arhitekturno gledano ogrodje v celoti ne podpira vzorca MVC. Nivo pogleda in krmilnika sta združena v skupnem nivoju, in sicer v gradniku, ki se imenuje »Komponenta«. Komponenta je v osnovi lahko katerikoli razred, ki deduje obnašanje od razreda »WAComponent«. Primer, ki sledi (Slika 6), prikazuje enostavno spletno aplikacijo »Števec«, katere funkcionalnost je povečevanje in zmanjševanje števila s klikom na znak »++« oziroma »–-«. Na tem primeru bomo predstavili idejo komponente Seaside, upravljanje s stanjem komponente in način vizualne predstavitve komponente. Primer je napisan v Pharo implementaciji jezika Smalltalk.. Slika 6: Aplikacija Spletni števec – ogrodje Seaside 29.
(41) Primerjava spletnih ogrodij Seaside in Ruby on Rails. Komponenta »Stevec« je enostavni Smalltalk razred, ki deduje od razreda »WAComponent« (Izsek 1). Predstavljen razred vsebuje instančno spremenljivko »stevilo« in instančne metode »initialize«, »povecaj« in »zmanjsaj«. Metoda »initialize« (Izsek 2) poskrbi za inicializacijo spremenljivke »stevec«, drugi dve metodi pa skrbita za povečevanje in zmanjševanje omenjenega števila (Izsek 3). WAComponent subclass: #Stevec instanceVariableNames: ‘stevilo’ classVariableNames: '' poolDictionaries: '' category: Counter-Example. Izsek 1: Definicija razreda Števec – ogrodje Seaside Stevec >>initialize super initialize. stevilo := 0. Izsek 2: Inicializacija razreda Števec – ogrodje Seaside Stevec >>povecaj stevilo := stevilo + 1. Stevec >>zmanjsaj stevilo := stevilo – 1.. Izsek 3: Instančne metode za manipulacijo števca – ogrodje Seaside Kadarkoli želi Seaside prikazati komponento, pokliče metodo »renderContentOn:« na instanci komponente in ta ji omogoča, da se odloči, kako se bo prezentirala (Izsek 4). Kot parameter metoda sprejme argument, imenovan po konvenciji »html«, ki je instanca razreda »WARenderCanvas«. V terminologiji Seaside je html argument platno (angl. Canvas), na katerega se s čopiči (angl. brushes) slika druge HTML gradnike. Platno ponuja enostavni vzorec za kreiranje in uporabo tako imenovanih čopičev: •. povej platnu, kateri gradnik bo uporabljen,. •. konfiguriraj gradnik tako, da mu postaviš različne parametre,. •. podaj vsebino za prikaz gradnika (vsebina je lahko enostavni tekst ali pa drugi gnezdeni gradnik).. 30.
(42) Primerjava spletnih ogrodij Seaside in Ruby on Rails. Stevec>>renderContentOn: html html heading: stevilo level: 2. html anchor callback: [ self povecaj ]; with: '++'. html space. html anchor callback: [ self zmanjsaj ]; with: '–'.. Izsek 4: Metoda za prezentacijo komponente Števec – ogrodje Seaside Iz metode »renderContentOn:« je razvidno, da se komponenta prikaže tako, da izriše število in dve povezavi »++« in »--«, s katerima lahko povečujemo in zmanjšujemo naše število. Povečevanje in zmanjševanje števila je doseženo v tej preprosti aplikaciji na način, da je sidru povezave dodan blok kode za povratni klic (angl. callback). Uporaba bloka omogoča definicijo programske kode, ki se bo izvedla pri kliku na sidro povezave (seveda asinhrono, potem ko je komponenta že izrisana). Ko uporabnik klikne na sidro povezave, spletni brskalnik pošlje zahtevo spletni aplikaciji, ki izvrši blok kode, ki je bil podan gradniku sidra povezave. Predstavljena komponenta »Stevec« je spletna aplikacija. Vsaka spletna aplikacija, napisana v ogrodju Seaside ima korensko komponento, ki prestavlja vstopno točko aplikacije. To korensko komponento je potrebno registrirati v spletnem strežniku, ki je del razvojnega okolja (Izsek 5). Registracija spletne aplikacije je dosežena z izvedbo naslednje rutine v razvojnem okolju (ali pa kot del razredne inicializacije razreda Stevec). WAAdmin register: Stevec asApplicationAt: ‘spletniStevec’. Izsek 5: Registracija aplikacije Števec – ogrodje Seaside Naveden primer spletne aplikacije »Števec« nazorno prikazuje, kako enostavno je s pomočjo ogrodja Seaside napisati spletno aplikacijo v nekaj minutah. Koda HTML, ki jo aplikacija generira, je vidna na primeru, ki sledi (Izsek 6).. 31.
(43) Primerjava spletnih ogrodij Seaside in Ruby on Rails. <html> <head> <title>Seaside</title> <meta content="text/html;charset=utf-8" http-equiv="Content-Type"> </head> <body onload="onLoad()"> <h1>8</h1> <a href="/spletniStevec?_s=E7h43_c_mM3nDefx&_k=Q1mp4MOIr-LRiZp9&1">++</a> <a href="/spletniStevec?_s=E7h43_c_mM3nDefx&_k=Q1mp4MOIr-LRiZp9&2">--</a> <script type="text/javascript"> </body> </html>. Izsek 6: Generirana HTML koda spletne aplikacije Števec – ogrodje Seaside Da bi v celoti spoznali, kako se s pomočjo ogrodja Seaside implementirajo zahtevne spletne aplikacije, je potrebno pogledati, kako komponente med seboj komunicirajo. Spletna aplikacija, napisana v ogrodju Seaside, je množica komponent, ki med seboj sodelujejo in kličejo ena drugo. Obstajata dva načina povezovanja komponent. En način je »pokliči/odgovori« in drugi je »gnezdi komponente«.. Gnezdi komponente Komponenta lahko vključuje vsebino in funkcionalnost druge komponente. Spletna stran, ki jo generira komponenta, vsebuje predstavitev same komponente in predstavitev vseh gnezdenih komponent (Slika 7).. Programska koda. Brskalnik. KomponentaA >> children ^#(KomponentaB, KomponentaC). KomponentaA KomponentaC. KomponentaA>> renderContentoOn: html self render: KomponentaB self render: KomponentaC. KomponentaB. Slika 7: Komunikacija Seaside komponent – Gnezdi. 32.
(44) Primerjava spletnih ogrodij Seaside in Ruby on Rails. Pokliči/Odgovori Komponenta lahko pokliče drugo komponento. V tem primeru se klicana komponenta začasno (lahko tudi permanentno) zamenja s komponento, ki jo je poklicala, in sicer za časovni interval, dokler klicana komponenta ne vrne rezultata prejšnji komponenti. Ko je odgovor poslan, se izvajanje vrne na prvo komponento (Slika 8).. Programska koda. Brskalnik. KomponentaA >> kliciB self call: KomponentaB …. KomponentaA. KomponentaB >> odgovoriA self answer: true. KomponentaB. KomponentaA >> kliciB self call: new KomponentaB … »nadaljevanje izvajanja« KomponentaA. Slika 8: Komunikacija Seaside komponent – Pokliči/Odgovori. 33.
(45) Primerjava spletnih ogrodij Seaside in Ruby on Rails. 5.2 Ogrodje Ruby on Rails 5.2.1 Programski jezik ogrodja Ruby on Rails Ruby je programski jezik ogrodja Ruby on Rails. Je relativno mlad, dinamičen, objektno orientiran, odprtokodni, skriptni programski jezik. Ideja o novem programskem jeziku, ki ga je avtor Yukihiro Matsumoto poimenoval še preden je bila napisana prva vrstica kode, se je rodila leta 1993. Po dveh letih razvoja je bila javno izdana prva verzija jezika (verzija 0.95). Stabilna različica 1.0 je bila izdana leta 1996, ampak takrat Ruby še ni bil svetovno znan programski jezik. V obdobju med letoma 1999 in 2001 je bilo izdanih prvih 20 knjig na temo programskega jezika Ruby. Svojo slavo je Ruby začel žeti šele po letu 2004, ko je bilo izdano ogrodje Rails, takrat imenovano »Killer Ruby application«. Po dvajsetih letih razvoja je Ruby dosegel stabilno različico 2.3 (januar 2016). Motivacija za razvoj novega programskega jezika je bila predvsem združiti vse najboljše iz jezikov skriptnega sveta, hkrati pa narediti čisti objektni jezik. Citat avtorja jezika [21]: »I wanted the language that is more powerful than Pearl and more object oriented then Python. That's why I decided to design my own language«. Če povzamemo citat, si je avtor želel jezika, ki bi bil bolj učinkovit kot je Pearl in hkrati bolj objektno orientiran kot Python. Pri razvoju novega jezika je bil avtor pod vplivom drugih programskih jezikov, kot so Python, Smalltalk, Pearl, LISP, Eiffel, ADA in C++. V novem jeziku je poskušal združiti dobre lastnosti in koncepte prej omenjenih jezikov in s tem predvsem olajšati življenje programerjem pri razvoju programske opreme. Koncept čiste objektne orientacije jezika je avtor prevzel iz jezika Smalltalk.. 5.2.2 Ruby on Rails Ruby On Rails (krajše Rails ali ROR) je odprtokodno spletno ogrodje, napisano v programskem jeziku Ruby. Za svoje izvajanje potrebuje prednaložen programski jezik Ruby in navidezni stroj (angl. virtual machine). Njegova zgodovina sega v leto 2004, ko je razvijalec David Heinemeier Hansson objavil prvo različico ogrodja Rails. Ogrodje je nastalo v okviru projekta Basecamp, ki ga je avtor razvijal za podjetje 37 Signals. To je danes znano kot podjetje, ki se ukvarja z razvojem spletnih aplikacij, in podjetje, ki vlaga v 34.
Related documents
Afterwards, we account for the ways a governance broker meets his goals in dyadic and polyadic relationships, bringing forward distinctive courses of action: clinical
Weight of fetal fluids was calculated as gravid uterine weight minus total weights of gravid uterine tissues (fetus + uterus 4- caruncles + cotyledons + fetal membranes)..
When these compounds are later broken down, the stored chemical energy is released as heat, light, motion, and sound.. Elastic energy is energy stored
Chemical control of the redbay ambrosia beetle on native and avocado trees is not recommended at this time because (a) by the time tree wilting occurs the beetle has already
Φιγυρε 1 Λικελιηοοδ οφ πρεσεντινγ ωιτη α γοοδ προγνοσισ βρεαστ χανχερ (ΕΠΓ/ΓΠΓ) F L Φιγυρε 3 Λικελιηοοδ οφ πρεσεντινγ ωιτη α ποορ προγνοσισ
This optional 12 credit program is designed for students interested in future careers or graduate study in the areas of social work, criminal psychology, or sociology. Students
- Discuss with your trainer ahead of time what your intentions, goals, limitations, injuries, health and other areas of fitness you believe your trainer should be aware of..
Instead, the workflow-aware persistent caching approach in VNCache: Streaming + Prefetching caches the prefetched data at the enterprise site for the future jobs in the workflow