ASP.NET Page pro začátečníky
Poměrně často přicházím do kontaktu se začátečníky, kteří se chtějí naučit pracovat s technologií .net. Jejich volba pak většinou míří na web a tedy použítí a tvorbu asp.net stránek.
Před takovými začátečníky však stojí poměrně velký znalostní kopec, který musí překonat, než pochopí, jak takovou stránku správně ovládat. Jelikož má asp.net stránka - třída Page - poměrně bohatý událostní model, není vždy úplně jasné a na první pohled zřejmé, co v kterou chvíli dělat a kam vlastně soustředit veškeré své úsilí.
Přestože jsem byl v prvních rocích též nadšen, obdobně jako třeba Michal Valášek - vzpomínám ještě na jeho první prezentaci o asp.net - s příchodem asp.net 2.0 toto mé nadšení malinko opadlo a já se začal dívat i na jiné možnosti. (To, jakou možnost jsem nakonec zvolil, nechám ještě chvilku v utajení, abyste si mohli zasoutěžit.)
A třeba i tento týden, kdy jsem napsal článek o tom, kdy získat a navázat data na zobrazovací prvky, mě jen utvrdil v tom, že pro začátečníky by to chtělo něco trošku jednoduššího.
ASP.NET beginner page
A tak mě napadlo, jak by tak mohla vypadat, alespoň co se týká událostního modelu taková beginner page, stránka určená pro začátečníky, nebo i pro ty, kteří nepotřebují využít všech nabízených událostí - a že se to zas tak často děje.
Co by taková třída měla umožnit. Stále je založena na implementaci page controlleru, stejně jako současná Page, avšak má jen potřebné události, které je nutné obsloužit a zároveň je malinko, logičtěji, uspořádává. Tím by mělo být zároveň zajištěno, že by nepřipustila, aby docházelo k poměrně častým, školáckým, chybám.
Posloupnost obsluhovaných událostí
- Init - v této události má vývojář možnost ovlivnit / zrekonstruovat objektový model stránky ještě před tím, než budou dotažena data ze zaslaného requestu. Toto obnovení by v případě úplných začátečníků mohlo být nahrazeno uložením objektového stromu do ViewState. Pro vyvolání událostí pak použít AutoEventWireup a začátečníka událostí nezatěžovat.
- Change a Command - zpracování reakcí na klientovo chování - interakci s aplikací. Jak už jsem se zmínil v předchozím článku, Obsluhu události Load můžeme vynechat, neboť data můžeme získat i později a s menší pravděpodobností výskytu chyby.
- DataRetrieve - po zpracování reakcí od klienta je možné na jejich základě získat data a navázat je na zobrazovací prvky
Pro začátečníka myslím plně dostačující událostní model. Samozřejmě stále by měl možnost reagovat na události zobrazovacích prvků jako třeba GridView a jeho RowDataBound, které nesouvisí s událostmi stránky.
Teorie krásná věc
To co jsem výše popsal je jen moje teorie, která vznikla jako reakce na události uplynulých dnů a z otázek asp.net začátečníků. Jak ji však přenést do praxe? Je mi celkem jasné, že asi nepůjde jenom podědit třídu Page a skrýt události, ale bude to chtít vytvořit vlastní implementaci asp.net Page controlleru a zároveň zachovat veškerou funkcionalitu, která je v současné chvíli.
Takto popsané to vypadá velice jednoduše, ale co na takový první pohled takto vypadá, většinou se změní ve složitý oříšek, a pokud by se našel dobrovolník, který by chtěl pomoci, určitě se nebudu zlobit, když se zapojí a bude alespoň konzultantem. Zatím mám v hlavě nápad a chuť jej realizovat, teď ještě najít dostatek času a pustit se do toho.
Myslíte, že to má vůbec význam, se do toho pouštět a nebo vidíte nějaký neřešitelný zádrhel?
4 Comments
rarouš said
Před rokem bych možná mluvil jinak, ale dnes už vím jasně, že ASP.NET WebForms bych začátečníkovi rozmluvil a doporučil mu MonoRail. Ovšem problém je v tom, že neexistuje dostatečná literatura, šel by někdo spíš do toho? :) Já už mám něco rozepsaného...
Onecar said
Jako začátek pro začátečníky hezký počin, ale asi bys měl dopsat, co mám stáhnout, abych mohl v ASP.NET psát. Nikdy jsem totiž o něm neslyšel, jediné s čím mám zkušenosti je PHP (a pochopitelně HTML, CSS, JavaScript, SQL).
Petr said
Onecar: http://vbnet.cz/clanek--44-zaciname_s_asp_net_dil_1_uvod_do_asp_net_2_0.aspx
Onecar said
Mnohokrát Petře děkuji, už čtu :-).