Microsoftí lízátka pro začátečníky: Šance pro boj s PHP nebo krok zpět?

Poslední dobou se doslova roztrhl pytel se snahami Microsoftu přitáhnout ke své vývojové platformě nové, zejména neprofesionální a začínající vývojáře. Je to dobře, nebo špatně? A má Microsoft šanci na úspěch? Nad těmito otázkami se dnes zamýšlí v rubrice Subjektivně Michal Valášek.

Změnu v oblasti webových aplikací, kde je platforma ASP.NET tvrdě válcována PHP, má přinést nový view engine Razor a zjednodušený vývojový nástroj WebMatrix. Visual Studio LightSwitch má zase obnovit slávu „business“ aplikací psaných ve VBA a Accessu.

Před pěti lety jsem v článku Nechejte maličkých přijíti ke mně skuhral nad neschopností Microsoftu přitáhnout k programování začátečníky, zejména ve webové oblasti. Od té doby se změnilo poměrně hodně. Microsoft uvedl Express edice vývojových nástrojů a přesně v souladu s mými věštbami je nechal zadarmo a bez omezení. Také za posledních pět let přibyla pěkná řádka nových technologií, které jsou většinou dostupné zdarma.

Microsoftu se také konečně podařilo kolem své platformy .NET vytvořit skutečnou vývojářskou komunitu. Vyrojila se spousta blogů a dalších projektů, provozovaných nadšenci z lásky k technologii. Přesto ale zejména u začínajících programátorů na webu prohrává. Proč tomu tak je a co s tím chce Microsoft udělat?

