Nejprve bych chtěl potěšit všechny zájemce čekající na Nette coming soon. Dočkali se. Tedy… na tomto místě už měl být úvodní článek ze série věnované Nette. Leč mé zděšení z ASP.NET nesneslo odkladu.
Nejprve – toto není kritika jazyka nebo technologie .NET. Toto je kritika způsobu, jakým se vypořádává s webovým rozhraním a HTTP protokolem. Tedy toho, co je z výsledné aplikace vidět. A co úzce souvisí s kvalitou odvedené práce a spokojeností klienta.
Dost řečí, podívejme se na dvě z nejoblíbenějších standardních komponent v praxi.
Calendar Control
Jde o tento roztomilý kalendáříček, který najdete na celé řadě blogů psaných v ASP.NET. Podstatné je, že navigace je kompletně závislá na JavaScriptu (podívejte se, kam směřují odkazy). Bez něj ani ránu. Takže, zapomeňte na přístupnost, zapomeňte na roboty indexující váš web.
Taktéž je nemožné si uložit aktuální stav do bookmarků, URL zůstává během práce stejné (obdobný problém jako v případě AJAXu).
Na Intervalu.cz jsem našel návod, jak zprovoznit kalendář i bez JavaScriptu. Dovolím si citovat autora:
Ovládací prvek Calendar umožňuje uživateli velmi komfortní volbu data v aplikaci. Bohužel, jako u většiny webových ovládacích prvků, je tento komfort vázán na JavaScript. V článku si ukážeme, jak v aplikaci doplnit kalendář o podobnou funkčnost i u klientů bez JavaScriptu, byť ne tolik komfortní.
O pár řádků dále se dozvídáme princip celého triku:
Datum, které uživatel s podporou JavaScriptu zvolí prostě klepnutím myši v kalendáři, necháme ostatní uživatele zadat v alternativním textovém poli.
Inu proč ne 😁
DataGrid Control a stránkování
Další velmi populární ovládací prvek, jenž slouží k rozbrazování
tabulkových dat, často databázových tabulek. Disponuje celou řadou
užitečných funkcí, nicméně v ubohosti výsledného projevu předčí
i Calendar.
Podívejte se nejprve na demo.
JavaScriptová navigace už nepřekvapí. Zajímavý je však pohled do
zdrojového kódu, jemuž vévodí formulářové políčko
__VIEWSTATE
o velikosti 3kB! Tak to je prosím režie.
Navíc v čistém základu, s doplňováním funkcionality nadále vesele
roste. Velikost 50–150kB není nic neobvyklého.
Zajímalo by vás, co tak zajímavého si ASP.NET sám sobě posílá? Odpověď mi dal Peter van Ooijen, který píše:
Špatné na viewstate DataGridu je to, že se může stát šíleně veliká. Má v sobě celý obsah tabulky. V tomto případě (pozn. tedy v situaci, kterou řeší pisatel) mě zajímají pouze dvě čísla, zvolený řádek a datakey. Obsah tabulky je vždy znovu načítán z databáze.
Děsivé, že? Ještě děsivější, když si uvědomíte, že s těmito komponentami pracuje většina vývojářů. Jen minimum se zajímá o postupy, jak ViewState minimalizovat či dokonce obejít JavaScript.
Jak pracuje ASP.NET
Abych trošku vysvětlit, kde je zakopán pes, pokusím se stručně a zjednodušeně popsat, jak pracuje ASP.NET.
Webová stránka je v podstatě jeden velký formulář POST. Ten obsahuje
skryté políčko __VIEWSTATE
, ve kterém je serializovaná
aplikace v aktuálním stavu. Dále jsou tu ovládací prvky, třeba
tlačítka, která tento formulář odešlou zpět na server. Z
__VIEWSTATE
server obnoví aplikaci a vykoná událost aktivovanou
stiskem onoho tlačítka. Tak se aplikace dostane do nového stavu a koloběh se
opakuje. Opět se vytvoří stránka, velký formulář, do políčka
__VIEWSTATE
se serializuje aplikace, vygenerují
tlačítka atd.
První problém vzniká, pokud akci nemá aktivovat tlačítko, nýbrž odkaz
<a href
. Takovému odkazu je v href
přiřazen
JavaScript odesílající formulář. To způsobuje nepřístupnost a celkovou
závislost na JavaScriptu.
Další problém se týká URL, které se odesíláním formuláře nezmění a není tedy možné uložit aktuální stav do bookmarků nebo někomu poslat e-mailem. Také se obávám, že tlačítko Zpět v prohlížeči bude způsobovat varovné otázky, zda znovu odeslat formulář (neověřeno).
Pak jsou tu problémy se samotným __VIEWSTATE
. Jeho velikost se
špatně kontroluje a může snadno dosáhnout desítek kilobajtů (viz
příklad s DataGrid, kdy se zbytečně ukládá celý obsah tabulky). Také tu
vidím až nedozírné možnosti injektovat podvržený obsah (neověřeno).
Jsem naprosto přesvědčen, že tento způsob práce se v žádném případě neshoduje s principem HTML & HTTP (jeho současným moderním pojetím) a jde jen o násilné naroubování cizorodých postupů na web. Vývojáři Microsoftu si tím značně zjednodušili práci, protože implementace této techniky je vcelku snadná a přináší spoustu výhod pro programátory. Snadno vytvoří robustní aplikace. Je jen otázkou, jestli si uvědomují, za jakou je to cenu?
Závěrem
Nechci vytvářet půdu pro flamewar. Znovu opakuji, že tato kritika se netýká programátorského pohodlí v ASP.NET, ale úrovně běžně dosažitelných výsledků. Ta je prachbídná. Čest každému programátorovi, co hledá cesty, jak ten Microsoftí omyl vylepšit. Ale na otázky, k čemu je PHP, když daleko vhodnější platformou je .NET, je třeba pohlížet s velkým odstupem.
Související:
- Aleš Roubíček: Kladivo na čarodějnice
- Borek Bernard: Deset důvodů, proč mě ASP.NET neděsí
- dgx: Jsem zděšen z PHP5
Komentáře
thingwath #1
Huhlahuhla, no to jsou mi komponentíky 🙂 Jenže to se dá přepsat nebo nepoužívat, problémy PHP jako jazyka v něm budete obcházet hůř.
Mirek Novotný #2
Na jedné straně s tebou musím souhlasit, že naklikaná aplikace v ASP.NET je špatná.
Ale na druhé straně – opravdu zjišťuješ tyto hrůzy teprve teď? Opravdu jsi nikdy předtím ASP.NET neviděl? To mě poněkud šokuje. Myslel jsem si o tobě, že se považuješ (a ostatní tě považují) za dobrého programátora, že píšeš „průlomový“ framework, že jsi PHP profesionál. ASP.NET je přece už pár let stará záležitost. Pokud jsi ho nikdy pořádně neviděl, které další programovací techniky a frameworky ti unikly? Bude tvůj framework opravdu takový průlom, anebo objevuješ něco, co už bylo stokrát objeveno?
David Grudl #3
#2 Mirku Novotný, Mirku, trefil jsi hřebíček na hlavičku. V době prvních úvah nad Nette, což je 2–3 roky zpátky, jsem se zařekl, že nebudu dívat na jiné frameworky. Lidský mozek má tendenci hledat nejjednodušší cesty a jakmile znáš jedno řešení, nutí tě uvažovat v jeho intencích. Pro vymýšlení je třeba mít hlavu čistou. Jiné frameworky jsem začal letmo prohlížet teprve nedávno a ejhle – oni se vážně podobají jak vejce vejci, tři směry zpracované na tisíc způsobů – důsledek (pod)vědomého ovlivňování. Ale ne nutně k lepšímu výsledku.
Zpět k článku: mě překvapilo, že věc (předávání stavů), nad kterou jsem si tak dlouho lámu hlavu a nakonec ji v Nette vypiplal, vyřešily stovky Microsoftích inženýrů tak prasácky… A k ASP.NET jsem se dostal díky Prado, které tu techniku zkopírovalo ☹
Mimochodem, nikdy jsem netvrdil, že Nette je průlom. Píšu si ho pro sebe a na míru svých potřeb (pro mě to průlom je, to je fakt). A je mi upřímně jedno, jestli ho bude ještě někdo další používat.
Liskni_si #4
Co je spatneho na tom, ze se clovek s takovymi vecmi sam nesetka? Ma snad „dobry“ programator vyzkouset kazdy jeden hloupy jazyk, ktery na svete kdo vytvori a jeste tak ucinit nejpozdeji do par let? A nedej boze aby zkousel kazdy jednotlivy framework/knihovnu/technologii. To by mu asi na programovani moc casu nezbylo…
Discogio #5
Nemůžu nereagovat, ale je vidět zaujatost proti Microsoftu… chtě nechtě je ASP.NET daleko lepší než zastaralé PHP. To že se snaží dohánět chlapci okolo PHP OP od verze 5.0 nepomůže a podobné články tomuto taky ne…Je to kruté ale musíte se všichni PHPčkáři smířit stím, že PHP začíná vycházet z módy a na složitější aplikace používat PHP = sebevraždě…Pokuď už se najde nějaky skutečně zarytý odpůrce Microsoftu a potřebuje udělat webovou aplikaci závislou na mnoha tisicovém vytížení tak už dneska šáhne taky radši po JSP než po PHP.....navíc nikdo ti nebrání napsat si vlastní kalendář…jaké kompnenty jsou v PHP, které se vyrovnájí rozmanitosti ASP.NET 2.0 ? typuji, že žádné… děkuji, sbohem, konec diskuze ;) (možná)
Jozef Izso #6
Keď mi niekto ukáže kreácie v PHP kóde, ktoré vytvoril nejaký začiatočník, som tiež zdesený…
Škoda, že si nepovedal k DataGridu aj „B“: že je tak úžasne škálovateľný, že s pomocou jednej výkonnej uloženej procedúry v SQL Serveri vôbec ViewState nepotrebuje… A je to potom neporovnateľne rýchlejšie, ako naklikaný DataGrid vo Visual Studiu, alebo PHP kód.
Jozef Izso #7
Btw: v ASP.NET (1.1) treba písať pri množstve komponent vlastný HTML kód… Koľko krát si musel hackovať samotný PHP kód?? 🙂
David Grudl #8
#6 Jozefe Izso,
Ale samozřejmě. Problém je, že o programátorech v .NET se ve spojitosti s diletanstvím příliš nehovoří. A přitom by to mělo být naopak, protože naklikané hrůzy v ASP.NET mají tentenci se tvářit profesionálnějí. Tedy zdvižený prst a důrazné varování je určitě namístě.
#5 Discogio, Zaujatost proti Microsoftu tam žádná není, to je jen přání, způsobené tvou zaujatosti proti každému, kdo kritizuje nějaký produkt Microsoftu. Naopak z tvého komentáře cítím zaujatost proti PHP ;)
Discogio #9
Ještě mi nedá ale věta:
je zoufalý OMYL ! .NET je celý framework… a zeptám se tedy stejně hloupě když je to tak uvedeno… Pomocí PHP jdou dělat Desktopové aplikace ? Nikoliv ! Kčemu je tedy PHP ? K ničemu. Správná odpověď…A pokuď budeme správně porovnávat ASP.NET a PHP tak to záleží silně na situaci, a stejně si dovolím tvrdit, že ASP.NET 2.0 je o dost silnější vývojový prostředek než PHP. Proč se pořád někdo musí pouštět do porovnání PHP a ASP.NET ? Ať si každý používá co chce, ale nekritizuje to druhé, když nemá padé argumenty :)
PS: Musím přiznat, že tento článek mě fakt zvednul ze židle, asi jako rADovi články o FF zaryté odpůrce IE a zbožňovače FF :) To jsem se naopak bavil a teď jsem na druhé straně :) Každý nedá na to své většinou dopustit, pokuď není evidentní, že je to brak a bije to každému do ocí, jinak
Ano já už jsem silně zaujatý antiphpčkář a antilinuxář, důvod je prostý… můžou si za to sami :) nechci to už po xxxxx-té rozebírat :)
Mirek Novotný #10
Přece netvrdím, že „dobrý“ programátor musí vyzkoušet všechno. Ale rozhodně by se měl seznámit s novinkami ve svém oboru. Už jenom proto, aby posoudil jestli by třeba s jejich použitím nedosáhl vyšší produktivity a lepších výsledků. Takže seznámení s ASP.NET, JSF (JSP), Ruby a základními PHP frameworky (Mojavi, CakePHP, Symfony…) považuji pro webově orientovaného programátora (PHPkáře) za naprosté minimum.
Myšlenku „já ty ostatní produkty ani nechci vidět, brzdilo (nevhodně ovlivnilo) by to moji genialitu“ nemůžu přijmout. Vždycky zde je svoboda prohlédnout si cizí myšlenku a říct si „to se mi nelíbí, protože to má ty a ty nevýhody“. Ale a-priori odmítat cizí nápady a fundamentálně si patlat ty svoje knihovny v tom svém PHPku mi přijde jako špatný nápad.
David Grudl #11
#9 Discogio,
Ale to tu děláš jen a jen ty. Také z toho nejsem nadšen.
Tedy chceš říci, že Postback, JavaScript, obrovské ViewState nejsou problémem ASP.NET? Argumentuj prosím k článku, nebo neargumentuj vůbec.
Rene #12
Ano, programatori v .NET mohou byt take diletanti, na tom neni nic zvlastniho – jazyk nebo platforma vas praseckych navyku nezbavi, obcas pred vami jen nejakou „komplexitu“ skryje.
Co se tyce clanku:
David Grudl #13
#10 Mirku Novotný, Zeptám se narovinu – jsi student? Totiž vážně nemám tolik času, abych si nastudoval všechny technologie, které uvádíš a ještě se stihl naplno věnovat práci a čemukoliv dalšímu.
Ten urážlivý tón od druhé půlky kometáře si prosím strč za klobouk. Řeším si věci jak uznám za vhodné a pokud se ti to nelíbí, je to tvůj problém. Budu si dál patlat svoje knihovny, uzavřen sám se svou neovlivněnou genialitou. (i když se svou paranoou sám nikdy nejsem).
#12 Rene, Díky za zajímavý komentář! Spíš než na konkrétní komponenty jsem chtěl poukázat na úskalí přístupu ASP.NET k webu vůbec.
Milf #14
Někde udělali soudruzi chybu, nebo kleklo PERKO? Doporučuji PERKO okamžitě nahodit, neb budeš mít na svědomí pár kvalitních ASP.NET programátorů – a to zajisté nechceš, nebo snad hodláš likvidovat konkurenci? 😄
Jak je možné, že zarytý antiPHPčkář se dostane k našim plivancům na jeho denní chléb a popěvkům nad úžasností našeho PHP?
Ta větička v závěru „Nechci vytvářet půdu pro flamewar“ mě pobavila. Bude nejlépe, když tento spot smázneš a budeš se ukájet zjištěním, že Tvé kroky sledují i ti z druhého břehu. 😁
Discogio #15
Drahý DGX, já ale nepíšu článek o tom, že jsem zděšen z ASP.NET či PHP. Mé reakce pouze vycházejí z tvých napsaných úvah. Ostatně ostatní komentáře ti jistě otevřeli oči jak to s ASP.NET vlastně je. Nechť Reneho komentář je blahoslaven, ten uhodil hřebíček na hlavičku…viz jak jsem psal…nikdo tě nenutí používat Datagrid natož pak Calendar, já osobně Calendar nemám též rád pro jeho jakousi „nestandartnost“ řekněme, pokuď jsi ho, ale viděl všude možně, je to zapříčiněné i tím, že ho Microsoft cpe do svých Starter Kitů apod, které nemají za úkol nic jiného než přilákat nové lidi do ASP.NET komunity a ukázat jim jak může být tvoření dynamických stránek lehké, to, že začátečníci většinou vytvářejí „nevalidní“ a po programátorské stránce „hrůzostrašný“ paskvil je samozřejmostí, ale to je přeci stejné ve všech programovacích jazycích stejné ne ? Doufám, že souhlasíš. Co se týče Viewstate…ano může to být/je to problém, ale každá technologie má své pro a proti a na základě prvních pár špatných (a to opět záleží na technologii zda je to opravdu špatné řešení či nikoliv) nelze odsunout vše rázem na druhou kolej, já tohle většinou nepraktikuju, ikdyž občas ano…sem taky člověk ;) JavaScript si můžeš dávat podle svých představ např. pomocí metody RegisterClientScriptBlog, tady nevím co máš přesně na mysli a co se ti nezdá…ovládání prvku, si tedy můžeš psát sám a „přivázat“ ho k zcela vlastnímu prvku…
PS. #11 David Grudl
Ale to tu děláš jen a jen ty.
Ty jsi nasadil „téma“ sovjí poznámkou „Ale na otázky, k čemu je PHP, když daleko vhodnější platformou je .NET, je třeba pohlížet s velkým odstupem.“ Já se jí pouze chytil…resp. jsem jí pochopil tak jak jsem na ní následně reagoval, holt co člověk to názor a každý to může pochopit jinak…
Andrew #16
Jen jedna poznámka. Dokonce i pomocí PHP jdou dělat desktopové aplikace. Netvrdím, že je to skvělé a sám raději sáhnu po něčem jiném, ale ASP.NET to nebude.
Lukoko #17
JSP je mamut … Python rulez 😉 a ted vazne. Podle me je pro „normalni“ lidi, co se chtej vykaslat na PHP Python jasna volba.
Mirek Novotný #18
Nejsem student. A neříkám že musíš všechno studovat do hloubky, na seznámení stačí pár volných večerů. Krásně se to stihne a často to ušetří spoustu času, takže se to vyrovná.
Jestli chápeš druhou polovinu mého názoru jako sadu urážek, tak to mě mrzí. Je to jenom můj osamocený názor a nikomu ho nevnucuju. Rozhodně to nebylo nijak namířeno proti tobě ani někomu dalšímu, jsem rád když mohu diskutovat na tvých stránkách s dalšími stejně zaměřenými lidmi a určitě bych si nedovolil nikoho urážet. Přečti si prosím můj názor znovu bez předsudků a věřím, že tam nic hanlivého nenajdeš. Na seznámení s tvým frameworkem se těším, jistě bude obsahovat nějakou zajímavou myšlenku, nad kterou se budu mlátit do hlavy „proč mě tohle nenapadlo dřív“. A svoji cílovou skupinu si to určitě najde, i když si to píšeš jen pro sebe.
Milf #19
Kua lidi copak vám schází tolerance nebo co? To se mi snad zdá … tak já zítra na ulici řeknu, že rohlík od Pepíka je tvrdý, a on mě vážně zastřelí Pepíkův příznivce nebo co (co mám co kecat o Pepíkovi a vůbec, jak můžu hodnotit rohlík od Pepíka, když jsem ještě nesnědl rohlík od Emira z Turecka?)?
Autor spotu si nevymýšlel, jen si zahrál na začátečníka s ASP.NET a dalším (třeba) začátečníkům stručně naznačil, co ho nemile při prvních krocích překvapilo.
Nelže, uvádí pravdu, zmíní se o nějakém produktu a hned se tu začne pořvávat jak na dálném východě – to tedy čumím. 😁
Tak schválně, kdo první z ASP.NET příznivců stříkne pořádnou a kvalitní špínu na PHP, kterak je děsné? A schválně, jestli se zvedne stejná vlna odporu, … – aha, nezvedne, protože PHP už vychází z módy, (jistě i) umírá … (no tak nic, no).
Discogio #20
Dost handrkování…Milf má pravdu…
Jinak DGX udělal výborné Texy! a tím si u mě získal respekt…(o něco podobného se budu zanedlouho pokušet do svého softwaru, opravdu skvělá inspirace DGX !)
Konec hádek ohledně ASP.NET pokuď jsem se nechal unést a někdo měl problém s „nevlezdoprdelky názory“ :)) tak se omlouvám.Jsou věci, které mě občas dokážou zvednout ze židle… ;)
Skic #21
#20 Discogio, já se ti musím omluvit, nebyl na místě ten link…promiň…
Myslel jsem oslovení Skici…
Děkuji za ten poslední tvůj příspěvek, ten mě uklidnil…
rarouš #22
Příjmené čtení :) Jen bych dodal: davide mrkni se na lepší příklady, to co tu uvádíš, jsou příklady kódu, který byl navrhnut před čtyřmy pěti lety, kdy slova jako přístupnost nebo validita byla hodně úsměvná a skoro nikdo je nebral vážně. V té době to byla bezesporu průlomová technologie, ale dnes se spousta věcí řeší jinak. Kdyby tento článek vyšel tak před dvěma třema rokama, tak bych ho bral vážně, ale dnes?
Jinak šmudlej si dál ty svoje frameworky, jsem za ně vděčný, protože něco jako Texy! je unikát a rád ho používám i pod ASP.NET ;) (pomocí interoperability SOAP)
Dominique von Tralala #23
#19 Milfe, drsnej priklad s pepikem a rohlikem .)))
nemuze se zvednout zadnej priznivce .net, protoze je to absurdni… .)
Leo #24
Prave to me na ASP.NET desi – ta predstava rady lidi, kteri v tom tvori stranky, ze je to neco, co se obejde bez znalosti jak funguji zakladni technologie, http, html, css a javascript. Bezny postupy tam tohle uplne zatemni a pak kdyz kritizuju proc je klasicky odkaz delany pres doPostBack nebo jak se to jmenuje (a bez JS) nebeha, tak se mi dostane prekvapene odpovedi a odkaz se da udelat bez nej? Leo
Věroš #25
Nevím, kdo to říkal, ale
Jakákoliv (i dobrá) myšlenka může být pohřbena špatnou implementací. Možná se to stalo i ASP.NET.
Existují lidé, kteříí umí pěkně psát i v PHP či Perlu a hnusně psát v Pythonu. Některé jazyky prostě vznikly (PHP, Perl) a některé byly navrženy (Java, Python) a na obou skupinách to je vidět.
PS: ASP.NET neznám, PHP neznám dost (ale něco jsem v tom bohužel taky napsal), Javové servlety jsem viděl.
llook #26
Pokud PHP umírá, jak se někteří zmiňují, proč je stále tak používané, a to i pro nové projekty? Samotný vývoj v J2EE nebo ASP.NET může být snazší, dokonce i u malých aplikací typu „osobní stránky s weblogem“, ale klíčovým slovem je TCO.
Náklady na mzdy programátorů, náklady na programové vybavení pro vývoj, náklady na hosting (a tedy nepřímo náklady na programové vybavení pro hosting), náklady na případné výměny programátorů nebo hostingu… Často vyjde PHP levněji.
P.S.: To s těmi vejci – na tom něco je. Aplikačních rámců pro PHP je spousta. Ty nejoblíbenější ale vychází buďto ze Struts (jako Mojavi, PHP.MVC) nebo Ruby on Rails (jako Cake a Symphony). Sem tam nějaký pokus o port Cocoonu nebo .NET. Když se objeví něco původního, zpravidla to je bastl.
Ľuboš #27
#12 Rene, Naozaj to nejde bez zapnuteho JavaScriptu? To mi pride ako dost vazny argument proti pouzitiu .NET s vynimkou intranetu.
Naco vlastne potrebuje .NET zapnuty JS, su aplikacie v nom napisane bez neho nefunkcne? To by bolo uplne proti filozofii moderneho pouzitia JS, ktory ma len vylepsovat uzivatelsky zazitok, ale web aplikacia by mala byt funkcna aj bez neho.
bohumil #28
Tri roky jsem programoval v PHP. Ted postupne prechazim na ASP.NET. Kdyz jsem o teto technologii slysel, o tom jak je dokonala, nevahal jsem. Ted kdyz uz jsem o asp.net neco precetl a neco malo naprogramoval, mohu rici, ze kdybych to vedel, co je asp.net zac, asi bych do toho nesel.
A proc?
Sice je fajn, ze kod v ASP.NET 2.0 je validní, ale to je tak vse. Kod, ktery to generuje pri pouzivani vetsiny ovladacich prvku, je strasny. Masti si to inline styly, jak se mu zachce.
Predstavte si situaci, ze nekdo chce zacit s tvorbou webu, koupi si knizku o asp.netu a zacne studovat. No podle me to nemuze dopadnout dobre. Pres rozhrani Visual Studia naklika patricne barvicky a je vymalovano. Do vygenerovaneho html kodu se radsi potom ani nedivejte.
A takto to v budoucnu mozna bude vypadat. Minuly tyden mi prisla knizecka „Vytvarime webove stranky ve Visual Web Developer“ s podtitulkem „Nebojte se zacit s tvorbou www stranek“. No osobne lituji dotycneho, ktery si tuto knizku koupi s vidinou, ze se nauci vytvaret nejake treba jednodussi weby. V te knize ale prakticky o zakladech webu nic neni. Je to jen o klikani ve VS.
Na druhou stranu, pokud u studia asp.netu vydrzite, podle me se to vyplati. Ja sice stale cekam na okamzik, kdy mi asp.net urychli praci. V soucasnosti je to spise naopak:-( Ale myslim si, ze zaklad ma asp.net dobry. Jazyk C# povazuji za zdarily, tze uvidim…
Rene #29
Lubos)
Ano, .NET muze fungovat omezenei bez JS, ale neni to ono. K cemu JS potrebuje – hlavne pro „zmenove“ udalosti.
Neco o tom najdete v mem starsim clanku (https://web.archive.org/…0/clanek.asp?…), ale zakladni principy stale plati.
Co se tyce modetni pouziti JS – ASP.NET je hlavne zamereno na aplikace ne na prezentace, i kdyz vim, ze hranice mezi nimi je neostra.
Tim bychom se ale dostali jinam – treba k povidani, jak je web zneuzivan pro ucely, k nimz se nehodi a ze JavaScript nebo CSS jsou (IMHO) docela odpudive nastroje pro vytvareni slozitejsich webu. A ze cely „hype“ kolem tenkeho klienta snad brzy pomine. A to radeji ne, nebo tu budu mit dgx opravdu flame ;)
hvge #30
Pekny clanok. Tak mi je konecne jasne, ze preco jedna z tych profesionalnych web aplikacii, ktore obcas navstevujem (tipos.sk), ide tak srackovo cez modem…
David Grudl #31
#27 Ľuboši, Rozšířil jsem článek o vysvětlení, jak ASP.NET pracuje. Je to zjednodušené, ale snad tím odpovím na tvé otázky.
Pavel Růžička #32
Domnívám se, že netřeba být zděšen – jde o to více pochopit, jak ASP.NET myslí. Kdo se podívá jen na povrchu, pak nutně musí být zděšen z toho, když nezkušený programátor použije DataGrid pro zobrazení článků v redakčním systému – to je pochopitelně katastrofa, nevhodné použití prvku, nevhodné použití formuláře a už vůbec tu nevíme, jak vlastně ten programátor ten DataGrid plní.
Nutno si uvědomit, že v PHP nakonec dojdeme k tomu jednomu správnému řešení, protože základních možností škálování zase tolik není – a pokud už si někdo píše vlastní třídy, tak určitě ví co dělá a nebude používat kanon na vrabce.
Bohužel s tím, jak je ASP.NET robustní přichází i fakt, že vám nic nebrání v tom vařit vejce natvrdo v 300 litrovém hrnci.
Chci říct, že zděšen byste měl být z programátora, který vytvoří prezentační stránky pomocí prvků určený pro administrační rozhraní či intranetové aplikace, protože právě zde se projeví jejich síla a užitek – samotné ASP.NET za to nemůže, jak jsem psal v příkladu s vařením vejce – chce to jen osvětu a více pochopit, jak ASP.NET myslí, jakého chci dosáhnout výsledku a jak můžu svou aplikaci škálovat.
David Grudl #33
#32 Pavle Růžičko, Je naprosto bez debat, že nevhodné použití technologií je katastrofou. Jenže neodbočujeme od původní myšlenky. Já jsem nepoužíval DataGrid pro zobrazování článků v redakčním systému, ale v souladu s jeho základním posláním. A tady se projevily veškeré neduhy Postbacku v ASP.NET. Dochází k přenosu redundantních dat a jaký je důvod? Dokonalost komponenty, kterou naplno nevyužívám? Robustnost ASP.NET? Jeho nepochopení? Nebo prostě špatně navržená technologie?
Jsem přesvědčen, že to poslední. I když omluvit se to dá kterýmkoliv z předchozích důvodů, jistě.
Na věc se také mohu podívat naopak – pokud je Postback vhodný na administrační prostředí, nejlépe běžící na intranetu, co potom nabízí ASP.NET pro tvorbu například e-shopů s maximální přístupností? Skutečně by mě to zajímalo, jsem v tomto směru laik.
Rene #34
dgx:
Jen pro upresneni – nic vam nebrani vytvorit bezny hyperlink
<a href>
, muzte z nej udelat i serverovy html prvek<a href= runat="server">
, nebo pouzit serverovy ovladaci prvek hyperlink. Vsechny tyto prvky se renderuji jako CISTY hypertextovy odkaz. To o cem mluvis, je spis LinkButton, na ktery je navesena serverova udalost Click.ViewState a „nedozírné možnosti injektovat podvržený obsah (neověřeno).“
No to opravdu tak jednoduse nejde :)
<pages viewstateencryptionmode="Always">
ve web.config vynuti kryptovani ViewState a EnableViewStateMac generuje Hash pro aktualni ViewState, takze podvrhnout jiny text vyzaduje znacnou davku umu.Jinak pri vsi ucte Davide si myslim, ze tvoje pojeti ASP.NET je docela zjednodusujici…
Rene #35
Ad DataGrid) DataGrid je se zapnutym ViewState navrzen tak, aby uchovaval vsechna zobrazovana data – pokud to neni vhodne, nastavis EnableViewState na false, coz muze v 1.x zpusobit problemy pri strankovani – ale da to celkem jednoduse resit. Ve verzi 2.0 je Control State – pri vypnuti ViewState si prvek udrzuje v Control State jen minimalni mnozstvi udaju potrebne pro strankovani, razeni apod.
Pak mohu nahrat data pri kazdem postbacku (treba ale z cache) a na klienta ViewState neposilam.
Dale vlozenim vlastni stranky jako spolecneho predka pro vsehny me stranky, u ktereho prepisu metody LoadviewStateFromPerzistenceMedium a SaveViewStateToPerzistenceMedium mohu jednoduse ViewState drzet v pameti, v databazi, serialovat jej na disk a klienta tim nijak neobtezuji. To je mimochodem postup pouzivany u mobilnich klientu.
A vsechno je to v ASP.NET velmi, velmi trivialni …
Rene #36
Jinak se omlouvam za ty komentare bez diakritiky a se spoustou preklepu, psano na PDA :)
David Grudl #37
#34 Rene, Je mi jasné, že mohu použít klasické URL, důležité je ale vědět, co tím ztratím (či získám). Jaké výhody mi nabídne ASP.NET, pokud se rozhodnu používat běžné hyperlinky? Půjde takto používat běžné komponenty? Zachová se mi stav aplikace? Nebo naopak budu muset ručně vypisovat URL?
Ad injektování: předpokládám, že určité ochrané mechanismy mít ASP.NET bude. Spíš mě překvapilo, že zrovnika u odkazovaného příkladu jsem si funkcí
base64_decode
obsah__VIEWSTATE
zčitelnil. Tedy šifrování je asi třeba manuálně aktivovat a určit heslo, ne?Rene #38
Ad šifrování) Ano, ve výchozím nastavení je vypnuté, ale stačí jej zapnout nastavenim jednoho atributu na true. Klíč je určen v souboru machine.config.
ASP.NET a běžné linky – možná mluvíme každý trochu o něčem jiném. ASP.NET a postbacky jsou mechanismem hlavně pro operace prováděné na jedné stránce – to znamená, že například v seznamu s výpisem zboží setřídím grid podle názvu.
V gridu mohu mit hyperlinkcolumn – při připojení datového zdroje se mi automaticky vyrenderují hyperlinky v mnou vyžadovaném formátu
Pak za mě ASP.NET vygeneruje hyperlinky pro přechod na detail produktu a Id produktu si mohu načíst z Query Stringu.
David Grudl #39
#35 Rene, Je určitě dobře, že si je Microsoft problémů s
__VIEWSTATE
vědom a snaží se je ve verzi NET 2.0 řešit. O netrpělivém čekání na ControlState jsem na několika blozích věnovaných ASP.NET už narazil. Tak snad to bude prospěšné věci.#38 Rene, Rozumím. Jen mám pocit, že zabíháme do přílišných detailů.
René, ty jsi nadšený konzument všech výhod, které ASP.NET nabízí a ty výhody natolik předčí některé problémy, že není důvod se jimi příliš znepokojovat. Jsou to vůbec problémy?
Naopak já neznaje ASP.NET stojím jen před těmi problémy a co čert nechtěl, považuji je za fatální. Je otázka, jestli lze v ASP.NET plnohodnotně pracovat i tehdy, pokud bych se chtěl kompletně vyvarovat například závislosti na JavaScriptu. Nabídne mi i poté ASP.NET takový potenciál, nebo si jen zavařím na kolotoč zdolávání překážek? Tohle by mě zajímalo.
Hawkey #40
Přesně tohle by mě taky zajímalo.
Již delší dobu pracuji v PHP a zatím mě poskytlo vše, co jsem potřeboval. Podle mě zde platí „Každému co jeho jest“. Pokud by mi PHP nestačilo, tak se rozhodně poohlédnu po něčem jiném, ať už třeba ASP.NET, JSP nebo další. Každé maá svoje pro a proti. Jsem přesvědčen, že programovací jazyk je jen nástroj, záleží na tom jak se s ním naloží. Nejdůležitější je výsledek práce a spokojení uživatelé. Flamewary „tohle je lepší než tohle“ mě nechávají chladným. 🙂
Rene #41
#39 Davide Grudle, Nadšený konzument – to je ale kompliment;)
Jak jsem psal nahoře – myslím si, že bez JS není ASP.NET to pravé. Ale uvědém si – všechno co po tobě ASP.NET pro základní ovládací prvky požaduje je „jen“ funkce __doPostback. A jak jsem psal, běžné hyperlinky na potřebných místech můžeš také jednoduše používat, takže přístupnost podle mě nijak netrpí.
Snad jen poslední věc – pravděpodobně budu dělat poměrně jeden docela rozsáhlý redakční systém pro větší a známý web. Nejsem expert na UI (a to je ještě slabé slovo pro mé kreace), takže budu psát vše do business vrstvy + UI komponenty, ze kterých bude možné web jednoduše složit a jeho jednotlivé části provázat. Napsáno to bude tak, aby (re)design webu zvládl html kodér (xhtml + css) a aby přístupnost nijak zvlášť neutrpěla. Když budeš mít ještě zájem, přizvu tě na testování.
A poslední poznámka – když jsem poprvé zkoušel ASP.NET, rozčiloval jsem se, že nemohu jednoduše používat více form elementů, a proč jsem odstíněn od volby, zda použiji GET nebo POST protokol atd.
Po čase jsem zjistil, že v ASP.NET je takové uvažování , mno přeci jen zastaralé ;)
Daniel Steigerwald #42
Po přečtení všech příspěvků mi to nedá a též se připojím.
Výhrada k článku: Pokaždé mě překvapí, jak si někdo (DGX) plete zahradní nůžky s nůžkami na nehty, (příklad;) Ano, existuje dodávaná komponentka kalendář, která (ó hrůzo) pracuje pouze s JavaScriptem. A co? 90 % to stačí, stačí lidem, kteří si nedokáží napsat kalendář sami a potřebují ho. JavaScript v současné době má vypnutý snad jenom .. nikdo mě nenapadá :) Pokud chceš napsat webovou aplikaci, pak ti (jak se zmiňoval René ve svém článku na Intervalu) automatické naroutování JS událostí z klient kódu na kód serverový přijde jako dar z nebes. Cokoli, onfocus, onblur, onselect, onchange, onclick deklarativně napojíš na serverou metodu a pohoda. Díky engine asp.net nemusíš parsovat post, představsi, že si napíšeš k inputu submit naKliknuti=“odesli()“ .. pseudokód..Navíc asp.net 2.0 podporuje via js callbacky i AJAX like aplikace. Podobným způsobem. Pokud chceš ale prosté (dynamicky generované) stránky, žádný serverový formulář není třeba a výstup máš na 100% pod kontrolou, žádný viewstate, nic. Takže mi přijde úplně absurdní, že v 99% článků o ASP.NET, se kritizuje něco, co se dá lehce vypnout. Nic proti kritice, ale papoškouvat, že MS kašle na přístupnost už taky není IN, viz. http://msdn.microsoft.com/…default.aspx?…
…
David Grudl #43
#42 Danieli Steigerwalde, To je přesně ukázka tendence uvažovat v daných intencích, viz #3 David Grudl. Nic proti.
Mám systém, který totéž zvládne také. Automaticky, naroutuje onselect, onchange apod. na serverovou funkci. Ale! Onclick zvládá bez JavaScriptu, tedy do
<a href="...
dosadí konkrétní URL. A nemusím parsovat POST nebo cokoliv jiného. Tento systém si pamatuje stav i bez obřích polí viewstate. Programuje se mi v tom naprosto skvěle.Pochop prosím, že (z této perspektivy) mám určité právo kritizovat. Jakto, že to umím lépe než Microsoft? Ne ne, tak geniální nejsem, jen Microsoft to trošku ošidil.
Nette nakonec asi fakt bude bomba 🙂
Jakub Vrána #44
Rovněž jsem v .NET laik a rád se něco přiučím.
Denně používám IDOS, který je v .NET napsaný a používá
__VIEWSTATE
. Kvůli tomu nelze formuláři přiřadit rychlé hledání ve Firefoxu nebo Quick Search v IE a já musím krkolomně simulovat celé odeslání formuláře včetně aktuálního__VIEWSTATE
.Ptám se: Je tato aplikace napsaná dobře? Dala by se napsat i bez
__VIEWSTATE
? O jak moc by to bylo náročnější?Podle mě to je hezká ukázka nepřístupnosti základního přístupu .NET. Ne sice na té elementární úrovni „Bez JS to nefunguje“, ale stále nepřístupnosti.
Milf #45
#43 Davide Grudle,
A nyní teprve nastal ten správný čas představit Nette! 😉
Rene #46
Jakub Vrana: Ano, napsat by se to dalo a velmi jednoduse.
Roman Pichlik #47
ad 43.) "Tento systém si pamatuje stav i bez obřích polí viewstate. " muzu se zeptat jak to mate udelane, ze by pomoci session?
ad zavislost na JS.) v dnesni dobe je prezitek omezovat se nepouzitim JS, ostatne by to negovalo cely AJAX. Proc myslite, ze se AJAX prosadil a prosazuje i kdyz se tu X let mluvi o pristupnosti stranek? Budto to je tim, ze pristupnost neni zrejme pro business tak dulezita a nebo existuji efektivni zpusoby pro „servirovani“ ruzne formy obsahu pro ruzna zarizeni.
Jak .NET tak Java (JSF) maji dnes svoje reseni postavena na konceptu komponentně-událostnímu modelu. Je to diky tomu, ze pochopili ze klasicke request based MVC ala Struts je do znacne miry prekonane.
Roj #48
#44 Jakube Vráno, ja sice vubec netusim, co to je ten asp.net, ale jestli je IDOS tak debilne se chovajici stranka proto, ze je to ten asp.net, pak si vazeni diskutujte jeste kilometr hluboko, ale me to bohate staci, abych si udelal jasny nazor. 🙂
P.S. Ano, Microsoft zrovna nemiluju. Ale muzou si za to jeho fanaticti milovnici sami 🙂
roman #49
Ja len jednu otazku do plena, prepacte ale nemam dneska naladu citat diskusiu o .NET ktory podobne ako film Titanic a mnoho dalsich uplne programovo a vedome ignorujem v ramci snahy o zachovanie vlastnej integrity a blazenej nevedomosti.
Zovseobecnovanie je najlepsi sposob ako udrziavat flamewar pri zivote. A preto mam otazku co je to ta zlozita webova aplikacia. 😉
roman #50
#47 Romane Pichliku, Drzat stav na strane servera v session (respektive drzat si v session identifikator k uzivatelovmu zaznamu) mi pripada rozumnejsie ako kdekolvek inde.
Bohumír Bednařík (BoboCop) #51
Považuji se za programátora začátečníka a nevalidnost kódu generovaného ASP.NET 1.x a zmíněný VIEWSTATE (který jsem nevěděl jak odstranit – stále ještě nevím) mě od ASP.NET poměrně dost odrazují. Nicméně mám v plánu si nainstalovat ASP.NET 2.0 a zkusit se podívat na něj. Kód by snad měl být už validní a patrně i ten nepříjemný VIEWSTATE by se dal nějak obejít. Takže uvidím.
Ono „naklikat“ nějakou aplikaci v ASP.NET asi není problém, ale udělat ji takovou, aby odpovídala určitým představám o validitě, přístupnosti, atd., už je trošku oříšek. Tím nechci říct, že by ten nástroj byl špatný. Zatím jsem do toho tolik nepronikl, ale myslím si, že by se v něm dalo dělat poměrně hodně věcí relativně snadno (snadněji než např. v PHP – s mojí neznalostí PHP).
Řekl bych že na projekty typu weblog či „statický“ web se ASP.NET moc nehodí, ačkoliv jak se to vezme – viz třeba https://www.altair.blog/
Lokutus #52
Zřejmě jsi ještě neviděl HTML výstup z Lotus Notes. 🙂 To by se ti také moc líbilo.
Milf #53
#49 romane,
IMHO se aplikace stává složitou v momentě, kdy už nevíš kudy kám se stávajícím nástrojem a potřebuješ se zrealizovat někde jinde, kde by to snad mohlo projít – třeba to někde vidíš, někdo poradí apod.
Je to tedy věc čistě individuální, protože někdo píše hůře na klávesnici a tak volí cestu menšího odporu a kliká myší. Další pohoří na neschopností porozumět chybovým kódům a tak se vrhne na jinou platformu.
Všichni máme jedno společné – děláme (v drtivě většině případů) to co nás baví, když nás to živí o to lépe a je úplně fu©k, jestli náš živí ulice, počítač, kolo nebo cokoliv jiného.
Je tak? Kde je Nette … ? 😛
p.s. jinak díky za PERKO, je hned znát rozdíl – cítím se tak nějak svobodnější, když se čtu sám. 😉
llook #54
Podle toho názvu (viewstate) bych tipoval, že do toho patří jen stavové informace týkající se view (state of the view). Něco jako „client-side state“. Je to tak?
Málokteré WUI má tolik různých stavů, aby to nešlo vtěsnat do GET požadavku. Samozřejmě se pak nesmí plýtvat stavovými proměnnými – stránkovací tabulka se musí spokojit s offsetem a kalendář s datumem.
Co se získá podvržením? Asi tolik, co podvržením cookies nebo GET parametrů na klasickém webu. A tak je třeba k tomu přistupovat – ve stavu view neschraňovat stav modelu a vstup validovat.
Nebo je moje představa špatná a viewstate neslouží pouze k uchování stavu view? Potom by asi patřil do session.
Roman Pichlik #55
pro stav view je zbytecne mit session, protoze pak tezkou nekomu poslete odkaz na akutalne zobrazenou stranku. Alternativu nabizi REST koncept (Representational State Transfer) https://en.wikipedia.org/wiki/REST
David Grudl #56
#47 Romane Pichliku, Už si připadám hloupě, ale opět zopakuji tu myšlenku o uvažování v daných intencích, viz #3 David Grudl.
Běžné™ aplikace, které neznají ASP.NET (nebo PHP&Prado) prostě přenášejí svůj stav ze stránky na stránku pomocí parametrů v URL a vůbec je nezajímá VIEWSTATE. Pak přijde ASP.NET s VIEWSTATE a ty se mě najednou zeptáš na takovou banalitu, jak přenášet stav bez použití jeho použití…
Přesně to popisuje #54 llook. A nemá to žádné z uvedených problémů, jako je potřeba JS, Postback, atd.
Tak to pozor. Je něco diametrálně jiného záměrné použití JS v konkrétním případě a něco jiného framework, který je bez JS na holičkách. Pokud mě živí zisk z internetových obchodů, kam 95% zákazníků přivádějí vyhledávače, jenž JS neznají, tak mě závislost na JS sakra zajímá.
Prosím, už tu neopakujte, že v ASP.NET jde vytvořit klasický hyperlink. To je naprosto jasné, jen pak ty zásadní přednosti jsou v tahu, o použití standardních komponent nemluvě.
roman #57
#55 Romane Pichliku, Presne tak, ale to je myslim samozrejma vec.
Lukáš Lánský #58
dgx: Jenže ty základní komponenty nejsou určeny k tomu, aby člověk vyrobil webový obchod, ale k vytvoření administračního rozhraní pro takovou aplikaci. Tam to ušetří strašné práce, a ničemu nevadí, že se JS vyžaduje.
Přitom spousta .NETích controlů ho nepotřebuje, třeba základní Repeater, který ovšem také šetří spousty práce. Nebo celá sbírka Login controlů v ASP.NET 2.0.
Zkrátka to chce volit vhodné prostředky. Já osobně .NET používám hlavně kvůli
a ViewState skoro nepoužívám. Ne, že bych pro něj využití neviděl, ale prostě dělám věci, ve kterých je nepoužitelný.
David Grudl #59
#55 Romane Pichliku, Romane, trošku si protiřečíš. Pokud je opatrný přístup k JS a AJAXu přežitek, proč se pak znepokojovat používáním sessions pro ukládání stavu?
Dle mého je používání sessions stejnou překážkou pro poslání URL, jako stav změněný AJAXEM nebo odesíláním POST formuláře.
#58 Lukáši Lánský, V podstatě totéž tu naznačoval #32 Pavel Růžička. I když si osobně myslím, že není žádná hranice mezi prezentací a administračním rozhraním a jde jen o dva mantinely, mezi nimiž se všechny weby nacházejí.
Ale přesně rozumím tvé poslední větě, což je leitmotiv celé teto diskuze.
roman #60
#53 Milfe, Aj ja mam podobny nazor, ale myslel som si ze niekto tuto carovnu formulku premeni na realny priklad, ktory rozbije bank a ukaze ze bez .NET su vsetci strateni. Cudujem sa ze vyrobca soho a kancelarskych rieseni sa vobec v nejakom sektore biznisu dokazal vymanit z tejto nalepky 😉 Mozno pre laika je predstava Microsoft solution==Enterprise solution realna, ale pre cloveka co sa pohybuje v tomto biznise to uz take jednoznacne nie je 😉
Rene #61
Hm, už se to začíná zvrhávat předvídatelným způsobem
Možná ještě jednou můj názor na celou „kauzu“
Některým se to daří lépe, některým méně a vždy je to za cenu nějakých nevýhod. U ASP.NET mi ty „nevýhody“ připadají snesitelné.
(X)HTML je stále pouze poměrně primitivní značkovací jazyk, který je denně znásilňován pro potřeby, k nimž se vůbec nehodí. Den, kdy (X) HTML a CSS přestanou být používány jako hlavní platforma pro tenké klienty komplexních aplikací si vyznačím v kalendáři jako zvláště významný den.
BTW:
Jinak toto je debata spíše teoretická – v reálu firmu zajímá pouze, jaké budou náklady na vývoj. A s ASP.NET jsou weby vytvářeny rychleji – a jsou snadněji udržovatelné.
I když lze v PHP i ASP psát „slušný“ kód, nějakou složitější aplikaci bych v nich udržovat a rozvíjet nechtěl. Navíc zmatky v samotném jazyce vyplývající z toho, jak nekoncepčně a zmateně je PHP rozvíjeno, nebo ze zoufalé snahy nalepit na původně jednoduchý a svému účelu dobře přizpůsobený jazyk v alespoň okleštěné formě objektové principy – to opravdu nemusím.
roman #62
A to som si myslel ze moja otazka z prispevku #49 roman je jasna zrozumitelna a jednoducha na pochopenie 😉.
Rene #63
#62 romane, Zkusme příklady složitá webová aplikace.
Objednávkový systém s různými moduly workflow pro schvalování objednávek.
Helpdesková aplikace určená k řešení incidentů s vyhodnocováním práv pro interní i externí uživatele a stavovými automaty.
Webové rozhraní CRM systému.
Aby nedošlo k mýlce – každou aplikaci napíšete v jaémkoli jazyce. Ale napsáním aplikace práce nekončí a musíte ji být schopni rozvíjet a i na rozvoji vydělávat…
llook #64
#62 romane, Já bych to dělil asi takhle:
DeaLer #65
#9 Discogio, Pomocí PHP jdou dělat Desktopové aplikace ? Nikoliv !
Nechci vzbuzovat v PHPčkářích nějakou naději na skvělý scriptovací systém, protože jsem zastánce a obdivovatel technoligií .NET, ale s nahoře uvedenou větou nemohu souhlasit, protože v PHP je možné vyvýjet desktopové aplikace. S .NETEM se to sice nedá srovnávat. Více najdete někde na https://web.archive.org/…csvet.cz:80/
David Grudl #66
#61 Rene, myslím, že jsem zcela pochopil, kde se naše pohledy rozcházejí. Díky, v podstatě je pro mě debata uzavřená.
Pokusím se to shrnout. Jak tě znám z tvého blogu, tak soudím, že jsme velmi podobně smýšlející programátoři. Rozdíl je v tom, že já jsem po cca 15 letech programování se z čistého rozmaru vrhnul na webdesign a troufám si říct, že jsem tuto disciplínu celkem zvládl.
A tady právě vzniká rozdílný pohled. Ty (zcela oprávněně) vnímáš současné webové technologie (XHTML, HTTP) jako největší překážky při tvorbě bohatých webových aplikací. Těšíš se, až tyto překážky vymizí. Výhoda ASP.NET je v tom, že už dnes umožňuje ony překážky téměř eliminovat.
Já naopak plně respektuji webové technologie. Tím, že je vnímám v širších souvislostech (SEO, použitelnost, přístupnost), bazíruju na určitých principech, které považuji za nedotknutelné. A vzhledem k rychlosti (pomalosti) vývoje za posledních 5–10 let jsem si jist, že se na nich ještě dlouho nic nezmění.
A přesně v tom spatřuji rozdílnost našeho pohledu na ASP.NET. Pro tebe znamená jednoznačný přínos, pro mě je neakceptovatelné. Ten titulek i přes smysl pro dramatičnost 🙂 není nadnesený.
Jak jsem říkal, na čistě programátorské bázi se shodneme. Já nejsem v žádném případě spokojen s klasickým způsobem práce v PHP. Vlastně jsem tak (zbytečně?) náročný, že každý OpenSource projekt v PHP označuji za bastl. Proto se snažím naprogramovat si své ASP.NET. Samozřejmě myšleno obrazně. Stejně jako ty, i já považuji svět komponent, OOP, událostí apod. za to pravé ořechové.
Jenže nemůžu si zjednodušit život a přejít rovnou na ASP.NET, protože popírá ty zmíněné principy. Jdu tedy složitější cestou. Ale v podstatě směřujeme k tomu docela stejnému.
#65 DeaLere, Otázka desktopových aplikací je docela bezpředmětná. To absolutně nesouvisí s jazykem. Mimochodem, mrkněte na PHP4Delphi
Roman #67
#63 Rene, Podla toho co citam je v tvojom ponimani zlozita webova aplikacia nieco co je vlastne intranet prepojeny na internet. Ostatne argumenty viac akceptujem, to je samozrejme.
DeaLer #68
#66 Davide Grudle, PHP4Delphi znám – v Delphi jsem taky nějakej ten rok programoval. Měl jsem na mysli desktopové aplikace vytvořené přímo v PHP za pomocí GTK (myslím že GTK).
Rene #69
Díky Davide za tvé shrnutí, rozumím tvému pohledu.
rarouš #70
#66 Davide Grudle, Troufnu si tvrdit, že mám na web podobný podhled jako ty (aspoň musim souhlasit s tim, co jsi naspal o tvém pohledu na web), ale používám ASP.NET a nikdy jsem neměl problém s tim, že by z něj zezl nevalidní nebo nepřístupný bastl, jde jen o to, jak se k tomu programátor postaví. Ty jsi se rozhodl proto si napsat „svoje ASP.NET“ pod PHP, s tim, že to dá spousty práce a času. Kdybys zlomek toho času věnoval hrubému nastudování problematiky ASP.NET, zjistil by jsi, že to vůbec neni špatná technologie a že se stim dají dělat náramné kousky. Stačí využít dědičnost, lehce přepsat kus kódu originálních prvků a nebo si vytvořit prvky vlastní, ale to gro je už hotové a velice dobře funkční a rozšiřitelné. ASP.NET řeší spoustu věcí, když třeba klient nezumí JavaScript, nic se neděje, pošle mu takový výstup, kterému cílové zařízení rozumí. Pokud máš problém s výsledným kódem, napíšeš si snadno vlastní filtr, který aplikuješ na Response a je to (tohle byl jeden ze způsobů, jak donutit ASP.NET 1.x aby dělalo validná výstup). Pro zmenšení námahy, si jednou napsaný kód vykompiluješ do knihovny a pak ho stačí jen zkopírovat, napsat pár řádků do konfiguračního souboru a je to. Jednoduché, rychlé, efektivní…
DeaLer #71
S tím nezbývá víc než souhlasit.
Pokud jde o validitu kódu tak nejsem schopen se spokojit s nevalidním webem – i když to pro mě není to nejdůležitzější.
Proč tu vlastně píšete o ASP.NET 1.x?
Mirek Novotný #72
A to je přesně to, o čem jsem tu psal. Programátor musí mít aspoň hrubý přehled o svém okolí, aby zvolil nejvhodnější prostředí a neopakoval cizí chyby. Nelze udržovat X potřebných knihoven sám. Není třeba psát ovladač klávesnice v asm, aby člověk mohl něco naprogramovat. Dnes stačí vyhledat hotová řešení a s použitím vlastní invence poslepovat dohromady. Přemýšlení věnovat logice aplikace a ne tomu, jak na obrazovku vykreslit čáru. Cílem je snadná údržba, znovupoužitelnost, jednoduchost.
Jorge #73
Kdy budem moc otestovat Nette?
Uz se na to trepu jako maly kluk na zmrzlinu.
Zatim jsem zkousel phpCake, ROR atd.
Tom #74
Uprimne.Zaujime nazory. Kodujem v PHP (nepoznam zial ziaden framework okrem svojho,ten mi uplne staci). Kodujem v ASP .NET uz od bety. Presiel som erou stareho ASP. Z technologickeho hladiska aj z hladiska konfortu je .NET velkym krokom vpred(treba rozvadzat?).
Suhlasim s tym, ze „implementacia“ a komponenty, ktore pripravil Microsoft pre drag and dropovacov a „RAD“ pomocou tychto komponentov je cesta do pekla. (este pridam k tomu co sa spomina v clanku napr. nepouzitelne validatory…).
Tymto snad nebudeme argumentovat, je snad niekto odkazany na drag and drop? Je zle, ze MS pani
dali moznost naklikat si site aj vikendovym webovym „programatorom“? Je zle, ze vedia predavat?
Ale moznosti a komfort, ktore mi .net + studio dava su neporovnatelne s tym, co som si odzil s PHP. (je to subjektivny pocit, nikomu ho nevnucujem)
Ak chce niekto vlastny „web framework“ v .NETe, nech si kodne od zakladov, nie je problem.(dokonca si moze vybrat uroven od ktorej zacne) Kodnut si vlastne a ciste kontroly nie je problem. Vymysliet vlasny client-server wireing nie je problem.
V com je vlastne problem? V nicom. Vsetko je riesitelne presne tak ako ASP,PHP,JSP …(opacne platit nemusi)
Nuz problem moze byt jedine v tom, ze zdedis projekt od partizan developera, ktory vyuzije vsetky moznosti „RAD“, ktore MS v ramci drag and drop marketingu ospieval. Okrem toho zamestnavatel kupi „skvele“ controly, ktore developer bez rozmyslu a zaprenia nasadi v plnej „sile“.
A potom okrem fixovania, prekopavania kodov na business urovni stracas pod casovym stresom nervy s optimalizaciou 400K stranok a nenavidis MS a nenavidis ASP .NET 😉
(nastastie ide o intranet a nastastie mal z tych 400k mal zbytocny a neefektivne vyuzivany viewstate 150k,je okrem ineho komplet prec).
Som rad, ze MS je na trhu a som rad, ze hra hru aku hra a prispel tym, cim prispel 😁
A co sa tyka platformy – pani programatori, ako casto ste panmi situacie vy a nie zakaznik a obchodnik?
P.S. A nasiel som odpoved na otazku, ktora platforma je najhorsia?
Ta, v ktorej prave dokoncujete projekt po 5tich deadlinoch. Mozno trapne, ale lepsie ako reci na hladkanie si vlastneho ega zhmotnene vo flamewars ohladom platforiem. Peace!
David Grudl #75
Docela mě překvapilo, že formát, ve kterém jsou V ASP.NET ukládány jednotlivé stránky a který připomíná XML, tak pro zápis některých situací vyžaduje křížení značek. To je mazec… Není pak zbytečné si hrát na jakobyXML, když je třeba porušovat primární pravidla?
Borek #76
#75 Davide Grudle, Můžeš být konkrétní?
David Grudl #77
#76 Borku, cca veškeré příklady na Repeater, i přímo na Microsoftích stránkách, atd.
Borek #78
#77 Davide Grudle, Ke křížení ASP.NET tagů nikdy nedojde, stejně jako ke křížení běžných klientských (HTML) tagů. Příklad Repeateru z ASP.NET QuickStart Tutorials jenom říká, že se má po ukončení iterování přes položky Repeateru vypsat
</table>
. Interně je tento zápis naprosto stejný, jako kdyby místo</table>
bylo napsáno<asp:Literal ID="Literal1" runat="server" Text="</table>">
, což už by tě asi dráždilo míň (zápis je naprosto ekvivalentní, při kompilaci stránky do DLLka se všechny neserverové tagy převádějí do Literal controlů).Ještě se hodí poznamenat, že uvedený příklad by mohl být snadno přepsán tak, aby ti ani vizuálně nevadil, stačilo by obsah HeaderTemplate a FooterTemplate přesunout před a za Repeater, který by obsahoval pouze ItemTemplate. Zápis zvolený v příkladu použili autoři asi jen proto, aby demonstrovali, k čemu slouží HeaderTemplate a FooterTemplate.
Takže to vůbec není mazec, ale normální a „korektní“ chování. Ke křížení tagů nedochází.
David Grudl #79
#78 Borku, říkáš, že ke křížení tagů nedojde a přitom odkazuješ příklad, kde křížení právě je.
Vím, že se nedostane do HTML výstupu a chápu, že se dá celý příklad přepsat. Jenže mě zaráží právě toto podání. Běžně je používá Microsoft nebo i Interval.cz a nikoho to nezaráží.
Borek #80
#79 Davide Grudle, Říkám, že nikdy nedojde ke křížení ASP.NET tagů, což je pravda. Určitým způsobem chápu, že tě samostatné
</table>
dráždí, na druhou stranu je to podle mého názoru lepší zápis než<?php echo "</table>" ?>
nebo<asp:Literal ID="Literal1" runat="server" Text="</table>" />
.Při pohledu na Repeater si člověk musí uvědomit, že uvnitř XyzTemplate sekcí nevidí standardní HTML, ale pouze jeho fragmenty, které jsou zkráceným zápisem pro
<asp:Literal>
controly. Mimo Repeater a podobné ovládací prvky k žádnému křížení přirozeně nedochází (není k tomu nejmenší důvod).Radek Mlada #81
Dobry den,
panu autorovi bych doporucil podivat se na ASP.NET trochu podrobneji. To, ze kontroly, ktere jsou k nemu dodavany jsou sporne kvality je pravda, nicmene je take pravda, ze pokud nekdo diky nim ASP.NET zatracuje, tak by mel mit alespon dostatecnou silu si ty controly sam predelat … moznosti, ktere ASP.NET nabizi jsou totiz o „neco“ sirsi nez pouziti par controlu, ktere jsou to prvni, na co laik narazi … jinak drzim palce s Nette
Petr #82
#9 Discogio, Vážení, nevím, co tu řešíte. Srovnávat PHP a ASP.NET2.0 je jako srovnávat motor s celým autem. Celá tato diskuse je postavená na hlavu. Někdo se tu otřel o AJAX, ví ten dotyčný, o čm vlastně mluví? Nikdy jsem nebyl nějakým stoupencem Microsoftu, spíš naopak, ale tady se začínají stírat rozdíly mezi klasickou a webovou aplikací, de facto je možné použít jakýkoliv control i pro web – tedy i vlastní. Tak co ještě chcete?
Tento článek byl uzavřen. Už není možné k němu přidávat komentáře.