Domanda

Ho appena ascoltato il 17° podcast del team StackOverflow e ne hanno parlato molto bene ASP.NET MVC che ho deciso di dargli un'occhiata.

Ma prima voglio essere sicuro che ne valga la pena.Ho già creato un'applicazione web di base (su cui altri sviluppatori possono basarsi) per un progetto che inizierà tra pochi giorni e volevo sapere, in base alla tua esperienza, se dovrei prendermi il tempo per apprendere le basi di MVC e ricreare l'applicazione Web di base con questo modello.

Ci sono davvero grandi professionisti che ne varrebbero la pena?

MODIFICARE:Non è un progetto esistente, è un progetto che sta per iniziare, quindi se devo farlo dovrebbe essere adesso...


Ho appena trovato questo

Tuttavia, non utilizza il modello post-back esistente per le interazioni con il server.Invece, indirizzerai tutte le interazioni dell'utente finale a una classe Controller, che aiuta a garantire una netta separazione tra preoccupazioni e testabilità (significa anche assenza di viewstate o ciclo di vita della pagina con visualizzazioni basate su MVC).

Come funzionerebbe?Nessuno stato di visualizzazione?Nessun evento?

È stato utile?

Soluzione

Se oggi sei abbastanza soddisfatto di WebForms, forse ASP.NET MVC non fa per te.

Sono stato frustrato da WebForms per molto tempo.Sicuramente non sono solo qui.L'astrazione con stato e client intelligente sul Web fallisce gravemente in scenari complessi.Mi capita di amare HTML, Javascript e CSS.WebForms cerca di nascondermelo.Ha anche alcune soluzioni davvero complesse a problemi che in realtà non sono così complessi.Anche i moduli Web sono intrinsecamente difficili da testare e, sebbene sia possibile utilizzare MVP, non è un'ottima soluzione per un ambiente Web... (rispetto a MVC).

MVC si rivolge a te se...- Vuoi un maggiore controllo sul tuo HTML - Vuoi un'esperienza Ajax senza soluzione di continuità come ogni altra piattaforma ha - vuoi una testimonianza attraverso e through - vuoi URL significativi - odio affrontare i problemi di Postback e ViewState

E per quanto riguarda il framework dell'Anteprima 5, è abbastanza stabile, il design è per lo più lì e l'aggiornamento non è difficile.Ho avviato un'app su Anteprima 1 e l'ho aggiornata entro poche ore dalla disponibilità dell'anteprima più recente.

Altri suggerimenti

È importante tenere presente che MVC e WebForms non sono in competizione e l'uno non è migliore dell'altro.Sono semplicemente strumenti diversi.La maggior parte delle persone sembra avvicinarsi a MVC vs WebForms come "uno deve essere un martello migliore dell'altro".Questo è sbagliato.Uno è un martello, l'altro è un cacciavite.Entrambi vengono utilizzati nel processo di assemblaggio delle cose, ma presentano punti di forza e di debolezza diversi.

Se uno ti ha lasciato l'amaro in bocca, probabilmente stavi cercando di usare un cacciavite per piantare un chiodo.Alcuni problemi sono complicati con i WebForm che diventano eleganti e semplici con MVC e viceversa.

Ho utilizzato ASP.NET MVC (ho anche scritto un HTTPModule che ti consente di definire i percorsi in web.config) e ho ancora l'amaro in bocca a riguardo.

Sembra un enorme passo indietro nell’organizzazione e nella produttività.Forse non è per alcuni, ma ho capito i moduli web e non rappresentano alcuna sfida per me per quanto riguarda renderli gestibili.

Questo, e non approvo l'attuale moda del "PROVA TUTTO"...

ASP.NET MVC consente sostanzialmente di separare la responsabilità di diverse sezioni del codice.Ciò ti consente di testare la tua applicazione.Puoi testare le tue visualizzazioni, percorsi ecc.Inoltre accelera l'applicazione poiché ora non sono presenti ViewState o Postback.

MA ci sono anche degli svantaggi.Poiché non stai utilizzando WebForms, non puoi utilizzare alcun controllo ASP.NET.Significa che se vuoi creare un GridView eseguirai un ciclo for e creerai la tabella manualmente.Se desideri utilizzare la procedura guidata ASP.NET in MVC, dovrai crearla da solo.

È un bel framework se sei stufo del modulo web ASP.NET e desideri eseguire tutto da solo.Ma devi tenere presente che trarrai vantaggio dal creare di nuovo tutte le cose o no?

In generale preferisco il framework Webforms per la ricca suite di controlli e l'impianto idraulico automatico.

Creerei prima un sito di prova e vedrei cosa ne pensa il team, ma per me non tornerei a WebForms dopo aver utilizzato MVC.

Ad alcune persone non piace il codice mescolato con HTML, e posso capirlo, ma preferisco di gran lunga la flessibilità rispetto a cose come il ciclo di vita della pagina, il rendering di HTML e biggy per me: nessuna confusione nello stato di visualizzazione incorporato nell'origine della pagina.

