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

Kladivo na čarodějnice

12.19 - 1. března 2006 | ASP.NET 2.0

Dneska začnu sérií článků, která se pokusí prolomit některé mýty okolo ASP.NET 2.0. Spousta webových vývojářů má mylné informace o fungování této technologie a ještě větší skupina nemá informace žádné. To bych se chtěl pokusit napravit.

Začněme od začátku. ASP.NET je součástí .net Frameworku od Microsoftu, ale implementují ho i opensource projekty jako je Mono, které staví na standardizaci dotnetu jako takového. Ano základní bloky dotnetu jsou standardizovány a mají svoji normu ECMA potažmo ISO. Framework samotný je silně postaven na doporučeních W3C.

K samotnému ASP.NET. Spousta lidí si myslí, že je to stejný bastl jako staré ASP a že je jeho pokračovatelem. Nikoliv, ASP.NET bylo celé přepsané, tak aby mohlo využívat výhod jednotné platformy. V ASP.NET můžete využívat v podstatě jakoukoli část frameworku (od ADO.NET, přes práci s grafikou a po vstupně výstupní operace) a využívat jazykové nezávislosti. Velikou nevýhodou ASP bylo, že jste museli mít spoustu vlastních knihoven, aby jste mohli vůbec něco udělat. Tyto knihovny se musely složitě registrovat do systému, na kterém stránky běžely a bylo k tomu potřeba mít administrátorká oprávnění nebo otravovat admina, což mají velice rádi :) S příchodem dotnetu tohle všechno odpadá, vlastní knihovny stačí jednoduše nahrát do adresáře bin v rootu webu a o vše ostatní potřebné se postará běhové prostředí.

To by bylo stručně k technologii. Další mýtem je nekvalitní výstup. Je pravda, že ASP.NET v základu nevypouští z pohledu evangelizace nejmodernější kód. To je pravdou především v ASP.NET 1.x a v ASP.NET 2.0 v režimu výstupu Legacy. Tyto problémy s výstupem jsou ale snadno řešitelné, díky veliké modularitě ASP.NET. Objekt Response, který má na starosti výstup má vlastnost Filter, kterou můžeme nahradit vlastním výstupním filtrem (objekt typu Stream) a přizpůsobit výstup k obrazu svému. Jedno z řešení najdete na ASP.NET Resources. Na výstup se aplikuje sada Regulérních výrazů, které mají na starosti vylepšení kódu. K našemu filtru si připíšeme HttpModul a zkompilujeme do knihovny. Při další použití stačí přidat HttpModul do konfiguračního souboru a vše funguje jak má. Jiným možným řešením je vytvoření vlastního předka pro všechny stránky nebo Master, kde bude Filtr aplikován. Opět si v konfiguraci nastavíme předka pro stránky a jede to.

Teď, když už máme validní výstup, spousta z vás si řekne, že k čemu mi je validní výstup. Když není přístupný. I na to v Microsoftu mysleli. Základní ovládací prvky jsou napsány tak, aby splňovaly podmínky Section 508
a WCAG. I když je kód všech složitějších prvků prasácky tabulkový, je celkem přístupný. Pro mě je však tento fakt nedostatečný, nemám rád znásilňování tabulek k layoutování. Nevěšte hlavy i toto se dá hravě zvládnout, stačí jen chtít. Jedno obecně aplikovatelné řešení jsem zde už psal v článku Beztabulkové renderování controlů v ASP.NET 2.0.

Závěrem bych chtěl poprosit nezasvěcené, aby neodsuzovali technologii, ale vývojáře kteří jsou líní napsat kvalitní kód. Snahy Microsoftu vedou spíše k zpřístupnění webového vývoje i programátorům newebařům. Tím pádem je použití tabulek pro layoutování logické, protože jsou zde předpřipravené kusy komponent, které už nějak vypadají. Nikdo nepředpokládá znalosti CSS. Pro takové lidi je asi klikací metoda ideální a výstup je nějak validní a přístupný, pro ty, kteří kladou důraz i na kvalitu, není moc těžké (pokud tedy vědí jak) se kvalitního výstupu domoci. Ze začátku to chce trochu víc práce, ale pak už jde všechno lehce a samo.

