Domanda

Ho alcune domande su un'architettura a tre livelli.

  1. come implementare correttamente un'applicazione in tre tier?
  2. come comunicare tra questi livelli?
  3. è completamente livello dati è uguale al DBMS? (Come circa in un caso se utilizzare le stored procedure e come circa in un caso se abbiamo usato un quadro di mappatura relazionale oggetto?)

in attesa di sentire le vostre risposte. Grazie.


PS: Per favore non capisco che sto facendo una domanda generale. ok ? Mi sto chiedendo come progettare un'applicazione su larga scala in modo corretto. Qual è il modo migliore?. Non aspettandosi risposte looooong.

È stato utile?

Soluzione

Queste sono risposte ampie, farò del mio meglio per darvi alcune indicazioni.

  1. "correttamente" è un termine un po 'soggettiva. In generale, a mio parere la cosa più importante è quello di mantenere il livello in un proprio modulo (ad esempio, la propria DLL), e hanno interfacce che vanno dentro e fuori del modulo. Utilizzando interfacce in ogni strato, è possibile separare la definizione dall'implementazione, disaccoppiando ulteriormente gli strati l'uno dall'altro. Se c'è un unico punto di ingresso nello strato, e si basa su un'interfaccia, si può avere diverse implementazioni sottostanti, a seconda delle necessità. Nella direzione opposta, se si utilizza interfacce come callback, poi i clienti di livello (cioè gli altri livelli) avranno solo bisogno di implementare le interfacce in modo da ottenere un flusso buona tra gli strati.

  2. Questo dipende da come si sceglie di implementare gli strati stessi. Se si progetta gli strati come ho suggerito sopra, si sarebbe semplicemente utilizzare le interfacce di andare nello strato e fuori di esso. Un'altra soluzione potrebbe essere quella di rendere asincrona, utilizzando spedizionieri eventi - uno strato sarebbe semplicemente generare un evento, e un livello diverso avrebbe ascoltato a questo evento e di agire su di esso. Tutto dipende dai requisiti specifici del progetto.

  3. No, lo strato di dati è il livello all'interno dell'applicazione che interagisce con il DBMS. Utilizzando ORM è semplicemente un metodo per attuare il livello dati, mentre utilizzando stored procedure è un metodo per spostare alcuni dei logica dall'applicazione nel DBMS stesso, per una serie di motivi.

Credo che riceverai più risposte; si dovrebbe prendere tutti in considerazione, fare qualche lettura oltre la rete, e sperimentare un po 'fino a trovare quello che ti piace.

Altri suggerimenti

  1. I tre livelli sono di presentazione, Business Logic e dati. Assicurarsi di non mischiare le preoccupazioni. UI non deve contenere logica di business e così via.

  2. Ogni livello deve sapere solo circa il livello di sotto di essa. Per es. Interfaccia utente deve comunicare solo con Business Logic e non deve sapere nulla di livello di dati. Per raggiungere questo obiettivo alle interfacce invece di implementazioni concrete . Uso iniezione di dipendenza mantenere moduli debolmente accoppiati.

  3. Questo dipende da come si sceglie per la sua attuazione. Inizia con YAGNI principale. Mantenere le cose il più semplice possibile per avviare e utilizzare le cose come ORM solo se si ha realmente bisogno di loro.

Questo argomento è troppo ampio per rispondere adeguatamente a questa domanda nella profondità richiesta. Detto questo:

  1. Un elemento importante è limitare adeguatamente le dipendenze tra strati in modo che ogni strato conosce solo dello strato di "sotto". per esempio. lo strato di business non conosce il livello di presentazione.

  2. architettura a 3 livelli fa alcuna prescrizione su come i livelli comunicano tra loro. Affari (tier), la funzionalità è frequentemente esposto come servizi web che sono consumati dal livello di presentazione.

  3. Il livello dati non è del tutto uguale al database. Avrete sempre bisogno di un po 'di codice per interagire con l'archivio dati (ad esempio ORM). Questo codice deve essere contenuto nel proprio modulo per minimizzare l'accoppiamento.

