2011-09-22 11 views
7

Sono andato per un colloquio e mi è stato chiesto di mostrare la mia architettura a livello aziendale. Ho qualche idea sull'architettura a 3 livelli, ma non ho idea di cosa scrivere davanti all'intervistatore. Supponiamo quindi che il mio progetto riguardi i Dipendenti di un'organizzazione, quindi cosa avrei scritto lì. Sarà un qualsiasi tipo di diagramma che avrei dovuto fare o parte di codifica. Ho lavorato in C# framework 3.5. Non capisco davvero cos'altro menzionare in questa domanda, quindi per favore fatemi sapere se qualcosa è richiesto. Grazie.Livello aziendale nell'architettura a 3 livelli

Modifica Ho lavorato a winforms. So cosa è il livello Business, ma non ero sicuro di cosa dire all'intervistatore perché il livello aziendale ha dei codici e ovviamente il mio progetto era un po 'grande, quindi c'erano un numero enorme di codici. Quindi cosa avrei dovuto scrivere lì ??

+0

La domanda "Mostra solo l'architettura del livello aziendale"? Non c'era un contesto? Ti ha esplicitamente chiesto di un'architettura a 3 livelli? Se senza contesto ti è stata posta questa domanda dovresti aver risposto che hai diverse architetture per diversi scenari. –

+1

Non intervista o avrai un secondo turno? :-) –

+0

@Darin: Mi ha chiesto di mostrare l'architettura a 3 livelli – Sandy

risposta

17

un'architettura a 3 livelli è composto da 3 strati principali

  • PL Presentation Layer
  • BLL Business Logic strato
  • DAL layer Data Access

ogni il livello superiore richiede solo lo strato sottostante e mai vede qualcosa su di esso.

quando chiedono circa Come pensate di costruire la vostra BLL, è possibile scrivere qualcosa di simile:

namespace Company.BLL 
{ 
    // let's create an interface so it's easy to create other BLL's if needed 
    public interface ICompanyBLL 
    { 
     public int Save(Order order, UserPermissions user); 
    } 

    public class Orders : ICompanyBLL 
    { 
    // Dependency Injection so you can use any kind of BLL 
    // based in a workflow for example 
    private Company.DAL db; 
    public Orders(Company.DAL dalObject) 
    { 
     this.db = dalObject; 
    } 

    // As this is a Business Layer, here is where you check for user rights 
    // to perform actions before you access the DAL 
    public int Save(Order order, UserPermissions user) 
    { 
     if(user.HasPermissionSaveOrders) 
      return db.Orders.Save(order); 
     else 
      return -1; 
    } 
    } 
} 

Come esempio vivo di un progetto che sto creando:

enter image description here

PL sono tutti servizi pubblici esposti, il mio DAL gestisce tutti gli accessi al Database, I hav EA Servizio strato che gestisce 2 versioni del servizio, un vecchio ASMX e il nuovo servizio WCF, sono esposti tramite un Interface quindi è facile per me scegliere on-the-fly quale servizio l'utente verrà utilizzato

public class MainController : Controller 
{ 
    public IServiceRepository service; 

    protected override void Initialize(System.Web.Routing.RequestContext requestContext) 
    { 
     ... 

     if (thisUser.currentConnection.ws_version == 6) 
      // Use old ASMX Web Service 
      service = new WebServiceRepository6(url, ws_usr, ws_pwd); 

     else if (thisUser.currentConnection.ws_version == 7) 
      // Use the brand new WCF Service 
      service = new WebServiceRepository7(url, ws_usr, ws_pwd); 

     ... 

    } 
} 

Nel codice sopra, uso semplicemente Dependency Injection per separare il knowladge dell'altro livello, poiché a questo livello (il Presentation Layer come questo è un Controller in un progetto MVC) non dovrebbe mai interessarsi a come chiamare il Servizio e che l'utente utilizza ServiceA anziché ServiceB ... Ciò che è necessario sapere è che la chiamata a IService.ListAllProjects() darà i risultati corretti.

