Estou criando um novo aplicativo Web de negócios e quero alcançar:
- Use as melhores tecnologias de seus respectivos domínios. Quero uma estrutura de back-end confiável com ORM sólido. E eu quero a estrutura SPA mais avançada (aplicativo de página única) com o uso dos recursos mais atualizados de HTML e Javascript para o aplicativo front-end
- Expor entidades de back-end e serviços de negócios para o uso de diferentes tipos de aplicativos - por exemplo, aplicativos Web, dispositivos móveis (Android) e possivelmente outros tipos (dispositivos inteligentes, etc.)
Portanto, para atender a ambos os requisitos, estou inclinado a separar completamente meu aplicativo em aplicativos de back-end e front-end e a organizar a comunicação entre eles usando a API REST (JSON). Esta abordagem é sólida?
Essa separação não é uma solução de design óbvia, porque muitas tecnologias de aplicativos da web possuem camadas de visualização integradas, nas quais o aplicativo do servidor controla mais ou menos a geração da visualização e manipula parcialmente as respostas da visualização (por exemplo, SpringMVC com camada de visualização, PHP Yii com visualização camada, o Java JSF / Facelets salva completamente o estado de seus componentes no servidor). Portanto - existem muitas tecnologias que propõem um acoplamento mais forte e prometem um tempo de desenvolvimento mais rápido e uma jornada mais padrão. Então - devo ser cauteloso ao começar a usar tecnologias de uma maneira que não é amplamente usada.
Pelo que entendi, o front-end do SPA completamente separado geralmente surge da necessidade de usar a API de terceiros. Mas é esse design de som dissociado quando o back-end e o front-end são desenvolvidos por uma empresa?
Atualmente, minha escolha de tecnologias é Java / Spring back-end e Angular2 / Web Components / Polymer para front-end - se eu puder dizer isso. Mas isso é irrelevante para esta questão, porque esta questão é sobre design geral e não sobre a escolha de tecnologias concretas?
So - I must be cautious when starting to use technologies in manner which is not widely used.Sim, você deve ser cauteloso se planeja usar um martelo para lançar seda. Talvez não seja a ferramenta certa.