Når skal jeg favorisere ASP.NET WebForms fremfor MVC

Jeg vet at Microsoft har sagt

ASP.NET MVC er ikke en erstatning for WebForms.

Og noen utviklere sier at WebForms er raskere å utvikle enn MVC. Men jeg tror hastigheten på kodingen kommer ned til komfortnivået med teknologien, så jeg vil ikke ha noen svar i den retning.

Gitt at ASP.NET MVC gir en utvikler mer kontroll over applikasjonen deres, hvorfor er det ikke «t WebForms ansett som foreldet? Alternativt, når skal jeg foretrekke WebForms fremfor MVC for ny utvikling?

Kommentarer

  • @Darknight: \ at ‘ er veldig partisk og rett og slett feil. MVC er ikke for enkle CRUD-apper. Jeg ‘ argumenterer for at WebForms er for generiske CRUD-apper (dvs. database – > litt skinnende rutenettkontroll).
  • @Darknight uansett hva som gjør deg glad – > hvis du liker WebForms blir gal av det;)
  • @Darknight Du har åpenbart dårlig forståelse av MVC hvis dette er din mening … Det er noen enorme nettsteder bygget med mvc … undersøk herre.
  • IMO, bruk aldri webskjemaer når du kan bruke MVC i stedet.
  • I ‘ jeg er ikke en som snakker så dette er bare min mening. Etter å ha lest de fleste svarene, kom jeg til at svaret bare aldri er. MVC er bare fantastisk, og den eneste ulempen jeg fant er at jeg fortsetter å se ; på websiden min (Hvis du ‘ bare begynner med Razor du ‘ får spøk).

Svar

Webforms vs. MVC ser ut til å være et populært tema akkurat nå. Alle jeg kjenner fremhever MVC for å være den neste gode tingen. Fra mine små dabblinger i det virker det ok, men nei jeg tror ikke det vil være slutten på webskjemaer.

Min resonnement, og resonnementet om hvorfor webformer ville bli valgt fremfor MVC, har mer å gjøre med et forretningsperspektiv i stedet for hva det ene er bedre enn det andre.

Tid / penger er de største årsakene til at webskjemaer ville bli valgt fremfor MVC.

Hvis det meste av teamet kjenner til webskjemaer, og du har ikke tid til å få dem til å gå raskt på MVC. Koden som blir produsert er kanskje ikke kvalitet. Å lære det grunnleggende om MVC og deretter hoppe inn og gjøre den komplekse siden du trenger å gjøre er veldig forskjellige ting. Læringskurven er høy, så du må ta det med i budsjettet.

Hvis du har et stort nettsted skrevet alt i webskjemaer, vil du kanskje være mer tilbøyelig til å lage nye sider i webskjemaer slik at du ikke » Jeg har ikke to forskjellige sidetyper på nettstedet ditt.

Jeg sier ikke at det er en alt eller ingenting-tilnærming her, men det gjør koden din vanskeligere å opprettholde hvis det er en splittelse av begge , spesielt hvis ikke alle i teamet er kjent med MVC.

Firmaet mitt gjorde nylig tre testsider med MVC. Vi satte oss ned og designet dem. Et problem vi kom inn på er at de fleste av skjermene våre har visnings- og redigeringsfunksjonaliteten på samme side. Vi trengte mer enn ett skjema på siden. Ingen biggy, bortsett fra da ville vi ikke bruke hovedsiden vår. Vi måtte modernisere det slik at både webformsidene og MVC-sidene kunne bruke den samme mastersiden for vanlig utseende. Nå har vi et ekstra lag med hekking.

Vi trengte å lage en helt ny mappestruktur for disse sidene slik at den fulgte riktig MVC-separasjon.

Jeg følte at det var for mange filer på 3 sider, men det er min personlig mening.

Etter min mening vil du velge webskjemaer fremfor MVC hvis du ikke har tid / penger til å investere i å oppdatere nettstedet ditt for å bruke MVC. Hvis du gjør en halv arsed tilnærming til dette, det vil ikke være noe bedre enn webskjemaene du har nå. Verre, du kan til og med sette opp denne teknologien for å mislykkes i din bedrift hvis den er ødelagt, da øverste ledelse kanskje ser på den som noe dårligere enn det de vet.