Alcune persone preferiscono MVC per una migliore verificabilità, ma personalmente la maggior parte del mio codice è nello strato intermedio e comunque facilmente testabile...

@Jonathan Holland Ho visto che sei stato bocciato, ma questo è un punto MOLTO VALIDO.Ho letto alcuni post sugli intertubi in cui le persone sembrano confondere ASP.NET MVC il quadro e MVC Il modello.

MVC di per sé è un file DESIGN PATTERN.Se tutto ciò che stai cercando è una "separazione delle preoccupazioni", puoi sicuramente ottenerla con i moduli web.Personalmente sono un grande fan di Modello MVP in un ambiente standard a più livelli.

Se vuoi davvero il controllo TOTALE del tuo markup nel mondo ASP.NET, allora MVC ramework fa per te.

@Juan Manuel Hai mai lavorato nell'ASP classico?Quando dovevi programmare tutti i tuoi eventi e gli elementi "viewstatish" (come un menu a discesa che richiama il valore selezionato dopo l'invio del modulo)?

Se è così, ASP.NET MVC non si sentirà così imbarazzante fin dall'inizio.Darei un'occhiata alla fantastica serie di Rob Conery "Vetrina del negozio MVC" dove ha esaminato la struttura e costruito ogni componente previsto per il sito di un negozio.È davvero impressionante e facile da seguire (recuperare il ritardo è difficile perché Rob è stato molto attivo e ha pubblicato MOLTO in quella serie).

Personalmente, e al contrario di Jeff Atwood sentimenti sull'argomento, mi è piaciuto piuttosto il modello del modulo web.Sicuramente era totalmente diverso dai tempi di vbscript/ASP classico, ma tenere sotto controllo il viewstate e scrivere i propri controlli CSS friendly era divertente, in realtà.

Poi di nuovo, nota che ho detto "mi è piaciuto".ASP.NET MVC è davvero fantastico e più simile alle altre tecnologie web disponibili.È certamente più semplice passare da ASP.NET MVC a RAILS se ti piace o devi lavorare su più piattaforme.E mentre, sì, è ovviamente molto stabile (proprio questo sito), se la tua azienda non consente software "beta" di qualsiasi colore;implementarlo in produzione in questo momento potrebbe essere un problema.

Se sei uno sviluppatore ASP.NET professionista e hai del tempo da dedicare all'apprendimento di nuove cose, ti consiglio sicuramente di dedicare un po' di tempo a provare ASP.NET MVC.Potrebbe non essere la soluzione a tutti i tuoi problemi e ci sono molti progetti che potrebbero trarre maggiori vantaggi dall'implementazione di un modulo web tradizionale, ma mentre provi a capire MVC imparerai sicuramente molto e potrebbero farti emergere molte idee che puoi candidarti per il tuo lavoro.

Una cosa positiva che ho notato leggendo molti post di blog ed esercitazioni video mentre cercavo di sviluppare un progetto pet MVC è che la maggior parte di essi segue le migliori pratiche attuali (TDD, IoC, Dependency Injection e, in misura minore, POCO). oltre a un sacco di JQuery per rendere l'esperienza più interessante per l'utente, e queste sono cose che posso applicare sulle mie attuali app di moduli web e che non ero mai stato esposto in modo così approfondito prima.

Il modo di fare le cose di ASP.NET MVC è così diverso dai moduli web che ti scuoterà un po' la mente, e questo per uno sviluppatore è molto positivo!

OTOH per un principiante assoluto nello sviluppo web Penso che MVC sia sicuramente un inizio migliore perché offre un buon modello di progettazione pronto all'uso ed è più vicino al modo in cui funziona realmente il web (dopo tutto, HTML è senza stato).Su MVC decidi tu su ogni byte che va avanti e indietro sul cavo (almeno mentre non impazzisci con gli helper html).Una volta ottenuto ciò, sarà meglio attrezzato per passare alle strutture "artificiali" fornite dai moduli Web ASP.NET e dai controlli del server.

Se ti piace utilizzare i controlli server che svolgono molto lavoro per te, NON ti piacerà MVC perché dovrai eseguire molta codifica manuale in MVC.Se ti piace GridView, aspettati di scriverne uno tu stesso o di usare quello di qualcun altro.

MVC non è per tutti, specialmente se non ti interessa testare l'unità della parte della GUI.Se hai dimestichezza con i moduli web, resta con esso.Web Forms 4.0 risolverà alcune delle attuali carenze come gli ID assegnati automaticamente da ASP.NET.Avrai il controllo di questi nella prossima versione.

A meno che gli sviluppatori con cui lavori non abbiano familiarità con il modello MVC, non lo farei.Come minimo parlerei con loro prima di fare un cambiamento così grande.

Sto cercando di prendere la stessa decisione su ASP.NET MVC, Juan Manuel.Ora sto aspettando che arrivi il giusto progetto in miniatura con cui posso sperimentare.Se l'esperimento va bene (il mio istinto dice che lo farà), allora architetterò i miei nuovi grandi progetti attorno alla struttura.

