2012-08-31 12 views
5

Sto lavorando ad un'applicazione web e in seguito abbiamo in programma di sviluppare e rendere disponibili anche le sue applicazioni mobili. Io non sono un grande esperienza, ma solo in base alla mia comprensione progettando di avere questa architettura:application architechture con MVC, WCF, EF

  1. MVC progetto Web front end che sarà direttamente comunicare con WCF servizi.
  2. Le convalide del lato server verranno eseguite sul modello MVC utilizzando le annotazioni di dati, quindi i dati verranno passati al livello WCF. La sicurezza utilizzando il provider di appartenenza al cliente verrà implementata anche in MVC.
  3. Il livello WCF funziona come un livello aziendale. Dove richiesto comunicherà a DAL che è una libreria di classi.
  4. DAL usando EF verrà comunicare a SQL Server *

domande si prega di

  1. è questa architettura buona?
  2. è utile utilizzare WCF come livello di livello aziendale e servizi?
  3. su quale livello dovremmo implementare quali pattini?
  4. per le convalide dei dati e la sicurezza è MVC luogo corretto?

Grazie

Modifica 5. E 'buono per quanto riguarda Unit Testing? o per un miglior testamento dovrei fare qualche cambiamento?

risposta

4

Quello che stai descrivendo è uno stack di server Microsoft piuttosto moderno e buono.

ASP.net MVC è un vantaggio per la tua interfaccia utente web. Se stai andando con asp.net MVC dovresti anche cercare in asp.net webapi (nuovo) per il livello aziendale.

http://www.asp.net/web-api

http://weblogs.asp.net/scottgu/archive/2012/02/23/asp-net-web-api-part-1.aspx

SQL Server e EF sono abbastanza standard. L'altra opzione è T-SQL puro se è necessario il massimo controllo e si ha dimestichezza con SQL diretto.

Un vantaggio che si ottiene separando l'interfaccia utente Web (MVC) dal livello aziendale (web-api) è che è possibile separare i ruoli e ridimensionarli indipendentemente anche se inizialmente si trovano nello stesso ruolo/macchina. Inoltre, il codice html/javascript lato client potrebbe eseguire chiamate in stile jax al web-API. Per questo motivo, si vorrebbe "registrare" (config) il punto finale del server web-api. Se lo riduci/spostalo in un secondo momento, non ci sono modifiche al codice: codifichi con una separazione netta dal primo giorno.

I dispositivi mobili (se app di spessore) possono utilizzare direttamente il web-api. A meno che l'app mobile sia un'app mobile ibrida che utilizza una soluzione brower/javascript incorporata, allora è solo un piccolo fattore di forma dell'utente della tua interfaccia utente web MVC.

Per il test, è possibile auto-host web-api nel proprio processo della riga di comando e prendere in giro i dati se ciò è fattibile. Ciò consentirebbe di convalidare l'interfaccia utente web senza un back-end.Avendo un livello aziendale (esposto tramite web API) puoi anche convalidare la logica del backend & (dovrebbe essere la maggior parte della tua logica) indipendentemente dall'interfaccia utente.

+0

Grazie @byanmac, non ero a conoscenza di Web API. puoi per favore guidarmi nel mio progetto in cui sarà montato e che cosa sostituirà? Per favore, se possibile, rispondi anche alle altre domande numerate. – user576510

+1

Sostituisce il livello intermedio WCF. Sarebbe un endpoint REST per i ruoli dell'interfaccia utente Web front-end da utilizzare. – bryanmac

+0

grazie. Come potrò accedervi direttamente per altri client come le applicazioni mobili non sviluppate in MVC? Come se fosse un'applicazione per andoid non in linguaggi nativi del browser come html o html5? – user576510

Problemi correlati