Kommentarer

  • Dette er et godt svar. Jeg ga deg +1 fordi dine personlige erfaringer blir verdsatt. Men dette er feil på grunn av manglende erfaring / ferdighetssett fra utviklerne som jeg ba om å unngå . Jeg er ikke overbevist om at Microsoft ville velge å ikke merke en teknologi som er foreldet bare på grunn av frykt for læringskurven for MVC. Dette kan være tilfelle, men jeg ‘ er ennå ikke overbevist.
  • @ P.Brian.Mackey – Jeg sa ikke ‘ at skjemautvikling er raskere enn MVC. Du ba om å la argumentet være utenfor det. Å argumentere for tid og penger for å trene de ansatte er et annet argument. MS vant ‘ t merke nettformer er foreldet av en stor grunn: Bedriftskunder har brukt år på å utvikle webklienter i nettformer og vunnet ‘ Ikke se vennlig på å måtte investere tid og penger for å oppdatere.
  • @Raynos – Hvis alle i teamet var dyktige i MVC, og firmaet ditt startet et nytt prosjekt, er den eneste grunnen til at jeg kunne se noen velge webskjemaer personlig valg.
  • Jeg kjenner begge teknologiene nært. Alle webprosjektene mine gjøres med mvc og jobber i et selskap der jeg har fri regjeringstid til å gjøre det som er best. Jeg velger alltid MVC.
  • Jeg begynte med webskjemaer, og når jeg oppdaget MVC, byttet jeg til det. Jeg vet ikke ‘ hvordan noen kan forsvare webskjemaer. Sides livssyklus og ett skjema for hele siden? Tuller du med meg? Yahoo sitebuilder var sannsynligvis den tiltenkte kunden for det, men selv de ville ikke ‘ ikke det søppelet.

Svar

Jeg utviklet ASP .Net WebForms applikasjoner i 3 år, og etter en dag med å gjøre en MVC tutorial ble jeg solgt. MVC er nesten ALLTID den bedre løsningen. Hvorfor?

  • Sidens livssyklus er enklere og mer effektiv
  • Det er ikke noe som heter kontroller i tillegg til html-kontroller. Du trenger ikke å feilsøke utdataene dine for å se hva ASP .Net genererer.
  • ViewModels gir deg enorm kraft og fjerner behovet for å gjøre manuell kontrollbinding, og det eliminerer mange feil knyttet til binding.
  • Du kan ha flere skjemaer på en side. Dette var en alvorlig begrensning av WebForms.
  • Internett er statsløst og MVC samsvarer nærmere med nettets arkitektur. Webforms introduserer tilstand og feil du har med det ved å introdusere ViewState. ViewState er automatisk og fungerer i bakgrunnen, så det oppfører seg ikke alltid slik du vil ha det.
  • Nettapplikasjoner trenger å jobbe med ajax i disse dager. Det er ikke akseptabelt å ha full sidelast lenger. MVC gjør ajax så mye bedre, enklere og mer effektivt med JQuery.
  • Fordi du kan ha flere skjemaer på en side, og fordi arkitekturen er drevet av anrop til nettadresser, kan du gjøre funky ting som ajax laste inn et annet skjema, som et redigeringsskjema til den nåværende siden din ved hjelp av JQuery. Når du er klar over hva dette lar deg gjøre, kan du gjøre fantastiske ting lett.
  • > ASP. Net WebForms er ikke bare en abstraksjon over html, den er ekstremt kompleks. Noen ganger vil du få en merkelig feil og slite med den mye lenger enn behovet er. I mange tilfeller kunne du faktisk se hva den gjorde galt men du kan ikke gjøre noe med det. Du ender med å gjøre rare løsninger.

  • WebForms gir ikke god teknologi for designere. Designere liker ofte å jobbe med html direkte. I MVC er det et syn, i WebForms er en halv dag med arbeid.
  • Siden nettplattformen utvikler seg, vil ikke WebForms følge med. Det er ikke klar over nye koder eller funksjoner i HTML5, vil den fremdeles gjengi de samme tingene med mindre du får (ofte) dyre tredjepartskontroller eller venter på at Microsoft skal utstede en oppdatering.
  • Kontroller i WebForms begrenser deg på så mange måter. I MVC kan du bare ta et JQuery-bibliotek og integrere det i malene dine.

Jeg vet at noen av problemene ovenfor har blitt adressert til en viss grad når WebForms utvikler seg, men det var min opprinnelige opplevelse. Alt i alt synes jeg det er ekstremt vanskelig å finne en business case for WebForms med mindre et prosjekt allerede bruker den.

Kommentarer

  • +1 for påpeke flere former. Pluss det faktum at HTML-webskjemaer genererer, er for det meste ikke veldig SEO-vennlig (som i: store biter av viewstate øverst på siden)
  • Jeg må være enig 100% i dette svaret. På slutten av dagen gjør WebForms det mulig å gjøre ting på klientsiden (html / nettleser) så mye vanskeligere. Du må bokstavelig talt kjempe mot rammeverket for å få gjort noe. En aspx-side ender opp med så mye mer kode på grunn av serverkontroller enn en cshtml-side vanligvis gjør. @ šljaker Hvis du begynner å slå av ViewState og unngår serverkontroller, har du ‘ forlatt mye av WebForms på det tidspunktet. Jeg ser ikke ‘ det argumentet er spesielt overbevisende.
  • Du kan ha vanlige html-kontroller i WebForms, ingen tvinger deg til å bruke serverkontroller. Du kan ha full statsløs Webform, ingen tvinger deg til å bruke ViewState. Du kan bruke full ajax og jQuery i Webforms, ingen begrenser deg fra å bruke jQuery. Du kan implementere URL-ruting, ingen tvinger deg til å bruke basisk URL for statisk fil. Manuell tegning av en side med CSS bruker tiden så mye som MVC trengte. Du kan designe HTML-siden direkte på Webform.
  • @mjb: Hvis du ikke ‘ ikke bruker serverkontroller, ViewState og så videre, hvorfor bruke WebForms i det hele tatt når MVC er nærmere det du ‘ gjør? Det ‘ er som å kjøre en traktor til jobben, men ikke kjøre offroad eller bruke spade / hakke eller stabilisatorstenger. På det tidspunktet hvorfor ikke bare bruke en bil?
  • @Tjaart Det er ikke helt riktig at du ikke kan ha flere skjemaer på ASPNET-siden.Du kan ha så mange skjemaer du vil på ASPNET-siden, men du kan bare ha en serverform – skjema med runat = » server » attributt.

