Dinamikus szolgáltatás rendszerek létrehozása és
használata mobil környezetben

 

Rapali Zsolt, Juhász Zoltán

Veszprémi Egyetem, Információs Rendszerek Tanszék

rzsolt@axelero.hu, juhasz@irt.vein.hu

 


1.       Bevezetés

A mobil iparág rohamosan halad a hangszolgáltatásoktól az adatszolgáltatások, a vizuális mobil alkalmazások felé. A világ 175 országában több mint 700 millió felhasználóval rendelkező GSM rendszer [1], hála a kutatásoknak, fejlesztéseknek, folyamatosan fejlődik (3G) és képes lesz olyan új technológiákkal együttműködni, mint például a WLAN. A cellás rendszereknek nemsokára több mint 1 milliárd felhasználót kell kiszolgálnia, és ennél is fontosabb adat a GSM rendszert használók aránya a növekvő igény a nem hang-alapú szolgáltatások iránt.

Várhatóan nagyszámú új szolgáltatás fog kialakulni a mobil szórakoztatás és a helyzet-függő alkalmazások terén, de az is világos, hogy az újfajta szolgáltatások kialakulásának feltétele az erőteljes és nyílt szabványok megléte egy tiszta architektúra leírással együtt. A szolgáltatók érdekei azt diktálják, hogy minél több olyan értéknövelt szolgáltatás jelenjen meg, amely új előfizetés ill. mobil készülék vásárlására ösztönzi az embereket. Ezzel szemben az emberek nagy része ragaszkodik a megszokott dolgokhoz, nem szereti a változásokat. Ez a természetes ellenállás jelenleg is meg figyelhető a WAP ill. a 2,5G telefonok esetében. Ezt az ellenállást csökkenti valamelyest az emberek könnyebb élet iránti vágya. Olyan könnyen használható szolgáltatásokat szívesen fogadnak, amelyek megkönnyítik életük szervezését, irányítását.

Cikkünkben azt vizsgáljuk meg, hogy milyen szoftver támogatás szükséges ezen szolgáltatás-orientált alkalamzásfejlesztés támogatásához, kiemelve a a Java nyelvre épülő Jini technológiát [5]. Célunk annak illusztárása, hogy a Jini technológiára épülve létrehozhatók dinamikus, adaptív és mobil eszközökről is elérhető szolgáltatások.

2.       A szolgáltatások szerepe

A harmadik-generációs mobil hálózati technológia soha nem látott lehetőségeket rejt magában. Megfelelő eszközök megjelenésével olyan szolgáltatások alakulhatnak ki, amelyek megkönnyítik életünket. Egyre nagyobb mértékben el fognak terjedni a nem hangalapú szolgáltatások, és a vezeték-nélküli technológiák fejlődésével egyre jobban elmosódnak a különböző heterogén hálózatok közötti határok. Így a mobilitás kihasználása mellett is képesek leszünk használni a különböző típusú szolgáltatásokat, figyelmen kívül hagyva a hálózatok közötti átmeneteket. Az erre utaló igényeket illusztrálja az 1. ábrán látható mobil alkalmazás előrejelzés.  

 

1.ábra  Mobil alkalmazások arányának előrejelzése 2002 és 2006 között [ Strategy Analytics]

 

Ahhoz azonban, hogy könnyen használható, a mindennapokat megkönnyítő szolgáltatások alakulhassanak ki, több szoftvertechnológiai követelménynek is teljesülnie kell. A szabványosított interfészeken alapuló és  hasonló grafikus kezelőfelülettel rendelkező kliensek elterjedése megkönnyítheti a szolgáltatások elérését. Ezen felül, elvárjuk, hogy a kifejlesztett szolgáltatások felhasználó központúak, hibatűrők, dinamikusak (szolgáltatás felfedezés), adaptívak (az adott helyhez és az adott eszközhöz is), biztonságosak és személyre szabhatóak (illeszkedik az egyéni preferenciákhoz) legyenek.

 

2.ábra Harmadik generációs szolgáltatás kategóriák [ UMTS Forum ]

2.1.       A Java szerepe a szolgáltatásokban

