Domanda

Recentemente un architetto ha descritto la nostra azienda ad offrire una soluzione di Rolls-Royce (MVC), quando tutto quello che serviva era una Toyota (Web Form).

Sono curioso di scoprire cosa ne pensate moduli web vs MVC come una scelta architettonica.

È stato utile?

Soluzione

L'analogia Rolls-Royce / Toyota è terribilmente viziata e fuorviante. One (ASP.NET MVC) non è semplicemente una versione più elaborata e più costoso degli altri (ASP.NET WebForms). Sono molto diversi approcci alla creazione di applicazioni web utilizzando ASP.NET.

Per me, la più grande differenza architettonica tra il MVC e WebForms è come funzionano con l'ambiente senza stato del web: WebForms lavora duramente per costruire un insieme di astrazioni che nascondono la natura stateless di programmazione web, mentre MVC abbraccia l'ambiente senza stato e lavora con esso.

Ogni approccio ha i suoi vantaggi e svantaggi, ma mi piace molto come la creazione di siti web con MVC si sente molto più naturale di WebForms (con la sua strati su strati di astrazioni che perde ).

Altri suggerimenti

vecchia questione ma merita una risposta più dettagliata nel caso in cui chiunque altro là fuori è ancora in realtà avere un dilemma su di esso.

In definitiva, webforms è una soluzione thin client con il quale ha significato che si preme un mucchio di belle pulsanti e il front-end (client) roba è costruito per voi. Se ci sono persone che sanno come darci dentro in WebForms e non ci sono assolutamente manutenibilità / preoccupazioni modificabilità e il sito è completamente a breve termine e getta, non c'è nulla di sbagliato in questo approccio. E 'possibile imparare a fare il proprio roba, ma in questo caso sarebbe necessario conoscere entrambe le cose web WebForms cerca di sviluppatori .NET app e proteggono da tutte le cose webforms che rende la maggior parte degli sviluppatori sul lato client web voler assassinare il Microsoft Gli ingegneri responsabili.

Nel 99,5% di tutti gli altri scenari di caso d'uso, abbiamo smesso di cercare di nascondere il web da sviluppatori di applicazioni perché in realtà, se si vuole scrivere applicazioni web si sta molto meglio in realtà imparare come funziona il web. L'ironia di spessore vs soluzioni thin client è che inevitabilmente l'approccio thin client bloats inevitabilmente la merda del vostro front-end ed è tutt'altro che performante. le cose più importante, queste soluzioni sono sempre fatte inflessibile come tutto l'inferno per le persone che in realtà sanno quello che stanno facendo e non vogliono essere vincolati dal quadro a tutti gli effetti.

Non c'è niente di così inutile come prendere qualcuno che sa tutto di CSS, JavaScript, HTML, XHR e che li rende completamente inutile per il roadblock loro ogni passo del cammino, con una struttura che ...

  • cancella tutti i tag di script 'non necessari' nel tag head per impedirti di avvitamento sulle dipendenze di script. (Meglio lasciare che un manico di 'script manager' che per voi) scontato, nessuno mette in su là al giorno d'oggi se sanno quello che stanno facendo, ma che è appena incasinato.

  • insiste si avvolge tutto il codice HTML in un tag form ginormous. HTML non consente forme dentro le forme in modo da fare le forme il modo WebForms o nessun modo a tutti.

  • Crea come un 18-step "ciclo di vita" per quello che in realtà dovrebbe ridursi a reagire agli eventi dell'interfaccia utente interagendo con il browser per inviare messaggi al server e poi reagire quando le risponde server. Astraendo questo processo con un grande mucchio gigante di spazzatura non doveva accadere (e ad essere onesti, MS non è l'unico idiota che ha cercato di fare questo).

  • In realtà tutto ciò che fa il possibile per ottenere nel modo di utilizzare soluzioni non WebForms ai problemi. Esempio: Quando ero più giovane dev lato client ho passato un'intera giornata a trovare un modo per fare un pulsante Invia nella parte superiore della pagina di attivazione di un pulsante di invio in fondo a una pagina (presumo a causa di che un grande- gigante-form cosa). Normalmente questo avrebbe preso 5 minuti, ma dopo un bel paio di ore il reverse engineering dei webforms responsabili JavaScript, ho scoperto che erano tra l'altro impostazione di una proprietà non ho nemmeno conoscevo al momento in cui si dice che cosa l'ultimo elemento form per avere attenzione si è concentrata in modo che quando un pulsante di invio è stato cliccato, solo l'ufficiale di Microsoft submit pulsante (tm) avrebbe funzionato per quanto riguarda l'attivazione di un gestore di ufficiale di Microsoft submit (tm).

