¿Hay alguna razón para no hacer que una aplicación web sea solo del lado del cliente?

8

Recientemente comencé a escribir una aplicación de simulación de algoritmos de búsqueda de rutas en python.

Toma entradas del usuario, genera aleatoriamente un gráfico 2D y muestra la simulación a través de la GUI.

Ahora, lo que descubrí fue que Python y las aplicaciones independientes no son muy apropiadas para compartir este tipo de aplicación, ya que necesitas hacer que la gente la ejecute en su propia computadora, etc. Sería mucho más conveniente simplemente dirigir ellos a un sitio web.

Obviamente, los elementos de visualización y control deben escribirse en el lado del cliente.

Pero el algoritmo de búsqueda de ruta real podría escribirse en el lado del cliente o del servidor.

Ahora, dado que no hay necesidad de un backend del lado del servidor (es decir, sin base de datos), sería posible hacer la aplicación web completa en HTML / JavaScript del lado del cliente.

La pregunta es, ¿hay una buena razón para no hacer esto?

A mi modo de ver, hacerlo solo del lado del cliente reduciría en gran medida la complejidad, porque no hay necesidad de manejar la interacción continua entre el cliente y el servidor. Para lo único que sirve el servidor, es para servir inicialmente el Javascript al cliente.

Por otro lado ... tendría que escribir todo en Javascript ...

Además, me atrae la idea de tener un módulo modelo reutilizable. P.ej. Si luego quiero tener una aplicación independiente, solo necesito escribir los módulos de Vista / Control.

Me pregunto cuál sería la práctica generalmente aceptada aquí.

dwjohnston
fuente
2
La práctica generalmente aceptada es adoptar el enfoque que mejor satisfaga los requisitos funcionales y no funcionales de su software. Por ejemplo, si no necesita datos o cálculos del lado del servidor, y todo se puede mantener en el navegador, entonces no solo obtiene la disponibilidad de una plataforma que ya está instalada en la máquina de todos (el navegador), sino que también También obtenga soporte multiplataforma de forma gratuita. En otras noticias, ¿por qué no te gusta Javascript?
Robert Harvey
Los convertidores de Python a JavaScript están disponibles, lo que podría ayudar con la mayor parte del trabajo de traducción.
Andrew Morton
La validación también debe ocurrir en el lado del servidor, especialmente para los sitios orientados al cliente, de lo contrario existe el riesgo de que se pueda omitir.
garryp
¿Hay alguna razón por la que no quieras dejar que cualquiera ejecute la aplicación? Si es así, es necesario autenticar ellos en un servidor, por lo que no se puede% del lado del cliente 100 (pero aún así la mayoría)
MAWG dice Restablecer Mónica
He creado una aplicación web como esta y estoy muy contento con los resultados. Eso sí, mi aplicación web se basó en una API REST proporcionada por un servidor de terceros. También me pregunto por qué no se crean más aplicaciones web de esta manera.
leif81

Respuestas:

8

Usted describió las ventajas de hacer solo el lado del cliente de la aplicación. Aquí hay algunos inconvenientes posibles: si alguno o todos se aplican, considere cambiar a una solución basada en servidor:

  • Actuación. ¿Sería una solución basada en el cliente notablemente más lenta que una basada en el servidor (incluido el tráfico)? Javascript es rápido hoy en día, pero un algoritmo computacionalmente costoso puede requerir hardware dedicado del lado del servidor o granjas HPC.
  • Productividad. Si eres un desarrollador de Python sin experiencia en JS, el tiempo requerido para aprender un nuevo idioma y sus expresiones idiomáticas puede ser prohibitivo, o al menos más largo que la implementación de la lógica cliente / servidor. Además, puede haber bibliotecas Python útiles que podría usar que no están disponibles para JS, lo que aumentaría considerablemente el tiempo de desarrollo.
  • Propiedad intelectual. Si este algoritmo es algo que desea proteger, tener el código disponible en las máquinas cliente podría ser un problema.
  • Compatibilidad. Más código basado en el navegador significa más problemas de compatibilidad del navegador. Esto es mucho más fácil en estos días, pero aún podría ser una preocupación, dependiendo de su audiencia y alcance.

En resumen, el Javascript del lado del cliente es una plataforma perfectamente viable para la computación algorítmica, y puede implementarse fácilmente tanto en un navegador como como una aplicación independiente (utilizando un motor de navegador como Awesomium), pero tiene sus advertencias. Repasarlos para tomar una decisión informada.

Avner Shahar-Kashtan
fuente