Mi equipo está desarrollando una aplicación de finanzas basada en la WEB y hubo una pequeña discusión con un colega sobre dónde guardar los cálculos, ¿solo en el back-end o también en el front-end?
Breve explicación: Estamos utilizando Java (ZK, Spring) para front-end y Progress 4gl para back-end. Los cálculos que involucran datos matemáticos y datos de la base de datos se mantienen en el back-end, por lo que no estoy hablando de ellos. Estoy hablando de la situación en la que el usuario ingresa el valor X, luego se agrega al valor Y (se muestra en la pantalla) y el resultado se muestra en el campo Z. Quiero decir, operaciones jQuery-ish puras y simples.
Entonces, ¿cuál sería la mejor práctica aquí:
1) ¿Agregar valores con JavaScript que ahorra al ir al back-end y al back y luego validarlos en el back-end "al guardar"?
2) Mantenga toda la lógica de negocios en el mismo lugar, ¿por lo tanto, lleve los valores al back-end y haga los cálculos allí?
3) Haz los cálculos en el front-end; luego enviar datos al back-end, validarlos allí, hacer los cálculos nuevamente y solo si los resultados son válidos e iguales, ¿mostrarlos al usuario?
4) ¿Algo más?
Nota: Hacemos una validación básica en Java, pero la mayor parte todavía está en el back-end como toda la otra lógica de negocios.
El aumento de los datos que se enviarían recalculando todo en un back-end no sería un problema (tamaño XML pequeño; los servidores y el ancho de banda soportarían la mayor cantidad de operaciones realizadas por los usuarios).