Criando aplicativos da Web no lado do servidor versus lado do cliente e híbrido? [fechadas]


27

Atualmente, existem várias abordagens para criar aplicativos da Web:

1. Apenas do lado do servidor

Essa é uma abordagem clássica na qual você processa páginas no servidor por uma estrutura da web como Ruby on Rails, Django, Express, Play! Estrutura e etc.

Fluxo de trabalho típico : crie toda a lógica de negócios, modelos e visualize modelos no servidor na estrutura de sua escolha.

2. API do lado do cliente + REST

Há relativamente pouco tempo, a comunidade da web como um todo começou a criar aplicativos do lado do cliente em Angular, Backbone, Ember e algumas dezenas de outras estruturas JavaScript MV *. E agora também temos o React.js para participar da festa.

ATUALIZAÇÃO : Não há mal-entendidos. O que eu quis dizer com apenas do lado do cliente é a completa separação de preocupações. Você possui um servidor API REST e um aplicativo do lado do cliente que se comunica com esse servidor. Dependendo do seu caso de uso, as chances são de que você nunca tenha um aplicativo verdadeiro apenas do lado do cliente que não se conecte a um back-end para autenticação ou persistência de dados.

Fluxo de trabalho típico : gaste horas decidindo Angular x Backbone x Ember x X. Em seguida, você constrói suas rotas, modelos, visualizações, controladores no cliente. Depois de terminar, agora crie modelos, controladores, rotas no servidor. De certa forma, você está fazendo o dobro da quantidade de trabalho.

3. Híbrido

Não sei muito sobre o uso dessa abordagem, mas, se eu adivinhar, você renderiza suas visualizações (exibição da estrutura MVC) no servidor. Como resultado, você obtém suporte de SEO e carregamentos de página mais rápidos.

Na frente híbrida, há o rendr do airbnb que supostamente combina backbone e expresso.

Eric Florenzo postou em seu blog hoje: React: Finalmente, uma excelente pilha de servidores / clientes .

A quantidade de maneiras de criar aplicativos da Web é impressionante. E para alguém que está aprendendo desenvolvimento web, isso pode se tornar um problema. Como alguém decide sobre qual abordagem usar para criar seu próximo aplicativo?


1
"Somente no lado do cliente: ... Depois de concluir, agora crie modelos, controladores, rotas no servidor." Isso não analisa.
usar o seguinte comando

@ user16764 atualizou minha pergunta.
Avaliado R

Respostas:


13

Eu acho que você entendeu totalmente o "Client Side Only".

Em primeiro lugar, deve ser rotulado "Client Centric". Todo esse ponto de estruturas como Angular é que as partes "VC" do MVC são implementadas inteiramente no navegador em Javascript. A lógica de nível superior "M" da parte "M" - o Modelo - é implementada no navegador e a lógica "CRUD" de nível inferior é implementada no servidor.

A lógica de negócios é desenvolvida uma vez. A lógica da vista é desenvolvida uma vez. A lógica de controle é desenvolvida uma vez - tudo na estrutura Javascript de sua escolha. A lógica de acesso a dados também é desenvolvida apenas uma vez, mas desta vez em qualquer estrutura RESTy ou SOAPy que você escolher no lado do servidor.

Em casos extremos, você pode implementar o Modelo inteiramente no cliente, se for aceitável acessar os dados de apenas um navegador em uma máquina e ter os dados na lixeira toda vez que a opção "Limpar cookies" for selecionada.


É realmente difícil não desenvolver pelo menos parte da lógica de negócios duas vezes. Para uma boa experiência do usuário, você precisa garantir que o usuário insira o email para continuar. Mas como você não pode confiar no cliente, também precisa implementar a regra no servidor. Pelo menos, eu realmente espero que você não esteja dizendo para implementar a lógica de negócios em JS no cliente.
Andy Andy

