Nota: quando faccio riferimento al livello, intendo un livello fisico. Molte delle domande su questo sito relative ai "livelli" si riferiscono a livelli logici, che non è quello che sto chiedendo.Un'architettura di livello 3 (fisica) è inefficiente?
Sto progettando un'app utilizzando un'architettura standard a "3 livelli", con livelli di presentazione, business logic (BLL) e accesso ai dati (DAL). La tecnologia è WPF, C#, LINQ e SQL Server 2008. La mia domanda riguarda l'architettura fisica di questa app.
Posso posizionare il BLL/DAL in una DLL standard che viene caricata ed eseguita sul computer dell'utente, creando un'architettura a 2 livelli: client e server di database. Ma non è troppo difficile trasformare BLL/DAL in un servizio WCF che si trova su un app server e viene chiamato dal computer dell'utente. Questo mi darebbe un'architettura a 3 livelli: client, server delle applicazioni e server di database.
La mia domanda è questa: qual è il vantaggio dell'utilizzo di un'architettura a 3 livelli? Mi è stato spesso detto che i 3 livelli aggiungono scalabilità, ma non mi è immediatamente chiaro il motivo per cui questo sarebbe. E sicuramente stai andando a fare un colpo di performance con gli stessi dati che devono fare due hop sul filo - dal server di database al server di app, quindi dal server di app al computer client.
Apprezzerei il consiglio di architetti e sviluppatori esperti là fuori.