Quindi no, Rolls-Royce vs Toyota, è del tutto irragionevole. Direi di più, una perfettamente ragionevole Hyundai che si paga troppo per contro un Microsoft progettato Pinto con un sistema di bordo che fa automaticamente taglienti 90 giri gradi quando si scopre che hai comprato gas o petrolio da qualcuno diverso da Microsoft e sta rilevato un comodo parete sbattere contro. Una macchina ideale per il pilota suicida-marca-fedele che non sa nulla del web e vuole giurare fedeltà per tutta la vita a Microsoft.

Tutti .NET MVC è in realtà, è semplice e ragionevole, e non reinventare un proprio livello di schiaffo sulla parte superiore del web. Esso funziona solo con quello che c'è daaiuto knock out un po 'di testo standard per voi. C'è di meglio / quadri più economico / libero-er a disposizione, ma se avete già voi stessi bloccato nella cosa NET, si potrebbe fare molto peggio.

Ma sul serio, rimanere l'! @ # $ Lontano da webforms. E 'quasi morto. Lasciarlo andare. Dì ai tuoi clienti che lo farai per tre volte i soldi se ti promettono anche un contratto di supporto esclusivo e redditizio by-the-ora per quando in realtà vogliono fare qualcosa di nuovo o di diverso o quando si avvia merda rottura perché nemmeno MS poteva essere disturbati per continuare ad aggiungere a quella Behemoth di una linea di 10.000 file di ajax.js tirano fuori della loro culo DLL in cui non si può toccare.

soluzione

Un ASP.NET MVC non deve essere più complicato di una soluzione WebForms. Personalmente, trovo ASP.NET MVC di essere in realtà molto più semplice di WebForms, e sembra decisamente essere intrinsecamente più pulito.

Dalla mia esperienza, un sacco di quadri MVC (ASP.NET, Rails, CodeIgniter, ecc) hanno gran parte della stessa funzionalità di base e le convenzioni. WebForms è davvero l'anatra dispari da una prospettiva web. La mia ipotesi è la maggior parte dei programmatori web sarebbe molto più veloce a far salire ASP.NET MVC di WebForms.

La ragione principale è necessario utilizzare ASP.NET MVC ASP.NET WebForms sopra è testabilità. Certo che puoi tipo di WebForms unit test, ma questo richiede beffardo quadri e un dolore molto. La seconda ragione è MVC fa lo rendono un po ' più facile per separare le preoccupazioni. Questo può fornire una grande quantità di riutilizzo del codice e rendere il vostro codice indefinito. Questo non significa che sia impossibile fare lo stesso in ASP.NET con modelli come MVP.

Il lato negativo di MVC è che si perde un sacco di funzionalità e che è stata costruita in WebForms negli ultimi dieci anni (o quasi). MVC ha percorso una lunga strada sin dal suo inizio alle funzionalità similiar fornite.

Per quanto riguarda le prestazioni, qualcuno ha modo una prova o in un altro, di cui tech è "più veloce"?

Non penso che uno è migliore dell'altro. Mi piace molto il framework MVC e lo hanno utilizzato con grande successo, ma ho sempre assicurarsi che ho scelto il tecnico che corrisponde al progetto.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
scroll top