ASP.NET AJAX: “Honnan fogom én ezt megtanulni?”

Igen gyakran keresnek meg olyan kérdéssel, hogy ajánljak egy könyvet, ahonnan ezt vagy azt (az éppen szóban forgó) technológiát meg lehet tanulni. Fontos, hogy lehetőleg egynél többet ne említsek, mert senkinek nincs ideje sokszáz oldalas szakkönyvekből többet is elolvasni. Így volt ez a mai MSDN Kompetenciák Egyetemének szünetében SQL Server kapcsán, és így volt a tegnapi előadásom után az ASP.NET AJAX-szal kapcsolatban is.

A helyzet az, hogy még soha nem fordult elő, hogy röviden tudtam volna azt válaszolni, hogy itt ez a remekmű, tessék, benne van minden. Annak idején, amikor a .NET 1.1-ről nekiláttunk megírni az azóta gyakran csak "Albert István féle fekete .NET biblia"-ként emlegetett könyvet, még volt ilyen ambíciónk, személy szerint bennem ez azóta teljesen szertefoszlott: a technológiák önmagukban is összetettek, sokrétűek, ráadásul összefüggenek egymással. Ma már szinte nincs alkalmazás adatbázis nélkül, tehát nem elég ismerni teszem azt a C#-ot, bizony konyítani kell az SQL-hez is. Ha webalkalmazásról van szó, akkor pedig nem elég az ASP.NET, tudni kell, hogy alul a csupasz HTTP van a maga kérés-válasz modelljével, a kliens oldalon pedig nem tud más futni, mint JavaScript. Ráadásul a kívánt eredmény eléréséhez ezek általában önmagukban nem elegek, együtt kell alkalmazni őket.

Az ASP.NET AJAX kapcsán például a következő három könyv került a kezembe:

Mindhárom könyvről elmondhatom, hogy nagyon jó kiindulópont lehet az AJAX megismeréséhez, ugyanis onnan indulnak, hogy mi kell egy aszinkron weboldalhoz, mi az az XmlHttpRequest, hogyan használható az XML böngészőben és persze ismertetik a JavaScriptet is, majd rátérnek az Atlasra. Kétségkívül van átfedés a három könyv között, és persze van különbség a téma feldolgozásában is. Mégis mindháromról elmondható, hogy nem adnak életképes tudást, ugyanis a termék béta verziójához készültek. Azóta átneveztek szinte mindent, és megszületett az ASP.NET AJAX Futures CTP is. Hogy csak egy példát mondjak, a Microsoft AJAX Library-ről szóló fejezetekből inkább ihletet tudtam meríteni, mintsem a példákat használni.

A hasonló helyzetek elkerülése érdekében a leggyakoribb, visszatérő problémák:

1. A Futures CTP megjelenése miatt született egy Sys.Preview névtér, és a legtöbb kliens oldali kontroll egyelőre ebben található meg. Honnan lehet megtudni, hogy melyik hol van? Ne féljünk belenézni a PreviewScript fájl debug változatába, onnan sok minden kiderül. (A teljes útvonal, kéretik fejből tudni: C:Program FilesMicrosoft ASP.NETASP.NET 2.0 AJAX Futures January CTPv1.0.61025ScriptLibraryMicrosoft.Web.Preview1.0.61025.0Microsoft.Web.Resources.ScriptLibrary.PreviewScript.debug.js) Például, ha a Button osztályt keressük, a fájl megnyitása után keressünk rá a ".Button" kifejezésre, és azonnal kiderül, hogy a Sys.Preview.UI névtérben található. Ezzel szemben az ős Control osztály a Sys.UI névtérben van – egyelőre.

2. Sok tulajdonság megszűnt (legalábbis átmenetileg). Több cikk ír például a checkbox enabled tulajdonságáról. Nyissuk meg a fenti fájlt, keressünk rá arra, hogy ".CheckBox", majd görgessünk le addig a sorig, amely úgy kezdődik, hogy "Sys.Preview.UI.CheckBox.prototype", itt található ugyanis az osztály legtömörebb leírása. Enablednek semmi nyoma. Nosza nézzük meg az ősosztályt! Ha lejjebb tekerünk 25 sorral, ezt találjuk:

    Sys.Preview.UI.CheckBox.registerClass('Sys.Preview.UI.CheckBox', Sys.UI.Control);

Ebből látszik, hogy a Control az ős, de annak is csak visible tulajdonsága van, noha az enabled szerintem sokkal hasznosabb lenne. Reméljük egyszer azért visszakapjuk. Másik gyakori eset, hogy a Select osztályt ma például Selectornak hívják, aki nem hiszi, járjon utána!

3. Máshogy kell hivatkozni a szkriptekre a ScriptManagerben. Már nem kell kiírni a teljes névteret, elég a script nevét megadni, valahogy így:

    <asp:ScriptManager ID="ScriptManager1" runat="server">
        <Scripts>
            <asp:ScriptReference Assembly="Microsoft.Web.Preview" Name="PreviewScript.js" />
        </Scripts>
    </asp:ScriptManager>

