Desktop-sovelluksen hybridi arkkitehtuuri

Tietokantakeskeiset desktop-sovellukset (kuvassa ”Traditional desktop-app”) on perinteisesti tehty siten, että client-koneella oleva sovellus kutsuu tietokantapalvelimella olevaa sovelluksen tietokantaa. Tällaista sovellusta on raskasta päivittää, asennus on tehtävä kaikille client-koneille. Mikäli sovelluksesta halutaan tehdä web-versio, on lähes koko sovellus kirjoitettava uudelleen. Toisaalta desktop-sovellus on helpompi toteuttaa kuin vastaava websovellus, jos sovelluksessa on vaativaa grafiikkaa tai animaatiota.

Web-sovellukset (kuvassa ”Modern Web-application”) ratkaisevat monta desktop-sovellusten ongelmaa. Sovellusten jakaminen on helppoa, koska clienttina toimiva selain lataa sovelluksen käyttöliittymän palvelimelta. Mitään clientille tapahtuvaa asennusta ei tarvita. Käyttöliittymät ovat kevyitä, eikä selaimessa eikä client-koneella tarvitse enää käyttää plugineita tai ajoympäristöjä websovelluksia varten (ns. aidot HTML5-sovelukset). Nykytyylin mukaisesti sovelluslogiikka on clientin Javascriptissa, ja tilattomia palveluja kutsutaan RESTful-rajapinnan kautta (ns. Thin Server Architecture, TSA, jota käsittelimme Liferayta koskevassa blogisarjassamme).

Seppien hybridiratkaisu (kuvassa ”Hybric Desktip-app”) liittää käyttöliittymään vastaavat palvelut palvelurajapinnan kautta kuin mitä saman toiminnallisuuden web-sovelluksessa olisi. Paikalliselle koneelle asennettava sovellus on kevyt, sisältäen ainoastaan käyttöliittymän ja sovelluslogiikan toteutuksen. JavaFX:lla toteutettu kevyt sovellus voidaan myös jakaa webin kautta, kuten vaikkapa mobiilisovelluksia jaetaan (Androidin ja IOSin sovelluskaupat). Tilattomia palveluja (Javan stateless beanit) kutsutaan RESTful-rajapinnan kautta. Palvelut ovat Javan sovelluspalvelimella. Palveluita voidaan aivan yhtä hyvin kutsua myös web-käyttöliittymistä tai mobiilisovelluksista. Ylläpito on huomattavasti helpompaa kuin perinteisissä desktop-sovelluksissa.

Architecture alternatives

Tässä hybridiratkaisussa yksityiskohdat on mietitty niin, että eri sovelluksissa voidaan toistaa samoja ratkaisuja ja kirjastoja. Näistä yksityiskohdista myöhemmissä blogeissa.