Komentáře RSS

  1.  

    Borek

    16.45 - 1. března 2006 | #

    Tohle by mohl být dost zajímavý seriál, těším se na další díly. Jinak výrazy jsou daleko častěji regulární než regulérní :)

  2.  

    Mordae

    20.18 - 1. března 2006 | #

    Snahy Microsoftu vedou spíše k zpřístupnění webového vývoje i programátorům newebařům.

    A sakra, takze vic „webovych aplikaci“ a min „webovych stranek“?

    Tyto problémy s výstupem jsou ale snadno řešitelné, díky veliké modularitě ASP.NET. Objekt Response, který má na starosti výstup má vlastnost Filter, kterou můžeme nahradit vlastním výstupním filtrem […] Na výstup se aplikuje sada Regulérních výrazů, […] zkompilujeme do knihovny

    No, klobouk dolu, takhle jednoduse jsem si to nepredstavoval… ;] Jak proste, skoro tak rychle, jako vystup parsovat lexikalnim analyzerem typu LEX, ze?

    Obcas mam dojem, ze je neco spatne, ale nemohu prijit na to, o co jde…

  3.  

    David Grudl

    23.19 - 1. března 2006 | #

    Pěkný článek, budu se těšit na pokračování.

    Další mýtem je nekvalitní výstup. Je pravda, že ASP.NET v základu nevypouští z pohledu evangelizace nejmodernější kód.… Tyto problémy s výstupem jsou ale snadno řešitelné… Na výstup se aplikuje sada Regulérních výrazů, které mají na starosti vylepšení kódu…

    Pokud by byl nekvalitní výstup mýtem, proč popisuješ způsob, jak jej vylepšit? Dále píšeš, že problémy s výstupem jsou snadno řešitelné – ale místo snadného řešení nabízíš způsob, jak napravit důsledky. A to je dost podstatný rozdíl. Nakonec – je ta metoda skutečně tak snadná – používá ji každý? Obávám se že je to jen určitý alibismus, že to jde.

    Závěrem bych chtěl poprosit nezasvěcené, aby neodsuzovali technologii, ale vývojáře kteří jsou líní napsat kvalitní kód.

    Tady nejde o odsuzování čehokoliv, ale zcela otevřené označování problémů. Shodneme se na tom, že technologie .NET je velmi zajímavá, ale proč si nepřiznat, že určité aspekty nejsou zdaleka ideální? Proč dokonce tvrdit, že jsou ideální?

    Pokud je ASP.NET určeno (jak píšeš) spíše pro tvůrce s menší znalostí webových technologií, nemělo by tyto technologie o to více zvládat samo?

  4.  

    Aleš Roubíček

    07.15 - 2. března 2006 | #

    [2] Mordae To že svět spěje k webovým aplikacím, je zřejmé a na obyčejnou stránku nepotřebuješ žádnou serverovou technoligii.

    Toto je popis řešení pro ASP.NET 1.x, ASP.NET 2.0 má výstup „kvalitní“ ;) Navíc zde popisované řešení je pořád rychlejší než interpretace PHP – celé je to kompilované ;)

    [3] dgx Mýtus je, že se nedá kvalitního výstupu dosáhnout. Někdo někdy četl, že to možná jde ;)

    Ad. ideální aspekty. Nikde jsem netvrdil, že jsou ideální, viz závěr. ASP.NET poskytuje jak snadný vývoj pro newebaře, tak obrovskou sílu pro webaře, který ví co a jak.

    V tomto článku jsem se zabýval ASP.NET více méně obecně, když bych měl srovnávat ten obrovský skok mezi ASP.NET 1.x a 2.0 vydalo by to na další článek. :)

  5.  

    Daniel Steigerwald

    10.43 - 2. března 2006 | #

    Upravení výstupu pomocí Response filtru je v ASP.NET 2.0 IMHO úplně zbytečné. Používám ho, pokud opravdu není jiná možnost, například pro uzpůsobení html flash injection profesionálních graf komponent Dundas. Řeknu to ještě jednou. V ASP.NET 1.1 – nevalidní výstup, který bolí nejvíce, je způsoben serverovým formulářem (form runat=„server“) Ten ale na nějaké stránky vůbec nepotřebujeme! User Controls, Labels, DataGrid, Literals.. vše funguje bez serverového formuláře a kód máme tímto na 100% pod kontrolou. Serverový form je nutný pouze pro controls, které způsobují / vyžadují postback a to pouze v případě, že chceme využít automatické parsovaní POST dat pro automatické odpálení server event handlerů. Nic mi ale nebrání použít klasickej Request + atribut name. Takhle stvořím stránku s kvalitním výstupem jedna dvě. viz: http://karel.ste­igerwald.cz/, atd. U webových aplikací v ASP.NET 1.1, kde jsou mraky controls , které serverový formulář vyžadují (např kalendář) mě jedna, dvě chyby netrápí. Spíše problém v defaultním template (zbytečné metatagy atd.), který si vývojáři nejsou ochotni měnit (a pak to dopadá jako web narodního divadla). Kdo ale není línej, změní i to: viz.http://www­.aspnetresources­.com/articles/re­mastering_web_tem­plates.aspx V ASP.NET 2.0 je strict validni i kod generovany serverovym formulařem, takže není co řešit.

  6.  

    BST

    12.55 - 2. března 2006 | #

    Článku chybí jedna drobnost, a to odkaz na normu ECMA/ISO pro .NET 2.0

  7.  

    Aleš Roubíček

    15.49 - 2. března 2006 | #

    [6] BST

    Ano základní bloky dotnetu jsou standardizovány…

    http://msdn.mi­crosoft.com/…me­work/ecma/

  8.  

    Michal Till

    22.13 - 15. září 2006 | #

    Nejsem si jist, jestli autor chápe dobře současný „Web 2.0“ trend. Termíny jako „vylepšení kódu“, „aplikování sada Regulérních výrazů“, „neznalost css“ – to je naprosto opačný přístup vesmyslu „pomocí ASP/.NET lze také udělat špičkovou aplikaci. Web 2.0 je víceméně bottom-up approach, při kterém se zjistilo, že poskládáním mnoha dílů, které na svých malých pískovištích předběhly dobu, získá výsledek obrovský leverage. A leverage – o tom Web 2.0 je (nakonec všechny ty DIGGy, GMaily apod. bylo možné funkčně ekvivalení napsat před deseti lety, že). Nejsem odborník na .NET, můj názor vznikl víceméně extrapolací názorů na ty Microsoftí věci, o kterých mám nějaký přehled. Naposled se do "křivky“ velmi dobře trefil (v negativním slova smyslu) jejich portál Live.

  9.  

    Aleš Roubíček

    21.07 - 19. září 2006 | #

    [8] Michal Till Myslím, že mimo mísu je tu někdo jiný…

  10.  

    Zdeněk Lehký

    12.07 - 23. října 2006 | #

    Jsem na rozpacích, co znamená pojem „milné informace“. Jsou smilné informace, ošizené o z nebo autor kromě toho, že moc nerozumí popisované problematice neumí ani pořádně česky. Aspoň by si mohl zapnout kontrolu pravopisu nebo si nechat svůj text zkontrolovat od nějakého žáka základní školy.

  11.  

    Aleš Roubíček

    14.21 - 23. října 2006 | #

    [10] Zdeněk Lehký Koukám, že nejsem jediný, komu dělá čeština problémy. A pokud problematice rozumíte mnohem více, proč nepošlete odkaz na váš názor na danou problematiku. Proti věcné kritice nic nemám, rád si zasvěceně podiskutuji, ale pokud se chcete bavit o hovně a kritizovat moji neslavnou češtinářskou zručnost, tak si příště raději takový komentář odpusťtě.

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ář