Svar

Jeg sendte en e-post til Scott Guthrie , en MVC-ekspert hos Microsoft. Og sannsynligvis den mest kvalifiserte mannen til å svare på dette spørsmålet. Han var snill å svare:

«Ulike kunder ser etter forskjellige programmeringsmetoder, og er veldig glad i WebForms og synes det er flott. Andre elsker MVC og synes det er flott. Det er derfor vi investerer i begge deler. «

Så for meg sier dette at det ikke er et teknisk problem. Det er mer et «mykt problem», hvis du vil. En av personlige preferanser. Dette er i tråd med hva flere av dere har sagt.

Takk for alle svarene.

Kommentarer

  • Scott Guthrie oppfant. MVC-rammeverket for ASP.NET mens du er på flytur tilbake fra London til Seattle i 2006/7. Når jeg tenker på det, oppfant han ganske mye .NET også ( en.wikipedia.org/wiki/Scott_Guthrie ). Å kalle ham » ekspert » er en enorm underdrivelse 😉
  • At ‘ et hyggelig politisk svar fra Scott Guthrie. Hvis han selv investerte sin egen webapplikasjon, ville du ‘ se et MVC-prosjekt og for alt som ikke kunne ‘ ikke gjøres i MVC, Silverlight ville være tilbakeslaget. Ikke ta dette som en negativ kommentar til WebForms, jeg synes WebForms er flott for mindre applikasjoner som kan ha nytte av tredjepartskomponenter som de som er opprettet av Telerik. Jeg ‘ er glad for at Microsoft går videre med begge teknologiene.
  • » Scott Guthrie oppfant MVC-rammeverket for ASP .NET mens du er på fly » Jeg tror det virkelig bagatelliserer MVC. Jeg vet ikke ‘ Scott Guthrie, men jeg ‘ er villig til å satse på at han hadde pekulert hvordan MVC kan implementeres i ASP.NET en stund, og brukte den lange flyvningen til å implementere en prototype med bare bein som et bevis på konseptet.
  • » Derfor investerer vi i begge deler. » Og når vi ser at nettskjemaer begynner å avta, vil vi nådeløst slippe det fordi investering i et til slutt dødt produkt ikke er i vår beste forretningsinteresse.
  • Inntil det blir ikke lenger undervist i skolene, i mange år, det vil alltid være aktuelt i næringslivet. Høyskoler og videregående skoler fortsetter å tilby intro- og videregående kurs i vb.net. Det går IKKE noe sted !!!

Svar

Dette er et foreldet spørsmål med mange svar, men ingen hadde svaret jeg hadde forventet å bli oppført.

Det korte svaret er:

  • Bruk ASP.NET MVC hvis du har tenkt å lage en nettapplikasjon riktig med moderne programmering konvensjoner og industri omfavnet mønstre for ASP.NET-plattformen. På undersiden forventes det at du vet hvordan HTML og ressurser på klientsiden (Javascript, CSS) fungerer, så vel som å øke MVC-programmeringstankegangen som har en bratt læringskurve, men når en plutselig slutt når du har forstått det.
  • Bruk ASP.NET Web Forms hvis du bruker eller vil bruke et GUI -sentrisk, RAD (Rapid Application Development) , dra-og-slipp-tilnærming til prototyping av noe veldig raskt, dvs. trykknapp / datanettoppførsel koblet til innen 15 minutter, og løsningen er ikke ment å være noe støttet av Eller, Bruk ASP.NET Web Forms hvis du har bakgrunn i GUI eller Windows Forms-utvikling og du ønsker å overføre kunnskap til nettet.

Men for å se på dette riktig, må du forstå historien til hver.

ASP.NET Web Forms var Microsofts svar på de som hadde bygget dynamiske webapplikasjoner ved hjelp av Visual Basic 6 Ac tiveX-kontroller, VB6-DLLer på serveren og ASP Classic. På den tiden var nettutvikling med disse Microsoft-verktøyene et skikkelig rot. Sammen med hele .NET Framework som var resultatet av Microsoft, som i det vesentlige gikk tilbake til tegnebrettet om hvordan man gjør produktiv forretningsprogrammering på Windows-stakken, var ASP.NET Web Forms i sin tid fantastisk og vakkert.

