izkušnje pri uporabi ogrodja jsf za prenovo spletne aplikacije cobiss/opac

24
Branko Namestnik Robert Vehovec IZKUŠNJE PRI UPORABI OGRODJA JSF ZA PRENOVO SPLETNE APLIKACIJE COBISS/OPAC

Upload: bniz

Post on 27-Jun-2015

155 views

Category:

Technology


1 download

TRANSCRIPT

Page 1: Izkušnje pri uporabi ogrodja JSF za prenovo spletne aplikacije COBISS/OPAC

Branko Namestnik

Robert Vehovec

IZKUŠNJE PRI UPORABI OGRODJA

JSF ZA PRENOVO SPLETNE

APLIKACIJE COBISS/OPAC

Page 2: Izkušnje pri uporabi ogrodja JSF za prenovo spletne aplikacije COBISS/OPAC

COBISS - Kooperativni online bibliografski sistem in servisi

• knjižnični informacijski sistem

• deluje že skoraj 30 let (od 1987)

• vključenih več kot 700 knjižnic

COBISS/OPAC je spletna aplikacija za iskanje in prikaz gradiva v knjižnicah ter izvajanje različnih postopkov v zvezi z izposojo gradiva.

Page 3: Izkušnje pri uporabi ogrodja JSF za prenovo spletne aplikacije COBISS/OPAC

Programska oprema COBISS/OPAC (1/2)

• iskanje po lokalnih bazah podatkov knjižnic in po vzajemni bibliografski bazi podatkov COBIB.SI

• prikaz bibliografskih podatkov v različnih formatih

• prikaz podatkov o stanju zaloge na vzajemnem nivoju • uporabniki lahko za posamezno publikacijo na enem mestu preverijo

celotno zalogo vseh knjižnic

• prikaz podatkov o stanju zaloge na lokalnem nivoju • uporabniki lahko preverijo natančno zalogo za posamezno publikacijo v

knjižnici, vključno s statusom izposoje in možnostjo rezervacije gradiva

• možnost rezervacije gradiva

Page 4: Izkušnje pri uporabi ogrodja JSF za prenovo spletne aplikacije COBISS/OPAC

Programska oprema COBISS/OPAC (2/2)

• storitev Moja knjižnica uporabnikom omogoča • podaljšanje gradiva

• preklic rezervacije gradiva

• vpogled v svojo zgodovino izposoje

• vpogled v stanje omejitev in dolgov z možnostjo poravnave terjatev s spletnim plačilom preko Monete

• naročanje medknjižnične izposoje

• spremljanje naročil v medknjižnični izposoji

• nastavitve e-obveščanja

• košarica zapisov • uporabniki lahko v košarico zapisov shranijo bibliografske zapise za namen

izvoza zapisov v različnih formatih

• dostop do številnih specialnih in tujih baz podatkov.

Page 5: Izkušnje pri uporabi ogrodja JSF za prenovo spletne aplikacije COBISS/OPAC

Uporaba COBISS/OPAC v Sloveniji v letu 2012

• 16 mio poizvedb

• 38 mio prikazov bibliografskih podatkov.

• preko 3 mio podaljšanj roka izposoje

• preko 500.000 rezervacij gradiva

• več kot 100.000 članov uporablja storitev Moja knjižnica

• okrog 1.000 hkratnih uporabnikov v konici delovnega dneva (občasno tudi do 1.400 hkratnih uporabnikov)

Page 6: Izkušnje pri uporabi ogrodja JSF za prenovo spletne aplikacije COBISS/OPAC

Razlogi za prenovo programske opreme COBISS/OPAC

• menjava strežniške platforme • aplikacije teče na operacijskem sistemu OpenVMS,

podpora zanj pa počasi ugaša

• OpenVMS trenutno deluje le na strežnikih ITANIUM, kar zaradi visokih cen strežniške strojne opreme znatno podraži obratovalne stroške aplikacije

• izboljšati podporo naboru znakov Unicode (UTF-8) • trenutno uporabljamo pretvornike med posameznimi nabori znakov,

kar precej otežuje pripravo predlog strani za vključitev v aplikacijo

• omogočiti lažji razvoj • proces razhroščevanja je na obstoječi arhitekturi otežen in neučinkovit

Page 7: Izkušnje pri uporabi ogrodja JSF za prenovo spletne aplikacije COBISS/OPAC

Izhodišča prenove programske opreme COBISS/OPAC

• Programski jezik naj bo java.

• Uporabniki programske opreme COBISS/OPAC so številni in heterogeni, za dostop uporabljajo različne naprave.

• Podpora mora biti dobra in zanesljiva, saj je programska oprema živ sistem, ki se prilagaja zahtevam uporabnikov, zato potrebuje dolgoročno vzdrževanje.

• Zagotovljena mora biti skalabilnost. Tehnologija mora podpirati delo nekaj tisoč uporabnikov hkrati in namestitev na več strežnikih hkrati.