Rodina nástrojů pro začínající a neprofesionální vývojáře má zahrnovat:

  • Visual Studio Express Editions – speciální edice Visual Studia, dostupné zdarma (je jich víc, separátně pro VB.NET, C#, C++, Windows Phone a pro web). Tady se nejedná o žádnou novinku, Express edice jsou k dispozici již od verze 2005.
  • Microsoft WebMatrix – extrémně zjednodušený nástroj pro tvorbu webů, který je momentálně v beta verzi. Bude výrazně jednodušší, než Visual Web Developer Express a bude k dispozici zdarma. Historická poznámka: Microsoft již v minulosti měl produkt jménem WebMatrix, byl to první pokus o volně dostupný editor pro ASP.NET 1.x. Nikdy se nerozšířil, protože ze strachu o prodeje Visual Studia do něj Microsoft neimplementoval mnoho použitelných funkcí.
  • Visual Studio LightSwitch – tajemná edice Visual Studia, o níž jsou k dispozici pouze kusé informace. Má sloužit k vývoji „business data-driven aplikací“, z čehož (a dalších náznaků) lze soudit, že má jít o jakéhosi ideového nástupce Microsoft Accessu a Visual Basicu for Applications. Na rozdíl od Express edic a WebMatrixu nemá být zadarmo.

Spolu s uvedením beta verze WebMatrixu také Microsoft představil nový view engine pro ASP.NET, nazvaný „Razor“. Po ASP.NET Web Forms a ASP.NET MVC se jedná již o třetí způsob, jak psát v ASP.NET webové aplikace.

Reakce většiny mně známých ASP.NET programátorů na Razor a WebMatrix (a přiznám se, že i první instinktivní reakce moje) by se dala shrnout známou zkratkou „OMGWTF“.  A reakce Microsoftu by se dala shrnout jako „vy na to nekoukejte, to není nic pro vás“. Po hlubším zamyšlení pokládám obě jmenované reakce za nesprávné.

Express Editions vs. WebMatrix

Nejčastěji kladenou otázkou při diskusi o Express editions vývojových nástrojů je: jaká jsou omezení? Největší jejich slabinou a zároveň sílou je, že správná odpověď je „žádná“. Vyšší edice Visual Studia vám nabídnou lepší komfort při práci, podporují pluginy, týmovou spolupráci a podobně, ale programování v Express a vyšších edicích se nijak neliší. Jakoukoliv aplikaci napíšete zcela stejným způsobem v libovolné edici. Express vám vývoj nijak nezkomplikuje, ale ani neusnadní.

Je to tak trochu jako s auty a řidičákem: na miniaturního Smarta potřebujete stejný řidičák jako na terénní BMW. Musíte znát stejné věci a projít stejnými testy.

WebMatrix má výrazně menší možnosti, ale zároveň též neporovnatelně jednodušší ovládání. Má pár mega a nainstalujete ho za pět minut. Jeho zásadním účelem není napsat aplikaci od základu (i když i to je možné), ale spíše stáhnout již existující aplikaci, upravit ji a nasadit. To je typický úkol neprofesionálního vývojáře: ne napsat něco nového od základu, ale stáhnout nějakou existující free aplikaci, upravit ji k obrazu svému a nasadit ji.

Vývojáře zvyklé na „velké“ vývojové nástroje WebMatrix rozhodně neoslní. Má zcela jinou logiku ovládání a daleko méně možností. Je to srovnání podobné, jako srovnávat Photoshop s jednoúčelovými prográmky na úpravu fotografií: jakmile se jednou naučíte používat Photoshop, k jednoduššímu programu se nebudete chtít vracet. Ale velká část uživatelů neupraví jedinou fotku, pokud k tomu budu jako jediný nástroj mít Photoshop.

WebMatrix je také hodně optimalizovaný pro Razor view engine, i když by měl umožnit použití obou starších technik. Ostatně, Razor je podle mého názoru ještě důležitější než editor

Tři cesty k ASP.NET

Ač se o tom obecně mnoho neví, ASP.NET nabízí tři základní způsoby, jak vyvíjet webové aplikace. Mají být v zásadě rovnocenné, a to jak co do schopností, tak co do podpory v budoucnu. Časté obavy, že např. Web Forms budou do budoucna upozaděny a bude se rozvíjet jenom MVC (nebo naopak) jsou tedy neopodstatněné.

ASP.NET Web Forms

Web Forms představují služebně nejstarší způsob, jak psát webové aplikace v ASP.NET. Kromě toho, že je nejstarší, je také nejrozšířenější. Proto většinou když lidé mluví o ASP.NET (zejména o jeho výhodách a nevýhodách), mluví ve skutečnosti o Web Forms.

Základní logikou Web Forms je oddělení vzhledu (HTML markupu) od backendového kódu. Toho se dosahuje především používáním serverových ovládacích prvků (server controls), z nichž je stránka složena a které ve výsledku generují HTML.

Tento způsob vývoje je velmi rychlý a umožňuje velkou opakovanou použitelnost jednou napsaného kódu. Kombinací ovládacích prvků, které jsou součástí .NET Frameworku samotného, od třetích stran a vlastních lze obvyklé aplikace vyvíjet snadno. Vlastní stránka (web form) pak slouží v podstatě jenom jako kontejner jednotlivých komponent a má minimální funkčnost.

Typicky uváděnými nevýhodami ASP.NET Web Forms je ztráta kontroly nad generovaným HTML kódem a nárůst velikosti stránek kvůli ViewState, do kterého se serializují stavová data.

Web Forms jsou velmi komplexní systém, který zůstává většinou vývojářů bohužel nepochopen, a výše uvedené nevýhody oni nejsou schopni odstranit – je to sice jednoduché, ale vyžaduje to jistou míru porozumění a pochopení používané technologie. Programátor nemá nad nižšími úrovněmi, jako je přímá práce s HTTP požadavkem a odpovědí či generování HTML kódu, bezprostřední kontrolu.

Logika Web Forms vznikla před více než deseti lety a měla usnadnit přechod k webovému vývoji newebovým programátorům, kteří do té doby vyvíjeli „tlusté klienty“. To může nicméně představovat problém pro začátečníky, kteří nikdy takové aplikace nepsali, proto mají Web Forms nepříznivou křivku naučení.

Začátečníci jsou obvykle schopni ve Web Forms aplikaci nějak zbastlit dohromady vizuálním návrhem, ale taková aplikace má obvykle mnohé neduhy, které jsou potom vytýkány jako chyba technologie.

ASP.NET MVC

V roce 2007 Microsoft přišel s druhým způsobem, jak psát ASP.NET aplikace, totiž s ASP.NET MVC. Zde je implementován architektonický vzor „model-view-controller“, populární i v jiných frameworcích, z nichž asi nejznámější je Ruby on Rails.

Oproti server controls má v tomto případě programátor přímou (nikoliv větší) kontrolu nad generovaným HTML kódem. Další výhody vyplývají z použití MVC patternu, zejména tedy že je možno jednotlivé „vrstvy“ aplikace vyvíjet a testovat nezávisle na sobě. ASP.NET MVC umí pro generování výsledného HTML používat různé šablonovací systémy (view engines). Výchozím view engine jsou ořezané Web Forms, ale existuje jich celá řada.

Příchod MVC sice potěšil řadu technických nadšenců a dočkal se v ASP.NET kruzích jistého rozšíření, ale pro nováčky je minimálně stejně nepochopitelný, jako Web Forms. Pro člověka, který má jenom matné tušení, co je cyklus a co podmínka, je sama idea MVC patternu principiálně nepochopitelná.

ASP.NET Razor

Razor je novinka, kterou Microsoft představil veřejnosti začátkem července. Striktně technicky vzato se nejedná o „konkurenci“ předchozích dvou přístupů. Razor je principiálně view engine, který může být použit v kombinaci s MVC nebo s Web Forms.

Jeho síla nicméně spočívá v tom, že ho lze pro jednodušší situace použít samostatně, a lze s tím začít velmi rychle, bez jakýchkoliv předchozích znalostí. Stačí vzít HTML soubor, změnit jeho příponu na .cshtml a napsat zavináč. Stejně jako stačí soubor přejmenovat na .php a napsat <?. A to je vlastnost, ve které konečně Microsoftu svítá šance oslovit začátečníky.

Profesionálové se při představě bastlení špagetového kódu mezi HTML – pro což je právě Razor ideální – znechuceně šklebí (přinejlepším), ale přiznejme si, že velká část aplikací taková prostě je a že také většina z nás takhle začínala. Frameworky, návrhové vzory a abstrakce jsou úžasná věc, ale programátor k nim musí dojít, představa, že na nich bude začínat, je nereálná.

Ačkoliv tedy z Razoru slintají blahem i někteří zkušení programátoři, kteří ho chtějí používat jako view engine pro MVC, skutečná síla, a troufám si říct, že i hlavní důvod jeho vzniku, je právě v možnosti samostatného použití pro jednoduchý vývoj aplikací začátečníky.

Tomu ostatně napovídá i dosavadní dokumentace. Informace na stránce „WebMatrix Fundamentals“ (http://www.as­p.net/webmatrix/fun­damentals) jsou patrně nejlepším úvodem do programování pro dosud nepolíbené, který jsem zatím viděl.

Razor jako „programovací jazyk“ (píšu v uvozovkách, protože ve skutečnosti je za tím C# nebo VB.NET), WebMatrix jako vývojové prostředí a SQL Server Compact Edition 4.0 jako databáze tvoří dohromady celkem pěknou platformu pro jednoduché aplikace. Je téměř jisté, že stejně jako původní PHP a původní Active Server Pages tahle jednoduchost a nestrukturovanost programování povede k tvorbě dost hrozných aplikací a aplikací příliš velkých, které by si nějaký ten framework zasloužily, ale postupně se vyvinuly z těch malých a jednoduchých.

To byl ostatně osud původních Active Server Pages (ASP): VBScript v nich měl sloužit jenom pro jednoduché operace, pro pospojování COM/COM+ komponent psaných ve „velkých“ programovacích jazycích jako C++. Trochu se to zvrhlo, ve VBScriptu, který na to byl zoufale nepřipraven, se psaly celé velké aplikace, a to vedlo ke vzniku ASP.NET.

Pokud se Razor uchytí, čeká ho patrně podobný osud. Oproti ASP má výhodu existence hotového frameworku, na který lze přejít, když to programátor bude chtít. Oproti PHP má výhodu, že .NET Framework není prostředí jenom pro web, ale je použitelný pro web, desktop, cloud, kapesní zařízení, databázi, jednočipové počítače, XBox… V tomto směru jedinou technologií, která se mu může alespoň přibližně rovnat, je Java.

Velkým potenciálním problémem jsou u začátečnických aplikací bezpečnostní rizika – SQL injection a Script injection. Razor dělá, co může, aby problémy tohoto typu odstranil: zjednodušuje validaci vstupů (a i v dokumentaci o ní mluví na stejném místě jako u jejich samotného načítání, nedává ji zvlášť) a výchozí jednoduché metody pro práci s databází automaticky předpokládají používání parametrizovaných dotazů.

SQL Server Compact Edition 4.0 a IIS Express

Zjednodušení vývoje pro začínající programátory – a tentokrát nejenom pro ně – přinesou i dvě další novinky, které jsou nyní součástí WebMatrixu, ale v budoucnu budou k dispozici i samostatně.

IIS Express je zjednodušená verze Internet Information Services od Microsoftu, vhodná pro vývoj a testování. Běží v uživatelském režimu, na rozdíl od velkého IIS nepotřebujete administrátorská práva ani obsáhlou konfiguraci. Je ekvivalentem ASP.NET Development web serveru, který je součástí Visual Studia, ale podporuje všechna rozšíření „velkého“ IIS 7.0.

SQL Server Compact Edition je nejmenší edice Microsoft SQL Serveru. Původní název a dosavadní zkratka „SQL Server CE“ odkazuje na to, že původně tato edice vznikla pro potřeby mobilních zařízení, ale nějakou dobu je k dispozici i pro „velké“ počítače. Na rozdíl od vyšších edic Microsoft SQL Serveru (včetně Express edice, která je k dispozici zdarma) nebo třeba populárního MySQL se jedná o embedded databázi, kterou není nutné instalovat a která neběží jako samostatná služba. V tomto ohledu je porovnatelná třeba se SQLite.

Dosavadní verze jsou principiálně jednouživatelské, a tudíž jsou nepoužitelné pro účely webových aplikací. Nová verze 4.0 tento problém řeší a bude se tedy pro účely menších aplikací jednat o velmi použitelnou alternativu k „velkým“ databázovým systémům. Atraktivní je mimo jiné, že lze tuto DB použít bez nutné spolupráce hostera, stačí nahrát do /bin adresáře aplikace příslušné assemblies  a je vystaráno.

Oproti jiným embedded databázím má SQL CE výhodu především ve snadném přechodu na vyšší edice SQL Serveru, pokud si to objem dat nebo rozsah aplikace v budoucnu vyžádá. SQL CE také je a bude podporován ve vývojových nástrojích Microsoftu a v technologiích pro přístup k datům – pokud používáte LINQ-to-SQL nebo Entity Framework, lze je snadno použít i pro přístup k této embedded databázi. Entity Framework vám dokonce umožní přecházet mezi „velkým“ a „malým“ SQL Serverem bez nutnosti měnit kód aplikace samé.

Obojí samozřejmě pomůže začátečníkům, kteří budou mít k dispozici webový a databázový server, aniž by ho museli instalovat a konfigurovat (a navíc obojí budou mít jako součást WebMatrixu). Služby IIS Express a SQL Compact nicméně ocení i zkušenější programátoři, kterým usnadní vývoj (IIS Express) a zjednoduší nasazení aplikací (SQL CE).

Visual Studio LightSwitch

Poslední novinka, tedy Visual Studio LightSwitch, poněkud vybočuje z řady zmiňovaných technologií, i když s nimi souvisí. Pro jistotu podotýkám, že o tomto produktu je zatím jenom velmi málo informací a ještě méně z nich je určeno běžným smrtelníkům, takže následující věštby se nemusejí splnit. (Článek vznikl před uvolněním betaverze – pozn.red.)

Zatímco předchozí novinky jsou a budou k dispozici zdarma a předpokládá se jejich použití především začátečníky a koníčkáři, LightSwitch je určen pro business sféru a bude za peníze. Ideově se dle mého soudu má jednat o nástupce Microsoft Accessu a Visual Basicu for Applications, tedy „programování pro neprogramátory“. Patří ke koloritu značného množství menších a středních firem, že „business critical“ aplikace je nesourodý konglomerát MDB souborů a maker pro Microsoft Office. Takové věci často vytvořili neprogramátoři, „správci sítě“ a obecně lidé znalí spíše vnitřních procesů firmy, než jemných umění vývojářských. Podle toho samozřejmě tyto aplikace vypadají a mnohdy drží pohromadě spíše nekonečnou slitovností boží.

Nicméně i takovéhle aplikace mají smysl a své místo, protože řada „odborných“ věcí je, zejména v prostředí menších a středních firem, nesdělitelná. V několika posledních verzích Office Microsoft vývojářské záležitosti a Access hodně upozadil, snažil se programátory přesvědčit, aby i pro vývoj Office aplikací používali .NET a Visual Studio.

LightSwitch, podle mého názoru, má umožnit jednoduchý a rychlý, převážně vizuální návrh data-driven aplikací. Stejně jako v případě Razoru a WebMatrixu bude mít LightSwitch výhodu existence .NET Frameworku a možnost relativně snadného přechodu na „pořádné“ vývojové nástroje.

Závěr

Základní nevýhodou stávajících nástrojů pro .NET Framework je, že v nich lze, pokud to zjednodušíme, programovat buď dobře, nebo vůbec. Tedy: ne že by se v nich nedalo prasit, ale dá to práci. Což bohužel pro většinu lidí znamená „vůbec“, a to i pro většinu těch, co mají na vizitce napsáno „programátor“.

Pokud se Microsoftu podaří rozšířit nové nástroje mezi lid, jistě vzroste množství špatně napsaných .NET aplikací, jejichž autoři nyní realizují svou kreativitu v PHP na úrovni verze 3. Nicméně i tyhle aplikace mají své místo a provázanost s „velkým“ .NET Frameworkem dává jejich autorům snadnou šanci vyrůst.

Konzultant a hlavní softwarový architekt společnosti Altairis; Microsoft Most Valuable Professional pro ASP.NET a autor webu aspnet.cz.

Komentáře: 48

Přehled komentářů

Aleš Roubíček Špatný název
Aleš Roubíček Re: Špatný název
Michal Augustýn Re: Špatný název
Altair Re: Špatný název
Borek Bernard Re: Špatný název
Aleš Roubíček Re: Špatný název
Tomáš Herceg Budoucí podpora ASP.NET
pepavondepo Závěr
dc nahrada php?
blizzboz Re: nahrada php?
Miroslav Holec Re: nahrada php?
blizzboz Re: nahrada php?
Jiří Knesl Re: nahrada php?
jiravanet Re: nahrada php?
Jiří Knesl Re: nahrada php?
Aleš Roubíček Re: nahrada php?
Jiří Knesl Re: nahrada php?
Borek Bernard Re: nahrada php?
Jiří Knesl Re: nahrada php?
Aleš Roubíček Re: nahrada php?
Jiří Knesl Re: nahrada php?
Aleš Roubíček Re: nahrada php?
Aleš Roubíček Re: nahrada php?
Eronlines Re: nahrada php?
Daniel Steigerwald Re: Microsoftí lízátka pro začátečníky: Šance pro boj s PHP nebo krok zpět?
Michal Augustýn Re: Microsoftí lízátka pro začátečníky: Šance pro boj s PHP nebo krok zpět?
Borek Bernard Re: Microsoftí lízátka pro začátečníky: Šance pro boj s PHP nebo krok zpět?
Altair Re: Microsoftí lízátka pro začátečníky: Šance pro boj s PHP nebo krok zpět?
keff Re: Microsoftí lízátka pro začátečníky: Šance pro boj s PHP nebo krok zpět?
stej pěkné, ale..
Aleš Roubíček Re: pěkné, ale..
Tomas Janovsky Re: Microsoftí lízátka pro začátečníky: Šance pro boj s PHP nebo krok zpět?
Jiří Knesl Re: Microsoftí lízátka pro začátečníky: Šance pro boj s PHP nebo krok zpět?
Martin Malý Re: Microsoftí lízátka pro začátečníky: Šance pro boj s PHP nebo krok zpět?
Jiří Knesl Re: Microsoftí lízátka pro začátečníky: Šance pro boj s PHP nebo krok zpět?
Martin Malý Re: Microsoftí lízátka pro začátečníky: Šance pro boj s PHP nebo krok zpět?
Jiří Knesl Re: Microsoftí lízátka pro začátečníky: Šance pro boj s PHP nebo krok zpět?
Martin Malý Re: Microsoftí lízátka pro začátečníky: Šance pro boj s PHP nebo krok zpět?
Borek Bernard Re: Microsoftí lízátka pro začátečníky: Šance pro boj s PHP nebo krok zpět?
Jiří Knesl Re: Microsoftí lízátka pro začátečníky: Šance pro boj s PHP nebo krok zpět?
Martin Malý Re: Microsoftí lízátka pro začátečníky: Šance pro boj s PHP nebo krok zpět?
Jiří Knesl Re: Microsoftí lízátka pro začátečníky: Šance pro boj s PHP nebo krok zpět?
Martin Malý Re: Microsoftí lízátka pro začátečníky: Šance pro boj s PHP nebo krok zpět?
Jiří Knesl Re: Microsoftí lízátka pro začátečníky: Šance pro boj s PHP nebo krok zpět?
Martin Malý Re: Microsoftí lízátka pro začátečníky: Šance pro boj s PHP nebo krok zpět?
Jiří Knesl Re: Microsoftí lízátka pro začátečníky: Šance pro boj s PHP nebo krok zpět?
nobody Re: Microsoftí lízátka pro začátečníky: Šance pro boj s PHP nebo krok zpět?
Radek Lightswitch
Zdroj: https://www.zdrojak.cz/?p=3311