Vamos supor que o aplicativo precisa de um banco de dados externo, hospedado na nuvem ou no local.
Construa 2 conjuntos de APIs REST, um para autenticação e outro para a lógica real do aplicativo conversando com seu banco de dados. Além disso, hospede-os em diferentes instâncias do servidor, se possível. Se o invasor estiver tentando quebrar o servidor de autenticação e criar um ataque DDOS, seu servidor de lógica de aplicativo não será comprometido. Além disso, certifique-se de que cada chamada REST para a lógica do aplicativo seja validada por um token gerado após a autenticação
A IU do cliente pode ser muito simples. Se for um aplicativo da web, você pode optar por HTML simples, jQuery com uso extensivo de modelos e validações do lado do cliente. Nenhum código do lado do servidor cruzando suas chamadas HTML e jQuery para APIs REST para dados. Isso também ajuda a empacotar o mesmo HTML, JS, CSS em aplicativos phonegap para qualquer plataforma móvel direcionada.
Seu cliente também pode ser um aplicativo nativo do Windows, aplicativo da Web, aplicativo do Windows Phone, aplicativo iOS ou aplicativo Android. Todos eles terão apenas código relacionado à IU e todos eles se comunicam com APIs REST para obter dados. Isso faz com que os designers de UI / UX realmente trabalhem sem se preocupar muito com a codificação do lado do servidor.
Se sua arquitetura for baseada na plataforma Microsoft .Net, você pode usar a Biblioteca de Classes Portátil [PCL] para incluir suas chamadas REST em chamadas de função facilmente utilizáveis. E seu aplicativo do Windows, aplicativo da Web, aplicativo do Windows Phone, iOS usando Xamarin e Android usando Xamarin podem chamar a mesma biblioteca PCL para acesso aos dados.
Deixe-me saber se existem alternativas.