A facebook "pattern"
A Modern Kiterjeszthető Webalkalmazásról, avagy az útkeresés...
Az előző postomban arról írtam hogy milyen problémákkal kell szembenézni amikor egy modern, moduláris alkalmazást szeretnénk létrehozni.
A megoldás kutatása közben bukkantam erre a blog-ra (angol nyelvű)
Kivonatolva a bejegyzés lényege:
A modul kisebb funkcionális egység amelyekből többet összerakva a kívánt rendszer felépíthető. A modul üzleti logikát, infrastruktúrát vagy akár felhasználói felületet is definiálhat.
A kompozíció határozza meg illetve definiálja az egyes modulok közti függőségeket valamint a kommunikációt.
A modulok, illetve függőségeinek leírására számtalan módszer áll a rendelkezésünkre, de mindegyik módszernek meg vannak a maga erősségei, illetve gyengeségei.
A Microsoft-os környezetben a Web Client Software Factory áll rendelkezésre
Annak ellenére hogy jó néhány problémára lehet megoldást adni a környezet használatával van egy nagy hiányossága.
Sajnálatos módon ezzel a környezettel sem lehetséges a felhasználói felület moduláris definiciója. (a környezethez adott minta alkalmazás is mindösszesen az üzleti logikára illetve az üzleti logika függőségeire ad választ, de pl az oldalak html (aspx) erőforrásai a runtime futtatási környezetben kerültek definiálásra)
Így sajnos nem lehetséges Valóban moduláris felépítést elérni vele.
(Vessük össze a modul definíciójával: üzleti logika, infrastruktúra, felhasználói felület)
A probléma boncolgatása közben egy lehetséges alternatíva merül fel:
Amennyiben webalkalmazásról beszélünk (márpedig igen) lehetséges a felhasználói felületet iframe struktúrán keresztül dinamikusan beágyazni bármely keretrendszerbe.
A facebook, valamint a facebook alkalmazások tipikus példái ennek a megközelítésnek
Nézzük meg az egyik népszerű facebook alkalmazást (játékot) a zynga által fejlesztett Maffia Wars alkalmazást.
- iframe-be beágyazva Cross Domain kommunikációval beépül a facebook portálba biztosítva a facebook-os modult.
- a facebook Single Sign On szolgáltatását felhasználva biztosítja a zökkenő mentes használatot.
- a facebook szolgáltatás API-ját felhasználva biztosítja az integrációt. (a játékbeli maffián belüli illetve azon kívüli kommunikáció)
Rendszer szinten elemezve:
- A facebook mint keretrendszer biztosítja az API-t (szolgáltatások) illetve az iframe-et amibe a modul beágyazásra kerül.
- A modul a facebook-tól függetlenül egy html controller szolgáltatásként kiszolgálja a kéréseket.
- a két rendszer közti interakciót az iframe-re épülő Cross Site kommunikáció biztosítja.
- a két rendszer közti kommunikáció a publikált API-ra épülve megoldható.
A megoldás további előnyei:
- A keretrendszer komplexitását, tesztelhetőségét új modulok hozzáadása nem befolyásolja.
- A modulok a rendszertől csak annak publikált szolgáltatásain keresztül függnek.
- Az így felépített portál jól skálázható mind modul, mind keretrendszer szinten.
Pl: A megnövekedett forgalom új szerverek munkába állításával megoldható, az ehhez szükséges technológia a webkiszolgálók terén adott. (A kapcsolódási pontok a szolgáltatások URL címei mind a két oldalon...)
Lehetséges vitatkozni, tovább elmélkedni ezen a dolgon, de egy dolog bizton állítható:
A megoldás használható lehet lehet egy moduláris alkalmazás felépítéséhez.
A facebook bizonyította:
- A facebook nem egy kis alkalmazás,
- Számtalan alkalmazás (modul) kapcsolódik már most is hozzá.
- Sok ember használja (terhelhetőség) nap mint nap
Happy Coding