Domanda

Ho letto il libro Pro ASP NET MVC Framework e mi sto davvero confondendo con molte cose. Ho cercato di fare qualche ricerca ma sto scoprendo che con così tanti approcci e concetti diversi che mi vengono lanciati, sta solo peggiorando le cose.
Quindi ho alcune domande:

  1. So che MVC dovrebbe dividere la funzionalità in tre cose principali: Model - > Controller - > Vista. MVC è un approccio diverso dall'architettura a tre livelli? O dovrei ancora pensare di creare un livello di accesso ai dati e un livello di logica aziendale nel mio progetto?

  2. Che cosa sono esattamente i repository? È ciò che funge da mio livello di accesso ai dati? Dove / come si inseriscono i repository nell'MVC?

  3. Il libro parla dell'utilizzo di LINQ to SQL per interagire con il database, ma afferma tuttavia che LINQ to SQL non sarà supportato in futuro e che Microsoft lo rilascerà per Entity Framework. Dove si inserisce Entity Framework nell'MVC e come interagisco con esso?

Grazie in anticipo per il tuo aiuto!
Matt

È stato utile?

Soluzione

  1. MVC è principalmente un modello per il livello di presentazione e si concentra sull'interazione tra la vista e il controller. Il modello può essere considerato the componenti dell'applicazione che sono responsabili del mantenimento dello stato , inclusa la persistenza.

    In una semplice applicazione il modello potrebbe essere solo un modello LINQ-To-SQL. In un'applicazione aziendale di grandi dimensioni il modello potrebbe contenere un livello di accesso ai dati, un livello aziendale e un livello di dominio. ASP.NET MVC non si limita a come implementare la M.

  2. Il modello Repository è un modo per implementare la parte di persistenza dell'M Il ActiveRecord è un altro. Quale modello scegliere dipende dalla complessità dell'applicazione e dalle tue preferenze.

    Dai un'occhiata al Step 3 del tutorial NerdDinner in cui creano un semplice repository utilizzando Linq to SQL.

  3. Linq to SQL non sarà morto. Microsoft continuerà a migliorare il core e ad aggiungere le richieste dei clienti laddove ha senso, ma Entity Framework sarebbe l'obiettivo principale. Dai un'occhiata a questo post per LINQ alle modifiche SQL in .NET 4.0 .

    L'EF può essere utilizzato in modo simile a LINQ to SQL, ma è anche più flessibile e quindi può essere utilizzato in altri modi. Ad esempio, EF4 supporterà più o meno la persistenza dei tuoi oggetti POCO in un design più guidato dal dominio.

Altri suggerimenti

Sì, penso che MVC sia un approccio diverso rispetto a "quot" Architettura a 3 livelli che penso intendevi qui (l'architettura in cui crei principalmente 3 progetti DAL, BL e UI). L'idea principale dietro MVC è la separazione delle preoccupazioni tra ciascuno dei suoi componenti (Modello, Vista e Controller). Il controller è il componente responsabile della gestione delle richieste degli utenti e, nella maggior parte dei casi, gestisce il "Modello". componente per visualizzare la vista desiderata come risposta alla richiesta dell'utente. La differenza tra questa e la tradizionale architettura a 3 livelli è che DAL e BL sono ora raggruppati e denominati Model e sì, è ancora necessario creare questi componenti.
Cosa sono i repository?
Martin Fowler menziona la definizione di un repository come " Media tra dominio e dati mappare i livelli usando un'interfaccia simile a una raccolta per accedere agli oggetti di dominio " I repository fanno parte del tuo livello di accesso ai dati, non accedono ai dati da soli, mediano tra il dominio e le entità di mappatura dei dati e, naturalmente, dovrebbe essere inserito nella cartella / progetto del modello.

Linq to SQL sarà deprecato?
NO e lo stesso libro afferma che anche Damien Guard (uno sviluppatore del team ADO.NET) ha menzionato in uno dei suoi post sul blog che Linq to SQL verrà incluso in .NET 4.0.

Come interagire con EF?
Come faresti con Linq a SQL. Come Linq to SQL, Entity Framework sarà la tua entità di mappatura e risiederà anche nel progetto Modello.
Spero che questo aiuti!

Immagino che tu sia un po 'confuso su queste cose, e loro sono confuse, quindi esaminiamole lentamente.

  1. N-Tiered Architecture e MVC sono diversi, ma intrecciati. N-Tier di solito parla della separazione dell'accesso ai dati, della logica di business e dell'interfaccia utente. Tuttavia, alcune persone potrebbero obiettare che è impossibile separare totalmente i BLL dall'interfaccia utente; MVC risolve il problema, in modo tale che un controller corrispondente parli con il tuo BLL e con il tuo View, invece che con il tuo View che parli direttamente con il tuo BLL.

  2. Sì, avere repository è un approccio per avere un DAL . Esistono molti modi per farlo e non dovresti limitarti a ciò che è discusso nel libro.

  3. Il libro utilizza LINQ to SQL solo per dimostrare ASP.NET MVC nel modo più veloce possibile, ma NON è l'unico modo. Smetti di pensare a LINQ to SQL per un minuto; ASP.NET MVC può essere utilizzato se si utilizza un ORM come NHibernate o si utilizza ADO.NET + DAL Factory normale o qualsiasi altra cosa: ciò che non sarà possibile utilizzare sono quelli ASP.NET ObjectDataSources che trascini e rilascia con la tua UI.

Per quanto riguarda Entity Framework, Brad Abrams ha scritto una bella guida su come utilizzare Entity Framework con ASP.NET MVC , che dovrebbe coprire la tua ultima domanda.

HTH

  1. Sì, è ancora necessario creare autonomamente i livelli di accesso ai dati e di logica aziendale. Alcuni potrebbero sostenere che il livello Controller È la logica aziendale, ma preferisco personalmente la separazione tra la logica aziendale reale (ad esempio il calcolo dei prezzi) dalla logica aziendale sullo schermo (ad esempio il gestore di eventi per il pulsante " OK "). Quindi li chiamerai dalla tua classe Controller. La classe controller controlla la logica del tuo schermo e gestisce la traduzione dal tuo livello di dati / business logic al valore dello schermo.

  2. il framework ASP.NET MVC non pone restrizioni al "Modello" livello, il che significa che è possibile utilizzare tutto ciò che si desidera tra cui NHibernate, LINQ to SQL o framework di entità. Uso LINQ to SQL perché è semplice.

  3. Non sono sicuro, non ho mai letto quel libro. Ho appena scaricato il progetto Nerddinner di Scott Hanselman da codeplex e lo uso come guida per la scrittura di siti Web ASP.NET MVC.

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