Ottenere il meglio da entrambi i mondi: MVC e WebForms

2

Piuttosto che fare una domanda generale su WebForms vs MVC (come in ASP.NET v / s ASP.NET MVC ), ho un questionario specifico.

Sembra che le principali differenze tra i due approcci siano

  1. WebForms è Event Driven e utilizza componenti predefiniti
  2. MVC ha un livello integrato che WebForms non ha: il modello
  3. MVC ha i controllori in una cartella separata rispetto alle viste mentre il controllore di WebForm è CodeBehind

Si potrebbe facilmente aggiungere una cartella a un progetto WebForm chiamato "Modello" che memorizza tutta la logica aziendale utilizzata nel codice sottostante (disaccoppiando i due). L'argomento principale contro WebForms è che è "facile" scrivere la logica di business nel CodeBehind. Ma potresti facilmente aggiungere la logica aziendale nel tuo controller MVC che viola completamente la separazione dei dubbi.

Ora per la domanda: non è il caso che tu possa scrivere un progetto WebForms in modo tale che la logica di business sia separata dal Controller / Code Behind che avrebbe tutti i vantaggi di MVC (separazione delle preoccupazioni) mantenendo i vantaggi di WebForms: controlli ricchi, eventi guidati (se ti piacciono gli eventi)?

    
posta coder 28.09.2011 - 15:29
fonte

2 risposte

3

Quello che stai descrivendo è il pattern MVP . Esiste un framework chiamato WebFormsMVP specificamente progettato per facilitare questo.

Sono not certo molti saranno d'accordo che è il meglio di entrambi i mondi, ma è un modo notevolmente più verificabile di usare WebForms piuttosto che inserire tutto il codice nella classe Codebehind.

Tuttavia, inserire un livello di servizio tra i tuoi moduli e il tuo modello di dati raggiunge anche questo, molto più semplicemente.

    
risposta data 28.09.2011 - 15:34
fonte
4

La maggiore differenza tra MVC e webform non è la separazione delle preoccupazioni, ma il modo in cui gestisce lo stato. Webforms tenta di modellare lo sviluppo di applicazioni desktop lavorando duramente per nascondere la natura stateless di HTTP e del web. In questo modo vengono generati molti inutili ingombri sotto forma di HTML generato e ViewState, rendendo le pagine più lente e più fragili. Lo sviluppo lato client (cioè in stile AJAX) è disabilitato anche a causa di elementi HTML generati inutilmente e id generati dallo schema di denominazione proprietario di WebForm. MVC rimuove tutto ciò che è strano e gonfio, abbraccia la vera natura senza stato del web, consente allo sviluppatore il pieno controllo su html, e quindi interagisce bene con script e librerie client-side.

    
risposta data 28.09.2011 - 17:26
fonte

Leggi altre domande sui tag