Lépe nedělat nic než špatně aneb k čemu je dobré ASP.NET MVC

Tomáš Herceg       10. 12. 2009       Offtopic       7118 zobrazení

Dnes ráno jsem si řekl, že v poslední době dělám na tolika projektech a tak často je střídám, že mám problém udržet si přehled v tom, kde co mám hotové, kde je co potřeba vylepšit nebo dodělat. Času stráveného řešením tohoto “sena” bylo už zkrátka moc – tolik, aby se mi vyplatilo nasadit nějaký bugtracker, kam bych si přehledně zapisoval alespoň ty základní a důležitější úkoly. Zjistil jsem, že když si všechno přehledně někam vypíšu, zabere to daleko méně času než hledání a vzpomínání, co jsem kde zase chtěl vylepšit. A navíc mám přehled, kolik práce ještě musím udělat a tím pádem mám lepší odhad toho, o kolik nestihnu stanovené deadliny :-).

Inu ráno jsem se jal vybírat nějaký bug tracking systém, který by se dal napíchnout na SVN, kterou zatím (a doufám že už ne dlouho) používám na své projekty. Jakmile vyjde TFS 2010, okamžitě ho nasadím a začnu používat, protože je to kompletní řešení se vším všudy. Po docela dlouhém hledání jsem narazil na krásnou přehlednou tabulku na Wikipedii a z té přehršle jsem vybral pár kandidátů. Vyhrál BugTracker.NET, který je psán v .NETu a díky tomu jsem na server nemusel instalovat PHP a MySQL.

Nejsem idealista, takže jsem nečekal nějakou příjemnou instalaci typu spusť MSI, vyplň databázový server a ono se to nainstaluje a bude fungovat. U open source tyhle věci nejsou v módě, takže jsem asi 2 hodiny kopíroval soubory tam a tam, editoval konfiguráky a snažil se to zprovoznit, což se nakonec povedlo.

Už při studiu web.configu mi bylo jasné, že něco není v pořádku. První, co mě praštilo přes oči, je fakt, že connectionString k databázi nebyl v sekci connectionStrings, kam patří, ale jako položka v appSettings. Application settings je v konfiguráku několik desítek, naštěstí jsou proloženy komentáři, takže u většiny alespoň víte, na co jsou.

Celá aplikace je taková pochybná – funguje, ale má spoustu nedodělků typických pro open source (nedbalé a špatně použitelné GUI, které dělá uživateli schválnosti, a dále řada drobností, které člověka dost překvapí – řazení podle priority třeba řadí stringově a ne logicky, takže nejvýše je high, pak low a pak medium).

Po dalších dvou hodinách nadávání jsem zprovoznil i integraci se Subversion, kterou měli v dokumentaci dost ledabyle popsanou. Pozor, BugTracker.NET má na rozdíl od většiny jiného open source softwaru alespoň nějakou dokumentaci, i když občas dost nepřesnou a laxní.

Pak jsem se ale podíval do jedné ASPX stránky a málem jsem potom čistil večeři právě prošlou částí zažívacího traktu z klávesnice. Autor asi v životě neslyšel o MasterPage, neví, že v ASP.NET jsou serverové komponenty, jinak si nedovedu představit jediný důvod, proč aplikaci tak zprasil. V každé stránce je HTML element, v každé je HEAD sekce s explicitně definovaným includem jQuery skriptů (takže pokud se rozhodne použít novější verzi jQuery, tak bude muset měnit názvy souborů ve všech stránkách, kterých je bratru několik desítek; anebo spíš soubor přejmenuje na starý název) a podobné hovadiny. Pro menu se používají Server Side Includes samozřejmě (jak také jinak že, sitemapy přece ASP.NET neumí) atd. Aplikace je pro ASP.NET 2 mimochodem, u 1.1 by se to ještě dalo pochopit, tam většina výše uvedených featur prostě nebyla.

A tu mě napadlo, že ono to ASP.NET MVC, které nemám rád, přeci jen k něčemu bude. Tedy proč ho vlastně nemám rád – jde o to, že se mi už asi 50 lidí snažilo vysvětlit, k čemu je, ale žádný nepřišel s argumenty, které by prezentovaly nějaké jakoukoliv výhodu oproti WebForms, ale to je jedno.

Je mnoho programátorů, kteří si ASP.NET WebForms prostě nezaslouží. Nejsou schopni (anebo ochotni) si o té technologii přečíst ani základní shrnutí, jak vlastně funguje a co se tam jak dělá, a začnou v tom nějak bastlit – tak, jak byli zvyklí z PHP. Zápasí s ViewState, s PostBacky, netuší, že existuje něco jako MembershipProvider, sitemapy, vlastní komponenty, témata atd. A přitom to nedá tolik práce, stačí přečíst pár článků nebo nějakou knížku a člověk je hned v obraze a ví, co se jak má dělat. Někteří vývojáři (a není jich bohužel málo) si prostě ASP.NET WebForms nezaslouží.

