L'applicazione su cui lavoro ha bisogno di un'interfaccia web (ASP.NET MVC) e interfacce mobili (Android / IPhone native). Le funzionalità per le applicazioni mobili e l'applicazione Web potrebbero non sovrapporsi (alcune funzionalità sono simili, altre sono diverse)
Al momento, sto pensando a 2 modi per strutturare le applicazioni come di seguito:
Per l'approccio top , è sufficiente un solo server Web che server sia i client Web sia quelli mobili. Mobile comunicherà con il server tramite Json (serializzato da ASP.NET MVC). Il livello di servizio è semplicemente una libreria di classi semplice a cui fare riferimento tramite il livello Web
- Pro
- Più veloce, poiché non esiste una comunicazione cross-machine tra web e livello di servizio
- Più semplice
- Contro
- Sicurezza? Qui ci sono problemi di sicurezza?
- Meno flessibile durante il ridimensionamento (è possibile ridimensionare sia il livello Web sia il livello di servizio come un'unica unità).
Per l'approccio bottom , sono necessari un server Web e un server applicazioni (per API WCF / Web). Mobile comunicherà direttamente con il server delle applicazioni tramite Json
- Pro
- Può proteggere separatamente server Web e applicazioni, ulteriore livello di protezione sul livello dell'applicazione. Ma il server delle applicazioni è comunque esposto al cellulare giusto?
- Può scalare in modo indipendente server Web e applicazioni
- Contro
- Più lento
- Più complicato a causa dell'API WCF / Web nel mezzo
È la prima volta che faccio l'applicazione sia per il Web che per i dispositivi mobili in questo modo. Quale approccio è comunemente usato in questo scenario? L'utente tende a privilegiare l'approccio bottom, ma penso che in questo caso potrebbe essere eccessivo seguire l'approccio bottom