David Grudl je poslední dobou zděšen. Kromě PHP, které občas vyděsí asi každého, se opřel i do ASP.NET. Negativní vyznění článku mě jako příznivce Microsoftí platformy moc nepotěšilo. V komentářích se do argumentace pustil český .NET guru René Stein a jeho argumenty zde rozhodně nechci opakovat, spíš bych chtěl nabídnout pár věcí, kvůli kterým považuji ASP.NET za nejlepší platformu pro webový vývoj dneška (preferuji ji před PHP a Javou, Ruby on Rails neznám). Primárně budu srovnávat vůči PHP, protože toto srovnání je nejatraktivnější :)
- ASP.NET je součástí .NET Frameworku, nikoliv nějakou samostatnou technologií. To má řadu příjemných důsledků, jako třeba nezávislost na programovacím jazyku (je jedno, jestli kód píšu v C#, Javě, Pascalu, Fortranu, JScriptu nebo v čemkoliv), dostupnost velkého množství předpřipravených tříd apod. I většina dalších bodů těží z přítomnosti .NET Frameworku.
- V ASP.NET se programuje, v PHP se skriptuje. Vím, že toto prohlášení je potřeba brát s velkou rezervou a že třeba právě Davidovo Texy! je pravým a nefalšovaným programováním, nicméně asi bude existovat nějaký důvod, proč se na webu php.net píše „PHP is a widely-used general-purpose scripting language that is especially suited for Web development and can be embedded into HTML…“. Naproti tomu je třeba takový C# velmi výkonným obecně zaměřeným objektově orientovaným jazykem, o čemž si PHP může v současnosti nechat jenom zdát.
- Koncept serverových ovládacích prvků je absolutní bomba. Má tolik výhod, že je těžké je všechny vůbec vyjmenovat – namátkou jednoduchý deklarativní zápis, událostně orientované programování, oddělení logiky od HTML kódu, znovupoužitelnost, rozšiřitelnost pomocí dědičnosti, možnost renderovat jiný výstup pro různé klienty atd. atd. To má nedozírné následky pro mnoho věcí, jako třeba udržovatelnost kódu, podporu ve vývojových prostředích apod. Nejedná se jen o syntaktické ulehčení pro vývojáře, ale třeba takový RoundedBox by ani v PHP naprogramovat nešel (aspoň mě nenapadá, jak).
- Vysoká produktivita vývoje je jedním z nějvětších praktických přínosů ASP.NET. Na školních projektech mám vyzkoušeno, že aplikaci dokážu v ASP.NET udělat několikrát rychleji než v PHP.
- Oddělení designu od business logiky. Toho lze docílit ve všech platformách pro webový vývoj, ale styl, kterým to dělá ASP.NET, se mi líbí nejvíc. Serverové ovládací prvky jsou opravdu skvělá věc.
- Bezproblémové nasazení. U PHP se můžu skoro na 100% spolehnout, že doma vytvořená aplikace nasazená na web přestane fungovat. Stejně tak při změně hostingu. Naproti tomu u ASP.NET mám skoro 100% jistotu, že aplikaci prostě uploadnu a ona pojede. To je dáno především tím, že u PHP má konfiguraci v rukou webhostingová společnost, zatímco u ASP.NET ji mohu ovlivnit já sám (pomocí souborů Web.config).
- Flexibilita. Ve verzi 2.0 je ASP.NET nesmírně pružnou platformou a téměř veškeré standardní chování lze ovlivnit nebo úplně přeprogramovat, ať už jde o generování výstupu serverových prvků, poskytování personalizačních, autentizačních, autorizačních a dalších služeb, kešování atd.
- Visual Studio nemá ve světě PHP konkurenci. Není to jen
tím, že Microsoft umí a že třeba Zend nemá na vývoj IDE takové peníze,
ale především PHP jako jazyk ani v nějakém grafickém editoru
příliš podporovat nelze. Pro vývojové prostředí je celkem jednoduché
přeložit
<asp:Calendar>
do vizuální podoby, ale u změti<?php echo...?>
to již tak triviální není (pokud to vůbec lze). WYSIWYG samozřejmě není vše, i jinak je Visual Studio velmi kvalitní IDE a nejnižší Express edice za nulovou cenu jsou přitom lepší než drahé Zend Studio. - Výkonnost. Celá plarforma .NET je velmi výkonná, grafy ukazující srovnání s Javou byly v Microsoftích prezentacích dlouho využívány :) (ale prý už se Java zlepšila). Je rovněž pozoruhodné, že pár studentů z Matfyzu dokázalo na platformě .NET vytvořit výkonnější běhové prostředí pro PHP (jménem Phalanger) než je originální Zend Engine při použití Zend Optimizeru. To už o něčem svědčí…
- ASP.NET je profesionální, komerčně podporovanou platformou. Můžu se spolehnout, že při příchodu verze X+1 nebudu muset upravovat všechny aplikace psané pro verzi X (jako to bylo u přechodu z PHP4 na PHP5). Mám jistotu, že za architektonická rozhodnutí je někdo placen a nese za ně odpovědnost. Mám jistotu, že se do ASP.NET dostane jen vysoce otestovaný kód, který zapadá do dlouhodobé logiky směřování celé platformy. Open source je pěkná věc, ale co se děje v PHP, to občas zůstává rozum stát.
Jsem si vědom toho, že ASP.NET má své negativní stránky. Tou první je závislost na Windows + IIS (Mono není zcela plnohodnotnou alternativou), s čímž souvisí hůře dostupný hosting. Já jsem sice maximálně spokojený s Aerohostingem, kde za málo peněz dostávám opravdu hodně muziky, ale obecně je dostupnost hostingů pro PHP daleko větší. Další věcí, na které bude Microsoft určitě usilovně pracovat, je vyčištění generovaného HTML kódu. Záchvat smíchu při prvním pohledu na zdrojový kód stránky jsem slyšel už od nejednoho PHPkáře.
Celkově jsem ale s ASP.NET velmi spokojen. Je to kvalitní platforma, která mi umožňuje snadno a rychle tvořit i poměrně komplikované záležitosti. Pro mě je to určitě pohodlnější než hodiny a dny něco smolit v PHP.
P.S. Tento článek není namířen proti PHP, existují typy projektů, ve kterých bych tuto technologii preferoval. Článek pouze ukazuje deset důvodů, proč mám k ASP.NET silně pozitivní vztah. To, že se jednotlivé body často odkazují na PHP, můžete považovat za shodu okolností :) Pokud vám to vadí, nahraďte všechny výskytu „PHP“ za „ASP“ :)
Borku, vůbec nepochybuju o tom, že ASP.NET je pro vývojáře úžasná záležitost. V mé kritice jsem tyto věci vůbec nezpochybňoval a řešil jedinou věc: generovaný výstup. Konkrétně tedy způsob, jak se řeší interaktivita serverových ovládacích prvků. Argumentace Reného mě v tom utvrdila – lépe řečeno pochopil jsem, proč můžeme mít pravdu oba.
Taková perlička: http://www.jcxsoftware.com/vsphp/ :-)