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.Respostas:
Sim é normal. Mas isso é normal apenas se você precisar fazer esse tipo de separação e não forçar essa configuração em seu aplicativo geral.
Um SPA vem com alguns problemas associados a ele. Aqui estão apenas alguns que me vêm à mente agora:
Claro, também existem vantagens no SPA:
Portanto, o problema é que existem vantagens e desvantagens em ambas as abordagens (SPA versus páginas do servidor). Gaste algum tempo pesquisando as duas opções e escolha com base na sua situação.
fonte
A resposta para sua pergunta é simples. Sim. O que você propõe é uma abordagem sólida . Mas então, o que eu acho que você quer perguntar é se é uma abordagem melhor e, infelizmente, nenhum de nós pode responder isso para você. Os fatores envolvidos abrangem muitas facetas que, sem divulgar tudo sobre a sua organização e os requisitos do produto, nenhuma conclusão real pode ser feita. Eu acho que você já sabe o que fazer de qualquer maneira.
fonte
Normal com ressalvas.
as estruturas javascript do front end são limitadas no que podem fazer. Se você criar APIs brutas para uso por vários aplicativos, elas geralmente exigirão algum processamento no servidor das chamadas de API brutas para exibir modelos que funcionam com esse aplicativo específico.
Portanto, uma arquitetura 'normal' pode ser:
Agora, se você tiver apenas um aplicativo da Web, poderá cortar a camada 'API expondo a lógica de negócios' e fazer com que o código da Web do servidor chame a lógica de negócios diretamente.
Como você separou a lógica de negócios em sua própria biblioteca, ela ainda é dissociada da lógica da interface do usuário e você sempre pode adicionar uma camada de serviço posteriormente.
Da mesma forma, como o serviço da API é chamado pelo código do servidor, você não tem comunicação http limitada. (embora isso seja praticamente universal agora)
Além disso, fazer com que o javascript chame o mesmo host do qual é veiculado significa que você não precisa mexer com cors
fonte