• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
Izkušnje pri uporabi ogrodja JSF za prenovo spletne aplikacije COBISS/OPAC
 

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

on

  • 229 views

 

Statistics

Views

Total Views
229
Views on SlideShare
229
Embed Views
0

Actions

Likes
0
Downloads
1
Comments
0

0 Embeds 0

No embeds

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    Izkušnje pri uporabi ogrodja JSF za prenovo spletne aplikacije COBISS/OPAC Izkušnje pri uporabi ogrodja JSF za prenovo spletne aplikacije COBISS/OPAC Presentation Transcript

    • Branko NamestnikRobert VehovecIZKUŠNJE PRI UPORABI OGRODJAJSF ZA PRENOVO SPLETNEAPLIKACIJE 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žnicCOBISS/OPAC je spletna aplikacija za iskanje in prikazgradiva v knjižnicah ter izvajanje različnih postopkov v zveziz izposojo gradiva.
    • Programska oprema COBISS/OPAC (1/2)• iskanje po lokalnih bazah podatkov knjižnic in po vzajemnibibliografski 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 preverijocelotno zalogo vseh knjižnic• prikaz podatkov o stanju zaloge na lokalnem nivoju• uporabniki lahko preverijo natančno zalogo za posamezno publikacijo vknjižnici, vključno s statusom izposoje in možnostjo rezervacije gradiva• možnost rezervacije gradiva
    • 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 sspletnim 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 namenizvoza zapisov v različnih formatih• dostop do številnih specialnih in tujih baz podatkov.
    • 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)
    • 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žiobratovalne 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
    • Izhodišča prenove programske opreme COBISS/OPAC• Programski jezik naj bo java.• Uporabniki programske opreme COBISS/OPAC so številni inheterogeni, za dostop uporabljajo različne naprave.• Podpora mora biti dobra in zanesljiva, saj je programska opremaživ sistem, ki se prilagaja zahtevam uporabnikov, zato potrebujedolgoročno vzdrževanje.• Zagotovljena mora biti skalabilnost. Tehnologija mora podpiratidelo nekaj tisoč uporabnikov hkrati in namestitev na večstrežnikih hkrati.• Zagotovljena mora biti vključenost oblikovalca.• Zagotovljena mora biti varnost. tehnologija mora omogočatiizdelavo varnih spletnih aplikacij.
    • Prototip spletne aplikacije z gradniki JSFJSF je z bogato ponudbo komponent, ki omogočajo različneimplementacije (Oracle Mojarra, PrimeFaces, JBoss RichFaces,Apache MyFaces itd.), dokaj privlačna tehnologija, saj omogoča hitroin enostavno kreiranje oblikovnih predlog.Čeprav so komponente lahko zelo kompleksni gradniki in se v ozadjuizvajajo dokaj kompleksne operacije, je uporaba te tehnologijesorazmerno enostavna.Kadar je potrebna interakcija odjemalca, je v komponente ževključena tudi potrebna koda JavaScript.
    • 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. Mojarraponuja le AJAX za podatke v formatu XML, ne pa tudi za JSON.• Za usklajevanje stanja med strežnikom in odjemalcem se morajoneprestano izvajati težke in kompleksne metode, ki vključujejopreračunavanje skladiščenih podatkov v seji, obravnavanjetrenutnega zahtevka in pripravljanje nove vsebine v xhtml.
    • Hibridna rešitev s krmilniki Spring MVCDa bi odpravili slabosti ogrodja JSF, smo zgradili hibridno rešitev, ki jekombinacija JSF in ogrodja Spring MVC. Značilnosti te hibridnerešitve so:• Za upravljanje spletne aplikacije uporabljamo krmilnikeSpring MVC.• V celoti smo zavrgli nefleksibilne komponente JSF za obrazce.• JSF smo obdržali za oblikovanje oblikovnih predlog in postavitev.
    • Konfiguracija aplikacije – deskriptor razmestitve web.xmlkontekstspletneaplikacijeJSFSpring MVC
    • Konfiguracija JSF - faces-config.xmlSpringBeanFacesELResolver omogoča, da lahkokomponente JSF uporabljajo Springova zrna, če gre zaupravljana zrna (@ManagedBean).V našem primeru smo uporabili Springova zrna in Springovedosege, zato ta nastavitev niti ni potrebna.
    • Konfiguracija Spring MVC - dispatcher-servlet.xml (1/2)
    • Konfiguracija Spring MVC - dispatcher-servlet.xml (1/2)
    • 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 jihdopolnimo 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.
    • Primer: krmilnik za iskanje bibliografskih zapiskov
    • Oblikovanje predlog in postavitev z JSF• Glede na to, da se bodo na strežniku pripravljale le osnovnevsebine in postavitve strani, je JSF s svojim sistemom za predlogesolidna 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žavsestavimo želeno vsebino za odjemalca.• Končna podoba predstavitve se s podporo tehnologije AJAXdopolni pri odjemalcu.
    • Primer: search.xhtmlPrikazana poenostavljena predloga JSF za iskanje. Vključuje obrazec za izbran iskalninačin (enostavno, napredno ali ukazno iskanje), prikaz rezultata z želeno predlogo inizpis zgodovine iskanja, na koncu pa je definiran še skriptni blok, ki se v predlogipostavitve vstavi na dno strani.
    • JSF brez h:formS tem ko smo zavrgli nefleksibilne komponente JSF za obrazce ternamesto h:form, h:inputText, h:commanButton in podobnihsorodnih oznak začeli neposredno vključevati ustrezno kodo html,smo zelo poenostavili oblikovanje zahtevnejših obrazcev.
    • Brez @ViewScope (1/2)Ker ne uporabljamo več h:form, ni več avtomatskogeneriranega skritega polja javax.faces.ViewState, skaterim se je ohranjalo stanje komponent JSF.Ni več možno oziroma smiselno vključevati zrna zobsegom pogleda (ViewScope).• Ali smo s tem kaj na slabšem?
    • Brez @ViewScope (2/2)Spletna aplikacija postane lažja in hitrejša.• Vzdrževanje stanja uporabniškega vmesnika na strežniku jeproblematično z vidika skalabilnosti aplikacije.• Pri velikem številu uporabnikov je shranjevanje in nenehnoposodabljanje stanja precej obremenjujoče za strežnik, tako zvidika procesiranja kot z vidika porabe spomina.Alternativa?• Asinhrono posodabljanje strani.Trendi razvoja modernih spletnih aplikacija kažejo, da seprocesiranje podatkov in generiranje prikaza v vse večji meriizvajata na odjemalcu.
    • Alternativa jsf.ajax: jQuery in RequireJSZamenjava ozko specializirane knjižnice jsf.ajax z bolj splošno inširoko uveljavljeno knjižnico jQuery prinese precej več prednosti kotslabosti:• Pretok podatkov s strežnika ni več omejen le na format XML,podatki so lahko tudi v formatu JSON.• Sami kontroliramo in optimiziramo obseg podatkovnekomunikacije.• Spletni aplikaciji lažje dodamo potrebno stopnjo interakcije zuporabnikom.• Lažje vključujemo različne vnaprej pripravljene oblikovalskerešitve in gradnike.• Koda JavaScript je napisana modularno. Zahtevani moduli senaložijo asinhrono z RequireJS.
    • Modularno napisana koda JavaScript
    • 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 lahkouporabnikom prikažemo lepe in prijazne URL-naslove.• S polnim izkoriščanjem potenciala, ki ga omogoča AJAX, bomo razvilimoderno interaktivno in uporabniku prijazno spletno aplikacijo.• Za oblikovanje predlog in postavitev uporabljamo JSF Facelets. V celotismo zavrgli nefleksibilne komponente JSF za obrazce. Sedaj brez težavvključujemo uveljavljene oblikovalske rešitve in skriptne knjižnice.• S centraliziranim sistemom upravljanja s krmilniki MVC, redukcijo JSF nanajnujnejše oznake ter modularizacijo kode JavaScript razvijamoprogramsko opremo z dolgoročnim potencialom, ki jo bomo lahko breztežav vzdrževali in nadgrajevali tudi v prihodnje.