ASP.NET MVC není oproti PHP takový rozdíl. Ten návrhový vzor, který se tam používá, není tak těžké pochopit, a začínající programátor v ASP.NET MVC nenadělá rozhodně tolik škody jako ve WebForms, které jsou řádově složitější a mají daleko strmější křivku učení.

Tím rozhodně nechci tvrdit, že ASP.NET MVC je jen pro začátečníky a nedá se v něm napsat seriózní aplikace (ostatně to jsem nikdy netvrdil). Jednou z jeho výhod je právě jeho jednoduchost, díky které programátoři, kteří s nemají moc zkušeností, nenapáchají tolik průšvihů.

Důležité je ale jedno – pokud se chcete nějakou technologii naučit, je dobré napsat si v ní nějaký projekt. Ale před tím je velmi vhodné seznámit se se všemi (nebo alespoň s většinou) možností, které nabízí, a pochopit její základní principy.

 

hodnocení článku

0       Hodnotit mohou jen registrované uživatelé.

 

Nový příspěvek

 

Diskuse: Lépe nedělat nic než špatně aneb k čemu je dobré ASP.NET MVC

AFAIR pro ASP.NET 1.1 existoval Issue Tracker Starter Kit, mozna by Vam mohl vyhovovat.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Už ta verze technologie a to, že je to Starter Kit, na mě nepůsobí příliš velkou důvěrou, vzhledem k tomu, že to chci používat v praxi.

nahlásit spamnahlásit spam 1 / 1 odpovědětodpovědět

Diskuse: Lépe nedělat nic než špatně aneb k čemu je dobré ASP.NET MVC

Popisovaný SW jsem se svého času taky snažil rozchodit a nakonec jsem ho zase vztekle smazal, přesně z těch důvodů, které popisuješ. Bylo to mimo jiné poprvé (a doufám, že naposledy), kdy jsem v ASP.NET viděl #include (do té doby jsem netušil, že je to vůbec umí).

Tento pohled na MVC vs. WebForms mne nenapadl, ale myslím, že na něm něco bude.

Myslím ještě, že jsi opomenul jednu důležitou věc, a to "not invented here" syndrom. Velmi často lidé nepoužívají existující struktury ne proto, že by o nich nevěděli, ale protože jim nevěří, radši si to napíšou sami, nejčastěji ve jménu "optimalizace".

nahlásit spamnahlásit spam 0 odpovědětodpovědět

To #include není přímo fíčura ASP.NET, ale samotného webserveru, jmenuje se to Server Side Includes a funguje to třeba i na Apache. Taky mě to dorazilo, naposledy jsem to viděl u ASPčkových aplikací. K tomu softwaru by povinně měli dodávat blicí pytlíky jako v letadle.

nahlásit spamnahlásit spam 1 / 1 odpovědětodpovědět

Myslím, že velmi pěkným příkladem "not invented here" je Enterprise Library a jeho "oblíbenost" ;-)

Ale upřímně - na mě to taky působí jako strašný moloch (díval jsem se jen na zdrojáky Unity a Loggingu).

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Diskuse: Lépe nedělat nic než špatně aneb k čemu je dobré ASP.NET MVC

Ahoj Tomáši,

pro tvé potřeby by mohl být vhodný ActiveCollab (http://www.activecollab.com/), ale jak už to u kvalitního software bývá, stojí peníze.

Jinak tenhle pohled na ASP.NET MVC vs. Web Forms je zajímavý, i když s ním povětšinou nesouhlasím. Třeba mi připadá, že rychle napráskat nějakou aplikaci je snadnější ve Web Forms než v MVC. Rovněž, pro používání MVC musíš znát daleko víc věcí, např. jak funguje routování, HTTP GET, HTTP POST, HTML, CSS, JavaScript, ... - tyhle věci samozřejmě musí dobrý Web Forms vývojář znát taky, ale nějak poskládat aplikaci se dá více méně bez toho. Naopak souhlasím s tím, že ve své úplnosti jsou Web Forms složitější, a taky, že nabízejí hodně zajímavou funkcionalitu, když do toho člověk pronikne.

P.S. Klasická hnidopišská: křivka učení má čas na ose X a znalosti na ose Y. Fakt jsi chtěl říct "strmá"?

P.P.S. Nad diskuzí výše s O.L. jsem jen kroutil hlavou :)

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Podpis: Borek

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Pro vývoj v ASP.NET musíš taky chápat HTTP, HTML a CSS, tady nemluvím o lidech, kteří vůbec programovat neumí, ale spíš třeba o lidech, kteří přešli z PHP. Ti chápou HTTP, ti umí HTML a CSS, ale WebForms jsou pro ně o dost jiné než třeba MVC, které pochopí relativně snadno.