A kliensek szemszögéből egy másik fontos szempont a szolgáltatások, alkalmazások platform-függetlensége. A jelenlegi technológiák közül ezt a Java technológia teljesíti legteljesebben [6], mivel a Java Virtuális Gép által lehetővé tett szerkezet elrejti a futtató platformot az alkalmazás elől. A Java által megvalósított RMI (Remote Method Invocation) pedig lehetővé teszi a távoli szolgáltatásokhoz elengedhetetlenül szükséges távoli metódus-hívásokat. A kliensnek csak a szolgáltatás interfészét kell ismernie, ahhoz hogy használja. Az interfészt implementáló szolgáltatás részletei rejtve vannak a kliens elől. A hagyományos Java platform azonban nem képes a dinamizmust kezelni.  

2.2.       A Jini technológia

A Jini technológia [5] egyike a legújabb és legérdekesebb Sun fejlesztéseknek, melynek célja, hogy megváltoztassa a hálózati eszközök használatának és az elosztott hálózatok létrehozásának módját. A Jini technológia tartalmazza a Java alapú dinamikus szolgáltatás rendszerekhez szükséges összes eszközt. Egy Jini rendszerben bármely olyan eszköz vagy szoftverkomponens résztvevő lehet, amely képes digitális információt fogadni és adni. A technológia egy architektúrális, valamint egy programozói modellt definiál. Az architektúra a Java architektúra kiterjesztése Jini alkalmazások és szolgáltatások létrehozása céljából, azaz, a Java platform felkészítése Java Virtuális Gépek dinamikus hálózatának használatára.

 

3.ábra Jini architektúra felépítése

A Jini technológia három fő részből áll: futtató infrastruktúra, programozói modell és a Jini szolgáltatások.

§         A futtató infrastruktúra tartalmazza azokat a komponenseket, amelyek lehetővé teszik Jini szövetségek létrehozását. (felfedezés/csatlakozás, elosztott biztonság és kereső szolgáltatás).

§         A programozói modell olyan interfészek halmaza melyek segítségével megvalósíthatóak a megbízható, elosztott szolgáltatások (leasing, tranzakciók és elosztott események).

§         A szolgáltatások olyan entitások a szövetségben, amelyek valamilyen speciális funkciót ajánlanak a szövetség többi tagjának (ilyen például a Transaction Manager és a JavaSpaces szolgáltatás).      

 

A Jini modell a proxy-pattern modellre épül. Minden szolgáltatás egy proxy objektumon keresztül érhető el, mely így elrejti a kliens és a szolgáltatás közötti kommunikáció implementálását, így a Jini protokoll függetlenséget is biztosít. Ha két Jini entitás kommunikál egymással, ez egy magasszintű szolgáltatás protokollon keresztül megy végbe. Az alapértelmezett rendszerszintű kommunikációs mechnamizus ami ezt megvalósítja, a a Java RMI, valamint egy IP-alapú hálózat.

4.ábra Jini szolgáltatás kommunikáció implementációja.

2.3.       A Jini rendszer működése

A Jini hálózat működése egy egyszerű mintát követ. A hálózat számára szolgáltatásokat kínáló eszközöknek szolgáltatásuk regisztrálásához meg kell keresniük a lookup service-t. A lookup service a Jini infrastruktúra egy elektronikus hirdetőtáblaszerű része, mely az összes elérhető szolgáltatásról tartalmaz információkat. Azok az eszközök, melyek szolgáltatást szeretnének igénybe venni, először felveszik a kapcsolatot az elérhető lookup service-szel, majd meg keresnik a számukra megfelelő szolgáltatásokat. Sikeres keresés esetén, a megtalált szolgáltatás proxy objektuma letöltődik a kliensre, ahol a kliens a proxy-n keresztül elérheti és használhatja a szolgáltatást.

A hálózatra csatlakozó új szolgáltatások regisztrálják magukat a lookup service-nél. Hasonlóan az új kliensek megtalálva a lookup service-t megkeresik a szükséges szolgáltatásokat, letöltik és elindítják azokat. A Jini lényegét a programkódok hálózaton keresztüli mozgathatósága jelenti. Ez teszi lehetővé az eszközök automatikus működését, szükségtelenné téve a szoftverinstallálást és konfigurálást.

Például, ha egy alkalmazás szeretne használni egy nyomtatót, akkor a nyomtató eléréséhez szükséges interface szoftver egyszerűen letöltődik a kliensre a nyomtatóról.  A programkódok mozgathatóságát a Java RMI teszi lehetővé.

2.4.       Jini és a mobil eszközök

