user-interface - son - que es mejor aplicaciones ofimáticas de escritorio o que sean online
¿Cuáles son los beneficios y desafíos del desarrollo de aplicaciones web frente a las aplicaciones de escritorio? (14)
Tengo algunos problemas con los administradores, porque creen que crear aplicaciones de escritorio (de manera intuitiva) es más fácil que crear aplicaciones web (porque tiene menos restricciones). Pero en mi opinión, es más difícil debido a algunas razones:
- La literatura para aplicaciones de escritorio es mucho más pequeña que para aplicaciones web
- Codificar paneles y botones es más difícil que usar un enfoque declarativo (HTML)
- La naturaleza sin estado de http lo obliga a repensar en forma de solicitud / respuesta
Estoy buscando un razonamiento sólido en GUI vs. aplicaciones de escritorio. Creo firmemente que el escritorio es más difícil de desarrollar debido a mi experiencia con algunos juegos de herramientas, pero si a alguien le importa responder de otra manera, no dude en fundamentar su razonamiento.
Edición : recuperé mi pregunta original, ya que alguien la editó y perdió el contenido original. Si alguien elige editar la pregunta, publique un comentario significativo para que al menos pueda saber por qué se cambió una parte.
Ambos tipos de aplicaciones tienen ventajas y desventajas. por ejemplo, las aplicaciones web pueden necesitar considerar diferentes navegadores y obtener una UI utilizable es más difícil en la web que en los formularios de Windows. Sin embargo, las aplicaciones web también tienen algunas ventajas. el primero que me viene a la mente es la implementación y no hay que preocuparse por las diferentes plataformas (solo los diferentes navegadores; sí, es más difícil de desarrollar para plataformas diferentes que para los diferentes navegadores).
Con las aplicaciones de escritorio, no tiene que lidiar con problemas como el estado de la aplicación de la misma manera que lo hace en la web. HTTP es un protocolo sin estado, por lo que es tarea del desarrollador identificar cómo mantener el estado actual de la aplicación para la sesión del usuario. Un escritorio puede usar TCP / IP y mantener una conexión a un servidor.
Con la web, es muy fácil crear una interfaz de usuario atractiva, ya que puede agregar animaciones con Javascript, Flash, etc. Es más trabajo para el desarrollador cuando la aplicación está centrada en los datos, y el estado de la aplicación es un problema.
Creo que cada uno tiene sus propias complicaciones masivas que los hacen desafíos únicos y obtendrás una respuesta diferente según a quién le preguntes. Los programadores web pueden pensar que las aplicaciones de escritorio son más difíciles que los proyectos web simplemente porque no están familiarizados con el medio.
La gente de escritorio puede encontrar que las aplicaciones web son mucho más difíciles de codificar porque tienen que tener en cuenta muchos más problemas de diseño con CSS y comunicación mediante los protocolos AJAX.
Dudo mucho que los programadores web necesiten conocer el winapi. Digo que la programación de GUI toma más tiempo para aprender.
El desarrollo web es más difícil en mi experiencia, no tienes el lujo de mantener el estado fácilmente; además, tiene que lidiar con los problemas de formato (css es excelente pero es difícil de dominar).
En mi humilde opinión, el desarrollo web es más estresante ... debe luchar con el incumplimiento de Internet Explorer del estándar, la conexión lenta, el comportamiento extraño de CSS, la vulnerabilidad del navegador.
Hay bastantes diferencias entre los dos que crean desafíos o beneficios. Para aplicaciones web:
- Estado : las solicitudes HTTP no tienen estado y deben gestionarse pasando las variables de sesión a través de todas las solicitudes o cookies. Esto es una sobrecarga en las aplicaciones web y ASP.NET a menudo es objeto de críticas por enormes cantidades de datos de sesión.
- Centralizado : enviar un cambio a una aplicación web es tan fácil como actualizar los bits en el servidor en lugar de las aplicaciones de escritorio, donde los parches deben extenderse a todos los usuarios. La naturaleza centralizada también hace que sea más fácil hacer análisis y demás. Esta es una gran conveniencia. Recuerdo que GMail en un punto reparó un agujero de seguridad en menos de 4 horas. En contraste, todavía hay un montón de máquinas de Windows sin parchear vulnerables.
- Arquitectónico : servidor gordo, los clientes ligeros hacen que la plataforma de aplicaciones web sea independiente. También ayuda en la gestión del equilibrio ... por ejemplo, la clasificación de tablas, la comprobación de errores, los cálculos matemáticos o los gráficos (en el caso de flash, por ejemplo) se pueden realizar tanto en el cliente como en el servidor, dependiendo de la asignación de recursos. Debido al thin client, esto significa que es posible revisar completamente el servidor sin afectar al cliente en absoluto. Este nivel de flexibilidad es realmente conveniente.
- Seguridad : las aplicaciones de escritorio se ejecutan en un entorno de confianza en el que pueden hacer cualquier cosa en la que las aplicaciones web se ejecutan en un entorno de caja de arena que las hace inherentemente más seguras para el cliente. Sin embargo, las aplicaciones web requieren cierta cantidad de configuración, ya que se refiere a certificados, controles ActiveX, etc.
- Control de versiones : el costo del control de versiones es mucho mayor para las aplicaciones de escritorio. Esto se remonta al proceso más tedioso de impulsar cambios. Y, de nuevo, saltar los números de versión principales significa un aumento de los ingresos por medio de las actualizaciones del usuario. En aplicaciones web, las versiones son principalmente para los desarrolladores y es mucho más fácil hacer pequeñas mejoras iterativas. Esa es la razón por la que las aplicaciones de escritorio todavía se adhieren al ciclo de desarrollo en cascada porque empujar los cambios es costoso y debe obtenerlos la primera vez. Las aplicaciones de escritorio también tienen el costo de la compatibilidad con versiones anteriores, como la compatibilidad con Windows 98, XP y Vista o la compatibilidad con procesadores antiguos, controladores, etc.
- Entorno : las aplicaciones web se ejecutan en un entorno predecible que, a su vez, es muy conveniente. Existen problemas de desarrollo en varios navegadores entre IE / FF / Opera, etc. pero es mucho más fácil de probar y depurar que ejecutar una aplicación compleja en un sistema de escritorio con diferentes procesadores gráficos, software antivirus o compilaciones.
- Capacidad de respuesta : las aplicaciones web tienen una capacidad de respuesta más lenta debido a los comentarios posteriores, pero AJAX ha hecho esto mucho más fácil y divertido.
Estoy seguro de que hay muchos otros puntos que faltan, pero esa es mi respuesta sesgada para el desarrollo de aplicaciones web.
La mayoría de las respuestas (hasta ahora, de todos modos) parecen enfocarse en qué tan fácil o difícil será la elección de implementar. El objetivo general de una aplicación, de escritorio o basada en la web, es servir al usuario final. Ese debe ser el punto de partida de la discusión.
Las aplicaciones web simplemente no pueden proporcionar una experiencia tan rica e interactiva como una aplicación de escritorio en la mayoría de los casos. Hay demasiadas limitaciones debido a los widgets disponibles, la latencia de la red, el hecho de que la ventana de su aplicación debe (normalmente) vivir dentro de otra aplicación y así sucesivamente.
Dicho esto, muchas veces las interfaces no necesitan un gran conjunto de widgets, la latencia de la red no es un gran problema, y ejecutar desde una ventana del navegador es una ventaja. gmail y el desbordamiento de pila son ejemplos principales de aplicaciones basadas en web que no necesitan una interfaz particularmente rica.
Por lo tanto, cuando intente decidir qué tecnología utilizar primero, considere al usuario. ¿Necesitan una UI rica y de alto rendimiento? ¿Deben poder compartir sin esfuerzo sus datos con otros a través de la red? ¿Es esta una aplicación que usarán ocho horas al día o de manera ocasional? ¿Lo utilizarán principalmente para editar archivos locales o para colaborar con personas a través de una red?
Para aquellos que dicen "las aplicaciones web siempre son mejores", permítame hacerle esta pregunta: piense en las herramientas que usa todos los días. Su editor de texto, IDE de programación, su navegador, su cliente de correo electrónico. ¿Cuáles de esas son aplicaciones web? Probablemente ninguno, excepto tal vez su cliente de correo electrónico. Hay una razón por la que no querría un IDE basado en web para escribir software (o escribir un libro o realizar una manipulación seria de la imagen).
Todo se reduce al usuario y cuáles son sus objetivos. A veces, sus necesidades se satisfacen mejor con una interfaz de usuario basada en web, a veces con una interfaz de usuario de escritorio. A veces cualquiera de las dos hará. Por supuesto, también debe sopesar opciones como distribución y actualización, disponibilidad multiplataforma, etc., pero todo comienza con el usuario y sus objetivos. Si está enfocado en satisfacer a su usuario final, la respuesta probablemente será bastante obvia.
La mayoría de las veces, el desarrollo de aplicaciones web es mucho más fácil y hace que uno de los grandes problemas: la implementación y el despliegue de nuevas versiones, desaparezca.
No tiene que lidiar con diferentes versiones de sistemas operativos, bibliotecas instaladas, registro, COM, etc. Tiene que lidiar con diferentes navegadores, pero es mucho menos que una oferta.
No me imagino implementando una aplicación de escritorio para 2-3 millones de clientes cada mes, algo que funciona bien con los sitios web.
En cuanto a desarrollo va con desarrollo web tienes:
- caminos de ejecución más cortos
- menos estado para gestionar
- Apenas tienes que lidiar con el paralelismo
- mucho menos o ninguno de los recursos para administrar - no maneja el sistema operativo
La única desventaja es que generalmente se necesita más para configurar la máquina de desarrollo y la depuración de las aplicaciones web fue más difícil. Con el estado actual de las herramientas, la depuración ya no es un gran problema.
Así que siempre prefiero la aplicación web si es posible.
Las aplicaciones de escritorio son el camino a seguir. La tecnología web actual (HTML, Javascript, HTTP, ...) nunca se diseñó teniendo en cuenta las aplicaciones. Fue diseñado para documentos. Y sientes que con cada línea de código que escribes.
Reconozco que la web es más difícil, tiene que preocuparse por el estado, la red y prestar más atención a cosas como la carga, la seguridad de la lista continúa. ¿Qué hay de la pesadilla que es la compatibilidad del navegador, AJax, CSS arrghhh.
OTOH Debido a que el escritorio tiene menos límites, quizás el diseño sea un poco más difícil ya que tiene más capacidades, aunque no estoy de acuerdo con eso.
Tengo la oportunidad de trabajar en mi trabajo diario y honestamente puedo decir que la única razón válida para desarrollar una aplicación de escritorio es porque el usuario no se conectará en todo momento.
La distribución / mantenimiento de una aplicación de escritorio tiene problemas que siempre dependen del usuario, mientras que una aplicación web se puede depurar sin la participación del usuario. Esto nunca debe minimizarse, ya que puede llevar una cantidad excesiva de tiempo depurar un defecto que un usuario en Idaho tiene y que ningún otro usuario tiene.
El desarrollo en los dos toma una mentalidad diferente. La web es sin estado por naturaleza y el escritorio es de estado completo. Cuando cambio entre los dos, a menudo me siento frustrado porque me acostumbro a uno, luego intento el mismo patrón / técnica en el otro y falla.
En última instancia, depende del problema que intenta resolver. Si no puede soportar un servidor web, sus opciones son limitadas. Si desea que los usuarios lo usen en las artimañas de West Virginia, entonces tiene pocas opciones.
Más información en la pregunta ayudaría, ya que esta pregunta es casi demasiado amplia para cubrirla.
Todo depende:
- ¿Cuál es tu experiencia de desarrollador?
- ¿Qué tipo de aplicación necesitas hacer?
Y también, ¿a qué llamas aplicaciones web? Las aplicaciones Silverlight o Flash se pueden hacer de tal manera que se pueda usar desde el escritorio o desde el navegador. Las aplicaciones Ajax hoy no son muy diferentes de las aplicaciones de escritorio, pero es mucho más difícil desarrollar algo que no sea demasiado simple con DHTML (incluso si está tomando marcos como jQuery o incluso GWT).
Asumiendo HTML o DHTML como aplicaciones web:
He pasado muchos años trabajando en desarrollo web / ajax y de escritorio, y mi experiencia es igual: he hecho un montón de aplicaciones web complejas y de escritorio. Teniendo un buen conjunto de herramientas y herramientas para C # y suficiente experiencia, puedo crear una mejor aplicación de escritorio que la web dentro del mismo período de tiempo o más corto. Pero algún tipo de aplicaciones NO se puede hacer como escritorio porque es un requisito para hacerlas como aplicaciones web.
Razones por las que el desarrollo de escritorio es más simple:
- Tipo de idioma de seguridad, sugerencias de código
- Rendimiento del código x10-1000 + perfiladores de rendimiento
- No hay necesidad de revisar todo en todos los navegadores.
- Excepciones informativas con stack-trace, editar y continuar.
- Posibilidad de usar subprocesos múltiples (si sabes cómo usarlo)
- Previsibilidad general y estabilidad del código
- Herramientas RAD
Durante mucho tiempo varias ventajas de las aplicaciones web fueron:
- Marco GUI - HTML + CSS
- Es más fácil para los usuarios comenzar a usarlo.
- El contenido de las aplicaciones puede ser encontrado por los motores de búsqueda.
Ahora todos tenemos marcos de GUI sólidos como XAML para aplicaciones WPF / Silverlight. El segundo punto puede ser cubierto por las aplicaciones Silverlight / Flash (que estoy tratando como las de escritorio). El tercero puede hacerse para RIA, pero requiere un poco de esfuerzo (lo mismo se aplica a las aplicaciones ajax).
Si está apuntando a algo simple y no conoce las herramientas y técnicas modernas de desarrollo de escritorio / ria, podría ser otra buena razón para desarrollar una aplicación web. Pero como he dicho, espero que sea algo simple.
Wow, estoy sorprendido por las respuestas hasta ahora. He hecho tanto, escritorio en el pasado y casi toda la web ahora. El desarrollo web me parece mucho más fácil de desarrollar, mucho más fácil de soportar y mucho más fácil de implementar y desplegar.
Nunca elegiría desarrollar algo en el escritorio si hubiera alguna posibilidad de hacerlo en la web.