2008-10-02 6 views
14

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

No sé si a alguien más le interesaría 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 con mis amigos para probarlo fácilmente y si me quedo atascado y necesito ayuda de otra persona en persona.

+0

Usted está eligiendo entre tres opciones: 1. basada en la web (como en una aplicación web) 2. basada en escritorio (una aplicación de escritorio), 3. una aplicación de escritorio que puede sincronizar o conectarse a la nube. ¿Ha considerado la cuarta opción: una aplicación web [que se puede usar sin conexión] (http://en.wikipedia.org/wiki/Cache_manifest_in_HTML5), tal vez incluso [distribuida como una aplicación de escritorio] (http: // blog .neamlabs.com/post/36584972328/2012-11-26-web-app-cross-platform-desktop-distribution)? – Motin

Respuesta

17

por lo general unas cuantas preguntas:

  • ¿Puede incluso hacerse 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á varios usuarios? Esto podría ir de cualquier manera, pero "larga cola" generalmente significa web.
  • ¿Qué tecnología desea utilizar? ¿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 fuera 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.
  • ¿Cuán intensivo en recursos es? ¿10 usuarios matarán el rendimiento de un servidor web?
  • La creación de versiones en el escritorio puede ser un problema, 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.

EDIT:

  • 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.
4

Si publica una aplicación web, no tendrá que volver a portarla. También tendrá acceso a él donde quiera que vaya.

0

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.

-2

Anteriormente habrí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, puede escribir un servicio web con la misma rapidez y facilidad, por lo 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.

4

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.

Habiendo dicho eso, he visto algunas aplicaciones web agradables.

3

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

  • ¿Cuál es su 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?
  • ¿Espera un conjunto bien definido de plataformas cliente, o no puede 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.

1

En algún momento la web puede ser buena y en algún momento no. Estamos en una nueva ola que van en la web, pero no hay que olvidar algunas cosas:

  • interfaz gráfica de usuario en la Web es más complicada debido a múltiples navegadores
  • Las personas que necesitan trabajar en su sistema no les guste trabajar la todo el día en un navegador
  • web puede ser más lenta para algunas aplicaciones (edición de imágenes, el trabajo duro que requiere una gran cantidad de CPU)
  • rápido Gui como Visual Studio para WinForm son más rápidas que para web

Pero la web tiene m cualquier ventaja 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.

3

Diría que la mayoría de las aplicaciones deben basarse en el 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 tu 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 los tiene) 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.

1

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

preguntas
1

Dos importantes no en la lista hasta el momento:

  • ¿La primera versión tiene todas las características que necesitan acceso a nivel de hardware lowish?
  • ¿Las versiones futuras de tienen 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.

Cuestiones relacionadas