A Jini architektúra tehát tökéletesen alkalmas arra, hogy az újgenerációs szolgáltatások alapjául szolgáljon. A dinamikus szolgáltatás felfedezés és a távoli szolgáltatások használata mellett a Jini lehetővé teszi a kisebb erőforrással, képességekkel rendelkező eszközök számára is a Jini hálózatban való részvételt. A Jini Surrogate architektúra [9] lecsökkenti a Jini hálózatban való részvételhez szükséges feltételek, erőforrások mennyiségét. A Jini technológia alapját az objektumok mozgatása jelenti. Azon eszközök számára, amelyek csak limitált Virtuális Géppel rendelkeznek [7], vagy nem képesek futtatni a Java Virtuális Gépet, azaz képtelenek fogadni Jini objektumokat, léteznek olyan megfelelő eszközök, amelyek helyettesíthetik a klienst a Jini hálózaton.

 

3.       Intelligens ház

Ebben a fejezetben bemutatunk egy esettanulmányt, mely példa egy olyan dinamikus szolgáltatás architektúrára, mely potenciálisan mobil eszközökről is elérhető.

Képzeljünk el egy olyan házat, amelyben szolgáltatások sokasága teszi könnyebbé mindennapjainkat. Hazaérkezésünktől fogva a ház szolgáltatásai érzékelők segítségével nyomon követik mozgásunkat, és a személyes beállítások alapján szabályozzák és aktivizálják a világítást, a fűtést, légkondicionálást, további beállításokat. Saját személyre szabott biztonsági rendszerünk figyel mindent a kamerák és érzékelők segítségével.

Bár a példa kissé futurisztikus, gondoljunk csak bele, hogy milyen lehetőségek rejlenek a házban található eszközök szolgáltatásként történő, Jini által lehetővé tett távoli elérésében. Bármikor, bárhonnan elérhetjük a házunkban található szolgáltatásokat és ezáltal megfigyelhetjük, szabályozhatjuk eszközeinket. Például, nyaralásunk során PDA-nk vagy 3G-s mobil telefonunk segítségével elérhetjük az otthonunkban található szolgáltatásokat. Mégpedig úgy hogy az általunk már ismert otthoni szolgáltatásokra rákeresünk és a Jini rendszer által lehetővé tett "Lookup metódus" segítségével megtalált szolgáltatások közül kiválasztjuk az általunk kívántat.

 Tehát ezzel a módszerrel nyaralásunk során is elérhetjük az otthonunkban található biztonsági rendszer kameráit és érzékelőit, a CD lejátszót, számítógépet, stb. Hazaérkezésünk előtt lekérve az otthoni szolgáltatásokat, beállíthatjuk a fűtés hőmérsékletét, akár a medence vizét is felmelegíthetjük és lekérdezhetjük az otthoni gépünkre érkezett üzeneteket is. Hazaérkezve, a rendszer érzékeli autónkat és azonnal kinyitja a garázsajtót, átállítja a biztonsági rendszert és a személyes beállításoktól függően bekapcsolja a világítást.

3.1.       Az Intelligens Ház terve

Mint említettük, az intelligens ház szolgáltatások dinamikus halmaza, emiatt a rendszer egy interfészekre épülő architektúra, ahol a funkcionalitás és az implementáció különválik. A rendszernek képesnek kell lennie tetszőleges jövőbeli szolgáltatások fogadására és működtetésére.

 

5.ábra Az intelligens ház példa alkalmazás szolgáltatásai és azok kapcsolata.

 

A különböző érzékelőktől beérkező adatok és a személyes beállítások alapján az Intelligens Ház működését a Központi Vezérlő Szolgáltatás irányítja, meghagyva a külső beavatkozás lehetőségét. Napszaktól függően beállítja a kívánt hőmérsékletet minden szobában, figyeli a világítást és szabályozza a biztonsági rendszer működését. A házban található TV-k és rádiók működését a TV ill. Radio Service segítségével tudjuk szabályozni. A különböző szórakoztató szolgáltatások műsorai közül választva használhatjuk a TV-t ill. rádiót. A medence vízminőségét és hőfokát a Swimming Pool Service segítségével kérdezhetjük le és szabályozhatjuk.

