Korábban már írtam néhány olyan komponensről vagy szolgáltatásról, melyek a tervek szerint az ASP.NET AJAX részei lesznek. Nos, a jelek szerint mégsem :(
Tavaly elkezdtem boncolgatni a Microsoft AJAX Library azon részeit, amik még nem a támogatott csomag részei, hanem csak az ASP.NET Futures csomagban érhetőek el. Ezek közül számomra két terület különösen kedves, a kliens oldali vezérlők és a kliens oldali deklaratív adatkötés. Akik esetleg nem látták az erről szóló előadást a tavalyi Web Konferencián:
- A kliens oldali vezérlők JavaScriptben implementált osztályok, amik a szerver oldali vezérlőkhöz nagyon hasonlóan viselkednek. Létezik például Sys.Preview.UI.TextBox osztály, aminek van Text tulajdonsága, amit a get_Text és set_Text metódusokkal lehet kiolvasni. Elfedi az egész HTML DOM-ot és a böngészőfüggő részleteket, ráadásul a modell teljesen ismerős a .NET világból, csak a szintakszis JavaScriptes.
- A kliens oldali adatkötés lehetővé teszi, hogy kliens oldali vezérlőket kapcsoljunk egymáshoz, vagy éppen adatokhoz, sőt mindezt deklaratívan XML-Script formátumban megtehetjük.
Legalábbis úgy volt, hogy majd egyszer megtehetjük. A konferencia idején még nagyon kezdetleges változatban volt mindez elérhető, alap funkciók működtek és az út világos volt, hogy merre haladunk. Mivel azonban sok hír nem látott nyilvánosságot ezeknek a funkcióknak a jövőjéről, bedobtam egy levelet a Microsoft Regional Director levlistára és hamarosan meg is jött Scott Guthrie válasza, majd pár nappal később az információk publikusan is megjelentek a CodePlexen. Érdemes elolvasni az ott közzétett ASP.NET AJAX Roadmap doksit, számos változást terveznek:
- Ami szimpatikus, hogy a sokféle közzétételi formát egy kicsit gatyába rázzák, jobban követhető lesz, hogy mi minek a részeként érhető el és honnan, mi támogatott és mi nem. Ez jó.
- Nagy hangsúlyt fordítanak a kliens oldali adatkezelésre, így a template alapú adatkötésre is. Ez is jó.
- Sajnos nem vagyok kibékülve azzal a szintakszissal, amit majd el kell viselnünk. Íme egy példa, a feladat megérteni, hogy mit csinál (ennél van “szebb” is :)):
<div id=”repeater1”></div>
<div id=”template1” class=”sys-template”>
<h2><a href=”{{ ‘products/’ + id }}”>{{name}}</a></h2>
<p>{{description}}</p>
</div>
<script type=”text/javascript”>
Sys.Application.add_initialize(function() {
$create(Sys.UI.DataView, {
template: $get(“template1”),
data: myData
}, {}, {}, $get(“repeater1”));
}
</script>
- Sajnos számomra még mindig nem egyértelmű, hogy mindebből mikorra lesz valami és ez szomorít el legjobban :(
A friss információk alapján úgy látom, hogy még jó darabig nem célszerű olyan projektet tervezni, amik ezekre a Futures funkciókra épülnek, ez most óriási változás. Az XML-Script támogatás a jelek szerint nem fog megszületni, bár ezt így nem láttam leírva (csak azt, hogy bonyolult és lassú). Persze ez még csak roadmap, aki szereti a bétázást, próbálja majd ki és írja meg a véleményét a fejlesztőknek!