Minha equipe está desenvolvendo um aplicativo financeiro baseado na WEB e houve uma discussão com um colega sobre como manter os cálculos - puramente no back-end ou também no front-end?
Breve explicação: Estamos usando Java (ZK, Spring) para front-end e Progress 4gl para back-end. Os cálculos que envolvem alguns dados e matemática hardcore do banco de dados são mantidos no back-end, então não estou falando sobre eles. Eu estou falando sobre a situação em que o usuário digita o valor X, é então adicionado ao valor Y (mostrado na tela) e o resultado é mostrado no campo Z. Operações puras e simples com jQuery-ish, quero dizer.
Então, qual seria a melhor prática aqui:
1) Adicione valores com JavaScript que evite ir para o back-end e back-end e depois os valide no back-end "ao salvar"?
2) Mantenha toda a lógica de negócios no mesmo local - portanto, traga os valores para o back-end e faça os cálculos lá?
3) Faça os cálculos no front-end; em seguida, envie os dados para o back-end, valide-os lá, faça os cálculos novamente e somente se os resultados forem válidos e iguais, os exiba para o usuário?
4) Algo mais?
Nota: Fazemos alguma validação básica em Java, mas a maioria ainda está no back-end, como todas as outras lógicas de negócios.
O aumento dos dados que seriam enviados recalculando tudo em um back-end não seria um problema (tamanho XML pequeno; servidores e largura de banda suportariam o aumento da quantidade de operações realizadas pelos usuários).