Hele tilnærmingen var å gi utviklere det beste fra begge verdener av noe som ligner på Windows applikasjonsutvikling, men med kraften til internettjenester.Tanken var at, akkurat som med et VB6 / WinForms «skjema» (et vindu), en webside er et skjema (akkurat som et vindu, se) , og i det skjemaet kan du dra og slippe etiketter, tekstbokser, datarister, knapper og andre ting som VB / WinForms GUI-utviklere var vant til.

For å få en knapp til å gjøre noe, etter å ha dratt og sluppet det, dobbeltklikker du bare på det i designeren og boomer deg inn i kodeditoren, og forteller skjemaet hva du skal gjøre når det «klikket «hendelse skjer. Dette var nøyaktig hvordan Windows GUI-utviklere opprettet programvare ved hjelp av GUI verktøy for VB6 og konkurrerende verktøy, bortsett fra nå kjøres koden på serveren! Wow!

Dette var teknologien fra 2002. Utrolig og vakker i sin tid som svar på internett -aktiverte GUI -løsninger for RAD utvikling , det ga en følelse av kraft til en rotete verden av programvareutviklere som hadde forretningsmål som de trengte for å oppnå.

Dessverre understreker denne programmeringsmodellen så mye metaforen for Windows GUI-programmering at den bærer byrden av nødvendige implementeringsdetaljer. , all den belastende bagasjen ian essay for å imøtekomme begivenhetens livssykluser og å fjerne de stygge detaljene i den enkle HTML og skript som disse dra-og-slipp-komponentene og kontrollene vil sende ut. Og på slutten av dagen måtte utviklere som støttet virkelige applikasjoner uunngåelig grave dypt inn i disse komponentene eller skrive sine egne, og følgelig ville de kjempe kamper med denne infrastrukturen, kamper som ville etterlate seg hauger på hauger med groft, trukket hår og tårer.

Sikkerhetskopier. Vask hendene. La oss se på forretningsproblemet igjen. Hva er våre forretningsmål?

