Klávesové zkratky na tomto webu - rozšířené Na obsah stránky

Začínáme s Atlasem 2

09.05 - 11. dubna 2006 | ASP.NET 2.0

Diagram serverové části Atlasuminulém díle jsme si představili, co to Atlas je, jakou má zhruba strukturu a k čemu se hodí. Jak jsem slíbil budeme se dnes věnovat serverové části Atlasu a ukážeme si, jak jednoduše přetvořit stávající ASP.NET 2.0 aplikaci na AJAXovou. Tak s chutí do toho :)

V minulém díle jsem popsal, jakou má strukturu klientská část Atlasu, v tomto se podíváme na zoubek té serverové. Součástí serverové části jsou komponenty – Extendery, které obohacují současné ASP.NET komponenty o interaktivní chování podobné tomu, jak se chovají komponenty WinForms. Krom extenderů jsou zde ještě komponenty ScriptManger – popsaný v minulém díle – UpdatePanel a UpdateProgress zajišťující a informující o průběhu komunikace klientského skriptu s aplikací na serveru.

Teď trochu odbočím. Možná si vzpomínáte na jednu z novinek ASP.NET, tzv. CallBacky. První zmínky vyvolaly bouřlivé reakce, ale posléze ticho po pěšině. CallBack je alternativou PostBacku, kdy se např. při stránkování v GridView nemusí reloadovat celá stránka, ale je využito objektu XmlHTTPRequest k aktualizaci datové mřížky, čímž se snižuje datový tok a nemusí se celá stránka přerenderovat. CallBack je jistou formou AJAXu, ale většinou je potřeba psát ručně, kusy JavaScriptu a ty registrovat na serveru a posléze je posílat. Tento způsob zdá se mi poněkud neohrabaným.

Zpět k Atlasu. Atlas myšlenku CallBacku dotahuje do použitelné podoby a v poslední verzi dokáže díky CallBackům z obyčejné ASP.NET stránky udělat AJAXovou :) Nyní malá ukázka. Mějme GridView s povoleným řazením podle libovolného sloupce a stránkování.

<asp:GridView ID="GridView1" runat="server" AllowPaging="true" AllowSorting="true"
        AutoGenerateColumns="true" DataSourceID="ZdrojDat">
</asp:GridView>

Takováto mřížka při každém přechodu na další stránku nebo srovnání podle určitého sloupce PostBackuje a překreslí se stránka s požadovaným pohledem. Nyní uděláme lehkou úpravu a k PostBackům docházet nebude, docílíme AJAXu :)

<atlas:ScriptManager ID="TheScriptManager" EnablePartialRendering="true" runat="server" />
<atlas:UpdatePanel ID="GridUpdate" runat="server" Mode="Always">
        <ContentTemplate>
                <asp:GridView ID="DatovaMrizka" runat="server" AllowPaging="true" AllowSorting="true"
                        AutoGenerateColumns="true" DataSourceID="ZdrojDat">
                </asp:GridView>
        </ContentTemplate>
</atlas:UpdatePanel>

Ano, to je skoro vše! Za předpokladu, že jste použili šablonu Atlas WebSite ve vašem Visual WebDeveloperu nebo Visual Studiu – to předpokládá nainstalovaný Atlas z domovské stránky. Nezapomeňte, že každá Atlasová serverová komponenta potřebuje mít ve stránce ScriptManager jinak nebude fungovat.

Tak máme za sebou první ukázku kódu. Docela pohoda ne? :) No, serverový Atlas nejsou jen komponenty, ale také webové služby a bridže. Ono se totiž dá v Atlasu programovat minimálně podle dvou hlavních schémat.

  1. Serverovou stranu využijete pouze na krmení klientské strany daty pomocí webových služeb a na klientu pojedeme všechno v JavaScriptu, XML-Scriptu a XHTML šablonách.
  2. Využijeme podpory CallBacků u serverových komponent a použijeme extendery na vylepšení uživatelského zážitku s klasickými komponentami.