A Jini architektúra legnagyobb előnye azonban nem az ilyen előre meghatározott szolgáltatásokban rejlik, hanem a modularitás és a szolgáltatások automatikus felfedezése által lehetővé tett dinamikus szolgáltatás-rendszerekben. A központi vezérlő egység által felfedezett szolgáltatások azonnal elérhetővé válnak a felhasználó és a többi szolgáltatás számára is. A kliens alkalmazások moduláris felépítése lehetővé teszi az új szolgáltatások megjelenését és integrálását az alkalmazás grafikus felületébe. Az így megjelenő szolgáltatás-modulok metódusai elérhetőek a KVE számára meghatározott interfész alapján.

Más szóval, a kliens alkalmazás a Jini architektúrát kihasználva felfedezi és a grafikus felhasználói felületén keresztül, elérhetővé teszi a felhasználó számára az éppen aktuális szolgáltatásokat. Ily módon mindig csak az adott pillanatban aktív szolgáltatások érhetőek el és a kliens grafikus felülete is mindig csak az aktív szolgáltatásokat tartalmazza.

3.2.       Interfész és osztálytervezés

A terv az interfészek definiálására épül. Egy szolgáltatás létrehozása során általában két különböző interfészt kell meghatározni. Egy normál szolgáltatás interfészt ("Service") valamint egy távoli szolgáltatás interfészt ("RemoteService"). A Service interfészt a proxy implementálja, míg a RemoteService interfészt a távoli szolgáltatás. A megkülönböztetés célja az, hogy a Service hagyományos metódushívással, míg egy RemoteService RMI-n keresztül érhető el.

Létezik olyan eset, amikor nincs szükség a szolgáltató szerverrel történő kommunikációjára; a proxy valósítja meg a teljes szolgáltatást. Más esetben a szolgáltatás használatához szükség van a szolgáltató szerverre is. Ekkor a Service interfész proxy kerül a klienshez, amely automatikusan kapcsolatba lép a RemoteService-t implementáló 'backend' szolgáltatással. Az interfészek megkülöböztetése lehetővé teszi azt is, hogy a proxy és a szolgáltatás között a felhasználó számára nem látható metódusok is definiálhatók legyenek.  Az interfészek és egyes komponensek közötti kapcsolatot illusztrálja a 6. ábra.

 

Mobil  kliens

 
Ellipszis: Service
Implementation

Server

 

Client

(Surrogate

Host)

 
Ellipszis: Proxy
(remote)

Remote Service interfész

 
Ellipszis: ServiceProxy

Service interfész

 

Lookup Service

 

6.ábra A mobil kliens, a Jini kliens helyettesítő (Surrogate), a szolgáltatás és az interfészek kapcsolata.

A házban található szolgáltatások és az őket felügyelő ágensek vezérlését a Központi Vezérlő Egység végzi. Ez az egység felelős a ház és a benne lévő szolgáltatások zavartalan működéséért. Lényegében ez a központi egység maga is egy szolgáltatás, nevezzük IntelligentHouseService-nek.

Távolról, pl. mobil eszközről ezt a szolgáltatást érhetjük el a Jini architektúrán keresztül. Ez a szolgáltatás fogja össze és vezérli a beállítások alapján a többi szolgáltatást. Az említett ágensek is szolgáltatások, melyek az alacsonyabb szintű, kisebb prioritású eseményekre reagálva vezérlik a ház fontosabb szolgáltatásait. Mivel az IntelligentHouseService is egy szolgáltatás, ő is bejegyzi magát a Lookup Service-nél. A regisztrálás után megkeresi a számára elérhető, a házban található aktív szolgáltatásokat és átadja a vezérlést a KVE-nek. A Központi Vezérlő Egység a beállított algoritmusok alapján vezérli a szolgáltatásokat.

3.3.       Grafikus felhasználói felület

A rendszer grafikus felhasználói felülete lehetővé teszi, hogy a házban található szolgáltatások működését nyomon kövessük, szabályozzuk, elvégezzük az egyéni beállításokat, személyre szabjuk a szolgáltatások működését. A interfész több panelből áll. Az első panelen kérdezhetjük le a ház helységeinek hőmérsékletét és páratartalmát. A lekérdezés mellett ezeket az adatokat szabályozhatjuk is. A második panelon a világítást kérdezhetjük le és szabályozhatjuk. A harmadik panelon a biztonsági rendszer vezérlése található; a házban található kamerák képeit nézhetjük meg és természetesen a biztonsági rendszer állapotát is. A rendszer a beállítások alapján teljesen automatikusan működik. Figyeli a kamerák képeit, a mozgást és a rendszer állapotától függően reagál.

 

 

7.ábra Az intelligens ház alkalmazás felhasználói felülete.

