Come ottenere il tipo N-Tier in Codeigniter MVC [chiuso]

4

So che N-Tier ha lo scopo di separare i livelli su una rete diversa

ma mi piacerebbe avere la stessa separazione di codice in codeigniter

Ho avuto questa idea di avere Modello : per database CRUD - > Livello dati API REST : per la logica aziendale- > Livello aziendale che chiama il metodo CRUD dai modelli

Controller & Visualizza stanno andando come prima

e il flusso sarà

Visualizza < - > Controller < - > API (con classi commerciali) < - > Modello

Voglio sapere che tipo di inconvenienti può essere una tale architettura

    
posta Ahmed Samy 09.03.2013 - 00:25
fonte

1 risposta

4

N-Tier non è necessariamente su reti diverse. Ogni livello è in un processo separato, potrebbe essere tutto su una sola macchina.

Il livello 3 è un po 'fuori moda a causa del marshalling fuori processo che richiede.

Qualsiasi livello aggiuntivo, leggi: limite del processo o peggiore comunicazione attraverso un trasporto di rete, è costoso.

In un sistema a 3 livelli il secondo livello è solitamente la logica aziendale. Un sistema a due livelli è più popolare in questi giorni, dal momento che la logica aziendale è davvero difficile da separare dai dati degli utenti.

Una tipica applicazione Web è a due livelli; i dati utente e la logica aziendale sono di un livello e un DBMS è l'altro livello.

Il più grande svantaggio consiste nel dover eseguire il marshalling / serializzazione di tutto più volte mentre si rimbalza tra i livelli. Meno livelli hai, meno rimbalzi devi fare. Tutto il lavoro che puoi fare direttamente senza saltare attraverso i cerchi è enormemente più efficiente. La differenza tra il passaggio dei dati per riferimento (in-process memory) o tramite un trasporto è enorme.

Il codice API o una logica aziendale sotto forma di codice dell'applicazione è facilmente replicabile e quindi efficiente da eseguire in-process. Un livello di logica aziendale offre poche opportunità di ridimensionamento poiché dipende dalle transazioni con il livello dati. Non hai bisogno di livelli per il riutilizzo, puoi riutilizzare i livelli semplicemente.

Continuerò a stratificare il più a lungo possibile. Per ciò che chiami 'API' nel tuo 'flusso': guarda in un modello di livello servizio dell'applicazione (che è un livello, non un livello) come alternativa.

    
risposta data 09.03.2013 - 01:01
fonte

Leggi altre domande sui tag