Questo dipende da molti fattori. Vorrei guardare utilizzando un modello repositiry per il Data Access Layer (DAL). Idealmente questo sarebbe usato in congiunzione con un mappatore relazionale oggetto (ORM) come entità quadro 4, o NHibernate. Vorrei quindi avere uno strato di dominio separato che contiene le regole e servizi business. Il tuo livello di dominio sarebbe soddisfare le richieste tra l'interfaccia utente e il and You DAL. Per la vostra interfaccia utente si ha la possibilità di moduli web o un approccio MVC. Entrambi saranno ancora lavorare all'interno della tre livelli, ma si otterrà molto meglio separazione delle preoccupazioni da MVC. Questo è un bene quando si vuole fare un po 'di test di unità. Ecco alcuni link buono per quanto riguarda la sopra.

http://daveswersky.com/2010 / 05/26 / entità-quadro-4-poi-e-ora /

http: // Channel9. msdn.com/blogs/matthijs/aspnet-mvc-2-basics-introduction-by-scott-hanselman

http://www.asp.net/mvc/ tutorial / MVC-music-store-parte-1

tier Tre è una concept non è un passo per passo didattico. Keep it semplice e isolato. Se si sta lavorando con la memorizzazione dei dati e il recupero, metterlo nel livello dati. Quando c'è una logica per essere avuto, posizionarlo nella / strato intermedio logica. Temi / pelli, viste, segnaposti di widget vanno nella livello di presentazione.

altri Study codice. Un buon punto di partenza sarebbe monorotaia .

Leggi un sacco di documentazione più si sa cosa fanno gli altri e meglio è.

Prima di tutto, divertirsi con essa. Se ti senti sopraffatto o come le cose stanno complicato, passo indietro e scoprire che cosa è nel posto sbagliato.

Il modo migliore per implementare un'applicazione in 3 tier è quello di utilizzare un quadro della tua lingua che utilizzano MVC. Per PHP vi consiglio CodeIgniter http://codeigniter.com/

Di solito ciò che accade è il passaggio di oggetti, se si segue OOP, tra i tre livelli. Beh, per lo più due. Controllo riceve la richiesta, chiede al modello (DB) e ottiene un oggetto in cambio, utilizza le proprietà ei metodi di che per visualizzare la vista.

seguire alcuni tutorial in Ci. Si otterrà un'idea di che cosa sta accadendo in MVC.

Ci sono tre livelli in architettura a tre livelli che sono Presentazione strato, livello di logica business e lo strato di accesso ai dati. Oltre a questi tre possiamo usare un livello di oggetto di business per implementare classi di resistenza in grado di mappare i nostri oggetti con il database oppure è possibile utilizzare Entity Framework.

Presentazione strato: Questo è lo strato più in alto della applicazione in cui l'utente esegue la loro attività. Prendiamo l'esempio di qualsiasi applicazione in cui l'utente ha bisogno di riempire un modulo. Questa forma non è altro che il Presentation Layer. Nelle applicazioni Windows Windows Forms sono il livello di presentazione e in applicazioni web modulo web appartiene al livello di presentazione. Fondamentalmente validazione dell'input e regola di elaborazione dell'utente è fatto in questo strato.

livello di business: Questo è in cima al livello di presentazione. Come suggerisce il nome, la maggior parte delle operazioni di business vengono eseguite qui. Ad esempio, dopo aver raccolto i dati dei moduli che vogliamo validare con la nostra regola di business personalizzato. Fondamentalmente si definiscono le classi e le entità di business in questo strato.

strato di accesso ai dati: Sulla parte superiore dello strato di Business Logic è il Data Access Layer. Esso contiene i metodi che aiutano livello business per collegarsi al database ed eseguire operazioni CRUD. In generale tutto il codice e cose relative banca dati appartiene al Data Access Layer. A volte la gente usa un Data Access Layer indipendente dalla piattaforma per recuperare i dati da vari fornitori di database.

Ulteriori dettagli - https://www.c-sharpcorner.com/UploadFile/dacca2/understand-3-tier-architecture-in-C-Sharp-net/

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