Existe algum motivo para não fazer um aplicativo da web ser apenas do lado do cliente?

8

Recentemente, comecei a escrever um aplicativo de simulação de algoritmo de localização de caminhos em python.

Ele pega as entradas do usuário, gera aleatoriamente um gráfico 2D e mostra a simulação via GUI.

Agora, o que descobri foi que Python e aplicativos independentes não são muito apropriados para compartilhar esse tipo de aplicativo, pois você precisa que as pessoas o executem em seu próprio computador etc. Seria muito mais conveniente simplesmente direcionar para um site.

Obviamente, os elementos de exibição e controle precisam ser gravados no lado do cliente.

Mas o algoritmo de localização de caminho real pode ser escrito no lado do cliente ou do servidor.

Agora, como não há necessidade de um back-end do lado do servidor (ou seja, sem banco de dados), seria possível fazer o webapp inteiro no HTML / JavaScript do cliente.

A questão é: existe uma boa razão para não fazer isso?

Na minha opinião, fazê-lo apenas no lado do cliente reduziria bastante a complexidade, porque não há necessidade de lidar com a interação contínua entre o cliente e o servidor. A única coisa para a qual o servidor se destina é servir inicialmente o Javascript ao cliente.

Por outro lado ... eu teria que escrever a coisa toda em Javascript ...

Além disso, a idéia de ter um módulo de modelo reutilizável me atrai. Por exemplo. Se pretender mais tarde ter uma aplicação autónoma, só preciso escrever os módulos Ver / Controlo.

Estou imaginando o que geralmente seria a prática aceita aqui.

Dwjohnston
fonte
2
A prática geralmente aceita é adotar a abordagem que melhor atenda aos requisitos funcionais e não funcionais do seu software. Por exemplo, se você não precisa de dados ou cálculos no servidor, e a coisa toda pode ser mantida no navegador, você não apenas obtém a disponibilidade de uma plataforma que já está instalada na máquina de todos (o navegador), mas também também obtenha suporte multiplataforma gratuitamente. Em outras notícias, por que você não gosta de Javascript?
Robert Harvey
Conversores Python para JavaScript estão disponíveis, o que pode ajudar com a maior parte do trabalho de tradução.
Andrew Morton
A validação também deve ocorrer no lado do servidor, especialmente em sites voltados para o cliente, caso contrário, existe o risco de ser contornado.
garryp
Existe algum motivo para você não querer permitir que alguém execute o aplicativo? Em caso afirmativo, você precisa autenticá-los em um servidor, para que não possa ser 100% do lado do cliente (mas na maioria das vezes)
Mawg diz que restabelece Monica em
Criei um aplicativo da web como esse e estou muito feliz com os resultados. Lembre-se, meu aplicativo da Web contava com uma API REST fornecida por um servidor de terceiros. Também me pergunto por que mais aplicativos da web não são criados dessa maneira.
precisa

Respostas:

8

Você descreveu os profissionais de fazer apenas o lado do cliente do aplicativo. Aqui estão alguns contras possíveis - se algum ou todos eles se aplicarem, considere mudar para uma solução baseada em servidor:

  • Atuação. Uma solução baseada em cliente seria visivelmente mais lenta que uma solução baseada em servidor (incluindo tráfego)? Atualmente, o Javascript é rápido, mas um algoritmo computacionalmente caro pode exigir hardware dedicado do servidor ou farms de HPC.
  • Produtividade. Se você é um desenvolvedor Python sem experiência em JS, o tempo necessário para aprender um novo idioma e seus idiomas pode ser proibitivo ou pelo menos mais longo do que implementar a lógica cliente / servidor. Além disso, pode haver bibliotecas Python úteis que você poderia usar e indisponíveis para JS, o que aumentaria consideravelmente o tempo de desenvolvimento.
  • Propriedade intelectual. Se esse algoritmo é algo que você deseja proteger, ter o código disponível nas máquinas clientes pode ser um problema.
  • Compatibilidade. Mais código baseado no navegador significa mais problemas de compatibilidade do navegador. Hoje em dia, isso é muito mais fácil, mas ainda pode ser uma preocupação, dependendo do seu público-alvo e alcance.

Em resumo, o Javascript do cliente é uma plataforma perfeitamente viável para computação algorítmica e pode ser facilmente implantado tanto em um navegador quanto em um aplicativo independente (usando um mecanismo de navegador como o Awesomium), mas tem suas ressalvas. Revise-os para fazer uma escolha informada.

Avner Shahar-Kashtan
fonte