Si inizia divisione propone e se un problema appare nella connessione del servizio, si sa che c'è niente a che fare con il livello di presentazione, è il livello di servizio (nel mio caso) ed è facile fisso e può essere facilmente implementato un nuovo service.dll invece di pubblicare nuovamente l'intero sito ...

Ho anche un helper che contiene tutti gli oggetti aziendali che uso in tutti i progetti.

Spero che aiuti.

+2

C'è una differenza tra livelli e livelli. sono stati usati in modo intercambiabile – Raghav

+1

["** ... i livelli sono la distribuzione fisica dei livelli. **"] (http://venkataspinterview.blogspot.com/2011/03/what-is-difference-between-layers- and.html) – balexandre

1

3 Tier è la seguente,

  1. La presentazione in un solo strato.
  2. La logica dell'applicazione in un altro livello, denominato livello aziendale.
  3. Le tue classi di accesso ai dati nel terzo livello. - chiamato Data Layer.

Webforms sarà la presentazione strato Così per la classe dei dipendenti di fare qualsiasi cosa nel codice ASP.Net dietro file può essere considerato livello di business per la mia comprensione, come si stanno applicando le regole di business utilizzando if/else e così via. Le classi di accesso ai dati nella cartella App_Code sarebbero Data Layer.

Nel caso di applicazioni desktop, i progetti sarebbero di livello di presentazione, il codice di modulo sarà di livello aziendale e qualsiasi cosa correlata all'accesso al database sarebbe costituita da un livello dati.

3

leggi la mia risposta qui per un esempio valido in molti progetti, anche se l'interfaccia utente non è mvc asp.net ...

MVC3 and Entity Framework

+2

grazie ... buon articolo – Sandy

0

strato strato di business che responsabile di tutta la logica di business. Ad esempio hai Organizarion quindi organizzazione e raccolta di dipendenti. In oggetto dipendente è necessario implementare alcune restrizioni o alcune regole. Queste regole saranno implementate in questo livello.

0

La logica aziendale è definita come qualsiasi logica di applicazione che riguarda il recupero, l'elaborazione, la trasformazione e la gestione dei dati dell'applicazione; applicazione di regole e politiche aziendali; e garantire la coerenza e la validità dei dati. Per massimizzare le opportunità di riutilizzo, i componenti della business logic non devono contenere alcun comportamento o logica applicativa specifica per un caso d'uso o una storia utente. logica di business può essere ulteriormente suddiviso nelle seguenti due categorie: Workflow

  • affari. Dopo che i componenti dell'interfaccia utente raccolgono i dati richiesti dall'utente e lo passano al livello aziendale, l'applicazione può utilizzare questi dati per eseguire un processo aziendale. Molti processi aziendali coinvolgono più passaggi che devono essere eseguiti nell'ordine corretto e possono interagire tra loro attraverso un'orchestrazione. Il flusso di lavoro aziendale definisce e coordina processi aziendali a più fasi e in esecuzione e può essere implementato utilizzando strumenti di gestione dei processi aziendali. Funzionano con componenti dei processi di business che creano un'istanza e eseguono operazioni sui componenti del flusso di lavoro.
  • Entità commerciale Entità di entità commerciale o, più in generale, oggetti aziendali, incapsulano la logica aziendale ei dati necessari per rappresentare elementi del mondo reale, quali clienti o ordini, all'interno dell'applicazione. Memorizzano i valori dei dati e li espongono attraverso le proprietà; contenere e gestire i dati aziendali utilizzati dall'applicazione; e fornire accesso programmatico con stato ai dati aziendali e alle relative funzionalità. Le entità aziendali convalidano anche i dati contenuti nell'entità e incapsulano la logica aziendale per garantire coerenza e per implementare regole e comportamenti aziendali.
Problemi correlati