A Magic xpa által elkészített üzleti alkalmazások egy előre kiépített rendkívül biztonságos alkalmazás architektúrát is biztosítanak a kész üzleti folyamatok futtatására.
A felhasználói oldalon egy specifikus (vékony) kliens fut, ami független bármelyik böngészőtől. A telepítéséhez használható az Internet Explorer, de a továbbiakban a böngészőre nincs szükséges. A böngésző függetlenség jelentős mennyiségű biztonsági és kompatibilitási problémától kíméli meg a fejlesztőket.
Szerver oldali architektúra és moduljai
A Magic xpa Enterprise Server futtató környezet egy elosztott alkalmazás architektúra melyek komponenseit (moduljait) a Magic xpa szolgáltatja. Automatikus és optimalizált kontextus kezelés, nagy mennyiségű felhasználó egyidejű kiszolgálására tervezve.
WWW szolgáltatás
Az alkalmazások működéséhez egy Web szerver is szükséges, ami fogadja a RIA klienstől érkező http kéréseket. A Magic xpa egyik rétege a Magic xpa Internet Requester továbbítja a beérkező kéréseket a Magic xpa Enterprise Server felé.
Magic xpa Internet Requester
A Magic xpa Internet Requester modul kiterjeszti a Web szerver képességeit, azaz amikor egy RIA kliens elküld egy kérést az eljut Requester-hez, s a modul továbbadja a kérést és a csatolt adatokat a Magic xpa Enterprise Server-nek. Az Internet Requester modul megtalálja az elérhető Enterprise Server-eket az azokat felügyelő Magic xpa Request Broker segítségével.
Magic xpa Request Broker
A Magic xpa Request Broker kezeli az összes elérhető Magic xpa Enterprise Server-t, és átirányítja hozzájuk az Internet Requester felől érkező kéréseket. A Request Broker ezenfelül terheléselosztást és hibakezelést is megvalósít.
Magic xpa Enterprise Server
A Magic xpa Enterprise Server a RIA alkalmazások szíve. Ez a központi futtató egység, ami kezel minden egyes beérkező kérést, és lefuttatja a server oldali alkalmazás logikát, a kérések típusának megfelelően. A Magic xpa Enterprise Server-nek tudnia kell a Request Broker-ek elérhetőségét, hozzájuk kapcsolódik és elérhetővé teszi magát az Internet Requester felé.
A Magic xpa Enterprise Server motor úgy lett tervezve, hogy egyszerre több kérést is tudjon kezelni egyetlen motor is. Ezt úgy éri el, hogy kihasználja a modern szerverek többszálúságát.
A modulok elosztása
A fenti modulok telepíthetőek egyetlen gépre, vagy eloszthatóak különböző szervereken s akár különböző operációs rendszereken.
A modulok közötti kommunikáció
A kérés (request) életciklusa
A RIA kliens által beküldött kérés mindig ugyanazon a szabályozott folyamaton halad végig a kérés feladásától a válasz megérkezéséig. Ez az életciklus minden esetben ugyanaz, függetlenül a kérés tartalmától, felhasználójától, környezetétől.
Kliens – Webszerver
A klienstől a webszerverig a kérés http vagy biztonságos HTTPS protokollon keresztül jut el. Amikor a kérés beérkezik a webszerverhez a webszerverben futó Requester kifejti belőle az adatokat.
Requester – Broker
A Requester megkérdezi a Broker-t, hol találhatóak elérhető Magic xpa Enterprise Server-ek. A Broker átadja a Requester-nek az elérhető Magic xpa Enterprise Server motorok adatait (host, port). Ez a kommunikáció TCP/IP protokollon keresztül történik.
Requester – Engine
Amikor a Requester rendelkezik az elérhető Magic xpa Enterprise Serverek részletes információival, a beérkező kérés részleteit átadja az elérhető Magic xpa Enterprise Server-nek. A szerver motor feldolgozza a kérést, s az eredményt (válasz) visszaküldi a Requester-nek. Ez a kommunikáció TCP/IP protokollon keresztül történik.
Webszerver – Kliens
Amikor a Requester visszakapja a feldolgozott kérés eredményét, ezt a választ visszaküldi a RIA kliens felé a Webszerveren keresztül HTTP vagy HTTPS rétegen.
A RIA életciklusa
Minden RIA alkalmazásnak van egy un. belépési pontja. Ez az az első program ami lefut az alkalmazás indulása elején.
RIA taszk inicializálás
Az első beérkező request után ami egy RIA programot szeretne futtatni, a szerver motor nyit egy új kontextust, egy egyedileg generált kontextus azonosítóval. Egy gyors válaszban (response) tájékoztatja a klienst a kontextus létrejöttéről. A kontextus válasz után a kliens egy újabb kérést küld az Magic xpa Enterprise Server felé, melyben használja a kontextus azonosítóját. Ez a kérés az autentikációt szolgálja. A beállításoktól függően lehet névtelen azonosítás, vagy a szerver motor bekéri a felhasználónevet és jelszót.
A harmadik és egyben utolsó kérés (request) az inicializációs folyamatban azért felelős, hogy betöltesse és futtassa a megfelelő RIA programot.
A szerver válasz
A RIA program indulásakor a szerver válasz egy XML alapú válasz ami a következő elemeket tartalmazza:
Prezentációs réteg
A válasz (XML response) ezen része amit a kliens megkap ha RIA programot akar indítani. Ez a taszk prezentációs rétege. Ez az XML rész pontos form leírást tartalmaz, ahogy a RIA programban kifejlesztették.
Logikai réteg
A RIA programot futtató kliens a szerver XML válaszában egy másik fontos adathalmazt is elkülöníthetünk. Ez a logikai réteg. Ez tartalmazza a kliens oldalon végrehajtandó logikai műveleteket, ahogy a RIA programban le lett írva. Meghatározza az is, hogy mikor van szükség új szerver kérésre.
A prezentációs és logikai réteg statikus. Az alkalmazás működése során nem változik, csak akkor, ha a program újabb fejlesztésen, vagy módosításon esik át. Az alkalmazás szerver generálja ezeket az XML alapú válaszokat, s elrejtve tartja a webszerver és a külvilág elől. Közvetlen a klienshez streamelődnek, akkor amikor a kliens elindítja a megfelelő programot, programrészt. A kliens a kapott fájlokat gyorsítótárazza. Amennyiben a szerver oldalon az alkalmazás változik, a szerver azonnal újraküldi a szükséges fájlokat.
Adat réteg
A válasz XML egy másik halmaza az adatréteg. Itt jelennek meg a taszk működéséhez szükséges adatok a taszk (program) „nézet” definíciója alapján.
Folyamatos interakció
Ha a végfelhasználó használja a programot, szükség lehet szerver oldali teendőkre (tranzakció kommitálás, szerver oldali logika futtatása, stb.)
RIA kliens – Enterprise Server
Minden szerver oldali aktivitáshoz a RIA kliens egy HTTP kérést küld az Enterprise Server felé az előzőekben leírt módokon. Ez a típusú kérés beküldi a módosult kliens oldali adatokat és a használni kívánt szerver oldali logikát XML formátumban.
Enterprise Server – RIA kliens
Az Enterprise Server feldolgozza a beérkezett XML alapú kérést, és egy HTTP választ küld vissza. Ez a HTTP válasz tartalmazza a kliens által újonnan megjelenítendő adatokat, s a megfelelő kliens-oldali logikát is.
A Magic xpa RIA beépített biztonsági funkciói
A Magic xpa több beépített a fejlesztők által sem megkerülhető biztonsági protokollal rendelkezik:
- HTTPS támogatás
- megbízható szállítói tanúsítványok
- titkosított belső kommunikáció
- a továbbított tartalom összekeverése (scrambling)
- lefordított kód összezavarás (Code Obfuscation)
- Csak küldhető adatfolyam (Streamed-only data)
- Titkosított lokális gyorsítótár (cache)
HTTPS támogatás
A Magic xpa beépített https támogatással rendelkezik, ami lehetővé teszi transzparens támogatását a titkosított protokollnak. Az alkalmazások fejlesztésénél nincs szükség explicit módon e szolgáltatás kezelésére.
Megbízható tanúsítványok
A RIA kliens telepítése a Microsoft ClickOnce technológia segítségével történik. Minden egyes RIA alkalmazásnak van egy számolt eredetiség igazoló értéke (manifest), ami a fejlesztő (gyártó) cégre jellemző tanúsítvánnyal van létrehozva és aláírva. A ClickOnce telepítő letöltéskor kiszámolja az alkalmazás hash értékét, és összehasonlítja a manifest-ben tárolt értékkel. Bármilyen eltérés esetén a telepítő nem indítja el az alkalmazást. Ezzel kizárható az alkalmazások illegális módosítása.
Titkosított belső kommunikáció
A Magic requester, Magic broker és a Magic xpa engine közötti kommunikáció titkosított. Aszimmetrikus és szimmetrikus titkosításokat használ. A titkosítási kulcsok és metódusok nincsenek hardkódolva, azaz tetszőlegesen változtatható típusuk és kulcshosszúságuk is.
Az aszimmetrikus titkosítás használata a „handshake”-re korlátozódik (RSA 1024bit). Ettől kezdve a titkosítás szimmetrikus módra vált. Az algoritmus és kulcs hosszúság a környezeti beállításokban megváltoztatható, vagy fejlesztői szinten futás időben is variálható. Minden megnyitott kommunikáció a Magic xpa bármelyik moduljai között, saját szimmetrikus kulcsot használnak, melyek „ont he fly” generálódnak a kézfogó (handshake) után (ami aszimmetrikus titkosítás alatt zajlik le).
Továbbított tartalom összekeverése (scrambling)
A biztonságos HTTPS réteg felett a Magic xpa még egy kódolási szintet beiktat. A RIA kliens és a Magic xpa Enterprise Server közötti kommunikáció során az adatok a Magic xpa saját beépített algoritmusával összekeverve (elkódolva) közlekednek.
Lefordított kód összezavarás (Code Obfuscation)
A Magic xpa RIA kliense kód összezavarást (code Obfuscation) tartalmaz, megelőzve minden olyan kísérletet amely a kommunikáció, az autentikáció vagy a titkosítási algoritmusok felfedésére irányul.
Csak küldhető adatfolyam (Streamed-only data)
Az alkalmazás működéséhez szükséges összes alkalmazás-definíció és alkalmazás adat közvetlen a klienshez van irányítva. Semmilyen ez irányú információ nem tárolódik a Webszerveren, fájlokban, könyvtárakban. Ezek az adatok csak a Magic xpa processzekben elérhetőek, melyek „messze” találhatóak a Webszervertől. Az adatok letöltését kérni nem lehet, csak a szerver küldi ki a megfelelő klienshez.
Titkosított lokális gyorsítótár (cache)
Az alkalmazás működési sebessége érdekében a Magic xpa RIA Client némelyik alkalmazás meta-adatot amit a szerverétől kap lokális gyorsítótárba helyezi. Mintahogyan néhány adatnézeti információt is amíg a munkamenete (session) létezik. Bármilyen lehallgatási vagy illetéktelen módosítási kísérlet ellen a gyorsítótárban lévő adatokat a kliens elkódolja 56 bites DES algoritmus segítségével.