Jinak jsem ten bastl smazal a nahradil ho BugNet, který mi doporučil Dušan Janošík (díky). Ten vypadá lépe, vevnitř je hezky napsaný a i když má taky pár drobností, dá se velmi dobř používat.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Jo, záleží, o jakém člověku se bavíme. Pokud má jít o člověka, který víceméně s programováním začíná, tak ten bude IMHO schopen něco vytvořit ve WebForms rychleji. Prostě natahá komponenty na formík, nastaví jim nějaké vlastnosti, něco dopíše do code-behind (nejlépe přímo spojení do databáze) a jednoduchý webík má hotový.

U ASP.NET MVC to nepůjde tak rychle, tam bude muset aspoň nějak zajistit "propojení" Controlleru a View a aspoň trošku bude veden k tomu, aby tolik neprasil a hlavně bude nucen aspoň něco načíst. I když otevřít spojení do databáze ve View mu taky nikdo nezabrání, tak díky tomu "načtení" by IMHO mohlo dojít ke snížení pravděpodobnosti, že bude takové prasárny dělat ;-)

Pokud se máme bavit o zkušeném webovém vývojáři, tak tam by IMHO mohla mít učící funkce (X - čas, Y - schopnosti) vyšší první derivaci, protože ať webový vývojář přechází z čehokoliv, tak téměř vždy to bude více podobné MVC než WebForms.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Diskuse: Lépe nedělat nic než špatně aneb k čemu je dobré ASP.NET MVC

S tvrzením o MVC zásadně nesouhlasím. Ano, u ASP.NET vývojář musí znát životní cysklus stránky a princip fungování WebForms obecně. To ale neznamená, že kvůli nižší úrovni MVC se tam dá méně věcí zmršit. Takový projekt je mnohem náchylnější k architektonickým chybám a tak i slepým uličkám. U Webforms má vývojář pořád (nepřesně řečeno) jistotu, že pod tím co píše se skrývá sám o sobě rozšířitelný model, který lze v případě problémů upravit za výsledku správného fungování.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Diskuse: Lépe nedělat nic než špatně aneb k čemu je dobré ASP.NET MVC

Jediná nevýhoda Team Foundation Serveru je, že se nedá nainstalovat na desktopový operační systém a to ani ta Workgroup edice pro 5 uživatelů a nelze ho tedy použít pro domácí účely (narozdíl od Visual SourceSafe 2005).

nahlásit spamnahlásit spam 1 / 1 odpovědětodpovědět

TFS 2010 tohleto nově umí - nevyžaduje ani Sharepoint ani Reporting Services, pokud vám stačí jen správa verzí souborů. Instalace je stylem Next, Next, Finish a zabere 10 minut.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Problém je v tom, že TFS vyžaduje serverový operační systém, tedy Windows Server 2003/2008. Tudíž pro domácí použití si to na desktopové Windows XP/Vista nenainstalujete.

Je to i v oficiálních systémových požadavcích:

http://www.microsoft.com/downloads/detai...

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Umíte číst? TFS 2010 už ne, mám ho (betu 2) nainstalovaný na Windows 7.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Umím. Měl sem namysli verzi Beta 1. O verzi Beta 2 jste se předtím nikde nezmiňoval, až teď.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Nepředpokládal jsem, že mluvíte o betě 1, když už je hezkých pár týdnů dostupná Beta 2.

Obecně všechny bety 1 Visual Studia bývaly vždy z velmi rané fáze a polovinu featur nemají implementovanou, zatímco Bety 2 vypadají už téměř stejně jako finální produkt a jsou docela použitelné.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

No jsem zvědav jestli i RTM verze půjde na desktopech...

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Ano, má to tak být. Jinak by tu funkcionalitu do Bety 2 asi nepřidávali, že?

nahlásit spamnahlásit spam 0 odpovědětodpovědět
                       
Nadpis:
Antispam: Komu se občas házejí perly?
Příspěvek bude publikován pod identitou   anonym.

Nyní zakládáte pod článkem nové diskusní vlákno.
Pokud chcete reagovat na jiný příspěvek, klikněte na tlačítko "Odpovědět" u některého diskusního příspěvku.

Nyní odpovídáte na příspěvek pod článkem. Nebo chcete raději založit nové vlákno?

 

  • Administrátoři si vyhrazují právo komentáře upravovat či mazat bez udání důvodu.
    Mazány budou zejména komentáře obsahující vulgarity nebo porušující pravidla publikování.
  • Pokud nejste zaregistrováni, Vaše IP adresa bude zveřejněna. Pokud s tímto nesouhlasíte, příspěvek neodesílejte.

přihlásit pomocí externího účtu

přihlásit pomocí jména a hesla

Uživatel:  
Heslo:  

zapomenuté heslo

 

založit nový uživatelský účet

zaregistrujte se

 
zavřít

Nahlásit spam

Opravdu chcete tento příspěvek nahlásit pro porušování pravidel fóra?

Nahlásit Zrušit

Chyba

zavřít

feedback