K zamyšlení v nadpisu mě přivedl článek ASP.NET isn't always the right tool. Napsal ho člověk, který má ASP.NET rád, pracuje s ním a může se pyšnit titulem ASP.NET MVP. Přesto do jednoduchých scénářů doporučuje PHP nebo podobné technologie. Hm…
V článku Karl Seguin píše, že ASP.NET je skvělá platforma pro enterprise vývoj webových aplikací, ale že je pro většinu „běžných“ webových vývojářů příliš složitá – musejí zvládnout objektově orientovaný jazyk, rozsáhlý .NET Framework, musejí se naučit používat životní cyklus stránky, postback, viewstate a řadu dalších věcí, které jsou na jednu stranu mocné, na druhou stranu znamenají takový posun paradigmatu webového vývoje, že se pro řadu vývojářů stává spíš nepřítelem než pomocníkem. Pro některé jednodušší scénáře proto Seguin doporučuje PHP nebo ASP (bez .NET).
Z vlastní zkušenosti můžu říct, že ASP.NET má skutečně poněkud pozvolnějí křivku učení. Pokud člověk zvládá HTML, CSS, základy programování a tak, může v PHP začít dělat reálné věci už za pár minut. Pokud se o totéž pokusí u ASP.NET bez znalosti celého frameworku a koncepce ASP.NET, brzy narazí.
Kde nastala chyba? Jak je možné, že Microsoft MVP pro jednoduché scénáře doporučuje PHP? Je ASP.NET v principu tak komplikované? Vydal se Microsoft špatnou cestou? Nastavil výchozí chování webů vytvořených ve Visual Studiu tak špatně, že to některé lidi děsí? Je posun paradigmatu webového vývoje tak značný, až se stává nežádoucím?
Asi od každého trošku, ale rozhodně si nemyslím, že se Microsoft vydal špatnou cestou. Udělal dobrou věc – pro lidi, kteří jsou ochotni investovat trochu úsilí a proniknout do tajů fungování ASP.NET, připravil kvalitní platformu výrazně zjednodušující webový vývoj. Je pro některé lidi nepřekonatelným problémem objektově orientovaný jazyk? Určitě. Vadí někomu událostní model při webovém vývoji? Nepochybně. Je pro někoho ASP.NET až příliš velkou abstrakcí nad HTML, HTTP apod.? Vsadím se, že ano. A chtěl bych, aby se Microsoft vydal třeba cestou Ruby on Rails nebo jiného MVC frameworku s dynamickým jazykem v pozadí? Ne.
ASP.NET je skutečně komplikované. V PHP jsem mohl pracovat prakticky hned, zatímco u ASP.NET jsem prvních pár dní strávil čtením a čtením. Byla to však velmi dobrá investice – nejen že je v ASP.NET většina věcí hotová rychleji než třeba v PHP, ale znalost .NET Frameworku lze využít i ve zcela jiných oblastech. No a když se podívate třeba na podobnost ASP.NET a XAML, je jasné, že čas nebyl ztracený zbytečně :)
Článek Karla Seguina má proto trochu zavádějící název – ASP.NET je vždy správným nástrojem, akorát ne pro každého. Bez dobrého pochopení ASP.NET je lepší se této platformě zdaleka vyhnout, ale osobně jsem přesvědčen, že proniknout do jejích tajů se vyplatí každému, i kdyby nakonec skončil u PHP.
Nikomu se přece nebrání začít psát v ASP.NET stránky tak, jako v ASP, čili s využitím všehovšudy šesti insintrických objektů, jelikož ASP.NET je s ASP kompatibilní shora. Nemusíš dokonce nic vědět ani o žádných třídách a konstrukcích OOP, ASP.NET stránka se dá napsat z voleje stejně, jako PHP.
Postupně lze do portfolia další funkce frameworku přibírat a nastavit si tak učící křivku dle potřeby.