• Zagotovljena mora biti vključenost oblikovalca.

• Zagotovljena mora biti varnost. tehnologija mora omogočati izdelavo varnih spletnih aplikacij.

Page 8: Izkušnje pri uporabi ogrodja JSF za prenovo spletne aplikacije COBISS/OPAC

Prototip spletne aplikacije z gradniki JSF

JSF je z bogato ponudbo komponent, ki omogočajo različne implementacije (Oracle Mojarra, PrimeFaces, JBoss RichFaces, Apache MyFaces itd.), dokaj privlačna tehnologija, saj omogoča hitro in enostavno kreiranje oblikovnih predlog.

Čeprav so komponente lahko zelo kompleksni gradniki in se v ozadju izvajajo dokaj kompleksne operacije, je uporaba te tehnologije sorazmerno enostavna.

Kadar je potrebna interakcija odjemalca, je v komponente že vključena tudi potrebna koda JavaScript.

Page 9: Izkušnje pri uporabi ogrodja JSF za prenovo spletne aplikacije COBISS/OPAC

Slabosti JSF

• Vključevanje oblikovalca v razvojni proces je težavnejše.

• Tehnologija narekuje, da so obrazci sestavljeni iz komponent JSF, kar otežuje oblikovanje zahtevnejših obrazcev.

• Priložene knjižnice JavaScript so ozko specializirane, npr. Mojarra ponuja le AJAX za podatke v formatu XML, ne pa tudi za JSON.

• Za usklajevanje stanja med strežnikom in odjemalcem se morajo neprestano izvajati težke in kompleksne metode, ki vključujejo preračunavanje skladiščenih podatkov v seji, obravnavanje trenutnega zahtevka in pripravljanje nove vsebine v xhtml.

Page 10: Izkušnje pri uporabi ogrodja JSF za prenovo spletne aplikacije COBISS/OPAC

Hibridna rešitev s krmilniki Spring MVC

Da bi odpravili slabosti ogrodja JSF, smo zgradili hibridno rešitev, ki je kombinacija JSF in ogrodja Spring MVC. Značilnosti te hibridne rešitve so:

• Za upravljanje spletne aplikacije uporabljamo krmilnike Spring MVC.

• V celoti smo zavrgli nefleksibilne komponente JSF za obrazce.

• JSF smo obdržali za oblikovanje oblikovnih predlog in postavitev.

Page 11: Izkušnje pri uporabi ogrodja JSF za prenovo spletne aplikacije COBISS/OPAC

Konfiguracija aplikacije – deskriptor razmestitve web.xml

kontekst spletne

aplikacije

JSF

Spring MVC

Page 12: Izkušnje pri uporabi ogrodja JSF za prenovo spletne aplikacije COBISS/OPAC

Konfiguracija JSF - faces-config.xml

SpringBeanFacesELResolver omogoča, da lahko komponente JSF uporabljajo Springova zrna, če gre za upravljana zrna (@ManagedBean).

V našem primeru smo uporabili Springova zrna in Springove dosege, zato ta nastavitev niti ni potrebna.

Page 13: Izkušnje pri uporabi ogrodja JSF za prenovo spletne aplikacije COBISS/OPAC

Konfiguracija Spring MVC - dispatcher-servlet.xml (1/2)

Page 14: Izkušnje pri uporabi ogrodja JSF za prenovo spletne aplikacije COBISS/OPAC

Konfiguracija Spring MVC - dispatcher-servlet.xml (1/2)

Page 15: Izkušnje pri uporabi ogrodja JSF za prenovo spletne aplikacije COBISS/OPAC

Krmilniki Spring MVC

• S krmilniki Spring MVC je upravljanje aplikacije centralizirano, pregledno in fleksibilno. • Na enem mestu imamo informacije o vseh akcijah in spletnih naslovih.

• Z anotacijami @RequestMapping definiramo preslikave URL-naslovov v akcije. • Običajno najprej definiramo preslikave na nivoju razreda, nato pa jih

dopolnimo na nivoju metod.

• V preslikave so lahko zajete specifične metode poizvedbe (GET, POST …), deli URL-naslova, deli glave zahtevka, vrste medijskih tipov (npr. »application/json«).

• Uporabimo lahko tudi regularne izraze.

• S temi preslikavami lahko uporabnikom ponudimo lepe in prijazne URL-naslove akcij in vsebin.

Page 16: Izkušnje pri uporabi ogrodja JSF za prenovo spletne aplikacije COBISS/OPAC

Primer: krmilnik za iskanje bibliografskih zapiskov

Page 17: Izkušnje pri uporabi ogrodja JSF za prenovo spletne aplikacije COBISS/OPAC

Oblikovanje predlog in postavitev z JSF

