Domanda

Ho lavorato su un progetto che implementa un'architettura a tre livelli con il seguente disegno:

  1. Presentation Layer - Utilizza PHP con un framework MVC alla presentazione maniglia frontend e la logica di business. Questo strato effettua chiamate al livello di servizio, che ha accesso ai dati.
  2. Data Access Strato - utilizza C # .NET ed è suddivisa in servizio, Business Logic, e Data Layer. Chiamato dal livello di presentazione. Rende chiamate al database e serializza le risposte per tornare al livello di presentazione.
  3. Dati Strato - La banca dati. Fornisce tutti i dati per quanto sopra due strati.

Mi rendo conto che un approccio a tre livelli può aiutare la sicurezza, dal momento che non v'è ancora alcun accesso ai dati se il livello di presentazione è compromessa. Anche se questo è vero, sembra che questo approccio è di complicare eccessivamente un po ', soprattutto perché sono costretto a scrivere due modelli per lo stesso oggetto nei primi due strati.

Quindi la mia domanda: E 'un brutto implementazione di un'architettura a tre livelli? Se è così, come potrebbe essere migliorato? Quali sono gli svantaggi, se del caso, di avere semplicemente un'implementazione MVC che ha accesso al database? Che approache (s) si usa per le applicazioni web?

Grazie per l'aiuto!

È stato utile?

Soluzione

Sembra a me come i vostri 3 livelli sono gli stessi View, Modello controller. Se il PHP è principalmente facendo chiamate al # 2 strati, allora penserei sé non ha bisogno di essere MVC a meno che non si dispone di un livello di presentazione molto complicato che si dovrebbero essere organizzati in MVC, per esempio se si hanno complicato la navigazione o l'utente l'autenticazione logica.

Altri suggerimenti

Non c'è niente di necessario nella programmazione. Ma ci sono un sacco di pratiche, che sono stati prooven da anni come qualcosa-you-can-follow-to-get-migliori-risultati. separazione N-tier è solo uno di quei pratiche.

http://en.wikipedia.org/wiki/Multitier_architecture

La tua descrizione segue la descrizione nel wiki, quindi -. È modo adeguato per attuare a 3 livelli app

Ma ricordate, non lo fai dovrebbe fare nulla - basta seguire il modo in cui è comodo per voi. E in futuro avrai il proprio insieme di pratiche che lavoro per voi in particolare.

Credo che la vostra complicazione deriva dal fatto che si sta utilizzando PHP e .NET, che non sono direttamente compatibili. Se eliminato uno di quelli (utilizzato solo PHP o solo .NET utilizzato) che semplificherebbe le cose. In caso contrario, penso che si sta utilizzando un approccio di buon.

Il valore di un approccio non è solo per la sicurezza, facilita anche la manutenibilità.

io non sono sicuro di aver capito la preoccupazione: "soprattutto perché sono costretto a scrivere due modelli per lo stesso oggetto nei primi due livelli." Questo sembrerebbe essere perché si sta utilizzando due diversi linguaggi di programmazione per l'interfaccia utente e il back-end. Sto indovinando C # "livello di accesso ai dati" contiene un modello di oggetti completo che è quindi necessario replicare nel front-end.

Il problema sembra essere che ci sono due livelli intermedi che rispecchiano l'un l'altro, perché si sta utilizzando due lingue, non è che si sta utilizzando un'architettura a più livelli

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