@ Andy, esse é exatamente o meu ponto. Quando criei um aplicativo Ember, a validação básica de formulários precisava ser feita no cliente, mas também no servidor. Eu tive problemas sérios uma vez por não validar meus dados no servidor e confiar totalmente no cliente.
Avaliado R

Andy et all - dê uma olhada no google docs. Além de carregar o documento, a planilha etc. do servidor, salvá-lo no final e fazer o backup ocasional entre todo o resto, ocorre no seu navegador. O site do Google Docs atua apenas como um armazenamento de dados e um servidor de autenticação.
James Anderson

3
@JamesAnderson O Google Docs é bem diferente de uma loja on-line. Você está editando seu próprio documento, é apenas um blob de dados que eles salvam sem realmente se importar com o que os dados significam. Mas você realmente acha que a validação do pedido deve ser feita SOMENTE no cliente? Você está apenas pedindo às pessoas que ofereçam produtos gratuitos, se é assim que você cria esse aplicativo. Parece que você também está assumindo que o Google de fato não está realizando nenhuma validação de dados no servidor. Não há realmente nenhuma maneira de saber o que está acontecendo.
Andy

9

A resposta para a pergunta é que depende dos requisitos. Uma análise, pelo menos superficial, da história do desenvolvimento da "web" indica uma cultura de cowboy em que conversar com as partes interessadas, clientes, levantamento de requisitos é muitas vezes esquecido.

Eu tive a sorte de participar de uma palestra há alguns anos atrás, quando ouvi algo que realmente me chamou atenção: "você escolhe o design para atender aos requisitos, não os requisitos para atender ao design". Portanto, quando se deparar com uma pergunta como essa, você precisa descobrir o que é realmente necessário pelas pessoas que estão pedindo que você construa este software.

Seu trabalho é explicar os prós e os contras de cada abordagem.


1
Obrigado. O que você está dizendo faz sentido. Eu esperava que houvesse uma "bala de prata", uma verdadeira maneira de fazer as coisas. Comecei com uma estrutura da Web Python chamada Django em 2011. Logo depois, houve um grande impulso em direção às estruturas MV * do lado do cliente, como Backbone, Angular, Ember. E, de repente, a maneira de criar aplicativos da Web Rails e Django ficou desatualizada. Mas hoje parece que estamos dando um passo atrás e misturando o lado do cliente com o lado do servidor mais uma vez para obter melhor desempenho.
Avaliado R

Infelizmente, não, não há bala de prata. :). No entanto, o truque é ter compreensão suficiente de como as peças se encaixam para determinar os melhores resultados para a tarefa em questão e também apoiar uma cultura de refatoração implacável, para que você possa sempre mudar as coisas se sua direção inicial não for proveitosa.
precisa saber é o seguinte

1
Isso é bom e quase todas as vezes as duas abordagens são viáveis ​​e, nesse caso, você precisa de algo além do requisito para tomar uma decisão.
Ced

5

Eu acho que um dos pontos principais das abordagens e estruturas mais recentes é que há menos acoplamento entre as tecnologias de front-end e as tecnologias de back-end.

A idéia é que você possa usar qualquer estrutura do cliente e extrair dados e / ou visualizações de qualquer número de fontes, independentemente da estrutura do lado do servidor.

Isso nos permite escolher as melhores ferramentas para realizar o trabalho e nossas escolhas podem evoluir independentemente.

É certo que eu não usei Angular ou Backbone, por isso não posso fazer nenhuma recomendação experiente. Minha pilha base atual consiste no menor servidor mvc ou serviços de descanso que posso encontrar. Principalmente fornecendo modelos e dados. Os dados são renderizados e / ou os dados subsequentes recuperados no lado do cliente usando principalmente apenas javascript, jquery e css.

Eu começo aqui e construo sobre onde eu preciso. Os benefícios dessa abordagem são evidentes quando você pensa em oferecer suporte a várias plataformas de clientes - navegador, celular etc. Se você precisar da renderização específica do cliente, não precisará fazer grandes mudanças no lado do servidor.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.