• Glede na to, da se bodo na strežniku pripravljale le osnovne vsebine in postavitve strani, je JSF s svojim sistemom za predloge solidna izbira za gradnjo prikaza.

• Z elementi JSF Facelets (ui:composition, ui:inlcude, ui:define, ui:insert, ui:decorate, ui:repeat, ui:fragment, ui:param) brez težav sestavimo želeno vsebino za odjemalca.

• Končna podoba predstavitve se s podporo tehnologije AJAX dopolni pri odjemalcu.

Page 18: Izkušnje pri uporabi ogrodja JSF za prenovo spletne aplikacije COBISS/OPAC

Primer: search.xhtml

Prikazana poenostavljena predloga JSF za iskanje. Vključuje obrazec za izbran iskalni način (enostavno, napredno ali ukazno iskanje), prikaz rezultata z želeno predlogo in izpis zgodovine iskanja, na koncu pa je definiran še skriptni blok, ki se v predlogi postavitve vstavi na dno strani.

Page 19: Izkušnje pri uporabi ogrodja JSF za prenovo spletne aplikacije COBISS/OPAC

JSF brez h:form

S tem ko smo zavrgli nefleksibilne komponente JSF za obrazce ter namesto h:form, h:inputText, h:commanButton in podobnih sorodnih oznak začeli neposredno vključevati ustrezno kodo html, smo zelo poenostavili oblikovanje zahtevnejših obrazcev.

Page 20: Izkušnje pri uporabi ogrodja JSF za prenovo spletne aplikacije COBISS/OPAC

Brez @ViewScope (1/2)

Ker ne uporabljamo več h:form, ni več avtomatsko generiranega skritega polja javax.faces.ViewState, s katerim se je ohranjalo stanje komponent JSF.

Ni več možno oziroma smiselno vključevati zrna z obsegom pogleda (ViewScope).

• Ali smo s tem kaj na slabšem?

Page 21: Izkušnje pri uporabi ogrodja JSF za prenovo spletne aplikacije COBISS/OPAC

Brez @ViewScope (2/2)

Spletna aplikacija postane lažja in hitrejša.

• Vzdrževanje stanja uporabniškega vmesnika na strežniku je problematično z vidika skalabilnosti aplikacije.

• Pri velikem številu uporabnikov je shranjevanje in nenehno posodabljanje stanja precej obremenjujoče za strežnik, tako z vidika procesiranja kot z vidika porabe spomina.

Alternativa?

• Asinhrono posodabljanje strani.

Trendi razvoja modernih spletnih aplikacija kažejo, da se procesiranje podatkov in generiranje prikaza v vse večji meri izvajata na odjemalcu.

Page 22: Izkušnje pri uporabi ogrodja JSF za prenovo spletne aplikacije COBISS/OPAC

Alternativa jsf.ajax: jQuery in RequireJS

Zamenjava ozko specializirane knjižnice jsf.ajax z bolj splošno in široko uveljavljeno knjižnico jQuery prinese precej več prednosti kot slabosti:

• Pretok podatkov s strežnika ni več omejen le na format XML, podatki so lahko tudi v formatu JSON.

• Sami kontroliramo in optimiziramo obseg podatkovne komunikacije.

• Spletni aplikaciji lažje dodamo potrebno stopnjo interakcije z uporabnikom.

• Lažje vključujemo različne vnaprej pripravljene oblikovalske rešitve in gradnike.

• Koda JavaScript je napisana modularno. Zahtevani moduli se naložijo asinhrono z RequireJS.

Page 23: Izkušnje pri uporabi ogrodja JSF za prenovo spletne aplikacije COBISS/OPAC

Modularno napisana koda JavaScript

Page 24: Izkušnje pri uporabi ogrodja JSF za prenovo spletne aplikacije COBISS/OPAC

Zaključek

• S kombinacijo Spring MVC in JSF smo postavili razvojno ogrodje s številnimi dobrimi lastnostmi.

• S krmilniki Spring MVC smo povečali skalabilnost aplikacije.

• S fleksibilnim mehanizmom za preslikave URL-naslovov v akcije lahko uporabnikom prikažemo lepe in prijazne URL-naslove.

• S polnim izkoriščanjem potenciala, ki ga omogoča AJAX, bomo razvili moderno interaktivno in uporabniku prijazno spletno aplikacijo.

• Za oblikovanje predlog in postavitev uporabljamo JSF Facelets. V celoti smo zavrgli nefleksibilne komponente JSF za obrazce. Sedaj brez težav vključujemo uveljavljene oblikovalske rešitve in skriptne knjižnice.

• S centraliziranim sistemom upravljanja s krmilniki MVC, redukcijo JSF na najnujnejše oznake ter modularizacijo kode JavaScript razvijamo programsko opremo z dolgoročnim potencialom, ki jo bomo lahko brez težav vzdrževali in nadgrajevali tudi v prihodnje.