Ha nincs $get függvényünk sem, vagy az alábbi függvényhívás nem dob fel egy alert ablakot automatikusan az oldal betöltése után, gyanakodhatunk erre a hibára:

    function pageLoad()
    {
        Sys.Preview.UI.Window.messageBox( "Az oldal inicializálása befejeződött." );
    }

4. Szerver oldalon is megjelent egy preview névtér, a Microsoft.Web.Preview, ami a hasonló nevű DLL-ben található. De a korábbi Microsoft.Web ma már System.Web, hogy jobban illeszkedjen az ASP.NET-hez, így például az UpdatePanel a System.Web.UI névtérben van, mint a Control és a Page osztály, csak éppen a System.Web.Extensions.dll-ben, ami azonban nem a C:WINDOWSMicrosoft.NETFrameworkv2.0.50727, hanem a C:Program FilesMicrosoft ASP.NETASP.NET 2.0 AJAX Extensionsv1.0.61025 mappában lelhető meg (és persze a GAC-ban).

Mindez csak ízelítő, hiszen sok helyen nem csak, hogy a szintakszis más, de egy adott probléma megoldásához elindulni is máshonnan kell, mint ahogyan az a könyvben szerepel. Sajnos ez az egyetlen lehetőség van arra, hogy a termék megjelenéséhez időben minél közelebb a polcokra kerülhessen egy könyv. Nem lehet hónapokat várni, hiszen addigra jön egy újabb verzió, vagy ha nem, a konkurencia biztosan.

Röviden: ebben a szakmában a hagyományos szakirodalom napjai meg vannak számlálva. Van, aki ezt már akkor megérezte, amikor nyilvánvalóvá vált, hogy a Pascalhoz még elég volt egy könyv, de ma már MSDN nélkül nem lehet fejleszteni.

De akkor hogyan, honnan? Úgy tűnik, hogy a legdinamikusabb és legbőségesebb (és persze legkevésbé ellenőrzött) forrás kétségkívül az internet: cikkek, blogok, folyóiratok. Na de kinek van ideje mindezt végigolvasni? Vegyük a mostani konferencia esetét: Dávid Zoltán, Gincsai Gábor, Kereskényi Róbert és Virág András kollégáimmal együtt hosszú heteket áldoztunk arra, hogy az a tartalom, amit a résztvevők láttak (láttatok) így összeálljon. A fent említett könyveken kívül – kis túlzással – szinte mindent elolvastunk, ami az adott témában az interneten rendelkezésre áll, azokat kipróbáltuk, hogy bennünk olyan szinten álljanak össze az ismeretek, hogy azt már megemésztve, rendszerezve tovább tudjuk adni. Nem csak teszt alkalmazásokat készítettünk, hanem bizony éles projektekben is bevetettük az AJAX-ot. A bökkenő csak az, hogy mindez összesítve komoly emberhónapokat jelent, amit nem mindenki engedhet meg magának.

Visszatérve a kezdeti problémához: hogyan lehet a leghatékonyabban elsajátítani egy technológiát, mikor mindenki benne van a napi robotban és sürget a határidő? Csak úgy, hogy előemésztett forrásokkal dolgozik az ember. Aki az önálló tanulást preferálja, ilyen előemésztett forrásként használhatja például a novemberi MSDN konferencia alapján készült .NET 3.0 anyagot a devPORTALon, vagy az ASP.NET 2.0 Induló Készletet, amely remekül megalapozhatja az ASP.NET AJAXos ismereteinket. Aki pedig inkább a csoportos, interaktív tanulást preferálja, annak nem tudok jobbat mondani, mint hogy keressen magának tanfolyamot az adott témában. Sajnos a hivatalos Microsoft tanfolyamok legalább fél évvel a technológia végleges változatának megjelenése után lesznek csak elérhetőek, de lehet olyan céget vagy oktatóközpontot választani, ahol megvan a kompetencia az egyéni, testreszabott tanfolyamhoz, amely a résztvevőkhöz alkalmazkodó szintről indul és olyan tempóban halad, hogy a rendelkezésre álló időt a lehető legjobban kihasználja.

És hogy mi legyen az ASP.NET AJAX-szal? Már töltődnek fel a konferencia előadásai a devPORTALra, lehet csemegézni smile_wink

 

Technorati tags: ,

Vélemény, hozzászólás?

Adatok megadása vagy bejelentkezés valamelyik ikonnal:

WordPress.com Logo

Hozzászólhat a WordPress.com felhasználói fiók használatával. Kilépés / Módosítás )

Twitter kép

Hozzászólhat a Twitter felhasználói fiók használatával. Kilépés / Módosítás )

Facebook kép

Hozzászólhat a Facebook felhasználói fiók használatával. Kilépés / Módosítás )

Google+ kép

Hozzászólhat a Google+ felhasználói fiók használatával. Kilépés / Módosítás )

Kapcsolódás: %s