Con ASP.NET MVC si perde il modello viewstate/postback di ASP.NET Web Forms.Senza questa astrazione, si lavora molto più a stretto contatto con l'HTML e i comandi HTTP POST e GET.Credo che la programmazione dell'interfaccia utente sia in qualche modo nella direzione del classico ASP.

Con questo inconveniente, arriva un maggiore grado di controllo.Molto spesso mi sono trovato a combattere la spazzatura delle pseudo-sessioni di ASP.NET e la prospettiva di riprendere il controllo completo dell'HTML di output sembra molto rinfrescante.

Forse è il migliore o il peggiore dei due mondi.

Non conosco ASP.NET MVC, ma ho molta familiarità con il pattern MVC.Non vedo un altro modo per creare applicazioni professionali senza MVC.E deve essere MVC modello 2, come Spring o Struts.A proposito, come stavate creando applicazioni web senza MVC?Quando ti trovi in ​​una situazione in cui è necessario un qualche tipo di convalida per ogni richiesta, come la convalida se l'utente è autenticato, qual è la tua soluzione?Una sorta di include (validate.aspx) in ogni pagina?

Non hai mai sentito parlare di sviluppo N-Tier?

Ajax, RAD (i moduli web con ajax sono molto spesso anti-RAD), CONTROLLO COMPLETO (senza sviluppare un sacco di codice e cicli).i moduli web sono utili solo per collegare una griglia e simili e non per nient'altro, e un'altra cosa veramente importante: le prestazioni.quando rimani bloccato nei moduli web, prima o poi attiverai MVC.

Non consiglierei di effettuare semplicemente il passaggio a un progetto esistente.Magari avviare un piccolo progetto "demo" che il team possa utilizzare per sperimentare la tecnologia e (se necessario) apprendere ciò di cui ha bisogno e dimostrare al management che vale la pena effettuare il passaggio.Alla fine, anche il team di sviluppo potrebbe rendersi conto di non essere pronto o che non ne vale la pena.

Qualunque cosa tu faccia, assicurati di documentarla.Forse se usi un progetto demo, scrivi un'autopsia per riferimento futuro.

Non conosco ASP.NET MVC, ma ho molta familiarità con il pattern MVC.Non vedo un altro modo per creare applicazioni professionali senza MVC.E deve essere MVC modello 2, come Spring o Struts.A proposito, come stavate creando applicazioni web senza MVC?Quando ti trovi in ​​una situazione in cui è necessario un qualche tipo di convalida per ogni richiesta, come la convalida se l'utente è autenticato, qual è la tua soluzione?Una sorta di include (validate.aspx) in ogni pagina?

No, non dovresti.Sentiti libero di provarlo su un nuovo progetto, ma molte persone che hanno familiarità con i moduli web ASP.NET non lo adorano ancora, a causa della necessità di armeggiare con HTML grezzo + molti concetti diversi + scelte piuttosto scarse sulla documentazione/ tutorial.

Il fatto che ASP.net MVC sia solo in "Anteprima 5" è motivo di preoccupazione quando lo si esamina?

So che StackOverflow è stato creato utilizzandolo, ma esiste la possibilità che Microsoft possa implementare modifiche significative al framework prima che sia ufficialmente fuori dalla versione beta/alpha/anteprima?

Se sei deciso a utilizzare un framework MVC, allora preferirei iniziare a utilizzare quello del progetto Castle...

Detto questo, personalmente penso che i WebControl abbiano molti vantaggi, come ad esempio la possibilità di creare applicazioni guidate da eventi che hanno un client con stato e così via.La maggior parte degli argomenti contro i WebControl sono costruiti a causa della mancata comprensione del modello WebControl, ecc.E non perché in realtà siano davvero cattivi...

MVC non è un proiettile d'argento, soprattutto non Microsoft MVC...

Ho visto alcune implementazioni del framework MVC in cui, per motivi di testabilità, qualcuno ha eseguito il rendering dell'intero HTML nel codice.In questo caso anche la vista è un codice testabile.Ma ho detto, amico mio, mettere HTML nel codice è un incubo di manutenzione e lui ha detto bene, mi piace tutto ciò che è compilato e testato.Non ho discusso, ma in seguito ho scoperto che aveva inserito questo codice HTML nei file di risorse e la follia è continuata...

Non si rendeva conto che l'idea di separare View risolveva anche la parte di manutenzione.Supera la testabilità in alcune applicazioni.Non abbiamo bisogno di testare la progettazione HTML se utilizziamo lo strumento WYSWYG.I WebForm sono utili per questo motivo.

Ho visto spesso persone abusare del postback e del viewstate e incolpare il modello ASP .NET.

Ricorda che le migliori pagine Web sono ancora quelle .HTML ed è qui che risiede la potenza di ASP .NET MVC.

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