2009. november 18., szerda

A Velocity halott. Éljen az AppFabric!

De kezdjük az elején. Mi is az a Velocity? A Microsoft cache megoldása.
De hát eddig is volt cache megoldásuk, nem? System.Web.HttpRuntime.Cache, és kész. Minek új?

Nos, több ok miatt is.
A .NET Framework, illetve a C# nyelv 4.0-ás verziója kapcsán leginkább a dynamic-cal vannak tele a blogok, pedig máshol is történnek érdekességek. Például a caching területén: az eddigi cache megoldással több gond is volt, szám szerint három:

  1. Nevezéktanában erősen kötődött a webhez - pedig nem felétlenül csak webalkalmazásokból szerettük használni. Ez inkább csak szépségiba, de valóban nem teljesen keresztény megoldás egy akármilyen library-ba a System.Web.dll-t bereferenciálni, és első látásra elég érthetetlen a HttpRuntime-ot szólógató hívásokat látni.
  2. Az API-ját is az elsődleges, webes felhasználáshoz tervezték. Nincsenek benne igazán jól használható bővíthetőségi pontok.
  3. Nem elosztott. Minden egyes AppDomain saját cache példánnyal rendelkezik, azaz egy nagyobb (web)farmon ugyanaz az objektum kétszer-négyszer-sokszor is be lehetett cache-elve.
Az első két problámára a cache alapos átfaktorálása lett a megoldás: a .NET Framework 4.0-ban az eddigi funkcionalitás külön assemblybe (System.Runtime.Caching.dll), a System.Runtime.Caching névtér alá költözött, az API-ja alaposan átalakításra került, és számos extensibility point is bevezetésre került.
A harmadik pontra azonban ez nem megoldás. Arra egy külön szoftverkomponenst kellett készíteni, ez lett a Velocity: egy nagyteljesítményű, skálázható, in-memory alkalmazás cache.

A Velocity nem az eddig megszokott, a "te AppDomain-edben lakok, key-ekkel és CLR objektumokra mutató refereciákkal bűvészkedek, gyakorlatilag én vagyok a speciális-szuperokos Dictionary" típusú cache. A Velocity egy out-of-process megoldás (in practice: egy Windows Service), ami szerializált formában képes objektumokat tárolni oly módon, hogy azokat több gép között szétszórja. A cache-be való berakás, az onnan való kivétel transzparens, a klienskódnak nem kell tudni, hogy az objektuma hova kerül, vagy honnan jön, és egyáltalán hány cache szerver ketyeg alatta.

Ezt a Velocity-t már jó ideje fejlesztgeti a Microsoft, a legutolsó, harmadik CTP áprilisban jelent meg - akkor szó volt róla, hogy rá néhány hónapra akár release is lehet. Aztán volt szó egy CTP 4-ről, ami sosem jelent meg, helyette viszont jöttek pletykák arról, hogy majd a .NET 4.0-val együtt, aztán azóta csönd.
Na hát ez a Velocity szűnt most meg. Szerencsére nem őrült meg a Microsoft, mindössze annyi történt, hogy a Velocity a rendkívül fantáziadús "Caching" néven a Windows Server AppFabric része lett.
Az AppFabric WF és WCF témakörben tartalmaz még okosságokat (ezek eddig "Dublin" néven futottak). A nagy örömre mindjárt meg is jelent az AppFabric Beta 1.

A cachingről már nagyon régóta szeretnék írni - ha lesz időm, írok is, mert nagyon pörgős téma mostanság. Esküszök! Lassan úgy is itt vannak az ünnepek, míg más a bejglit tömi, mi lehetne nagyobb mulatság, mint elosztott cache-t tömni?
Na majd meglátjuk. Addig is: viszlát!

0 megjegyzés:

Megjegyzés küldése