with tutorial programs made framework based apps app user-interface desktop-application web-applications

user interface - tutorial - ¿Cómo se decide si un proyecto debe estar basado en la web o en el escritorio?



electron js tutorial (10)

Anteriormente habías escrito una aplicación de escritorio, ya que la herramienta era mejor para eso y la habrías escrito más rápido. La gente solía querer aplicaciones web, pero siempre terminaba con el escritorio.

Hoy en día las cosas son diferentes, puedes escribir un servicio web igual de rápido y fácil, así que no hay razón para no ir a la web.

Las ventajas de la web son la flexibilidad, la escalabilidad y la facilidad de implementación. No será tan receptivo como podría ser una aplicación de escritorio, pero eso no es tan problemático si piensas en tu diseño.

Tengo problemas para decidir si quiero que un proyecto mío esté basado en la web (como en una aplicación web), en una computadora de escritorio (una aplicación de escritorio) o en una aplicación de escritorio que se puede sincronizar o conectar a la nube.

No sé si alguien más estaría interesado en esta aplicación, y solo me corresponderá, así que me inclino por la aplicación de escritorio. Si, por alguna razón, lo termino, lo libero, y a la gente realmente le gusta, podría ver cómo se sincroniza con la nube también (piense en v2). Pero no estoy seguro de lo difícil que es hacer un cambio tan radical, y no quiero terminar con algo bueno que sea inútil porque hice una mala elección incluso antes de comenzar el proyecto.

¿Hay algún tipo de orientación para esto? ¿Alguna regla general o mejores prácticas? ¿Alguna experiencia personal?

Si el idioma importa, estoy pensando en Java simplemente porque me siento más cómodo con él, y me permitiría compartirlo fácilmente con mis amigos para realizar pruebas y si me quedo atascado y necesito ayuda de otra persona en persona.


Baso mi elección en la GUI principalmente. Si la GUI va a ser compleja, y (necesita ser rápida o tendrá aspectos que llevará mucho tiempo procesar), iré con el Escritorio. Si es simple, y siempre tendrá pequeños conjuntos de datos para trabajar a la vez, iré con la Web.

He trabajado en una aplicación que se hizo como una aplicación web, cuando claramente era más adecuada para el escritorio. Fue un fracaso masivo. No sé cómo los clientes lo soportan, porque ciertamente no lo hubiera usado. La versión de escritorio (que tardó más de 6 meses en volver a escribirse) hizo volar la versión web fuera del agua.

Dicho esto, he visto algunas aplicaciones web agradables.


Dos preguntas importantes que no están en la lista hasta el momento:

  • ¿La primera versión tendrá características que necesiten un acceso de bajo nivel al hardware?
  • ¿Las futuras versiones tendrán alguna característica que requiera un acceso de bajo nivel al hardware?

Es bastante fácil responder al primero, pero pensar en el segundo puede ahorrarle algunos dolores de cabeza en el futuro.


En algún momento, la web puede ser buena y, a veces, no. Estamos en una nueva ola que entra en la web pero no olvidemos algunas cosas:

  • GUI en la web es más complicado debido a múltiples navegadores
  • A las personas que necesitan trabajar en su sistema no les gustaría trabajar todo el día en un navegador
  • La Web puede ser más lenta para algunas aplicaciones (edición de imágenes, trabajos difíciles que requieren mucha CPU)
  • Rapid Gui como Visual Studio para winform son más rápidos que para web

Pero la web tiene muchas ventajas en la implementación y en la portabilidad. Si su sistema está bien estructurado, puede hacer las dos cosas o cambiar de una a otra más tarde con algo creado con MVC. Solo cambia tu visual y estarás bien.


Generalmente hago algunas preguntas:

  • ¿Se puede incluso hacer en la web? Algo que no hace mucho tiempo involucraba un componente de edición de imágenes, y tenía que ser una aplicación web. Implicaba mucho esfuerzo conseguir este trabajo, y una aplicación de escritorio habría sido una mejor manera de hacerlo.
  • ¿Tendré que acceder desde cualquier lugar? Sí, podrías cargarlo en una memoria USB, pero la web es mucho más factible en este caso.
  • ¿Habrá múltiples usuarios? Esto podría ir de cualquier manera, pero "larga cola" generalmente significa web.
  • ¿Qué tecnología quieres usar? ¿La UI más reciente y mejor basada en WPF? Escritorio (sí, sí, luz plateada, no vayamos allí, ¿de acuerdo?). La muerte del cerebro estúpida gestión de usuario fácil de Django u otros? Web.
  • Si se tratara de una aplicación web, ¿tendrá que preocuparse por vectores de ataque comunes como SQL Injection, XSS, etc.? Una aplicación de escritorio también tiene sus propios problemas, pero tienden a tener menos exposición.
  • ¿Qué tan intensivo en recursos es? ¿10 usuarios matarán el rendimiento de un servidor web?
  • El control de versiones en el escritorio puede ser complicado, mientras que con una aplicación web, todos están en la misma versión. Sin embargo, esto puede morderte, ver el retroceso del nuevo usuario de Facebook.

EDITAR:

  • El costo puede ser un factor también. Una aplicación web con un backend de base de datos generalmente significa un servidor web. Si desea seguir con, por ejemplo, la pila de Microsoft, necesitará licencias para SQL Server que pueden ser costosas. El código abierto es más económico, pero puede no ser una opción en todos los casos. "Servir" una aplicación de escritorio generalmente es más económico.

Mi opción predeterminada es ir con una solución web, ya que es más fácil de implementar y generalmente multiplataforma. La única vez que voy con aplicaciones de winforms es cuando hay problemas urgentes de seguridad, rendimiento o funcionalidad que lo requieren.


Si publicas como una aplicación web, no tendrás que volver a portarlo. También tendrá acceso a él donde quiera que vaya.


Si se tratara de una aplicación para utilizar con múltiples usuarios, con datos compartidos, probablemente quieras un servidor de todos modos. En ese caso, me inclinaría hacia una aplicación web. De lo contrario, tienes la complejidad de sincronizar datos entre el escritorio y un servidor.


Todo lo que puedo sugerir son varios factores que serían relevantes. Cómo determina la respuesta y el peso del factor depende de usted y de otras circunstancias:

  • ¿Cuál es tu audiencia? ¿Tienes algún control sobre ellos?
  • ¿Cuán complejas son las interacciones que espera implementar?
  • ¿Necesita actualizaciones de datos casi en tiempo real?
  • ¿Con qué frecuencia espera actualizar la aplicación después de la primera versión?
  • ¿Esperas un conjunto bien definido de plataformas de clientes, o no puedes predecir eso?

Tenga en cuenta que sus opciones también pueden incluir una aplicación Java WebStart, que mitiga algunas de las desventajas de una aplicación de escritorio típica.


Yo diría que la mayoría de las aplicaciones deberían estar basadas en computadoras de escritorio. Las ventajas son aplicaciones más rápidas y más fluidas.

Solo debe crear una aplicación web si obtiene beneficios obvios, como el acceso desde cualquier lugar. (Si eso es necesario para su aplicación)

Una desventaja de las aplicaciones web también puede ser que depende del desarrollador; si deja de brindar soporte, todos sus usuarios (si es que tiene alguno) ya no podrán usarlo. Además, existe la posibilidad de que los usuarios no estén dispuestos a almacenar sus datos en línea.

En última instancia, depende del tipo de aplicación que desee escribir. Incluso si lo crea como una aplicación de escritorio, luego puede volver a escribirlo para la web. A menudo, una versión 2.0 del software necesita una reescritura casi completa de todos modos.