3.4.       Dinamikus, távoli kliens-alkalmazás

A fent ismertetett felhasználói interfész előre programozott interfész paneleket, elemeket tartalmaz. Természetesen egy dinamikus rendszerben, nem garantálható, hogy a kliens interfész előre ismeri valamennyi potenciális szolgáltatás interfészt és rendelkezik annak grafikus felületével. A kliens interfésznek csak egy keretprogramot kell létrehoznia, amelyet dinamikusan a felfedezett szolgáltatások töltenek meg tartalommal (interfész elemekkel).

A Java mobil kód lehetőséget ad arra, hogy tetszőleges szolgáltatások interfészei dinamikusan letöltődjenek a kliens keretrendszerbe. Ezek lehetnek Swing vagy AWT alapú dialógus ablakok, vagy interfész componensek, pl. panelek. A Jini ServiceUI specifikáció tartalmazza a dinamikus, adaptív Jini felhasználói interfészek szolgáltatásának, dinamikus letöltésének metodikáját. Ez a módszer lehetőve teszi egy szolgáltatás számára, hogy potenciálisan több különböző eszközhöz, platformhoz illeszkedő interfészt szolgáltasson, amik közül a kliens program, egyéni preferenciái és hardver korlátai választja ki a megfelelő verziót. A 8. ábra ilusztrálja a dinamikus interfész letöltés elvét az intelligens ház alkalmazásban. Az alkalmazás induláskor megkeresi az Intelligens Ház Szolgáltatást és lekéri az ott bejegyzett, a Ház által vezérelt szolgáltatások listáját. Az így megtalált szolgáltatások grafikus felületét letöltve, a kliens felépíti saját, moduláris felületét.    

     

8.ábra Az intelligens ház alkalmazás dinamikus felhasználói
interfésszel rendelkező változatának felépítése.

4.       Befejezés

A Jini mögött rejlő architektúra megfelelő hátteret jelenthet a jövőben megjelenő és kialakuló szolgáltatások számára. Az általa lehetővé tett dinamikus szolgáltatás-kezelés, szolgáltatás-felfedezés és a hálózatok körében megvalósított objektum-orientáltság biztosítja a hibatűrő, felhasználó barát szolgáltatások kialakulását. A cikkben a harmadik generációs (3G) mobil hálózatok kialakulásával egy időben megjelenő és a Jini architektúra elterjedése által lehetővé váló szolgáltatások egy lehetséges megvalósítási modelljét illusztráltuk.

Az Intelligens Ház alkalmazás segítségével bemutattuk a Jini technológiában és a dinamikus szolgáltatás rendszerekben rejlő lehetőségeket. A példákban megjelenő szolgáltatások illusztrálták a szolgáltatást leíró interfészek központi szerepét. Ezen interfészek szabványosított megvalósításával és a későbbiekben bemutatott interfész változat (proxy) implementálásával válnak elérhetővé a szolgáltatások. Az elkészült intelligens ház program segítségével vezérelhetjük a házban található aktív szolgáltatásokat. A programnak két változata készült el, egy statikus és egy dinamikus. A dinamikus változat teljesen moduláris felépítésű, mely lehetővé teszi a grafikus felhasználói felület dinamikus felépítését. Így az Intelligens Ház Szolgáltatás által megtalált, aktív szolgáltatások grafikus felületét letöltve építi fel saját magát. További tervek között szerepel a vezérlő alkalmazás mobil változatának elkészítése, amely segítségével mobil eszközünkről (mobiltelefon, PDA stb.) érhetnénk el házunk szolgáltatásait, valamint további szolgáltatások tervezése és implementálása.  

5.       Irodalomjegyzék

[1.] Tarmo Anttalainen, Introduction to Telecommunications Network Engineering (2001)

[2.] Tarmo Anttalainen, Mobile Communications (2001)

[3.] Nyékiné G. Judit, Java 2 útikalauz programozóknak 1.3 (2002)

[4.] Theodore S. Rappaport, Vijay K. garg, Ph. D. P. E., Wireless network evolution 2G to 3G

[5.] Sun Microsystems, Jini Specifikáció, http://www.jini.org

[6] Sun Microsystems, A Java programozási nyelv, http://java.sun.com

[7.] Java Micro Edition, http://java.sun.com/j2me

[8.] http://wireless.java.sun.com

[9.] Jini Surrogate projekt, http://surrogate.jini.org