Tornando a ASP.Net Webforms da ASP.Net MVC. Raccomandare modelli / architetture?


12

A molti di voi questo sembrerà una domanda ridicola, ma lo sto chiedendo perché non ho poca o nessuna esperienza con i moduli Web ASP.Net : sono passato direttamente ad ASP.Net MVC.

Ora sto lavorando a un progetto in cui siamo limitati a .Net 2.0 e Visual Studio 2005.

Mi è piaciuta la netta separazione delle preoccupazioni quando si lavora con ASP.Net MVC e sto cercando qualcosa per rendere i moduli Web meno insopportabili. Ci sono schemi o pratiche raccomandati per le persone che preferiscono asp.net MVC, ma sono bloccati su .net 2.0 e Visual Studio 2005?


Grazie per tutti i suggerimenti ragazzi - vorrei poter scegliere più di una risposta.
jlnorsworthy,

1
Spero che il tuo nuovo incarico sia solo per un progetto esistente piuttosto che per qualcosa che parte da zero. Ci sono molte cose di base dalle quali sarai diventato dipendente e che mancheranno come usare Linq per semplici query sulle raccolte. Una grande frustrazione verrà dal guardare l'HTML generato e vedere che non è niente come quello che ti aspettavi. Buona fortuna e spero che tu abbia successo.
Chris,

Risposte:


7

Consiglierei Model View Presenter (MVP). Lo abbiamo utilizzato su una recente app WebForms e ha aumentato la nostra testabilità e ci ha permesso di imporre la separazione delle preoccupazioni.

http://msdn.microsoft.com/en-us/magazine/cc188690.aspx è un ottimo articolo di Jean Paul Boodhoo su questo modello; anche il download del codice è buono. Tuttavia, potresti non avere bisogno di DTO e interfacce per DTO.

Un altro buon articolo è questo su codeproject.com: http://www.codeproject.com/KB/architecture/ModelViewPresenter.aspx

Modifica: esiste anche un framework chiamato WebForms MVP ma non ne so molto.


Webvorms MVP sembra davvero interessante, ma il progetto sembra essersi bloccato (ultima versione del 07/10). Non c'è molta documentazione o tutorial disponibili
jlnorsworthy

Sembra anche richiedere .NET 3.5 SP1, quindi potrebbe non essere troppo utile per te. Tuttavia, i campioni e l'origine possono aiutare a valutare il modello MVP.
Ciaran,

Bene, non me ne sono nemmeno accorto. Terrò d'occhio quel progetto nel caso in cui dovessi fare webform con un'azienda che ha la tecnologia attuale :)
jlnorsworthy

4

Vi consiglierei di comprendere il ciclo di vita della pagina di .net 2.0

Potrebbe valere la pena guardare questi video anche se non tutti sono gratuiti, ma almeno questo sarà un buon inizio per te .... Il fatto è che questo ti darà un'idea di cosa fare per ulteriori ricerche in seguito.


3

Come potresti aver scoperto ormai che avresti bisogno di disimparare un paio di cose che hai imparato con ASP.NET MVC (tra l'altro - lo stesso accade quando una persona ASP.NET si appresta a imparare ASP.NET MVC). È ancora possibile implementare il modello MVC in ASP.NET ma la separazione di View and Model è molto sfocata in ASP.NET a causa dell'architettura di post-pubblicazione degli eventi / pagina.

Secondo me, la maggior parte del tuo nuovo apprendimento sarà correlato al ciclo di vita della pagina e agli eventi e ai controlli. Le solite interazioni Session, Cache, ViewState e DB rimangono invariate.

HTH ...


2

Verifica del modello del front controller e implementazione del front controller in Asp.Net. Fai queste cose solo se il tuo progetto sarà di buone dimensioni. Fare questo per un piccolo progetto non giustifica il ROI.

In un piccolo progetto puoi provare a stabilire alcune linee guida. Ad esempio: nessuna logica aziendale, nessun utilizzo di sessione ecc. Nel codice sottostante.

Scopri cosa si adatta meglio al tuo caso. In ogni caso tenere la tentazione di fare oltre l'ingegneria.


0

Nei giorni bui di .NET 1.1 ho creato (immagino come tutti) una sorta di sistema MVC per un'applicazione che è andata così.

Una pagina è stata creata per essere una sorta di maestro "falso". Questo ha avuto qualche impianto idraulico per mostrare menu, script, stili, ecc.

Le "viste" erano controlli individuali dell'utente.

C'era una tabella con informazioni su ciascuna vista. Ad esempio, "Prodotto" verrebbe caricato ~/Controls/Product.ascxin un segnaposto. La tabella aveva anche un campo che conteneva il nome del tipo della classe del modello (come se). Ogni modello ha implementato un'interfaccia ben nota. Questa classe è stata istanziata usando Activator.CreateInstance()e chiamata per inizializzare, e quindi passata al controllo stesso (inversione del controllo?). Il controllo ha quindi chiamato vari metodi per ottenere set di dati o quant'altro. L'interfaccia stessa è stata normalizzata per avere i soliti metodi CRUD (Leggi / Scrivi / Elenco / Elimina). C'era anche un livello DAL / ORM al di sotto di questo.

Non era carino, ma ha funzionato bene. È stato facile testarlo e svilupparlo, e la maggior parte degli sviluppatori che sono entrati a bordo si sono accorti abbastanza rapidamente. Soprattutto, è stato relativamente semplice da creare.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.