Právě jsem narazil na nádherný
názorový střet dvou programátorů v ASP.NET (a ještě
jeden). Marcus mi mluví přímo z duše, až mě z toho zamrazilo.
Jste na webu a tohle je výsledek vaší práce, a cílem vašeho klienta není, abyste rychle něco naklikal a vy jste byl spokojený. Můžete to prezentovat, že možná ušetří pár hodin, ale když výsledek stojí za houby, tak je mu to úplně jedno.
Marcusovi oponenti demonstrují sílu ASP.NET na tomto webu. Webu, který trpí snad všemi neduhy rodičovské technologie. Legrační.
Krok stranou
Nedávno uveřejnil Borek Bernard bakalářku srovnávající PHP s ASP.NET, Jakub Vrána k ní měl několik připomínek. Ačkoliv jde asi o nejlepší srovnání těchto technologií, jaké jsem kdy četl, pokusím se ho nyní trumfnout.
DGXovo srovnání ASP.NET a PHP
- vše, co lze naprogramovat v ASP.NET, lze naprogramovat i v PHP
- vše, co lze naprogramovat v PHP, lze naprogramovat i v ASP.NET
Konec srovnání.
Kdo je vítěz?
Kdo vyšel ze srovnání lépe? Dost ironie. Taková srovnání totiž nikam nevedou. Věc se má jinak.
Možná nejsem úplně normální vývojář, ale nad každým projektem vždy přemýšlím od konce. Tedy nejprve si představím výsledek. Hotovou aplikaci. Jak se bude chovat a to v každém detailu. Najdu její slabiny a odstraním je.
Tahle imaginace se netýká jen vzhledu! Zajímají mě takové detaily, jako přesný tvar všech URL. Vlastně ještě víc. Chci vědět, co se stane, odkáže-li někdo stránky s jinou velikostí písmenek v URL. Co způsobí znovuodeslání formuláře přes F5. Nebo tlačítko Zpět.
Teprve až jsem spokojen, začnu přemýšlet, jak to celé naprogramovat. Až přehnaný perfekcionalismus a zatvrzelost udělat práci pro klienta co nejlepší (kolikrát jsem sám svým klientem) mi nedovolí z návrhu uhnout.
Jednoznačně použiju Apache a (třeba) PHP5.
Proč? Protože k tomu ASP.NET a Web Forms není vhodné. Můj názor může být vždy odpálkován s tím, že nejsem v ASP.NET profík a kde beru právo se vůbec vyjadřovat. Proto si dovolím ještě jednou citovat Marcuse:
VŠICHNI, kdo dělají v ASP.NET profesionálně mi tady určitě potvrdí, že pokud chtěli např. splnit naprosto běžné požadavky, jako je vypnout JS, zrušit viewstate, kontrolovat rendrovaný kód, mít multi-post stránky, podporovat čitelný GET atd., tak si museli ohnout ASP.NET a to je šílenost. Proto mnoho firem má napsané svoje interní frameworky, které toto řeší a které pak vedou k docílení této funkčnosti bězné v dnešním internetu. A tam už žádné klikání není a co je hlavní, stojí HROZNĚ práce tohle ohnutí v ASP.NET udělat a udržovat.
My jsme museli udělat HODNĚ práce, abysme dorovnali vlastně úroveň PHP v ASP.NET. Zatím nám to stálo za to, díky přepsání skoro celého backendu…
Ač sám tyto zkušenosti nemám, došel jsem ke stejným závěrům.
Pro mě je vždy naprosto klíčové řešit příčinu problému, nikoliv jeho následek. Tedy navrhnu-li něco nešťastně a zároveň nabídnu možnost, jak důsledky napravit, tak to neznamená, že jsem věc navrhl správně. Stále platí, že jsem ji navrhl špatně.
Proto je mi milejší dobře navrhnout aplikaci ve (stále objektově nedokonalém) jazyku PHP nad serverem Apache, než ohýbat ASP.NET. I když tipuji, že obojí bude, alespoň v počátku, stát zhruba stejné úsilí.
Dodatek: nechci sdělit, že PHP je lepší než ASP.NET. Není. Jde mi o to, že Web Forms v rukou běžného vývojáře vedou ke strašlivým výsledkům. Málokdo na to upozorňuje a málokterý vývojář si to vůbec uvědomí.
Komentáře
jm #1
Velmi prijemny clanek. Dekuji.
nhek #2
Porad mi neni jasne proc vsichni srovnavaji PHP s ASP.net?
ASP.net je framework a ma asi vice nevyhod nez vyhod, to souhlasim – od JS, pres silene URL az po priserny kod, ktery to (defaultne) generuje …
Ale porad plati ASP.net je framework, PHP je programovaci jazyk.
…pro PHP urcite taky existuje spousta frameworku, ktere jsou k nicemu – i kdyz je pravda nevyviji nejvetsi SW spolecnost na svete. ale
Pokud ale srovnavam srovanatelne, tj. napr. C# s PHP jakozto jazyk s jazykem, tak muj osobni pocit je, ze C# ma proste pouzitelnejsi syntaxi, prehlednejsi pouzivani objektu a pise se mi v nem proste lip nez v PHP (ano, kdysi jsem programoval v C blahe pameti a psat pred kazdou promenou $ me proste stve…). Nikdo mne nenuti pouzivat preddefinovane komponenty UI v C# pokud nechci, stejne tak jako mne nikdo v PHP nenuti pouzivat napr. smarty, nebo jinej sablonovaci system…
kdyz si v PHP napisu vlastni framework, tak nikdo nenapise, ze si PHP ohybam – kdyz si napisu vlastni sadu funkci v C# pro generovani stranek a reakci na jejich chovani, tak je to ohybani ASP.NET?
David Grudl #3
#2 nhku, zcela souhlasím, z článku by mělo být patrné, že taková srovnávání ironizuji.
Mně jde čistě o srovnání přístupů a jsem přesvědčen, že žádný framework (PHP) je lepší, než velmi velmi špatný framework (ASP.NET Web Forms). Řada programátorů v ASP.NET však žije v přesvědčení, že jejich framework je špičkový a proto v budoucnu titul „jazyk bastličů“ převezme od PHP právě ASP.NET. Ironií je, že v tomto mají programátoři PHP výhodu – žádný standardní framework nemají a nemohou si proto o něm dělat mylné iluze.
Mimochodem, jazyk C# mi velice vyhovuje.
Rene #4
Že vás to chlapci pořád baví :)
¨
Myslel jsem si Davide, že po svém expresivním spotu s popisem zděšení z ASP.NET, sis svůj názor udělal a tam jsme dospěli k podobnému závěru.
ASP.NET je skvělé pro intranetové aplikace a nehodí se ve své "tovární"podobě pro veřejné prezentace, když CHCEŠ má absolutní kontrolu nad kódem.
Když rezignuješ na vychytávky .NET, můžeš ihned mít prostředí, které se od PHP neliší.
Proč ne – můžeš používat Response.Write, používat jen html značky místo kompozitních serverových ovládacích prvků apod. Přesto i bez všech vychytávek ASP.NET máš k dispozici -plnohodnotný objektový jazyk (a ne tu, s prominutím, parodii na syntax v PHP – v poslední době jsem byl nucen se znovu trochu PHP zabývat a hlavně z PHP4 jsem tedy dávil :D) a rozsáhlé .NET knihovny organizované do jmenných prostorů a obsahující konzistentně pojmenované třídy a jejich metody – opět PHP mě svou nesystematičností pěkně otrávilo.
Ta práce, o které mluví Marcus, je podle mě nutná, pokud chceš využívat některé vychytávky (serverové ovládací prvky) ASP.NET a současně eliminovat některé nevýhody, které jsi sám už v jiném spotu zmiňoval a které třeba znamenají, že generovaný kód není tak kvalitní, jak ho chceš mít.
A to je opravdu docela otravná práce.
Jinak moje volba je jasná – nechcete ASP.NET? V pořádku – můžeme použít Javu. Ale od PHP každého firemního zákazníka zrazuji…
„DGX: Pro mě je vždy naprosto klíčové řešit příčinu problému, nikoliv jeho následek. Tedy navrhnu-li něco nešťastně a zároveň nabídnu možnost, jak důsledky napravit, tak to neznamená, že jsem věc navrhl správně. Stále platí, že jsem ji navrhl špatně.“
Navrhnu-li PHP jako jazyk pro nadšence, kteří si chtějí vytvářet své jednoduché dynamické stránky a nyní simuluji v jayzce OOP principy, které mají zastřít, že v pozadí je stále ten primitivní skriptovací jazyk, neznamená to, že PHP je vhodné větší projekty. Stále platí, že PHP stále míří do zcela jiné oblasti než Java nebo .NET ;)
Ještš k té debatě s Marcusem = já také považuji za nešťastné, že Microsoft na svých DevDays i jiných akcích akcentuje RAD vlastnosti ASP.NET, které jsou mnohdy docela odpudivé. Nesnáším klikání aplikací.
Například DataSources v.NET 2.0, které jsou navíc implementovány jako běžné serverové ovládací prvky, považují za omezující a nedotažené. Už jen to, že kvůli špatně napsané třídě ObjectDataSource pro práci s business objekty je při vývoji preferována třída SqlDataSource,, což je jen výzvou pro bastlíře, aby stále vkládali kód patřící do různých vrstev aplikace vždy do UI.
myshpa #5
Jasne, proto treba yahoo je typicky priklad, ze php+mysql se hodi jen na jednoduche aplikace, ze?
Miluju to sebevedomi a ignoranci „MS“ programatoru. Ze by nejaky „visual-basic-komplex“?
Petr Snajdr #6
Argumentací, že v PHP napíšu vše a v ASP.NET lze šmahem porovnat téměř všechny existující jazyky. Snad až na jazyk KAREL.
Příklad: proč rozdělovat jazyky na neobjektové a objektové? Zcela otevřeně objektově je možné psát i v assambleru a třeba systém X-Window, ač napsán v neobjektovém C, je psán objektově. Ano, i v neobjektových jazycích a dokonce assambleru je možné psát objektově, ale otázka je za jakou cenu.
Popravdě nechápu ten sport porovnávat neporovnatelné. PHP znám ho od verze 2.1 a prvotním nadšení jsem ho od verze asi 4 přestal téměř úplně sledovat. Kde jen zanikl původní význam slov PHP? Tedy PHP = Personal Home Page, nástroj pro rychlou tvorbu osobních stránek, který nevyžaduje velké programátorské znalosti a je tak dostupný velké šíři lidi, kteří nemusí být profesionální programátoři. Proč to po nich taky chtít?
Myslím, že sám Rasmus Lerdorf se hodně divil kam se jeho dítko začalo rozvíjet.
Celé porovnávání, pokud to není jen takový chlapský sport, mi přijde jako porovnávat auto motorku a dopravní letadlo.
PHP je pouhý jazyk, který je možné použít i v rámci .NET frameworku, pokud v tom bude někdo spatřovat smysl. Jediný rozdíl bude v tom, že celá aplikace pak bude běhat o něco rychlej než v nativní PHP a to i přestože bude napsaná tomtéž jazyce PHP.
Co budeme porovnávat v tomto případě?
Petr Šnajdr #7
Nevím kde a jak Yahoo PHP používá. V roce 2002 anoncovali, že budou PHP používat, ale jaká je realita fakt netuším.
Nebyl jsem u toho, ale přišlo mi, že PHP tehdy pro Yahoo nabízelo překvapivě vyšší výkonost než yScript, který nicméně Yahoo nepřestalo používat. Jejich argumentace u spousty technologií byla dána hlavně omezeními, která si stanovili. Např. nechtějí platit Microsoftu za Windows a nebo to, že implementace Javy nebyla na FreeBSD tak výkonná jak potřebovali.
Na druhou stranu třeba s Perlem, s kterým byli velice spokojeni naráželi na to, že nebyl navržen pro web skriptování, lze v něm vše udělat několika způsoby atd.
Každopádně existující apikace není důkaz, že je daná věc pro dané použití vhodná. Je to jen důkaz, že to v daném jazyku jde napsat.
Klidně vám napíšu web v assambleru, ale otázka je zdali to za to bude stát. Myslím, že ne, ale mohla by to být sranda 🙂
Ps. U toho Yahoo by mě opravdu zajímalo jak a kde PHP používají nyní.
David Grudl #8
#4 Rene, René, pokud prohlásíš, že
nemám co dodat. Snad jen to, že vždy chci mít absolutní kontrolu (nejsem bastlič). Pokud bych potřeboval rychle vytvořit intranetovou aplikaci, zvažoval bych dát před PHP přednost C#.
Tedy článek není adresován tobě, ale (potenciálním) internetovým vývojářům s Visual Studiem. Mohou eliminovat všechny vychytávky ASP.NET. Mohou, ale udělají to? Znáš jediného takového? #6 Petr Snajdr Má tedy smysl oddělovat jazyk od továrního frameworku?
Víš, že nejsem z PHP dvakrát šťastný (říkám si, že třeba už šestka…). Přes všechny zápory v něm stále vidím lepší volbu pro své cíle. I když pravda, některé výhody jsou velmi nepřímé:
Michal Hantl #9
Já jsem tento článek pochopil jako odpověď nekonečným porovnávačům asp.net a php. Pochopil jsem to správně?
Petr Stříbný #10
Hlásím se jako daší z lidí, kteří v Asp.net dělají a rozhodně se s klikáním nespokojí. A i přesto podle mě má smysl. Vždycky přece v životě volíme kompromis :)
bert #11
#9 Michale Hantle, no jasne a o to vic me prekvapuje ze to #6 Petr Snajdr bere tak vazne, nechape tu ironii.
Pavel Růžička #12
Já jsem kompletně překvapen popisem toho, jaké mají někteří problémy s jakýmsi vypínáním JavaScriptu, ošklivými URL a nevhodností ASP.NET pro internetové prezentace – samozřejmě chci, aby moje webové aplikace byly přístupné, funkční i bez JavaScriptu a měly hezké URL, a to všechno jsem dosáhnul s tím základním, co ASP.NET poskytuje, nic jsem nikde „nepřiohýbal“, a aplikaci mám přístupnou a s hezkými URL.
Takže mi celé ty výkřiky o tom, že se stráví spousta času přepisováním a přiohýbáním ASP.NET přijdou spíš jen jako nářky z neznalosti – promiňte mi.
Borek #13
Nemám teď moc času se dohadovat, proto bych tě, Davide, poprosil, abys sem do komentářů nebo kamkoliv jinam napsal, jak bys v PHP implementoval RoundedBox.
Já pro ASP.NET dávám ke stažení jedno DLLko, vývojář ho přidá do projektu, do ASP.NET stránky napíše
<bb:RoundedBox>
obsah</bb:RoundedBox>
a má zaobleno. Prosím tě, popiš, co dáš v případě PHP ke stažení na web, jak se to bude používat ve stránce a jak bude zhruba vypadat vnitřní implementace.Nechci ti nic podsouvat, jen si chci ujasnit, jak vážně to myslíš s ekvivalentní funkčností PHP a ASP.NET. Jinak díky za odkaz a za milá slova v článku.
K netu se dostanu až zítra, tak se nezlob, že do té doby nebudu moct reagovat.
Roman #14
To som zvedavy co David odpovie. Ja ako absolutny neznalec ASP k tomu prakticky neviem zaujat nejake fundovane stanovisko, ale ak to spravne chapem, tak tebou vytvorene DLL si niekto prida k modulom co ma v ASP a toto na zaklade nejakych metaznaciek prida nejaky Javascript a CSS do stranky (pretoze samotne round corners by bez niecoho takeho samozrejme nefungovali). V pripade ze to pouzijem nepotrebujem vidiet ako ten JS a CSS vyzera . Proste sa predpoklada ze to funguje. Predstavujem si ako vyzera taka stranka ktora intenzivne vyuziva zo 10 takychto lahko pouzitelnych jednoucelovyc rieseni. Musi to byt plne roznych „ciernych skriniek“. Viem si predsatavit ze existuje aj komplexnejsie ucelene riesnie.. tu zas ale vidim problem s velkostou suboru/suborov co treba kvoli fungovaniu takehoto sikovnejsieho balika stiahnut.
David Grudl #15
#13 Borku, Borku, třeba tak, že do XHTML šablony přidám zvoleným elementům
<div>
tříduroundbox
a do frameworku plugin, který tyto bloky zamýšleným způsobem modifikuje. Nebo bych mohl do šablony zapsat přímo<bb:RoundedBox>obsah</bb:RoundedBox>
, ale já preferuji čisté HTML šablony, bez speciálních tagů či jakékoliv funkční logiky, protože mi je připravují (a později i upravují) kodéři, nikoliv programátoři.Ale je to spíš věc frameworku, než PHP.
Abraxis #16
No, doposud jsem byl zavily PHP coder (taky jsem si ale napsal vlastni framework, aby ten kod trochu vypadal slusne), nicmene ted mi kolega ukazoval Ruby-on-Rails a jsem naprosto nadsen. Kdysi v prvnich verzich jsem si s tim hral a nic moc dojem to na mne nezanechalo, ale stavajici verze mne prisla opravdu nadherny jazyk s frameworkem, ktery umoznuje velmi snadno psat „bohate“ aplikace (AJAX apod.) a zachovat strikni architekturu MVC.
Nerikam, ze by to v PHP nebo ASP.NET neslo, nicmene v RoR mne to prislo krasne pripravene, jen zacit psat „bussiness logiku“…
Nejvetsi problem je ale sehnad nejaky slusny webhosting.
DeaLer #17
To DGX: s tím tvým srovnání PHP a ASP.NET se snad ani nedá nesouhlasit 😁.
V žádným případě nepopírám, že ASP.NET má jistý nedostatky, ale osobně to dokážu přijmout jako fakt a nějak se s tím vyrovnám (neznám software bez chyb). Kvalita generovaného kódu je v ASP.NET 2.0 únosná – lze dosáhnout validity i přístupnosti, ale po vzhledové stránce a z hlediska strukturování na tom výsledný kód není nejlíp.
I přes všechny nedostatky nedokážu najít lepší platformu pro vývoj aplikací (nemyslím ASP.NET, ale .NET Framework + OpenSource implementace LIKE Mono obecně).
#14 Romane, RoundedBox je kvalitní control a troufám si říct, že výsledný kód je dostatečně kvalitní.
Roman #18
#17 DeaLere, Nepochybujem o tom ze kod roundedbox je kvalitny kedze pravdepodobne pouziva nejaky vyladeny JS ktory tieto round corners zabezpecuje (a sam o sebe je velmi jednoducho pouzitelny po prilinkovani .js na stranku) Skor mi islo o to ze takyto sposob je asi pre programátora pohodlný ale v končnom dôsledku do stránky pridáva veci bez toho že by to progarmátor nejako ovlyvnil. Predstavujem si co to asi moze robit ked tam takychto „controlov“ prida 10. To kvoli kazdemu prilinkuje novy javascript? A co alternativa v pripade ze JS nie je zapnute? Generuje to aj vlastne CSS v pripade ze chem tomu boxu priradit farbu? Alebo to pise priamo do html ako inline CSS. Ja neviem ako to funguje, ale táto pohodlna predstava tvorby webu (pouzivanim nejakych modulov ktore produkuju kod nad ktorym nemam priamu kontrolu mi nepripadá veľmi efektívna.
DeaLer #19
#18 Romane, RoudeBox má v podstatě 3 způsoby použití.
Tohle už se netýká RoundedBoxu.
Jen bych dodal, že ani taková tvorba webu nemusí být vždy pohodlná, ale nemůžu říct, že bych výsledný kód neměl pod kontrolou. Je to určitě věc názorů, ale mě to připadá efektivní.
#13 Borku, Proč vlastně ten script, co připojuje externí soubor, není taky v hlavičce? Nebylo by lepší místo ukládání obrázků někam na server použít httpHandler?
bluee #20
„Ač sám tyto zkušenosti nemám, došel jsem ke stejným závěrům.“
Jak nekdo muze dojit ke stejnemu nazoru, kdyz nema takove zkusenosti. To vidim prvne. Nepochopitelne.
Roman #21
#19 DeaLere, Ja som si samozrejme RoundedBox letmo prezrel Borkovej stranke. Nie velmi podrobne takze som nevedel podrobnosti, ale predpokladal som hned, ze zaklad bude v nejakom realnom kode (existuju minimalne 4 riesenia tejto). Tam je konkretne ako zaklad pouzity Nifty Corners coz je celkom fajn riesenie. Ostatne 2 spodoby pouzitia RoundedBox co si vymenoval, robia presne to co som predpokladal. Generuju kod aj s inline CSS coz je z hladiska snahy o oddelenie prezentacie od obsahu nie velmi pouzitelne.
error414 #22
S Borkem uz jsem se nekolikrat hadal ze v PHP nejdou udelat nejake veci.
DGXovo srovnání ASP.NET a PHP === stoprocentni pravda
DeaLer #23
#21 Romane, Inline styly se používaj u všech tří možností. Já RoundedBox nepoužívám, ale ASP.NET znám už docela dobře a myslím, že by neměl bejt problém se použití inline stylů vyhnout napojením na třídu.
#22 error414, To srovnání je určitě pravda, ale rozdíl bude v době a způsobu tvorby.
Roman #24
#23 DeaLere, Ak spravne chapem co tym chces povedat. A ak by si RoundedBox pouzil sposobom ako hovoris, v podstate by si sa priblizil implementacii „round corners“ riesenia na takej urovni, ze by si sa nakoniec v podstate bez neho obysiel. Tym padom sa cela vyhoda tej pohodlnosti ktora spociva v pouziti jednej metaznacky a vygeneerovanie roundboxu.
A v konecnom dosledku mi to pripomina prave to privohejbani.. ktore spominal, v DGX-ovom clanku citovaný, Marcus.
kmar #25
mam kamarada ktery jiz leta profesionalne a spickove programuje v c#.net pro jednu z nejvetsich ceskych softwarovych spolecnosti jako senior programmer. pred nekolika tydny mi nadsene ukazoval svou novou knihovnu pro cookieless sessions. kdyz jsem mu ukazal ze toto lze zapnout ve web.config pouhym pridanim jednoho elementu, zustal stat s otevrenou pusou.
vsechny tyto veci jsou velmi jednoduse osetritelne :)
p.s.: jsem byvaly grafik, nyni barman, s programovanim nemam nic spolecneho ;)
DeaLer #26
#24 Romane, můžeš mi dát nějakej kontakt – tohle už vážně není předmětem téhle diskuse
Roman #27
#26 DeaLere, E-mail používam na úplne iné veci ako na súkromnú dišputu týkajúcu sa článku na blogu. Nemyslím si že by to o čom sa bavíme namalo tematický súvis s týmto blog-spotom.
DeaLer #28
#27 Romane, No jak myslíš. Já jsem neměl namysli žádné přiohýbání (co to vůbec je? ekvivalent k dopisování funkčnosti v PHP?), ale jednoduché vyplnění attributu CssClass (ve výsledném kódu běžný attribut class), ale před chvíli jsem si vytvořil testovací stránku a zjistil jsem, že v tomto případě pravděpodobně nebude možný se bez nějakých úprav (změna / doplnění funkčnosti a ne přiohýbání) úplně zbavit inline stylů, ale u „menších“ prvků (např. tlačítko) to není problém.
Borek #29
#15 Davide Grudle, Pokusím se vlastními slovy shrnout důsledky tvé odpovědi. Oprav mě, kdykoliv se mnou nebudeš souhlasit.
Pokud bych to měl shrnout, podle mého názoru existují výhody, které ASP.NET má a PHP je z principu nemůže v nejbližší budoucnosti nabízet. Máš tedy pravdu, že libovolnou funkčnost lze implementovat v libovolné technologii, ale důležité přeci není jen CO lze s danou technologií vytvořit, ale i JAK (jak snadno, jak rychle, jak levně, …)
Borek #30
#19 DeaLere, Implementace RoundedBoxu není dokonalá a třeba použití web resources by se určitě hodilo.
SneakerXZ #31
řekl bych to takhle, že pokud budeš programovat v nějakém frameworku, který má jistá pravidla tak kuli zvláštním věci hold to budeš muset ohnout a je jedno jestli to je v PHP s nějakým frameworkem či ASP.NET, Python Djanga atd…
Teď už je jen otázka co vyhovuje každému víc? Jestli psát vše znovu(tím myslim, že člověk neni striktně daný frameworkem) nebo mít vše hotové a jen to sestavit a v připadě problému ohnout.
DeaLer #32
#31 SneakerXZi, Já teda neuplatňuju ani jednu s tvých možností. Já používám už hotové prvky a v případě nespokojenosti (nejen v případě nespokojenosti) si vytvořím něco vlastního (a pak už to znova nepíšu) nebo jen upravím funkčnost (s tím, že využiju základních možností frameworku) toho s čím nejsem tak úplně spokojenej – tomu taky řekneš ohýbání.
David Grudl #33
#29 Borku, První body ti mohu hned vyvrátit tvou vlastní zbrazní, protože „pokud daný projekt psaný v ASP.NET nepoužívá standardní framework“, jsi s komponentou RoundedBox víš kde. Toliko k ekvivalenci jazyků.
O ekvivalenci technologií tu píšeš jen ty, teď dokonce hraješ překvapeného, že PHP nemá tovární framework. Jistě že nemá. Tvrdil jsem něco jiného? Tématem je skutečnost, že .NET má framework nevhodný (až nepoužitelný) pro tvorbu internetových stránek.
Držme se tedy tématu.
Mimochodem, plnohodnotný šablonovací framework s podporu pluginů, ve kterém by mohlo fungovat něco-jako-RoundedBox, (na podobné úrovni pohodlí) lze napsat v PHP na 50 řádků kódu.
S posledním odstavečkem zcela zásadně nesouhlasím. Nicméně je to naprosto typický argument vývojářů pod .NET. Věř mi, že kvalita odvedené práce je důležitější, než její snadnost či rychlost. Ballmer může běhat po pódiu a křičet de-ve-lo-pers jak dlouho chce, ale všechny Microsoftí programátory strčí do kapsy tým, který si bude notovat cus-to-mers ;)
#31 SneakerXZi, jde o to, jestli ohýbáš výjimečně, nebo kdykoliv pro dosažení standardních potřeb.
DeaLer #34
#33 Davide Grudle, Stejně se tu nedopracujeme k žádnému výsledku. PHP a .NET vývojaři (i když to může znamenat totéž) se nikdy neshodnou na výhodách a nevýhodách druhé technologie, protože má každý tu svou a ta je pro něj nejlepší (stejně jako u browserů, os a dalších).
Já jsem přístupnej většině názorů, ale tohle je moc a začíná to vypadat jako flame.
Předhoďte sem někdo framework postavený na ASP.NET, ve kterém nebude fungovat zmíněný RoundedBox – já toho nejsem schopnej.
BTW: Borek má pravdu, že PHP už z principu v blízké budoucnosti nedosáhne výhod ASP.NET, ale je fakt, že ryhlosti a snadnosti programování by nemělo být dosaženo na úkor kvality, ale je ztráta kvality v ASP.NET opravdu tak velká? Rozhodně to není nejhorší.
DeaLer #35
#33 Davide Grudle, Sorry – špatně jsem tě pochopil. Pokud by např. RoundedBox stál na jiném frameworku, než je standardní APS.NET framework, tak si můžeš být téměř na 100% jistej, že ten framework získáš v nějaké podobě s RoundedBoxem a pravděodobně tak nebudeš mít problémy s jeho použitím.
SneakerXZ #36
#32 DeaLere, Myslel jsem to tak jak píšeš, že klidně použiješ nějaké knihovny či komponenty chtěl jsem to zdůraznit v té závorce, že nepoužiješ framework…
#33 David Grudl To máš taky pravdu, ale jak víš kolikrát musíš ohýbat? napiš mi něco co ti na ASP.NET vadí a trochu konkrétněji, abys mi nenapsal všechno. ;P
DeaLer #37
#36 SneakerXZi, Možná jsem tě pochopil špatně, ale ty myslíš, že tím, že si něco napíšu sám nebo použiju nějaký „cizí“ komponenty znamená, že nepoužívám framework?
SneakerXZ #38
#37 DeaLere, Ne tak docela. Blbě jsem to napsal. Tak se to pokusím napravit. Jde o to, že když programuješ v nějaký frameworku máš celkem luxusní věci k mání a vše spolu pěkně spolupracuje(databazé, kód, vzhled atd…), ale když potřebuješ něco co už nebylo ve frameworku zamýšleno tak máš problémy a musíš vymyšlet jak to „ohnout“.
Natož když nepoužíváš framework musíš vše psát znovu i s tím, že použiješ nějaký cizí knihovny či komponenty. Pokud používáš hodně cizích komponent tak musíš vymyšlet jak to spolu bude spolupracovat, ale pokud si z toho uděláš jakýsi framework tak se zase můžou objevit problémy v odstavci jedna, ale je pravda, že když si to napíšeš sám nebo sestavíš tak dělat v tom změny je daleko jednodušší než v něčem co udělal někdo jiný.
DeaLer #39
#38 SneakerXZi, JJ – chápu, ale osobně jsem se nesetkal s tím, že by mi možnosti frameworku nestačily (tím nemyslím to, že součástí frameworku není nějaká komponenta, ale to, že by neobsahoval možnosti, jak tu komponentu poměrně snadno vytvořit).
SneakerXZ #40
#39 DeaLere, No, komponenty by měli jít vytvořit jednodušše v každém lepším frameworku. Což ASP.NET nabízí. Myslel jsem jak dxg zmiňuje vypínáni viewstate.
Jinak spousty problémů co dxg zmiňuje nebo cituje byly neduhy ASP.NET 1.1 v ASP.NET 2.0 to doznalo značných vylepšení a kontrolovat renderováný kód je naprostá legrace. Stačí si napsat vlastni render pro jistou komponentu a kód je takový jaký chce vývojář. To, že MS komponenty maj tak hrůzný kód je kuli tomu, že MS si nemůže dovolit, aby to nefungovalo v IE 4.0 a kuli tomu je zpětná kompatibilita, ale nabízi samozřejmě nahrádní komponenty s CSS, které se daji stáhnout z MS webu. Problémy s GET url se dá vyřešit s technologii Cool URL, o které si myslím, že je daleko lepší než mod_rewrite. Problém s multi-stránky řeší master-pages.
Asi takhle špatné stránky může psát člověk i v PHP i v ASP.NET to, že člověk nezná pořádně danou technologii a pak produkuje balast je více méně chyba vývojaře nikoliv vývojové platformy. Samozřejmě někdo rád trenky, boxerky nebo slipy tak stejné je to tu… Každý vždy haní to co nepoužívá a většinou je to způsobeno neznalostí a nikdy nemůže člověk napsat kvalitní srovnáni jelikož expert vždy může být jen v jednom a vždy bude trochu nadržovat tomu co má u něj větší sympatie nebo mu vyhovuje víc.
Borek #41
Abych se přiznal, Davide, moc ti nerozumím a hlavně mi není jasné, čemu na mých komentářích nerozumíš ty :)
Jistěže můžeš najít pár ASP.NET projektů, ve kterých RoundedBox použít nepůjde (bude se jednat o „hodně ohnuté ASP.NET“), ale takových případů bude velmi velmi málo. Přesné statistiky sice neznám, ale vzhledem k tomu, že i MVC frameworky typu MonoRail nemají při spolupráci s Web Forms žádný problém, nevidím mnoho důvodů pro používání vlastního ASP.NET šablonovacího systému.
Ty tedy argumentuješ několika málo procenty (možná promilemi) případů, zatímco já argumentuji 100% webových aplikací postavených na PHP. Věřím, že si to uvědomuješ a jen mě zkoušíš :)
Nyní k té implementaci šablonovacího frameworku na 50 řádcích. Netvrdím, že to není možné, ale i kdyby to byla práce na dva řádky kódu, jak to podle tebe ovlivní jednotlivé body z komentáře #29 Borek ? Mimochodem, chtěl bych se ohradit proti tomu, že „hraju překvapeného“ – jak se věci v PHP mají samozřejmě vím a nemyslím si, že bych se snažil působit jinak (aspoň ne vědomě).
No a nyní k tomu poslednímu odstavci. Souhlasím s tebou, že kvalita a spokojený koncový zákazník jsou top priority. Mohl bych s tebou polemizovat, zda je kvalita vždy důležitější než jiné aspekty (např. korporátní zákazníci se software assurance asi nejsou moc rádi, že Microsoft při snaze o co nejlepší kvalitu už 5 let nevydal žádný operační systém), ale to je již skutečně off topic. Co bych od tebe skutečně rád slyšel, jsou konkrétní argumenty proti mému poslednímu odstavci. Já vím, že je nejjednodušší napsat pouze „nesouhlasím“, ale co přesně ti vadí? Pletu se snad v tom, že PHP některé věci nenabízí a v současnosti ani nabízet nemůže?
Poznámka pod čarou: stejně jako #34 DeaLer mám lehký pocit, že se do toho začínají dostávat emoce. Není to mým cílem, rád bych se jim vyhnul a účelem mých komentářů není provokovat tě. Nejsem si úplně jistý, jestli mám ve všem věcech pravdu, a píšu je sem hlavně proto, abys mohl poukázat na konkrétní chyby, které jsem udělal. Silná slova o nepoužitelnosti ASP.NET asi není to, co by tuto diskuzi mohlo posunout dál. Souhlasíš?
DeaLer #42
#40 SneakerXZi, Pěkně napsaný. Pro neználky bych snad přihodil link na ty CSS adaptéry – už jsme na ně koukal, ale zatím jsem neměl příležitost je použít.
Jen ještě k tomu viewstate – myslím, že je to užitečná věc, i když v některých případech může dosáhnout větší velikosti než je třeba. Nemělo by stačit ho ve web.config vypnout pro všechny stránky (vlastnost EnableViewState)? Popřípadě je možná komprimace – příklad někde na https://www.codeproject.com/.
PS: já mám to štěstí, že jsem s ASP.NET 1.1– nikdy nepracoval.
David Grudl #43
#41 Borku, Borku, rozlišujme prosím jasně, co je jazyk a co jsou knihovny a framework. Jazyk C# je mi milejší než jazyk PHP. Ale jako celá platforma pro běh webu je mi milejší Apache a (třeba) PHP5. Svým příkladem s RoundedBox jsi tento rozdíl smyl.
Možná by stálo za to vymyslet konkrétní zadání jednoduché webové aplikace a pokusit se ji vyřešit na obou platformách a popsat (upřímně, bez nadržování) všechna úskalí a také výhody.
Emoce do diskuse rozhodně dostávat nechci, poznámka o nevhodnosti technologie ASP.NET byla ve smyslu toho, co napsal #4 Rene.
#20 bluee, až to jednou pochopíš, objevíš úžasný svět racionálního poznání.
DeaLer #44
#43 Davide Grudle, Nic proti – Apache je skvělej server, ale vadilo by ti používat kombinaci IIS 6.x a PHP 5?
David Grudl #45
#44 DeaLere, naprosto vadilo. Je to značné zjednodušování, že když tady mluvíme o PHP nebo ASP.NET, tak tím myslíme celou platformu (viz #8 David Grudl). Snadno to může vést k nedorozuměním.
myshpa #46
#7 Petře Šnajdře, vice info k php @ yahoo treba zde: https://web.archive.org/…zend2005.pdf
DeaLer #47
#45 Davide Grudle, Ten můj dotaz neměl mít žádnej vztah k předchozí diskusi – jen mě to zajímalo.
PHP beru jako jazyk a ASP.NET jako část frameworku a nesnažím se je pokládat na stejnou rovinu (pokud jsem to někde udělal, tak sorry).
myshpa #48
Nechapu tuhle diskuzi. Na PHP existuji stovky frameworku, napsat si vlastni maly MVC framework [vc. pear, smarty] je zalezitost par desitek radku.
Co je super je to, ze mi nikdo neurcuje JAK. Jestli ma nekdo pocit, ze prace v .NET je komfortnejsi, ja mu to neberu.
Ale radeji si stejne jako DGX udelam neco, cemu rozumim, co pak pouzivam ve vsech dalsich projektech, kde vim kam sahnout a co zmenit bez dalsiho studia.
Rychlost vyvoje imho srovnatelna s vyvojem v .NET, kvalitu web aplikaci snad neurcuje pouzity framework, nejaky rounded box v dll neni vyhoda [dll se da nacpat stejne i jako extension do phpka], naopak je to kravovina cpat 6 vytvorenejch divu do vyslednyho html, kdyz je to zalezitost vzhledu [tj. jako ideal vidim zrovna pro tohle kombinaci skriptu v JS na 10 radku + CSS, vytvorit rounded box pak staci vlozit 1 js knihovnu + dat nejakymu divu v template classu].
Hm … ma tahle diskuze vubec smysl, dgx ? Tohle se prece neda sdelit nekomu, kdo nikdy kod v PHP ani nevidel.
DeaLer #49
#48 myshpo, Já jsem PHP kód viděl a dobu jsem se ho snažil používat.
Proč myslíš, že DGX napsal tenhle článek? Proto abysme si jen znovu přečetli jeho subjektivní názor?
Jsem na tom stejně jako ty – taky rád používám něco čemu rozumím.
SneakerXZ #50
#48 myshpo, To je právě, že ty hodnotíš rychlost tvorby na základě toho, že v PHP vyvíjiš rychle a myslíš si, že to rychleji nejde, ale jde.
Ještě k tomu tvýmu extensionu samozřejmě, že nikde nejsou žádné limity. Můžeš do Apache přidat dll jako extension, ale rozdíl mezi těmito dll je, že ten plugin(komponenta) do ASP.NET nemusí přidávat administrátor serveru, ale může ho přidat i jako vývojář aplikace a import té knihovny je daleko komfortnější než kdybys měl přidávat nějakou knihovnu do Apache a další rozdíl je ten, že ta knihovna je napsána v C# či jiný .NET jazyk kuli Apache bys zas musel studovat API o hledně tvorbě extensionu atd.
BTW: Ten Rounded box tam nevkláda 6× záleží jak je napsán. Může být napsán, že se mu nastavít pouze data source a z něj si bere všechny informace. Jak jsem řekl vyšše každému může vyhovovat něco jiného.
U PHP já dobrě hodnotím to, že můžeš vyvíjet aplikace aniž bysi znal dobře PHP je to pro mnohé lidi taková nadstávba HTML a přechod z HTML na dynamické stránky dělané pomocí PHP s HTML je jednoduchý jelikož nemusí se učit spoustu nových věcí a jak v tom postupně programují tak nabývaji zkušeností až jim tam nic nechybí a dosáhnou kvalitní úrovně. Natož kdyby se rozhodli pro ASP.NET tak by museli svou stránku plně naklikat(což se mnohým nemusí líbit) jelikož kdyby chtěli psát kód na, který byli zvyklí(HTML) a s dynamičnit ho psáním programového kódu tak by se museli učit rozsáhle věci a to moc lidí nechce když začíná.
Je to pouze volba :)
David Grudl #51
Mám pocit, že RoundedBox tu nadělal víc zmatků, než užitku, už ho prosím neřešte. Stejně, jako lze do ASP.NET & Web Forms napsat plugin, tak lze i do PHP & Prado napsat totéž. Nebo do ObjectPascalu & VCL (Delphi). Ale zmínky o Apache nebo PHP extension už jsou dočista out of topic.
#46 myshpo, díky za odkaz. Sice je to spíš prezentace s velmi „bodovým“ obsahem, ale obří web bych dnes navrhoval podobným způsobem
Borek #52
Ještě bych rád ujasnil jednu věc, ve které se mi zdá, že nemáme stejný výchozí názor. Osobně PHP považuji za framework nebo lépe řečeno za platformu pro vývoj webových aplikací. Je pravda, že bych v ideálním případě měl rozlišovat mezi PHP a Zend Engine, ale všude uvidíš „naše aplikace je postavená na PHP+MySQL“ místo „naše aplikace je postavená na Zend Engine + MySQL“, takže se mi to už jaksi vrylo do podvědomí. Pokud tedy mluvím o PHP, téměř vždy tím myslím aplikační platformu, ne jen jazyk.
Jinak mi tato diskuze vůbec nepřipadá bezpředmětná a rád bych znal tvoje vyjádření na komentář #29 Borek, respektive jeho poslední odstavec (nějaké delší než „nesouhlasím“). To, že PHP chybí tovární framework, je v mých očích vysvětlením, ale nikoliv argumentem.
No ale teď už se půjdu věnovat příjemnějším věcem, takže pokračování zítra :)
David Grudl #53
#52 Borku, PHP určitě za framework nepovažuj. To je
Za platformu považuji kombinaci PHP & Apache & Unix, ale už jde o volitelnou kombinaci tří nezávislých produktů.
Pod PHP existuje celá řada lepších či horších frameworků, třeba CakePHP (inspirován Ruby on Rails), PRADO (obdoba Web Forms z ASP.NET), Seagull, Nette (které jsem se rozhodl syslit). Pokud by PHP bylo samo o sobě frameworkem, jak potom nazývat tyto systémy? (i když, slovo framework je poněkud mnohoznačné)
V této souvislosti si v komentáři #29 Borek zaměň ASP.NET za (třeba) VisualBasic a ztratí hned smysl. Mohu dělat pluginy-komponenty pro PHP jakožto c) knihovnu funkcí (a že jich je), i pro PHP jakožto b) interpreter (např. APC) a dokonce pro PHP jakožto a) jazyk (např. ArrayAccess či přetěžování operátorů). Ale ty jsi měl na mysli PHP jakožto framework, což však není.
Na ASP.NET mi vadí paradigma tvorby webových aplikací, které vede k takovýmto hrůzám. V PHP by to profík nikdy nevytvořil, protože ho k tomu nic nevede (žádný DevDays nebo Michal Valášek 😉. Leda, že by propadl PRADO. Proto tvrdím, že lepší žádný framework než špatný.
Stejně mám pocit, že některé věci se nedají klábosením vysvětlit, proto nabízím spolupráci na nezávislé analýze při velmi vytvoření jednoduché aplikace s maximálními technickými nároky na kvalitu a především správu.
DeaLer #54
#53 Davide Grudle, Ten web, na který jsi odkázal už asi 2× je odrazující příklad a jestli si ten co to dělal řiká profík, tak ho lituju, ale pro tebe asi nejhorší příklad mluví za všechny. Já se rozohodně za profíka nepovažuju, ale takhle špatnej web si nedovolím vytvořit – jistě uznáš, že má homepage je na tom z hlediska kódu o něco líp.
To Borek, DGX: Za jak dlouho by asi začínající programátor v PHP / ASP.NET (C#), s průměrnou znalostí (X)HTML a s povrchní znalostí připojování k DB vytvořil jednoduchý více vláknový diskusní fórum s podporou více témat, jednoduchým hledáním a přihlašovacím systémem? Diskuse by měla obsahovat tři uživatelské role – uživatel, moderátor a admin.
Admin má samozřejmě nejvyšší práva (může přidávat, mazat a upravovat vlákna, témata a příspěvky, může přidávat, mazat uživatele a upravovat jejich údaje). Moderátor může přidávat, mazat a upravovat vlákna a příspěvky. Uživatel může přidávat vlákna a příspěvky. Nepřihlášený uživatel může v disusi pouze číst.
Ve výpisu témat se zobrazuje počet vláken v tématu. Ve výpisu vláken se zobrazuje zakladatel vlákna, počet příspěvků a autor posledního příspěvku ve vlákně. Ve výpisu příspěvků je přimá možnost vložení odpovědi.
To už prosím nezapočítávejte do přibližného výsledného času - jestli jsem nezapoměl na nic podstatnýho, tak už dál přijde jen doplňování detailů, na které začínající programátor zpočátku nemyslel a případné ladění podle požadavků okolí.
Profi programátor by šel ještě dál, ale tohle by mělo stačit.
PS: tento model diskuse jsem vzal ze svého webu a pro lepší představu se můžete podívat a nebo se na to celý můžete vykašlat – to záleží jen na vás.
llook #55
Klíčové slovo, které tu myslím ještě nezaznělo je tzv. deployment, neboli činnost, potřebná ke spuštění napsaného programu.
U čistého LAMPu spočívá v uložení souborů do správného adresáře. Žádný prostor pro generování kulatých obrázků a jiné činnosti.
To neznamená, že v PHP nejde napsat to samý co v ASP.NET, znamená to jenom to, že se na to musí jít jinak a že lze najít případy, kdy méně pohodlně.
U těch bezobrázkových si dokážu představit implementaci, která by se používala nějak takto:
DeaLer #56
Moje řeč – https://web.archive.org/…80/zapisnik/?….
Všichni co v téhle diskusi pomlouvali výstup asp.net (a nejen oni) by si to měli přečíst, aby viděli, že se dá dělat i víc, než jen do prázdna vykřikovat, že se jim to nelíbí, že to nejde a že je nutný nějak „ohýbat“ framework.
jméno #57
#53 Davide Grudle, Nějak nemůžu pochopit vaši nenávist k panu Valáškovi. Jeho videoprezentace jsou, myslím, velice příkladné. Je sice pravda, že naklikání částí (button, imput,…) není nejvhodnější, ale to je především proto, že je to prezentace, kde by složité vypisování kódu nudilo. Já si kód píšu sám a informace z přednášky využívám také. Profi programátor se totiž musí naučit filtrovat a svým logickým myšlením jít dál.
Roman #58
„Nějak nemůžu pochopit vaši nenávist k panu Valáškovi.“ Milujem tieto emocionálne vydieračské argumentačné ňuansy, zvyčajne si predstavujem, že ich píšu manželky kritikou postihnutých jedincov, ale keďže sa takéto správanie vyskytuje čoaz častejšie, je dosť možné že sa to stáva súčasťou bežného spôsobu komunikácie. Už len teraz zistiť pôvod tohoto fenoménu. že by politické diskusné pořady?
DeaLer #59
#58 Romane, Lol. Proč myslíš, že se autor/ka toho příspěvku nepodepsal/a?
Ondra #60
.net je proste k nicemu a hotovo, staci mi kdyz se podivam jakym zpusobem si prirovnal microsoft C k jejich obrazu (C#) a uz je mi na bliti. Ondra
Roman #61
#56 DeaLere, Ten článok ale nijak nevyvracia DGX-ov fikaný výrok že „Pro mě je vždy naprosto klíčové řešit příčinu problému, nikoliv jeho následek. Tedy navrhnu-li něco nešťastně a zároveň nabídnu možnost, jak důsledky napravit, tak to neznamená, že jsem věc navrhl správně. Stále platí, že jsem ji navrhl špatně.“ 😉
Najviac sa mi páči táto veta: „When the sample adapters are in use, superfluous and old-fashioned styles are still sometimes added to the page's HEAD. These styles come from deep within the framework and are difficult to prevent. Though it would be best if they didn't exist on the page since they are superfluous, they are basically harmless.“
Ale inak sa mi ten CSS Friendly ASP.NET 2.0 Control Adapters páči hlavne to že to ovlyvní markup vybraných ASP.NET controls v rámci celého projektu, takže kto má tú potrebu, naozaj si tým vie výstup vyčistiť. A určite je to lepší prístup ako púštať na výstup „sadu regulárních výrazů“
Borek #62
#53 Davide Grudle, Slovo framework jsem zvolil špatně, taky za něj PHP nepovažuju. Úplně nejlepší mi přijde nazývat jak ASP.NET, tak PHP platformou. Ty sice do platformy počítáš ještě webový server a operační systém a já proti tomu vůbec nic nemám, nicméně u většiny dostupných PHP aplikací je často fuk, na jaké kombinaci OS+web server je budeš provozovat, takže i PHP samotné v určitém smyslu platformou je. V tomto smyslu mi připadá v pořádku srovnávat platformu PHP s platformou ASP.NET – to jen na vysvětlenou lidem, kteří říkají „prohoba, jak můžeš srovnávat skriptovací jazyk s frameworkem“.
Jinak si taky myslím, že takovéhle „klábosení“ skutečně nikam nepovede. Já jsem víceméně všechno, co mě ve vztahu k článku napadlo, řekl. Asi jsem tě o některých výhodách ASP.NET nepřesvědčil, jako jsi ty nepřesvědčil mě, že se mýlím. Určitě by bylo nejlepší dohodnout zadání webové aplikace a pak třeba ve formě screencastu předvést, jak budeš postupovat v ASP.NET a jak v PHP. Docela rád bych se toho zúčastnil, ale upřímně řečeno se mi do toho teď nechce – máme zařizování s Anglií a nerad bych přislíbil něco, na co mi nakonec nezbude čas. Ale až se jednou budu nudit… :)
Díky za pokec.
DeaLer #63
#61 Romane, JJ. Já jsem netvrdil, že ten článek má někomu něco vyvrátit, ale jen, že by si ho tu někdo měl přečíst.
#60 Ondro, Ty seš teda lama – necpi sem ty ubohý názory.
Pokud tedy nemáš doložitelný argumenty, tak tě znovu žádám, aby sis je nechal pro sebe.
Borek #64
#55 llooku, Tvůj příklad je důvod, proč uvádím zrovna RoundedBox a ne jiný control, třeba Button. Kompletní příklad by totiž vypadal takto:
Ty si asi představuješ, že metoda
begin()
se nahradí nějakýmidiv
y, případně s přednastavenými inline styly, třídami a podobně, pak se vypíše text „obsah bloku“ a metodaend()
se nakonec nahradí uzavíracímidiv
y.Jak ale budeš postupovat, když se ke generování kulatých rohů bude používat JS knihovna Nifty Corners? Ta totiž vyžaduje, abys do HTML hlavičky přidal odkaz na externí JavaScriptový a CSS soubor. V ASP.NET to vyřešíš jednoduše: v nějakém brzkém stádiu životního cyklu stránky programově změníš obsah elementu
<head>
. V PHP máš za standardních okolností problém: ve chvíli, kdy interpret narazí naKulatyRohy::begin()
, už byla HTML hlavička odeslána prohlížeči a nemůžeš ji tedy modifikovat. Možností řešení je několik: manuální instrukce vývojáři, output buffering, použití šablonovacího systému nebo frameworku a možná ještě něco dalšího, ale nevím o žádném způsobu, který by byl stejně elegantní a bezproblémový jako použití<bb:RoundedBox>
v ASP.NET.Zde se vracíme k mému komentáři #29 Borek, který rozepisuje důsledky tohoto rozdílu mezi PHP a ASP.NET. To, co David v komentáři #53 David Grudl nazývá komponentou, má ve skutečnosti k ASP.NET controlu velmi daleko. Toto je z mého pohledu nejpodstatnější rozdíl mezi PHP a ASP.NET a abych řekl pravdu, připadá mi, že controly přinášejí do ASP.NET tolik výhod, že to stojí za překonání určitých úskalí, které jsou ASP.NET vyčítány. Ale třeba David tyto výhody za tak důležité nepovažuje, takže vidíš, že se jedná o věc názoru.
Marcus #65
Dobry den!
Diky za citaci :) Kazdopadne mam dojem, ze byla zneuzita a to se mi nelibi. Moje kritika je ostra vuci Microsoftu ale stejne tak by byla ostra vuci PHP, ve kterem mame mnoho projektu. Presto si porad myslim, ze ASP.NET je vyborne technicke prostredi, ale nelibi se mi pristup Microsoftu v tom, ze nedotahuje svoje reseni.
Osobne bych byl spokojeny, kdyby ASP.NET bylo v open source podobe jako PHP a nemel ho MS pod kontrolou. Ale pokud jsme volili, tak PHP ma oproti ASP.NET velmi „slabe“ (sakra ja snad napisu nejake skutecne profi srovnani :))) ).
Ale ASP.NET mam mnoho neduhu a je tam silene chyb. Totez je v PHP a mozna jeste vice. Kazdopadne na velke projekty se nam vyrazne nevyplatilo PHP pouzit a to jsme ho meli take ohnute, ale jinym smerem (hlavne unifikace frameworku, funkcnich modulu, load-balancing ja dalsi silenost v PHP atd).
Co mohu rici je jedno, ASP.NET ma silene problemu, ale zatim je to podle mne nejlepsi volba ale vyvojari musi na Microsoft rvat a musi ho dokopat k tomu, aby si s lidma nehral a aby konecne dotahoval svoje produkty a pak to nedohanel tim, ze vydava nove verze produktu, co jako jsou super nove verze, ktere ale jen opravuji stare chyby. Za to by si MS zaslouzil nakopat, protoze jde casto hrozne do sirky a nezvlada pak udelat veci vertikalne dobre. Proto lidi ohromuje zdanlive tisici novyma featurama, ale ty jsou pak desne nedotazene. Proto jak rikam, at MS je kopan vyvojarema do zadku a zacne konecne dotahovat svoje produkty a ne to dohanet klikacima prezentacema.
jméno #66
#58 Romane, #59 DeaLer Ne, opravdu nejsem manželka ani manžel. Jde mi o to, jak někdo může jen tak kritizovat nějakého člověka za jeho styl práce, který je značně ovlivněn přednáškou (čas+informační hodnoty). Přednáška není o tom se tupě naučit vše, co lektor dělá, ale filtrovat postupy a na základě nich vymyslet něco nového. Osobně mi to od člověka, který na Lupě vydal tupou zprávičku o automatické generaci obsahu přijde dost ubohé.
Marcus #67
Jo a jeste pochvala pro DGX za to srovnani ;) Stotoznuji se s nim. Podle me to VUBEC neni o tom, jestli je asp.net lepsi nez PHP. Jsou ruzna reseni a ruzne volby, ale vzdy jde o ten profesionalni pristup a muj pohled je to, co jsem psal v tom prvnim prispevku – KOPA vsechny ty autorske firmy k tomu, aby nam nevnucovali nesmysly, ale pomohli nam udelat profesionalni produkty, kdy nasi klienti budou spokojeni.
A proto je nutne PORADNE kopat do zadku Microsoft, Sun, IBM…proste vsechny, co delaji ASP.NET, JSP a dalsi nastroje, ktere casto jen nam vnucuji jejich logiku mysleni. Meli bysme proto mene bojovat mezi sebou, zdali je asp.net nebo php nebo jsp lepsi, ale radeji kopat ty autory, protoze oni sami chteji, abysme my mezi sebou valcili, z toho tezi a to podoruje jejich byznys. Ale my chceme mit pekne nastroje, dobry vystup a vubec spokojene delat nasi praci a ne se trapit tim, ze nas firmy zneuzivaji jako predvoje pro svuj byznys.
Proto jeste jednou se pripojuji k tomu srovnani a navrhuji jedno: pojdme spolecne bojovat PROTI tem velkym firmam a rikam jim, ze maji nam naslouchat a ze my jsme jejich klienty a oni maji nas ucinit stastnyma :) A tim, ze valcime mezi sebou fakticky ztracime, protoze ty firmy neciti na ne tlak a nakonec na tom prodelam vsichni. howk :)
error414 #68
#64 Borku, to co uvadis stim odeslanim hlavicky
„PHP máš za standardních okolností problém: ve chvíli, kdy interpret narazí na KulatyRohy::begin(), už byla HTML hlavička odeslána prohlížeči a nemůžeš ji tedy modifikovat.“
Sestavis si cely kod a pak ho teprve posles, dela to tak 90% velkzch projektu. To co uvadis by napsal clovek ktery nepotrebuje modifokovat hlavicku nebo clovek ktery se uci PHP 2 dny.
ASP .NET a PHP dela stejny vysledek jen s jinym postupem.
Jedina vec o ktere se da bavit je s jakym usilim se dostanu do cile.
DeaLer #69
#65 Marcusi, #67 Marcus Hmm – co dodat. Do nich.
#66 jméno, Nevím jak jsi to udělal, ale videntně víš, co si David myslí o Altairovi a nevím jak je to možný (asi telepatie – to zatím neumím, třeba časem), protože já tady na něj nevidím žádnou přímou kritiku ani projev nenávisti.
Jen by mě zajímalo, jestli se tady dozvím ještě něco novýho, protože už se to tu více-méně opakuje.
Marcus #70
Jeste jeden komentar k tomu, co je opet chybne zde prozentovano, sorry DGX:
.NET má framework nevhodný (až nepoužitelný) pro tvorbu internetových stránek
Tohle prave ze neni pravda. Zkusim to upresnit:
A prave u bodu 2 kritizuji VELMI ostre Microsoft, protoze to, co MS ukazuje a nabizi default je spatne (jak uz jsem psal). Ale ohnout to jde a to ohnuti znamena to, ze si navrhnete svoji architekturu, ktera zmeni chovani ASP.NET oproti tomu, co MS prosazuje. A tohle pokladam za obrovskou silu, protoze ta architektura muze byt skutecne velmi kvalitni OOP navrh s vyuzitim vsech enterprise prvku z 1 a z operacniho systemu.
Co rikam tedy k bodu 2 je to, ze MS udelal dobry zaklad, ale ze to NEDOTAHNUL, odflaknul to a ze MS neni poradne kritizovan aby poslouchal hlasy vyvojaru a nedelal paskvil a ten pak ve svych prezentacich nenutil vyvojarum jako uzasny postup. TOHLE mi vadi, ze MS se snazi svoje chyby ukazat jako uzasne a namisto aby dotahnul svoje jinak vyborne napady, tak nas nuti je dotahnut sami a jeste nas nuti do cesty, ktera je nepouzitelna v default rezimu.
Proto kdyby ASP.NET bylo open source, tak verim, ze by to byl dneska absolutne nejlepsi prostredi. Ted si myslim, ze v default rezimu je ASP.NET vyrazne horsi nez PHP, ale kdyz ho upravite, jako jsme udelali my, tak PHP obrovsky prekonava (vykon, kvalita kodu, OOP navrh, testing atd.). Ale stalo nas to rok prace.
Jméno #71
Zkoušeli jste někdo Ruby on Rails? Nebo přímo Ruby?
Marcus #72
#4 Rene, Wow, rene. TOhle je vynikajici shrnuti :) Naprosto se s nim stotoznuji. A skutecne mohu rici, ze je to presne.
ASP.NET je default rezimu, jak ukazuje MS na akcich desne. ALe klidne muze vyvojar psat pres Response jako v PHP a echo.
Ale proc my jsme zustali u .NET a nesli do Javy (PHP skutecne pokladame za amaterske, a to v nem delame uz skoro 8 let) tak to proto, ze ASP.NET je otevrene kvalitnimu navrhy nasi architektury. Jedine co nas sere je to, ze SUPLUJEME praci Microsoftu! A pak jeste videt na akcich, jak se prezentuje, jak nekdo naklika uzasny web za chvilku bez radky kodu! To me skutecne HODNE irituje, protoze to je lez!
Ale pokud by se ukazalo napr. tvorba nad dobre napsanym web frameworkem, tak je to super a skutecne sila .NET vynika.
Marcus #73
#71 Jméno, JOjo, my s tim nejaky cas delame. Je to pomerne hezke, hlavne jsme to zkouseli na scriptaculous a nejake ajax veci. Presto tam opet je nutne delat upravy, hlavne proto, ze scriptaculous je jeste porad velky JS framework a je nutne ho vyrezat :)
Jinak ROR je hezka zalezitost, presto tam behem pomerne kratke doby narazite na obdobne problemy jako treba u asp.net, ze kdyz chcete nektera specifika, musite si to upravit. Ale my to primarne pouzili na vyvoj neceho podobneho jako je pageflakes.com, tedy ne prilis backend funkcnosti.
Roman #74
#66 jméno, Na toto hadam ani nemá zmysel reagovat. Ale aspon poviem prečo. Za prvé si anonym a za druhé si práve jasne ukázal že si ignorant ktorý sa tu ukázal úplne náhodne a o DGX-ovi vie velký kulový. Zbohom.
Roman #75
#65 Marcusi, !Ale ASP.NET mam mnoho neduhu a je tam silene chyb. Totez je v PHP a mozna jeste vice. Kazdopadne na velke projekty se nam vyrazne nevyplatilo PHP pouzit a to jsme ho meli take ohnute, ale jinym smerem (hlavne unifikace frameworku, funkcnich modulu, load-balancing ja dalsi silenost v PHP atd)."
Toto ma zaujima. Kedze ako som uz spomínal, o ASP neviem nič. Rád by som sa dozvedel viac podrobností ako zvláda ASP.NET veľkú zaťaž (rádovo stovky dotazov za sekundu). Jednoserverová inštalácia predsa musí mať tiež svoje limity?
ASP.NET sa predsa musí potýkať prene s tými istými problémami vyťaženosti „zásuviek“ nielen na strane servera ale aj v prípade vyťaženosti samotného sieťového hardware.
Borek #76
#68 error414, Já mám v oblibě empirické důkazy. Je mi jedno, co jak dělá 90% velkých projektů, ale ASP.NET komponentová technologie je a PHP není. Proto si z netu můžeš stáhnout sofistikované data gridy, file managery, RoundedBoxy a řadu dalších užitečných věcí, zatímco ve světě PHP podobná nabídka neexistuje. Můžeš argumentovat třeba serverem hotscripts.com, ale rozdíl mezi komponentou a volně dostupným zdrojovým kódem je propastný. Proto moje první otázka v této diskuzi byla, co by dgx dal v případě implementace RoundedBoxu v PHP veřejně ke stažení. Konkrétní odpovědi jsem se přirozeně nedočkal (David popsal, jak by se to dalo řešit, ale to byla jen část otázky; na zbylou část uspokojivá odpověď neexistuje).
Jak jsem už řekl, já vůbec nezpochybňuji, že technologií PHP i ASP.NET lze vygenerovat úplně stejnou výslednou stránku, stejně jako nezpochybňuji, že se z Pardubic dostanu do Prahy jak mercedesem, tak na kole. Jen říkám, že konečný cíl není jediným kriteriem posuzování platformy/frameworku/technologie.
David Grudl #77
#54 DeaLere, víš, ona kvalita kódu bývá mylně zaměňována za validitu. Ta ale nemá pro uživatele zas takový vliv (bývá přeceňována). Kvalita je souborem mnoha faktorů, validita je jedním z mnoha.
Při pohledu na kód tvého webu mě jako první napadá: proč je tam obrovské skryté pole
__VIEWSTATE
? Proč se bez JS nemohu přihlásit? Proč máš multiplicitu obsahu (jedna dva tri …)?To jsou významné kvalitativní nedostatky. A nemá smysl argumentovat, že
__VIEWSTATE
tam být nemusí. Nemusí, ale je tam. Neboť jde o výchozí přístup a jeho odstranění znamená více úsilí. A přitom jsou v něm uloženy třeba barvy nebo popisky nějakých tlačítkek. Proboha proč? Koho by napadlo (před existencí Web Forms) něco takového posílat přes skryté pole formuláře? Leda blázna.Proto tyto „vady“ nepřisuzuji primárně tvůrcům pod ASP.NET, ale ASP.NET a Microsoftu jako takovému. Protože své vývojáře k tomu „manipuluje“.
Aktivity Microsoftu v „očistě kódu“ (viz #61 Roman) věc jen zamlžují, protože vývojář si myslí, že tím je vše vyřešeno, ale ono to tak není. Reší to malé procento problematiky.
#65 Marcusi, Marcusi, určitě jsem nechtěl použít tvých citací jako argumentaci za PHP – jen otevřít oči nadšencům s VisualStudiem, že nejsou tak na koni, jak se domnívají.
Myslím, že nám jde o totéž, rozdíl je v tom, že ty jsi investoval moře času k ukočírování ASP.NET, já moře času pro zvládnutí PHP (viz poslední věta článku).
#70 Marcusi, jistě, diskuse se týká vyloženě bodu 2. Asi by bylo lepší psát framework Web Forms.
David Grudl #78
#64 Borku, Tohle je myslím zrovna velice nešťastné. Ufff. Bavme se teď „top profi“ :)
V PHP (bez jakýchkoliv knihoven) se to dělá třeba takto:
A tohle prosím srovnávejme s ASP.NET. Naopak tohle #55 llook srovnávejme s Response.Write bez použití Web Forms. Ok?
#76 Borku, Borku, ty zase nemůžeš pochopit, že ta komponentová technologie v ASP.NET je špatná, špatná, velmi špatná. Takže prostě nikdy nemůžu prohlásit „ano, tady má ASP.NET značný náskok“, protože tady má ASP.NET značný průser. Viz odpoveď DeaLerovi (#77 David Grudl).
Tady je asi kámen úrazu.
DeaLer #79
#77 Davide Grudle, JJ – často to bývá zaměňováno, ale naštěstí ne mnou (validita je pro mě jedna z posledních věcí co mě zajímaj když už dělám nějakej web).
Používám non-case-sensitive adresy, takže multiplicitu obsahu pokud vím nemůžu vyloučit (ale jistej si tím nejsem).
Já se tedy bez JS přihlásit můžu (zkus to tady) – jediné co bez JS nefunguje je postback a ten je na celém webu použit jen velmi zřídka.
MS mě k ničemu nemanipuluje, já jsem na ASP.NET naprosto dobrovolně a ze své vlastní vůle a dobrovolně snáším jeho případné nmedostatky.
Jednotlivé komponenty ukládají (mohou ukládat) své informace do viewstate. Proč se to dělá? Přečti si tenhle článek a třeba pochopíš, že je to troufám si říct nejlepší způsob jak provádět to, k čemu e viewstate určené.
Velmi snadno je možné aspoň částečně omezit velikost viewState – stačí změnit vlastnost enableViewState v souboru web.config na hodnotu false, ale já k tomu nemám důvod, protože viewState na mém webu je velikostí v mezích únosnosti a na tom nehodlám nic měnit.
Microsoft přinesl už více inovativních myšlenek (ty taky před tím nikoho nenapadly), než jen viewstate- bez ohledu na to jestli je to dokonalý.
Viděl jsi výstup ASP.NET 1.x bez úprav a výstup ASP.NET 2.0 vedle sebe? Zkoušels je porovnat? Asi ne, protože jinak bys věděl, že MS společně s jednou společností (na název si teď nevzpomínám) udělal opravdu velký pokrok směrem ke kvalitě kódu v ASP.NET 2.0.
Myslíš, že ty jsi s PHPčkem a editorem (asi PSPad), co používáš nějak extra na koni?
PS: web forms ani ASP.NET není framework – je to jen součást frameworku
DeaLer #80
#78 Davide Grudle, Opět bys neměl házet všechno na jednu hromadu – komponentovej systém není špatnej, ale špatná je velká část komponent (já s tím nesouhlasím, ale v tvém případě bych to řek takhle).
DeaLer #81
Teď mě napda rozdíl se kterým budou jistě všichni souhlasit – v PHP je interpretovanej kód a v ASP.NET je kompilovanej kód.
David Grudl #82
#79 DeaLere, neber to prosím osobně, ale právě tvůj komentář je hezkou ukázkou manipulace Microsoftem, dá-li se to tak říci.
Prostě bez JS se nedostanu na přihlašovací stránku, na první stránce s výchozím stavem vidím viewstate – a místo toho, aby ses pokusil pochopit, proč je to špatně, proč je to z profesionálního hlediska naprosto přípustné, tak tu obhajuješ, že to vlastně tak moc špatně není, dokonce že je to vlastně dobře. Věř mi, že není.
Ale jsme v jádru problému! Tohle přesně na ASP.NET kritizuji a snažím se vývojářům otevřít oči a sdělit jim, že tudy ne. Nevěřte Microsoftu ani klikajícím přednášejícím. Jednou to stejně pochopíte, ale proč to nepochopit hned?
#80 DeaLere, bohužel chyba je už v samotném komponentovém systému, jak jej programátoři Microsoftu navrhli & implementovali. Což samozřejmě nevylučuje, že i řada komponent může být špatných nebo naopak dobrých.
Petr Stříbný #83
Můžeš mi, dgx, prosím tě vysvětlit co je špatné na viewstate? Že zabírá moc místa v kódu? Já si myslím, že docela usnadní spoustu věcí a pokud je správně použit, nevidím v něm problém.
Osobně si myslím, že těch pár KB v dnešní době ve většině případů nehraje roli.
Roman #84
#81 DeaLere, Trošku preskakuješ. Chceš asi povedať, že stránka napísaná v ASP.NET je v zásade rýchlejšie spracovaná ako stránka v PHP. V oboch prípadoch je však možné dosiahnuť rôznymi metódami ešte rýchlešie zobrazenie až do zanedbateľných časov. Problém záťaže servera však nie je ani tak v rýchlosti generovania obsahu ale skôr v počte koľko http požiadaviek dokáže za určitý čas obslúžiť a tiež aj ako rieši pretaženie požiadavkami. Bohužial o tom ako sa to správa v prípade riešenia od MS veľmi neviem. Celkom rád by som sa o tom niečo dozvedel od Marcusa ktorý s tým má zrejme väčšie skúsenosti ako ty. Predpokladám, že si si ten nový zdrcujúci argument prečítal niekde na fóre.
Roman #85
#83 Petře Stříbný, Minimálne v prípade indexovacích robotov zohráva každý kilobajt dôležitú rolu čím toho viac dokážu za jednu session schúrstať tým lepšie. Mňa by inak zaujímalo, prečo musí byť viewstate v kóde stránky a nemôže byť uložený na serveri? Veď keď pozerám je to nejak zakódované, takže je to zo strany browsera asi tak či tak nepoužiteľné. Pripadá mi to ako nejaká náhrada session ktorá úplne zbytočne posiela užívateľovi údaje ktoré aj tak dokáže spracovať iba server.
David Grudl #86
#83 Petře Stříbný, Petře, otázka zní jinak: čím je dobrý pro uživatele? Ničím. Čím je špatný pro uživatele? Objemem dat, které je potřeba při načtení stránky a poté po odkliknutí postbacku přenést. Cituji:
O nemožnosti bookmarkovat viewstate ani nehovořím.
Opět se tím dostávám k tomu, že ve vztahu Microsoft ↔ vývojář pod ASP.NET není pro uživatele a klienty vůbec místo. Vývojář je nadšen, jak to pěkně a hlavně rychle naklikal, klient však ostrouhá. To je pro mě naprosto nepřijatelné.
Samozřejmě bychom tu mohli řešit, k čemu je dobrý viewstate pro vývojáře, ale k takové debatě se nesnížím, protože je velice špatný pro uživatele a tím to končí. Zkusme se bavit jako profíci.
DeaLer #87
Mysli si co chceš (osobně to brát nebudu), ale MS se mnou rozhodně nemanipuluje – naopak si k MS chovám velkej odstup, některý jejich kroky nechápu a připadaj mě zbytečný a nesmyslný, jsem nezávislej na platformě – tohle ti připadá jako výsledek MS manipulace. 😁
Já se na tu stránku dostanu i bez JS a určitě nejsem sám. Já chápu, že viewState není nejelegantní řešení (může dosáhnout velkého datového objemu), ale zkus ty pochopit, že je to pravděpodobně nejlepší způsob, jak udělat to co má dělat viewState (ukládat údaje mezi jednotlivými postbacky). Nikde jsem neřekl, že je dobře, že může viewState dosáhnout tak velké velikosti.
Prosím nehraj si tu na nějakýho super guru a nemysli si, že tvoje názory jsou všechno a ostatní je ta spodina a nesmysl a že je špatně všechno, co není podle tebe.
Ty třeba taky jednou pochopíš proč já používám ASP.NET (není to kvůli MS a už vůbec ne kvůli klikajícím přednášejícím – za svou praxi jsem žádnou přednášku neviděl), ale bude to nějakou dobu trvat a ještě napíšeš hodně článků, který budou tomuhle podobný. Moc se těším, až se objeví .NET 3.5 – už vidím jak budeš kitizovat provázanost serverových a klientských prvků, asp.net callback, provázanost s AJAXem a další. Bude to tak – věř mi. 😁
BTW: nechápu proč MS chce vypustit .NET 3.0, který je postavený na .NET 2.0 + přidává věci jako WPF, WCF, WWF a WCS. Následující .NET 3.5 bude obsahovat technologie 3.0 (C# 3.0, ASP.NET ‚Atlas‘, atd.).
Že ty tak přesně víš, kde je chyba, když ten systém moc neznáš.
#84 Romane, Myslel jsem to tak jak jsem to napsal a taky je to pravda. PHP má interpretovaný kód a ASP.NET kompilovaný kód – to je nespornej fakt. Např. já nemám na webu jedinej soubor se zdrojem (*.cs), ale všechno mám předkompilovaný v dll knihovně a podobně to funguej i když tam tu předkompilovanou knihovnu nemáš – https://web.archive.org/…compile.aspx.
Petr Stříbný #88
Jde o to, že pro session potřebuješ třeba Cookies, kdežto ViewState je v zásadě nezávislý na JS, Cookies nebo na čemkoliv na klientské straně.
Navíc ke každému Controlu nebo stránce stačí připsat EnableViewState=„false“ a máš z toho klasiku.
David Grudl #89
#88 Petře Stříbný, Zeptám se tě zcela konkrétně:
Ruku na srdce, vážně tohle považuješ za vrchol webdesignu? Bohužel, jde o typický příklad vadného paradigma ASP.NET.
David Grudl #90
#87 DeaLere, ajajaj, zabočil jsi do velmi osobní roviny a děláš ze sebe … Budeme pokračovat třeba za rok, jo? 🙂
Roman #91
#87 DeaLere, To je jedno. Išlo mi o niečo iné.
#88 Petře Stříbný, Ale veď stačí zabezpečiť aby sa v prípade vypnutých cookies prenášal identifikátor session v URL, prípadne ako input type=„hidden“ (presne ako v prípade viewstate) a máš pokryté všetky prípady.
Dokonca už aj defaultné PHP session to podporuje. Drobná nevýhoda je v tom, že ten input type hidden štandardne generuje v HTML syntaxi.
Ja hlavne nechápem prečo sa to celé prenáša užívateľovi a zasa posiela nazad. Ked s tym webstranka aj tak nepracuje. Chapal by som keby si tam nieco cez JS vedel pridat a poslat nazad, to by mohlo byt zaujimave (aj ked to sa da riesit aj inak a asi aj pohodlnejsie).
Petr Stříbný #92
#89 Davide Grudle,
1 – Ten ViewState tam je, kdyby jsi ho potřeboval. Pokud na stránce potřeba vůbec není, měl ho autor zrušit.
3 – Za to nemůže ViewState, ale autor, který ho špatně použil. Navíc v tomto konkrétním případě (kdy se jedná o odkaz na jinou stránku) měl autor použít klasický normální hyperlink.
Petr Stříbný #93
#91 Romane,
Vidíš a už narážíš na SEO problém se cpaním Session do URL. Pokud bys to dal do schovaného pole, měl bys z toho ViewState, ale musel by sis s tím dát více práce než v ASP.NET.
Na druhou otázku momentálně nemám čas, takže odpovím jindy.
DeaLer #94
#86 Davide Grudle, Nesnížíš a nebo na to nedokážeš odpovědět?
BTW: nemůžeš už nechat to naklikávání. Já myslel, že se tu snažíme bavit na profi úrovni a na tu rozhodně naklikávání nepatří (ani já to nedělám a to nejsem profík).
#90 Davide Grudle, Jasně – v tom příspěvku teď ani nechci pokračovat – to bylo mimo.
#89 Davide Grudle, ASP.NET nemá přeci nic společného s webdesignem jako takovým.
#92 Petře Stříbný, Díky za připomínky – můžu to změnit. ViewState tam potřebuju, takže jeho vypnutí nemám v plánu.
Roman #95
#93 Petře Stříbný, Nie je vôbec problém vypnúť transparent session. Ja ju mám defaultne vypnutú.
„ale musel by sis s tím dát více práce než v ASP.NET.
“
Ano musíš napísať 1 príkaz naviac do stránky. 😉 To je všetko.
Na druhou otázku momentálně nemám čas, takže odpovím jindy.
ok
Roman #96
#93 Petře Stříbný, Aha uz chapem co si chcel povedat. Ze by som stale cez formulár „postoval“ sessid. To mi ale nepripadá správne. Session používam z hľadiska užívateľskej interakcie. V prípade že mi stránku indexuje robot, nie je potrebné aby sa session (alebo viewstate) vôbec používali.
Borek #97
#78 Davide Grudle, Myslím, že teď už docela chápu tvůj názor, a je tedy nejlepší čas ukončit debatu :) My se totiž neshodnem už ve výchozích předpokladech:
Je dobře, že existují lidé jako ty, protože vy vytváříte nové, hodnotné projekty (viz Texy, protože Textile není dost dobré). Já proti tomuto přístupu nic nemám a jsem za lidi tvého typu velmi vděčný, jen jsem v téhle debatě chtěl říct, že ne všichni mají podobně vyhraněné požadavky na kvalitu a že každý má hranici „dost dobré“ nastavenou jinak. A tisíce projektů po celé zeměkouli považují ASP.NET za „dost dobré“.
No asi není nejlepší nápad končit diskuzi takhle dlouhým příspěvkem – věřím, že mi to v odpovědi nedaruješ :)
Anton Piták #98
Je tu strašne veľa reakcii, toľko času nemám, ale:
V skutočnosti tieto debaty, štúdie a flamewar nie je ani o jazyku ani o frameworku. Je to o ľuďoch a o tom, ako si stanovia priority na projekte.
DeaLer #99
#98 Antone Pitáku,
Ad 1: je vidět, že jsi to nečet celý – snažímě se tu porobnávat „platformy“ a ne jazyk a část framewrku
Ad 2: Prosím neházej všechny na jednu hromadu – já mezi naklikávače nepatřím (neberu si to osobně, ale nemám rád tenhle typ globalizace). Jinak souhlasím.
Ad 3: SharpCMS je jeden z mnoha a musím uznat, že je to příklad pěkného výstupu při použití ASP.NET 2.0 a nemyslím si, že toho docílili přiohýbáním ASP.NET, ale nevím – zítra se na něj podívám. Dosáhnout podobně kvalitního výstupu není zas takovej problém, ale např. já k tomu nemám moc velkej důvod (to není mířený na tebe).
Jasně, že je to o lidech – bez nich by to za to nestálo a nemyslím si, ž se v tomto případě jedná o flamewar, protože se to tu drží na určité slušné úrovni a takové diskuse rozhodně nejsou na škodu – spíš se jedná o příjemný odreagování.
PS: je lepší se účastnit od začátku – jinak pomalu nevíš o čem je řeč 🙂
Marcus #100
Ty jo, tady se to rozjelo :)
No myslim, ze tohle uz je trochu jiny pristup. Ja osobne jsem naproto proti viewstate a pouziti JS ani by nebyla nahradni funkcnionality kvuli accesibility.
Ale tim jsme u jadra pudla. Pokud napr. budu delat aplikace do public sectoru, tak je jasne, ze musim splnovat
Na druhou stranu budu delat aplikaci ala youtube.com, ktera ja vizualni a pak moji cilovou skupinou nejsou handikepovani uzivatele a pak se da tak nejak JS tolerovat (nebo flash apod).
To, co tady panove diskutuje uz neni ok ani od zastancu ASP.NET ani od DGX, protoze se snazite presvedcit o svoji pravde a dgx jedna uplne stejne jako ms, ktery manipuluje lidi na svoji stranu a tohle dela o borek.
Pritom asp.net je vynikajici prostredi, JSP je vynikajici apod. Ale problem, ktery ja kritizuji je to, ze MUSITE naucit lidi psat dobre aplikace! Tyhle diskuze jsou pak uplne o nicem, pokud bude patlal programator pod PHP, napise patlalsky kod pod PHP, pokud pod ASP.NET pak je to totez.
Co je vyhoda PHP komunity je to, ze je vice sebereflektivni a ze nema „moudreho otce“ ala Microsofti prezentatori, kteri delaji hodne spatnou praci v tom, ze ukazuji vyvoj aplikaci ala klikani a pouziti viewstate a michani ODS objektu do prezentacni vrstvy apod. A tim vznika mezi programatory asp.net vzdelavani zalozene na techto spatnych prezentacich. Je jasne, ze tohle vznika i diky vyvoji v MS, ale opet uvedu priklad.
Napr. mi reknete, jak napisete O/R wrapper v PHP? Plne strongly-typed a automatizovany s generovanim stredni vsrtvy na zaklade ulozenych procedur a automatickym vytvarenim relaci nad sloupce DB?
Nebo mi reknete, jak objektove odstinit jednotlive funcnosti jako je prace s uzivatelem (business objekty pro jejich tvorbu, kontrolu, hashing atd.), custom connection pooling nebo asynchronni messaging?
Nebo FIPS certifikovana kryprografie, prace s certifikaty a jeho generovani s tim, ze musite mit snadne zapouzdreni sifrovani a checking uzivatelu v nejakem OOP frameworku. A muzu pokracovat dal a dal.
Tohle jsou take bezne pozadavky klientu, to, co tady resite je JEN jeden z pozadavku, jako je vystup do stranky, ale to je POUZE jeden aspekt. Je dulezity, ale opet tim dgx manipuluje a ja ukazuje, ze to neni fer.
Je to stejne, jako kdyz MS ukazuje, jak naklika aplikaci bez napsani kodu, je to lez. A je i lez, ze jde jen o vystup do stranky. Klient krome toho pozaduje napriklad integraci s messaging systemy jako MQSeries, MSMQ nebo O/R vrstvu a nebo integraci s jeho bezpecnostnim system pomoci Kerberos rozhrani apod.
To jsou pozadavky klientu a vygenerovana stranka je jednim z nich.
Proto pokud byste chteli vsechno toto splnit v PHP, bude to horor. V Jave to pujde docela dobre, ale pokud budete mit klienta, co bezi na Windows platforme, tak tyto pozadavky splnite VYBORNE.
A tohle, co jsem napsal, byste v PHP psali v kvalitni architekture nekolik let abyste meli kvalitni framework!!!
A proto podle mne je vynikajici reseni na tyto enterprise systemy volba ASP.NET s tim, ze musite ohnout generovani webu, ktere je by default spatne. Ale ostatni backend funkce za to stoji a jsou vyborne.
Na druhou stranu, pokud budu delat web jen jako prezentacni web pro firmu, ktery je napul staticky a nebo je jen pripojen k DB, tak sahnu po Perlu (ja osobne) a nebo PHP a v nich to napisu naprosto ciste.
Proto panove nemanipulujte jako MS, snazte se najit pro jake zadani hledate technicke reseni a uvedomit si, ze nejde jen o generovanou stranku, ale jde o komplexni architekturu systemu a podle toho volbu prostredi.
Jinak se pridavate k tem klikacum a patlalum, kdyz budete fanaticky tvrdit, ze asp.net nebo php je nejhorsi/nejlepsi bez znalosti zadani a pozadavku klienta.
SneakerXZ #101
Jak se mi zdá tak nikdo nepochopil MS přednášky. MS přednášky máj přilákat lidi k ASP.NET a každý uživatel po nějakém čase zjistí, že mu klikání nestačí a odpustí od toho…
David Grudl #102
#92 Petře Stříbný, Souhlasím, že ve všech bodech je na vině autor stránky. Co je ale blbý, že podobnými problémy trpí neskutečné množství stránek pod ASP.NET. Jde totiž o nemoc technologie. Málokdo si rozzipuje viewstate, koukne dovnitř a řekne: „proboha, proč tady tyto věci musím přenášet?“.
#97 Borku, Borku, tak vyřaďme z této diskuse úplně PHP. Ano, kvalita má pro mě nejvyšší hodnotu. O tu běží od prvního odstavce článku. Dobře navržený framework by měl standardně vést k dosažení výborné kvality. ASP.NET standardně vede ke „kvalitě“ alá DeaLerova nebo GWLadderova homepage. Nic proti nim, to je prostě standardní produkt této technologie.
Vem si třeba takové Viewstate. Velmi efektní při pohledu na demo, kde po kliknutí na tlačítko se změní jeho barva nebo popisek. Ale tohle se v praxi NIKDY nepoužívá. Naopak, barvu tlačítka určí aplikace a je šílenost ji sem a tam přenášet ve Viewstate. Jenže Viewstate se holt tak chová. Viz třeba DataGrid v ASP.NET 1.1. (schválně kdo první napíše, že verze 2 je něco jiného)
Mimochodem, teď jsem se díval na homepage SharpCMS a to je téměř ukázková práce v ASP.NET (až na problémy s duplicitou).
#100 Marcusi, framework minus Web Forms můžou PHPčkaři ASP.NET pouze závidět, o tom žádná. Jen mám pocit, že tím už zabíháme do velmi širokého okruhu. Zkus vysvětlit takovou drobnost, jako třeba proč je Viewstate & Postback obecně na veřejných stránkách průšvih, a deset podobných diskusí bude málo.
Zdenda #103
Tento weblog si čtu rád, ale reakce dgx u tohoto článku mě zklamaly
…Nevěřte Microsoftu ani klikajícím přednášejícím… – to mě přímo děsí, nazývat deklarativní/konfigurační přístup klikáním.. a ještě v tom cítím trošku opovrhování vůči MV
…ve vztahu Microsoft ? vývojář pod ASP.NET není pro uživatele a klienty vůbec místo… – napište mi prosím, kde je místo pro uživatele a klienty ve vztahu PHP – vývojář pod PHP 🙂
DGX, najeďte si prosím na zrůdnou MSDN spravovanou klikajícími zaprodanci Microsoftu a přečtěte si něco o tom co je to VIEWSTATE, aby jste tady v této diskuzi nešířil nepravdy.
David Grudl #104
#103 Zdendo, Zdendo, vím velmi detailně, jak Viewstate funguje. Pokud se chcete zapojit do diskuse, vyjádřete se ke konkrétním záležitostem, třeba #86 David Grudl #89 David Grudl nebo #102 David Grudl. Jinak holt střílíte naprázdno.
Vážně máte pocit, že vše, co se přenáší přes viewstate, je nutné přes viewstate přenášet? A především: ačkoliv se dá do určité míry kontrolovat, co se přenáší, kolik vývojářů to skutečně kontroluje?
jméno #105
#100 Marcusi, Prezntace Microsoftu jsou trošku problém. Nejsou totiž dělány pro profesionální uživatele. Vy vidíte, co přednášející dělá špatně, že byste to udělal lépe – budete lepší. Jenže na ně se chodí dívat začátečníci, protože jdou cestou nejmenšího odporu (v češtině nic moc jiného není, angličtina dělá i lidem tento jazyk ovládajícím problémy a raději si vše přečtou v češtině). Tak se vytvoří programátor-začátečník, objedná si knihy o .net 2 profesionálně z Zoneru (mimochodem jsem to udělal také a doufám, že jsem neprohloupil) a pracuje. Postupem času se začne vyvíjet – profilovat. Začne pracovat jinak, v tom momentu se z něj stává teprve špatný nebo dobrý programátor. Horší je, že většina těch dobrých nechce začátečníkům pomoci, což je u PHPčkařů samozřejmostí. Pak vznikají tyto diskuze, kdy tady komentují lidé, kteří mají jen povrchní znalosti (oni si to nemyslí) o dané technologii. Vše se musí umět používat, vše se dá nějak využít, ale jen programátor musí přijít na to jak…
Martin Knotek #106
Nezlobte se na mě, ale ohýbat ASP.NET? Napsat si http modul podle své potřeby nebo napsat svůj render pro controly, nebo schovat ViewState, či jej vůbec nepoužívat, je pro vývojáře co se snaží přemáýšlet naprostou samozřejmostí. Jak řekl pan z microsoftu: cilem microsoftu neni poskytnout kompletni řešení bez nutnosti existence vývojáře, cilem je platfoma, ktera to dokaze!
Anton Piták #107
#99 DeaLere, Súhlasím, nečítal som všetky reakcie, ale ani som nereagoval na reakcie, skôr na Dávidov článok. A ten žiaľ neporovnával porovnateľné veci 🙂
Čo sa týka SharpCMS, nemám rád .NET nijak zvlášť, ale v prípade tohto CMS ho veľmi rád používam. Je to priam dokonalý príklad oddelenej aplikačnej logiky a prezentačnej vrstvy, pre programátora pomerne jednoduchá konfigurácia cez XML a XSLT, výstupný kod plne pod kontrolou. Ako si naznačil … žiadne ohýbanie .NET-u. Tento systém ma s kolegom tak uchvátil, že do neho máme napísaný plugin pre jednoduchý e-shop. Doporučujem mnohým na preštudovanie. API
DeaLer #108
#107 Antone Pitáku, Já si SharpCMS určitě stáhnu, protože nevím přesně jak to maj udělaný a jak bych to případně moh udělat.
Na svým webu to aplikovat nebudu a to z následujících důvodů:
DeaLer #109
#104 Davide Grudle, Já si nevzpomínám, že by tu někdo psal, že všechno co se ve viewstate přenáší je nutné tam přenášet, ale třeba se mi líbí uchovávání hodnot formulářových polí mezi postbacky.
Roman #110
#46 myshpo, Necital som ten link o Yahoo co si posielal, ale len tak pre zaujímavosť, dneska som sa akurát náhodou stretol na IRC s jedným starým známym z nemecka čo už dlhšiu dobu žije v UK (poznáme sa z C64 scény). Medzi rečou vyplynulo že je tam zamestnaný (že vraj ponúkali viac ako google.. no neberte to? 😉 a hovoril ze je to postavene na PHP5 a ze Rasmus Lerdorf pre nich robí.
koder #111
Teď jsem se viděl, že na té diskuzi na vývojáři je link na šílený web:
https://web.archive.org/…oleni/Kurzy/
Mrkneťe se na zdroják a na ten _viewstate. To snad není pravda! Co to je? Můžou mi lidi, co znají dotnet říci, co to znamená?Nechci být zaujatý a chápu, že to může být výsledek práce blbých koderů, ale pokud tohle ta technologie dělá sama o sobě, tak už je tam něco hodně špatně. Každopádně po uzření takovýho webu bych s asp.net nechtěl mít nic společného.
David Grudl #112
#111 kodere, wow 🙂 Tipoval bych to na ASP.NET 1.1 a DataGrid Control
DeaLer #113
Poznáte, kdo může za výstup tohoto webu a jak se vám líbí?
BTW: spletl jsem si blog, nebo se tu ztratily 2 komentáře?
David Grudl #114
#113 DeaLere, strašné, podbarvování pomocí JS a bez preloadu, menu v pomocí obrázků bez ALT, tabulkový layout a dokonce tohle:
Proč se ptáš, respektive kam otázkou směřuješ?
btw: ztratily
DeaLer #115
#114 Davide Grudle, Jen chci poukázat na to, že „amatér“ může zlikvidovat výstup i jinak skvělýho systému jako je SharpCMS.
DeaLer #116
Ještě bych snad dodal, že je to jistej důkaz, toho, že je jedno jakou platformu (framework, jazyk, CMS, atd.) používáš a že výsledná kvalita výstupu záleží „pouze“ na tobě.
Jak se zdá, tak se tahle diskuse pomalu blíží ke konci, tak bych na závěr dodal, že je mi úplně jedno co kdo používá (je to jeho volba) a do diskuse jsem se zapojil z jednoduchýho důvodu – rád si přečtu zajímavý, okolím ovlivněný názory.
To DGX: jedna věc mi vrtá hlavou – proč si myslíš, že moje názory jsou výsledkem manipulací MS?
PS: „pouze“ jsem dal do uvozovek, protože to není pravda v případě, že ti platforma neumožní to ovlivnit.
Ondra #117
#63 DeaLere, ja to myslim tak jak pises! C# ma podobnou syntax, ale inak je to opravdu jina vec. Kolik ma spolecneho s Javou jsem nezkoumal. Nicmene za nejvetsi zpraseni povazuju garbage collector. Na tom bylo C zalozeno, ze si muzes delat coc chces.
Shrnuti: C a C# jsou dva jne jazyky a Microsoft proste jen spoleha na „znacku“ Cčka. Ondra
DeaLer #118
#117 Ondro, Jak jsem psal – C# vychází z JAVY a má k ní syntaxí a použitím mnohem blíž, než k čistýmu C nebo C++.
V čem tě garbage collector omezuje? Co ti brání použít pointry? A proč GC považuješ za zprasení jazyka C#?
A co třeba C++ – u toho ti nevadí, že se spoléhá na značku Cčka?
Tomáš Herceg #119
Já akorát nechápu, co se všem nelíbí na výsledném XHTML kódu. Je validní. A to, že není vždy přesně odstrukturované? K čemu? Proč nad ním mám mít absolutní kontrolu? Copak surfujete v notepadu a čtete si HTML těch stránek. Důležité je, že se v něm vyzná prohlížeč. Pokud je validní, není co řešit.
Nehezké URL – proboha kde? Možná tak u kalendáříku, u stránkování v GridView a u LinkButtonu (což je odkaz, který odesílá formulář, ale to bez javascriptu v HTML nejde).
Navíc ASP.NET 2.0 podporuje adaptive rendering – podle klienta se výsledný HTML kód značně liší (pro mobilní zařízení a krámy bez javascriptu se renderuje jiný kód, který funguje). Pokud se vám v ASP.NET cokoliv, ale opravdu cokoliv, nelíbí, můžete si to přepsat – stačí podědit danou třídu a overridnout tu událost, která dělá to, co nechcete.
A to, že RouderCorners generují do výsledného HTML inline styly je snad úplně jedno. Proč se odděluje vzhled od HTML kódu? Aby se v tom programátor vyznal (prohlížeči je to opět úplně jedno). A hrabeme se my, jako programátoři, ve výsledném HTML? Ne. My přece máme pouze značku bb:RoundedCorners, která inline styl nemá. Ba právě naopak ji můžeme nastylovat pomocí tématů, což je obdoba CSS stylů pro serverové komponenty v externím souboru.
Potíž je v tom, že diskutuje 90% lidí, kteří o tom nic neví. Vznikají tak mýty a demagogie – z neznalosti.
Ale pište si v PHP, když vás to baví. Já jsem ho také moc dlouho používal. Ale přešel jsem na ASP.NET 2.0 a nemůžu si jej vynachválit. Nezajímá mě, co leze do prohlížeče, pokud je to validní a není layout rozsypaný v těch 3 nejrozšířenějších prohlížečích. Chce to jenom překonat lenost, nedůvěru a začít se učit. Naučit se ASP.NET je pravda výrazně složitější než PHP, ale rozhodně se to vyplatí.
Mimochodem poznámky o špatné architektuře ASP.NET mi od zastánce PHP přijdou poněkud směšné. Proč je v PHP strlen, ale str_replace? Kdy už ten s prominutím bordel někdo odstraní?
Ferda #120
#119 Tomáši Hercegu, kdybys tušil, jak se dgx o PHP vyjadřuje, tak jako směšné by ti spíš připadalo ho označovat za zastánce 🙂
Jak souvisí strlen a str_replace s architekturou?
Juraj #121
No nehnevaj sa, tak dobre clanky odhora dole a potom napises toto? Dristy, „fakty“ (fakty? skor len nazory) okopirovane z inych zdrojov, sam priznavas ze nemas hlbsiu skusenost a podobne. Ja v PHP programujem roky, posledne vsak uz len asp.net spolu s c# a poviem vam, zda sa mi ze php je hracka pre deti oproti tomu, ake silne vyvojove nastroje ponuka platforma .Net. Php je fasa na mensie serepeticky, presne tam, kde vytahovat kanon typu .Net by bolo uplne nerozumne, no velky projekt s dlhodobym vyvojom, supportom a implementaciou v roznych prostrediach je v tomto jazyku uplne neudrzatelny. Platforma je nestabilna, miestami az nevyspytatelna, ako taka typicka komunitna klubovna.
Asp.Net ponuka silny framework na pohodlny vyvoj silnych webovych aplikacii, a poznamky typu „naklikat projekt“ su vhodne tak na presviedcanie neveriacich kamaratov v krcme, aj v asp.net si musis vsetko pekne „odprogramovat“, nic si veru nenaklikas len tak.
Kazdy nech si kodi v tom v com chce, mozno preto, ze nema na server, platformu, framework a vyvojove nastroje, siaha po volne dostupnych nahradach, a ako kontra – niekomu zase vyhovuje „lahka“, ohybna koncepcia jazyka PHP (poznam projekty ktore si brali z kazdeho nieco, je to sice samovrazda, ale da sa:P). Koniec koncov, viest flamy PHP vs. ASP.NET je nezmyselne. Akurat ma tvoj clanok fakt zarazil (opat opakujem – koli kontrastu kvality s ostatnymi tvojimi clankami – klobuk dole), privela generalizacie, vyjadreni typu „ten a ten povedal“ …
Good luck php guys, nech vam kod slape
Juraj #122
#120 Ferdo, No asi tak, ze ked si niekto zada koncepciu pomenovavat funkcie/metody, tak by sa jej mal aj drzat. V ASP.NET sa nestane, ze sa jedna funkcia vola OnPreRender a druha Client_side_validate … rozumies? Drzime sa jednej koncepcie a tudiiiiz vieme, co mame cakat za rohom (len ci to bude stacit:))
v6ak #123
Taky bych někdy mohl zkusit takový návrh. Nejdřív drafty controllerů, pak vymyslet a napsat modely a pak dodělat controllery a viewy.
Tento článek byl uzavřen. Už není možné k němu přidávat komentáře.