Domanda

Ho un app ASP.NET con un'architettura a tre strati:

  • livello di presentazione: ASP.NET

  • Bussiness dello strato. C # biblioteca

  • Data Access Layer: libreria C # con
    oggetti ADO.Net Entity Framework.

Alcuni metodi su strato Bussiness sarebbero tornati oggetti entità ADO.NET ma, strato di accesso ai dati non è visibile a livello di presentazione non posso farlo.

La mia domanda è: In una vista di disegno, è corretto esporre entità oggetti nel livello di presentazione? Penso di avere solo Link Library strato di dati con ASP.NET app.

Grazie!

È stato utile?

Soluzione

Vi suggerisco di esaminare i concetti di vista oggetti ... o di trasferimento di dati Objects (DTO). Si potrebbe considerare l'utilizzo di uno strumento come automapper o simili che creerà un oggetto di dominio specifico vista dalla vostra entità. In generale, si può avere schermi che hanno bisogno di un soggetto presente per svolgere il suo lavoro. Ma il più delle volte è necessario passare più soggetti diversi. In questo caso si sta meglio la creazione di uno DTO che contiene tutte queste entità. In questo modo si sta aggiungendo uno strato di separazione tra la parte di presentazione e il vostro livello di business. Spesso le entità hanno più potere di quanto si potrebbe desiderare di esporre alla parte di presentazione. E viceversa. Spesso potrebbe essere necessario per ottenere alcuni messaggi dell'interfaccia utente verso il livello di presentazione in base a una certa convalida contrassegnato nel vostro livello di business. Invece di rendere l'interfaccia utente più complessa di quanto ha bisogno di essere (passando nelle entità pieno) è possibile passare solo in ciò che l'utente ha bisogno nella forma del DTO. Inoltre, non c'è mai una necessità per i vostri oggetti di business per la cura di qualcosa di specifico per il livello di presentazione. Vi suggerisco di non DataBind direttamente a nulla nel lontano lo strato di accesso ai dati. Tecnicamente la parte di presentazione dovrebbe sapere il meno possibile sulla tua livello di business. Nel caso di MVP o MVC questo è molto facile da raggiungere scollegando il front-end e back-end per mezzo di questa separazione aggiuntivo!

Altri suggerimenti

E 'assolutamente auspicabile avere oggetti disponibili per l'uso e il consumo nel vostro livello di presentazione vostra entità. Questo è ciò che tutto il lavoro è per.

  • Binding raccolta di oggetti a una griglia / listview / discesa
  • Spruzzando un singolo oggetto (cioè cliente) su un modulo di lettura / aggiornamento / delete

Questo rende la vita più facile di gran lunga. In caso contrario si avrebbe dovuto passare stringa dopo int dopo aver fatto doppio dopo corda tra la presentazione e di business strati.

Questi possono essere oggetti entità o anche i propri oggetti POCO che sono stati idratati dagli oggetti Entity.

Vorrei anche andare fino al punto di dire che il vostro entités devono essere nella loro propria assemblea separata dalla DAL.

Credo che nessuno, non lo è, il modo migliore per farlo è quello di separare le classi di dati da un comportamento, e di riferimento solo le classi di dati nella presentazione level.The buon approccio penso di usare WCF vedere questo link

supervisione controller e Passive View

Se si passa l'Entità, si sono essenzialmente supervisione controller. In caso contrario, si è Passive View.

supervisione controller è meno lavoro, ma meno verificabile. Supervisione controller dice anche l'associazione dati è OK. vista passivo è testabile, ma molto più lavoro. No associazione dati. Un sacco di proprietà.

In genere mi attengo con supervisione Controller. In genere non è necessario che il livello di testabilità e non vale la pena supplementare.

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