Vi trenger å bygge og administrere webapplikasjoner . Våre begrensninger er at vi har World Wide Web, som sitter på HTTP, HTML, Javascript og CSS, og på serveren har vi forretningsregler, databaser og en liten håndfull flotte programmeringsspråk (f.eks. C #). Trenger vi virkelig denne Windows GUI-metaforen for å drive utviklingsmetoden vår? Hvorfor kan vi ikke bare fokusere på applikasjonsproblemene og fjerne GUI-metaforene?

Dette er hvor ASP.NET MVC kommer inn. Det startet med et opprør av utviklere som kalte seg «Alt.Net» som ønsket å komme tilbake til riktige og rene programvareutviklingsprinsipper. Ikke mer muss og oppstyr, bare fokuser på forretningsmål og beste praksis for programvare.

Hva dette virkelig oversetter til i dette tilfellet er:

  1. Separasjon av bekymringer . For eksempel trenger en datakomponent ikke å vite hvordan dataene skal gjengis, og visningsmarkeringen skal ikke være beheftet med konfigurasjonsdetaljer for databasetilkobling, og på denne måten kan en utvikler fokusere på sitt område av bekymring når han redigerer og testkode.
  2. Eksponering og full støtte for eksponering for den nitty gritty av HTML og relaterte ressurser . I webskjemaer er HTML gjemt bort, utviklere frarådes å mase med det. I ASP.NET MVC blir utviklere heller oppmuntret til å administrere disse detaljene, faktisk er det en nødvendighet. Fordelen her er at utvikleren kan lære seg å sette pris på den rene semantikken til HTML, CSS og script, og jobbe med det i stedet for mot det.
  3. Testbarhet for forretningsobjekter . Kontrollere og modeller er mye bedre egnet for programmatisk enhetstesting, slik at implementeringer kan valideres for å oppfylle forretningsmålene, og endringer kan verifiseres for at de ikke vil gå i stykker. Med webskjemaer var det vanskelig å teste, da komponenter ikke var designet for å bli testet hver for seg, og hele utviklingsproduksjonen dreide seg om sideskjemaer og deres livssykluser for begivenheter, med en dyp flettet forretningslogikk og presentasjonslogikk. / li>

Vær oppmerksom på at HTML allerede er et veldig høyt markeringsspråk, som Javascript er et programmeringsspråk på høyt nivå. Hele historien ville ha vært annerledes hvis vi hadde å gjøre med Assembly språk og C.

Utvidet til nr. 2, så er et annet mål med ASP.NET MVC å gjøre det mulig for utviklere å organisere frontend-detaljene til «vis» -delen av løsningene deres og dra nytte av det rike fundamentet som resten av bransjen har bygget på front-end-klientplattformen.

Du vil oppdage at ASP.NET MVC-utviklere føler seg hjemme ved å bruke rike Javascript-biblioteker og malteknikker på klientsiden uten å kjempe med server-side-arkitekturen. Dette var ikke opprinnelig tilfelle med ASP.NET Web Forms, fordi Web Forms ikke vil at du skal se på HTML eller skript i det hele tatt, bortsett fra hvis du virkelig må , i så fall, vær forsiktig, det er ikke for svak av hjertet .

Kommentarer

  • Dette er et godt svar, men nr. 1 og # 2 er feil (WF krever ikke en komponent for å vite hvor dataene er kommer fra, det er et alternativ, og du har alltid lagt til HTML i ASPX-filene dine for å støtte asp-kodene du gjengir. Du har aldri trengt å grave dypt og bekjempe kontrollene med mindre du prøvde å få tilgang til en ASP-funksjon som ikke var ment for utviklere interaksjon. De store punktene er testbarhet og designmønster.)

Svar

Jeg er en komplett og total konvert til ASP.NET MVC og har ikke sett meg tilbake, som sagt at jeg fortsatt må opprettholde flere veldig store WebForms-apper. Her tar jeg det:

WebForms
Bruk disse når du har noe tungt liv ting å gjøre med nett. Rutenettkontrollene er veldig hyggelige når du har et enkelt datasett som passer fint i tabellformat, og du vil gi en enkel måte for brukere å oppdatere poster. Ja, jeg vet at MVC 4 har en virkelig snazzy Ajax liste-type ting som du kan bruke som fungerer bra, men i vår virksomhet trenger vi ofte å få noe i gang i går, og gode gammeldagse nett fungerer bra, og brukerne er glade for å være i stand til å tappe over et rutenett med glede. For meg er det virkelig det beste med WebForms for meg, men som Ryan påpekte, kan WebForms være et stort rot, fordi du spiller begge sider av gjerdet fra en fin kode bak fil. Det kan være både en rose og en torn på samme tid for å holde alle tingene dine av kontrollertypen blandet med dine synspunkter.

MVC
Bruk dette når du virkelig vil rulle selv og du har muligheten til å starte en applikasjon fra bunnen av. Å ha et klart definert MVC-program er litt mer arbeid å komme i gang med, men fordelene med vedlikehold oppveier de opprinnelige installasjonskostnadene. Hvis du vil gjøre interessante Ajax-interaksjoner, foretrekker du å skrive modellen din med kode, som rene nettadresser og ruter, og være i stand til å kontrollere hele strømmen til appen din, så er dette definitivt veien å gå. Det tar litt å bli vant til å begynne med, men jeg tror det er det bedre alternativet for greenfield-apper.

Avslutningsvis, for meg, kommer det ned på nett og! nett. 🙂

Kommentarer

  • +1 for det fine bildet levert med » som spiller begge sider av gjerde fra en fin kode bak fil «.
  • Veldig nyttig denne. Jeg ‘ Jeg gjør en veldig tung nettbasert app, og jeg ‘ har utelukket silverlight, xbap, og det var nede i et show ned mellom disse to.

Svar

Min erfaring:

  • Skrev CakePHP-prosjekter i ett år.
  • Gjennomførte et mellomstort Webforms-prosjekt over seks måneder.
  • Jobbet med et Windows Forms-prosjekt i tre år.

Etter den opplevelsen prøvde jeg å skrive en annen app ved hjelp av webskjemaer, og ble frustrert etter å ha slitt i omtrent en dag med hvordan webskjemaer prøver å beskytte utvikleren mot virkeligheten at de utvikler et program som bruker html, javascript og css.

Jeg prøvde deretter MVC, og hadde mer direkte kontroll over utdataene (og litt erfaring med MVC-paradigmet fra CakePHP), var jeg i stand til å fullføre den enkle appen akkurat slik jeg ønsket det på omtrent 1/2 om dagen.

Tilgjengeligheten av kraftige brukergrensesnittrammer som jQuery veldig mye eli minerer appellen om å gi opp direkte kontroll over utdataene til fordel for å bruke ofte store forhåndsbygde brukergrensesnittkomponenter.

Kommentarer

  • @JimG – Uhh , alt som innebærer at en person skriver inn poster uten interessante tilknytninger til en database, og at den personen eller noen andre leser / skriver dem ut på et annet tidspunkt, kan i utgangspunktet stillas ved hjelp av et MVC-rammeverk. Gitt, det er ikke ‘ t de fleste apper, men det ‘ er mye mer enn du kan gjøre med skjemaer. Jeg antar at -1 viser beviset mitt.
  • At ‘ er 1/4 av en dag.
  • Men hvis kravene tilsvarer » Jeg trenger en app med to roller, en for å spille inn litt informasjon, den andre for å se på den, og jeg trenger ikke ‘ t bryr deg hvordan det ser ut. » Så ja, at ‘ er ganske gjennomførbart.
  • Jeg beklager, men å utvikle en webforms-app for å legge inn data og vise data er så enkelt at det kan gjøres på få timer. å lage strukturen til en MVC-app, kontrollere, visninger og handlinger, vil ta like lang tid, men vil ikke føre deg til et ferdig produkt.
  • @ Dementic Vanligvis for en enkel MVC-app bygger man modeller, stillas kontrollerer og viser og / eller genererer stillas kontrollerer / visninger. Ikke noe tidkrevende der.

Svar

Jeg foretrekker webskjemaer fordi bakgrunnen min er Windows-utvikling.

Speed of developmnt er et sentralt spørsmål, og jeg kan enkelt sende et problem til noen i India for å fikse over natten med skjemaer, også hvis jeg har et hastighetsproblem på en side, en veldig god bok om asp.net hastighet er praktisk (Rick Kiessig er mannen).

webforms er for ex windows folk mvc er for webfolk

men i den moderne verden, hvor Rick har skrevet en fantastisk bok , med servere som øker hastigheten daglig og billige kodere i India, vel, nettformer har kanten

Svar

Mine 2 cent er å alltid bruke ASP.NET MVC til nye prosjekter hvis du har muligheten. Etter min mening er webformer ikke en god måte å utvikle webapper på, punktum.

Jeg synes det er dårlig å trekke bort grunnleggende REST, hele tilbakemeldingsmodellen er dårlig, slik html / css blir gitt med tillit. på GUI-redigereren er dårlig, vekt på ting som veivisere og GUIer for å sette opp ting er dårlig, URL-ene er dårlig.

Kommentarer

  • kunne du forklare mer detaljert hvorfor du tror det?
  • Jeg tror det å trekke bort grunnleggende REST er tilbake, hele postback-modellen er tilbake, slik html / css blir gitt med avhengighet av GUI-redaktøren, er dårlig , vekt på ting som veivisere og GUIer for å sette opp ting er dårlig, URL-ene er dårlige osv. osv.

Svar

Jeg har lest alle svarene og føler at min personlige opplevelse vil legge noe til svarene ovenfor.

3-4 år tilbake utviklet jeg 2-3 nettsideprosjekter ved hjelp av webskjemaer. Rundt den tiden hørte ikke MVC eller jeg hørte ikke om det. Utviklingen var naturlig (jeg kom fra Win-forms-utvikling uten tidligere nettutviklingserfaring) raskt for meg, siden jeg ikke trenger å lære HTML i detaljer og web-kontroller hjalp mye (helvete, det gjorde livet lettere) .

Nå, etter all den tiden, jobbet jeg ikke med noe webprosjekt inntil nylig og bare bygde noen Windows-applikasjoner ved hjelp av WPF.

For noen dager tilbake hadde jeg en idé om en nettside og tenkte å utvikle den: denne gangen i MVC (siden det ble snakket om overalt, foruten jeg trengte å lære heller, så jeg valgte MVC). Prosjektet er fortsatt i utviklingsfase, siden jeg fremdeles lærer og bygger sammen. / p>

Så de viktigste forskjellene jeg finner s / hv de to er følgende: –

  • For noen som kommer fra Windows-utvikling, vil webskjemaer alltid være gunstige. .net læringskurve for en Windows-utvikler er litt bratt

  • For noen som kommer fra webutvikling i en annen teknologi, vil MVC være favorisert siden det håner det siste av dem alle.

  • Utviklingen er enklere og renere i MVC hvis du er utstyrt med god kunnskap om HTML og CSS

  • Implementering er fortsatt et problem. I webskjemaer trengte man bare å kopiere og lime inn. Men dette krever at noen ting gjøres.

Kort sagt, begge vil bli her en stund.

Svar

Jeg har ikke sett denne betraktningen fremmet blant de eksisterende 15 svarene på denne tråden ennå, men jeg tror det «Det er verdt å vurdere.

Etter min erfaring er Web Forms mer lik Win Forms og WPF enn MVC er. Gitt dette, tror jeg man kan vurdere å velge webskjemaer når teamet har mest erfaring innen den slags teknologi, eller når Web Forms-prosjektet vil levere et grensesnitt videre til samme datasett som et eksisterende (eller samtidig utviklet) Win Forms eller WPF-prosjekt. Dette gjør det mulig for utviklere å krysse mellom prosjekter lettere, siden applikasjonslogikk kan være ganske lik mellom de to.

Som andre svar har påpekt, er utviklingen av MVC-rammeverket mer likt nettutviklingen i Ruby, PHP, Python osv. Enn dets Microsoft-kolleger; så naturlig kan valget av MVC påvirkes av teamopplevelsen i disse områdene, sammen med faktorene som sendes inn i andre svar.

Kommentarer

  • + 1 Absolutt et rimelig argument for webskjemaer. Min frykt er at team følger denne tankegangen for å unngå å lære nye ting. MVC er fylt med mange mønstre som kan være ukjente for et team. Å lære disse typer mønstre og implementere dem fører til bedre overholdelse av SOLID-prinsipper, noe som gir bedre generell vedlikeholdsevne. Disse velprøvde teknikkene er også den virkelige nøkkelen til gjenbrukbarhet.

Svar

Vår grunn til ikke å gå til MVC for noen år siden var det en umoden teknologi fra Microsoft. I løpet av de siste årene har vi nå en mer moden versjon (4), og MS ser ut til å ha funnet ut hvor de skal med dette.Vi er imidlertid fortsatt motvillige til å utvikle store LOB-apper som bruker MVC, ettersom funksjonene vi vil bruke i versjon 4 krever en Windows 2012-server (re nettuttak via IIS8). Jeg regner med at om 1 år til vil vi akseptere MVC mer, ettersom forhåpentligvis flere tredjepartskontroller vil være tilgjengelig, teknologien vil ha lagt seg, og vi vil ha infrastruktur for å støtte den.

Kommentarer

  • Har du noe imot å liste opp noen av disse funksjonene du sier krever Windows Server 2012?

Svar

Denne avgjørelsen avhenger av dine preferanser, av dine krav eller til og med av din kunnskap og erfaring.

Tiden for opplæring i å lære MVC eller tid til å få en levering. Alt dette har betydning for å velge en eller annen tilnærming.

Er ikke det at en er bedre enn en annen, bare både aproach eller rammer har fordeler og ulemper.

Personlig jeg favoriserer MVC 3, Jeg anbefaler deg å prøve å få din egen opplevelse, men jeg må si at programmet i MVC er en ren, morsom, fleksibel, utvidbar, sikker og strukturert måte.

Hilsen,

Svar

Den eneste grunnen til at jeg ville valgt WebForms i stedet for MVC, er fordi du har mye mer tredjeparts UI-kontroller for WebForms enn MVC. Jeg velger MVC fordi jeg jobbet for mye med WebForms og jeg vil jobbe med noe nytt / nytt, men fortsatt fra MS shop 🙂

I utgangspunktet hindrer ingenting deg å slå av viewstate i WebForms og bruke ViewModels og hvis / for sløyfer i stedet for modellinnbinding og kontroller på serversiden.

Er dette WebForms eller MVC-kode:

<% foreach (var item in Model.Items) { %> <p><%: item.Name %></p> <% } %> 

Den eneste begrensningen jeg fant i WebForms er at hvis du bruker Dependency Injection / Inversion of Kontroll, du kan ikke ha konstruktørinjeksjon siden WebForms-sider må ha parameterløs konstruktør, så du må bruke eiendomsinjeksjon. Er dette virkelig en så stor avtale?

Svar

ASP.NET MVC er virkelig et svar på Ruby, og den nye, trendy og (IMO) bedre måten å koble nettleseren (klienten) fra serveren så mye som mulig.

ASP.NET Webforms gir deg mye kontroll over klienten fra serversiden, med direkte tilgang til stort sett alt. I det vesentlige er ditt syn og kontrolleren en i det samme, noe som gir deg mye kraft, og de fleste ganger mye rot.

ASP.NET MVC skiller visningen og kontrolleren ved å løsne den tette koblingen av en .aspx-fil og .aspx.cs-filen som følger med dem i webskjemaer.

I hovedsak er forskjellen at du har mye mer (vanligvis alt) behandlingen for å vise data til visningsfilen, og la forretningslogikken og resten være i kontrolleren, og holde dem begge renere etter konvensjon, men også med mindre tilgang til hverandre enn webskjemaer tillater.

Kommentarer

  • Så NÅR skal webskjemaer foretrekkes fremfor MVC? Dette svarer ikke på det originale plakatspørsmålet.
  • @WeekendWarrior – Når du vil ha mer tilgang til serveren til klienten, velger du webskjemaer. Hvis du vil ha mer frakobling av klienten / serveren i koden din, velger du MVC. På slutten av dagen gjør de begge nøyaktig det samme. Omdirigeringsfiltre gjør det samme som MVC-nettadressene, og du kan flytte koder for webskjemaer til et eget mellomnivå for å koble det mer. weblogs.asp.net/scottgu/archive/2010/01/24/…
  • Når det gjelder ditt tredje punkt, ender den forretningslogikken i .aspx.cs-filen – jeg tror dette er utvikleres feil. Det ‘ er ikke / skal / være der. I Webforms er .aspx » visning «, .aspx.cs er » controller » ekvivalent, beregnet på å behandle koden som bare vedrører brukergrensesnittet ved å avstemme et forretningslag eller grovkornet forretningsfasadelag. Det faktum at folk legger forretningslogikk i .aspx.cs er bare dårlig programmering. De kunne også sette forretningslogikk rett i visningen i MVC! MVC tvinger ikke ‘ t til separasjon av disse tingene.
  • I det vesentlige har han mer rett enn andre svar lagt ut her. ASP.net er den grunnleggende ideen bak en modulær webteknologifamilie som den ble opprettet av Microsoft. ASP.net MVC-modul kan være en tidsmessig hype, men det er helt sikkert ikke den siste, alt begynner med ASP.net, så når du skal velge ASP.net, hvis du ikke tror at MVC ikke er din greie, kanskje du mer til noe annet OWIN eller …, noe mer avansert, eller laget ditt eget rammeverk for oppgavene dine. Du trenger kanskje ikke en gang ASP.MVC og hopper over den og går Owin eller Katana, men til du bruker asp.nett

Svar

Etter min mening er de relatert nok og har omtrent de samme mulighetene som det burde komme ned til preferanse.

En flott WebForms-utvikler kan produsere et produkt like kraftig som en flott MVC-utvikler. Men den store WebForms-utvikleren som prøver å tvinge seg selv til å adoptere MVC kommer til å komme kort. Det samme gjelder en flott MVC-utvikler som gir WebForms et skudd.

De er ikke helt separate enheter, og så lenge Microsoft fortsetter å støtte begge deler, tror jeg du vil fortsette å se en blandet gruppe eksepsjonelle utviklere for hver.

Svar

Dette handler om personlig valg, forutsatt at vi alle er dyktige med teknologien vi bruker. Jeg har brukt WebForms-designtilnærmingen i mange år, og jeg må si at den eneste ulempen er at på grunn av den forenklede tilnærmingen tar mange mennesker seg ikke tid til å avdekke den enorme kapasiteten.

Jeg brukte nylig MVC for å fullføre et prosjekt, og selv om jeg ganske liker designtilnærmingen til applikasjonsutvikling (som gir deg mer kontroll, rene nettadresser, SOC osv.), er det ikke mye det gir , at WebForms ikke kan t. Faktisk har fremveksten av jQuery og dets samarbeid med WebForms (så vel som MVC) gjort disse argumentene mindre av et problem. Og når folk snakker om separasjon av bekymringer som en fordel MVC har over MVP, spør jeg dem hvor mye de vet om objektorientert programmering og hvor mye de bruker prinsippet om abstraksjon og polymorfisme.

Jeg er for tiden komfortabel med å bruke begge teknologiene, og jeg velger og velger ut fra situasjonen. for deg, men sannheten er at ikke alle tar seg tid til å lære grundig hva en bestemt teknologi er i stand til.

Kommentarer

  • Ditto on webformsens enorme muligheter. De fleste ser treningshjulene til webformer og sammenligner dette med MVC.
  • Det er liten mening å lære en abstraksjon på toppen av HTML og Javascript i vår tid (selv i 2013). Det ‘ gjør ikke noe bra for dine fremtidige muligheter. HTML og Javas cript er helt greit slik det er. Å kjempe mot det er en tapt kamp.

Svar

Når jeg står overfor et programmeringsproblem, ser jeg ofte på nettet for svar. Webforms har massevis av informasjon / komponenter om å gjøre omtrent hva som helst. I MVC på grunn av færre kilder på nettet og lagene av abstraksjoner som er nødvendige for å få noe til å fungere, har det satt en grense for ting jeg en gang kunne gjøre. Total MVC dreper produktiviteten min som utvikler mens jeg ikke har Webforms. Så foreløpig holder jeg meg til webformer til MVC har modnet nok til å erstatte den.

Svar

Vel, WebForms har flere læringsressurser tilgjengelig (ganske enkelt på grunn av det faktum at det er eldre), og dermed vil det være mer sannsynlig at nye programmerere som ikke er «kunnskapsrike» informasjon om denne eldre teknologien i motsetning til de nyere tingene som MVC.

Senior / erfarne programmerere er eldre og vil være dyktigere i den eldre teknologien på grunn av at de har programmert i den lenger enn de har i den nyere.

Med mindre du kan bruke pengene og krefter på å få gutta dine så dyktige i MVC som de er i WebForms-applikasjoner, vil du utvilsomt prøve å holde opp med å oppgradere til den nye plattform så lenge som mulig.

Så det gir flere logistiske problemer: Gjør fordelene med MVC større enn kostnadene når det gjelder mindre kvalitet og distribusjonstid? Hvis jeg har et nettsted skrevet helt i WebForms, ville det være verdt innsatsen og pengene for å integrere MVC i det?

Som nevnt av en tidligere kommentator, hindrer MVC deg også i å oppnå samme nivå av grensesnitt med kontrolleren slik du kunne med WebForms. Mens jeg er alt for «Holde brukeren å fylle ting opp / lære» -siden av ting, kan det fortsatt være urimelig plagsomt for team å distribuere / implementere et program som fanatisk holder seg til det paradigmet for alt de skriver.

Svar

Jeg tror at gapet mellom disse to teknologiene ikke er så stort som det var.

  • Webskjemaer kan bruke rutemotoren som MVC bruker (eller noe veldig likt).
  • Skriptbehandleren kan kombinere skript, laste inn fra et CDN og til og med forsinke lasting av skript.

For å svare direkte på spørsmålet ditt, tror jeg det kommer til preferanse og / eller hva prosjektet er. De tar begge en betydelig annen tilnærming til utvikling. Personlig har jeg jobbet med å bevege meg mot MVC, men liker fortsatt å jobbe med Webforms. Jeg tror svaret på om du skal bruke MVC eller Webforms er at du bestemmer deg for å oppleve begge teknologiene.

Kommentarer

  • Nettformer og MVC anbefaler en radikalt annen holdning til nettutvikling som standard, dette er viktig , få utviklere avviker fra » standard «. Begge kan brukes til å oppnå det samme.

Legg igjen en kommentar

Din e-postadresse vil ikke bli publisert. Obligatoriske felt er merket med *