2012-12-09 10 views
5

ho letto molti articoli parlare di 3 livelli di architettura in C#, ma vedo che:Come implementare livelli architettura a 3 in C#

  • Quasi utilizzare Bussiness Logic Layer (BLL) come una mappatura oggetto tabella corrispondente nel database . Questo oggetto BLL ha alcuni metodi come questi:

    + GetData(): restituirlo;

    + Update(this);

    + Insert(this);

    + Delete(this);

  • Questo oggetto BLL chiama il DAL (livello di accesso ai dati) corrispondente per l'esecuzione nella corrispondente tabella del database.

  • Penso che se con i metodi precedenti, possiamo ottenere un record e aggiornarlo. Ma se abbiamo molti record e vogliamo metterli in un set di dati, come possiamo aggiornare tutti i record modificati? Dobbiamo usare il ciclo per tutti i record per farlo?
  • Inoltre, nel database, ci sono molte tabelle correlate l'una all'altra, in modo da come possiamo mettere in set di dati, fare relazioni e aggiungere, aggiornare, cancellare record come l'utilizzo di BindingSource con un Combobox e DataGridView? E come possiamo separare il codice in questa situazione?

risposta

3

Ci sono 2 fantastici progetti sull'architettura a tre livelli in C#.

3-tier architecture in C# e Three Layer Architecture in C# .NET. Entrambi i progetti sono straordinariamente specifici per te.

enter image description here

enter image description here

+1

Grazie mille. Ho letto 2 esempi, posso capire in qualche modo un'architettura di base a 3 livelli. Ma forniscono solo un semplice esempio con un oggetto (utente). Se usiamo "DataSet" per mostrare tutti i record, come possiamo aggiornare tutti i record modificati su "DataSet", in loop tutti i record, no? E se abbiamo molti oggetti in relazione tra loro, quale è il modo migliore per visualizzare i dati e aggiornarli insieme! Puoi darmi esempi più complessi! –

+1

Entrambi gli articoli citati consentono al livello logico aziendale di dipendere (ovvero di fare riferimento a) sullo strato dal. Questa non è la strada da percorrere. Il tuo modello di business (ovvero il modello di dominio) dovrebbe essere al centro della tua applicazione, il resto ha riferimenti a esso. Un buon nome per questo è il modello di cipolla. Google, ne vale la pena! – Maarten

+2

Architettura di cipolle - http://jeffreypalermo.com/blog/the-onion-architecture-part-1/ – Maarten

11

Quanto sopra descrive un'architettura molto semplice di un modello a 3 livelli.

  1. DAL (Data Access Layer) interagisce direttamente con il database, quindi tutte le operazioni SQL vengono eseguite solo in DAL.
  2. BLL (Business Logic Layer) funziona come un mediatore tra DAL e Presentation Tyre.
  3. Nessuna comunicazione diretta è consentita tra DAL e Presentation Layer.
  4. Sebbene non vi sia presenza fisica del livello entità, Entità incapsula tutte le informazioni/dati e le passa da un livello all'altro.
  5. Quindi tutto il nome dell'oggetto Database e lo schema del database sono limitati all'interno del DAL che fornisce un ulteriore livello di sicurezza all'applicazione.
  6. Come regole Attività/logiche sono definite all'interno di BLL, qualsiasi aggiornamento logica aziendale non influisce il DAL e lo strato di presentazione

enter image description here

Questo diagramma descrive un effettiva attuazione di un 3 livelli modello.

  1. Data Access Service e Database Server possono essere ospitati in un singolo server.
  2. Per lo più SQL Server 2000/2005/2008 o Oracle può essere ospitato su Windows 2000/2003 Server.
  3. Business Server espone tutte le operazioni tramite Web Service/Remoting/WCF.
  4. Un server altamente configurato con Windows 2000/2003 può essere utilizzato per ospitare Business Service oppure è possibile utilizzare anche Microsoft BizTalk Server.
  5. Livello presentazione o il client utilizza il servizio esposto in Business Server utilizzando il proxy tramite pipeline http: //.
  6. Il client può essere una macchina standalone con l'applicazione installata in caso di applicazione desktop (Win-Form o applicazione console) o con un browser per eseguire l'applicazione Web.
  7. Dati/Informazioni vengono incapsulati dall'entità e trasferiti da una posizione a un'altra su una rete seguita da tutto il protocollo di rete.
+0

Grazie mille! Ho capito di più su 3 livelli e 3 livelli di architettura. Ad esempio, abbiamo una tabella che memorizza le informazioni dell'utente, quindi ogni utente ha mappato un'entità. Se vogliamo mostrare tutti gli utenti in una vista dati e aggiornare tutti gli utenti che hanno cambiato le informazioni, dobbiamo incapsulare ogni Entità a corrispondere ogni riga (usando il ciclo) per aggiornare? Qual è il modo migliore. Grazie. Scusa a causa del mio pessimo inglese –

+0

Il più grande problema di "livello sbagliato" che ho visto nel corso degli anni è la logica aziendale nel livello dell'interfaccia utente. Una buona regola empirica è "se avessi 2 livelli di presentazioni, dovrei duplicare il codice che sto scrivendo?" In tal caso, spostalo sul livello aziendale. – granadaCoder

Problemi correlati