Třetí možností je využití obou postupů, ale pak v tom asi bude pěkný guláš. Druhou možnost jsme si už předvedli, povězme si něco o té první. Tak tedy, Atlas pomocí HttpHandleru přebírá volání webových služeb (ASMX) a přidává vytváření JavaScriptových proxy pro metody služby. Pomocí těchto proxy funkcí komunikuje klientský Atlas s webovou službou. Tady v dřívějších verzích nastal problém, nešlo efektivně konzumovat služby třetích stran, které jsme nemohli donutit, aby nám vracely požadované JS proxy.

Poslední verze přichází s tzv. bridži. Bridž je handler, který konzumuje služby třetí strany a vytváří k ní potřebné proxy funkce. Klientská strana pak volá tento bridž namísto služby. Třetí podporovanou možností je konzumace služeb postavených na WCF dříve známé jako Indigo. Další novinkou poslední verze je XmlDataSource pro klientskou stranu. Můžete konzumovat libovolný XML soubor, pohybovat se kouzlech pomocí XPath a provádět transformace pomocí XSLT. Tak to by bylo ke zdrojům dat.

Prozatím poslední ze serverových částí je možnost vytváření Gadgets. Gadgets jsou kousky kódu – komponenty – určené pro začlenění na portál Live.com (popř. Start.com) a pravděpodobně půjdou tyto komponenty integrovat i do chystaného Desktop Sidebaru ve Windows Vista. Tímto bych zakončil druhý díl povídání o Atlasu a příště bychom si mohli vytvořit nějakou použitelnou aplikaci :)

Zajímavé odkazy

Komentáře RSS

  1.  

    borek

    11.51 - 11. dubna 2006 | #

    Přimlouval bych se za to, abys zvolil nějaký příklad (pokud možno jiný než datagrid ala Scottův todo list) a ten potom implementoval všemi třemi zmiňovanými způsoby. Určitě se na webu objeví řada tutorialů, ale tenhle komplexní přístup by mohl být unikátní.

  2.  

    Aleš Roubíček

    12.18 - 11. dubna 2006 | #

    Jasně, mám připravený příklad na RSS čtečku, myslím že to bude velice zajímavé. Co se týče Scottova příkladu, ten si může prohlídnout každý, tak ho přece nebudu nápadně kopírovat ;) Navíc jeho příklad je dělaný jako webcast a způsob kterým to dělá je prostě pro webcast ideální, já to píšu formou článku, proto jsou na příklady kladeny jiné požadavky :)

  3.  

    kryšot

    22.01 - 28. června 2006 | #

    Jak prosim udelat, aby se mi pre prechodu ze stranky na stranku prekresloval jen content a masterpage zustala stejna? Dik

  4.  

    Aleš Roubíček

    08.17 - 29. června 2006 | #

    [3] kryšot Obávám se, že jsi nepochopil koncepci Master Pages. Neni to nic jako frames, ale pouze šablona, podle které se vyrábějí výsledné stránky.

    Co se týče výsledného efektu, toho by jsi mohl dosáhnout právě pomocí „Atlas“ Frameworku nebo jiné AJAXové aplikace.

    V Atalasu by to šlo např. udělat tak, že si do stránky vložíš asp:MultiView control který bude obalený v atlas:UpdatePanel a přepínání pohledů bude svázáno s updatama stránky, takže by se ti obsah jednotlivých pohledů multi view měl posílat asynchroně a zbytek stránky zůstane stejný.

    Pokud mému popisu nerozumíš nebo ti to nefunguje zkusím napsat článek na toto téma, ale rád bych s dalšími ukázkami v „Atlasu“ počkal na další CTP.

Místo pro tvůj názor

Povinné je jméno a komentář, z e-mailu se rozpoznají Gravatary.
Komentář je formátován pomocí Texy! syntaxu.
Například: **tučný text**, *kurzíva*, "text odkazu":adresa.
Internetové adresy jsou převáděny na odkazy.
Na komentáře se můžete odkazovat pomocí [číslo komentáře].

Nový komentář