2009-04-25 15 views
17

Tengo algunos problemas con los gerentes, porque creen que (intuitivamente) crear aplicaciones de escritorio es más fácil que crear aplicaciones web (porque tienes menos restricciones). Pero en mi opinión, es más difícil debido a algunas razones:¿Cuáles son los beneficios y desafíos de desarrollar aplicaciones web frente a aplicaciones de escritorio?

  • la literatura para aplicaciones de escritorio es mucho menor que para las aplicaciones web
  • paneles de codificación y botones es más duro que el uso de un enfoque declarativo (HTML)
  • La naturaleza sin estado de las fuerzas de http a repensar de manera solicitud/respuesta

Busco un razonamiento sólido en la interfaz gráfica de usuario frente a las aplicaciones de escritorio. Creo firmemente que las computadoras de escritorio son más difíciles de desarrollar debido a mi experiencia con algunos juegos de herramientas, pero si alguien se preocupa por responder de otra manera, siéntase libre de fundamentar su razonamiento.


Editar: Recuperé mi pregunta original, ya que alguien lo editó y se pierde el contenido original. Si alguien decide editar la pregunta, publique un comentario significativo para que al menos sepa por qué se cambió una parte.

+0

Me encanta cómo la gente piensa que está bien publicar preguntas subjetivas siempre que lo etiqueten como "subjetivo" y digan "Sé que esto es subjetivo pero ..." Personas, por favor, lean http://stackoverflow.com/faq –

+6

Voté por reabrir, pero luego debería convertirse en una wiki de la comunidad. –

+0

Sí, aparentemente leen el tema y no su segunda oración (o el resto de la pregunta para el caso). Yo votaría para volver a abrir si pudiera. Sin embargo, podría ayudar a su caso reformulando la pregunta como "cuáles son los beneficios y desafíos de desarrollar aplicaciones web frente a aplicaciones de escritorio" en lugar de poner aparentemente a los desarrolladores de cada uno contra el otro. :) –

Respuesta

7

La mayor parte del tiempo el desarrollo de aplicaciones web es mucho más fácil y hace desaparecer uno de los grandes problemas: implementación y lanzamiento de nuevas versiones.

No tiene que ocuparse de diferentes versiones del sistema de operación, bibliotecas instaladas, registro, COM, etc. Tiene diferentes navegadores para tratar, pero es mucho menos importante.

No puedo imaginar la implementación de la aplicación de escritorio entre 2 y 3 millones de clientes cada mes, algo que funciona bien en los sitios web.

Por lo que el desarrollo va con el desarrollo web tiene:

  • más corta rutas de ejecución
  • menos Estado para gestionar
  • que casi no tiene que tratar con el paralelismo mismo
  • mucho menos o nada recursos para administrar: ningún sistema operativo se encarga de

La única desventaja es que generalmente lleva más tiempo s La máquina de desarrollo de etup y la depuración de aplicaciones web era más difícil. Con el estado actual de las herramientas, la depuración ya no es un gran problema.

Por lo tanto, siempre prefiero la aplicación web si es posible.

+0

Dado el entorno de desarrollo de escritorio correcto, tampoco tiene que preocuparse por la implementación. Tampoco tengo que preocuparme por el registro, el COM o las bibliotecas instaladas. Por ejemplo, al usar Tcl/Tk, es posible crear un solo archivo que tenga todas las bibliotecas, iconos y códigos necesarios para su ejecución. No solo eso, sino que la misma base de código puede apuntar trivialmente a Windows, Mac y * nix. Acepto, sin embargo, que implementar una aplicación de escritorio para 2-3 millones de clientes cada mes es difícil. Aunque la gente de Firefox parece manejarse muy bien. –

+2

También quiero agregar a su lista de desventajas que normalmente proporcionará al usuario final una experiencia menos satisfactoria. Hay muy, muy pocas aplicaciones web que puedan competir con las aplicaciones de escritorio para una usabilidad general. –

+0

No estoy seguro de qué se entiende por "rutas de ejecución más cortas". Sin embargo, ¿cómo tienes menos estado para administrar? ¿Es porque HTTP es sin estado? Ok, ve a compilar aplicaciones complejas sin estado (web o escritorio) y mira qué tan lejos estás. En lo que respecta al paralelismo ... ¿qué quieres decir? Realmente no obtienes nada, a menos que te refieras a una granja web o algo así. Todos esos núcleos de CPU y memoria en la máquina del cliente son inútiles para usted en una aplicación web. Aún tiene recursos para administrar, pero no los recursos del cliente (posiblemente considerables). – BobbyShaftoe

4

Creo que la web es más difícil, tienes que preocuparte por el estado, la red y prestar más atención a cosas como la carga, la seguridad sigue la lista. ¿Qué hay de la pesadilla que es la compatibilidad del navegador, AJax, CSS arrghhh.

OTOH Debido a que el escritorio tiene menos límites, tal vez el diseño sea un poco más difícil ya que tiene más capacidades, aunque no estoy de acuerdo con eso.

+0

Como desarrollador web, diría que los escritorios son más difíciles debido principalmente a la falta de familiaridad con cosas de nivel inferior como COM y otras API de Windows. – TheTXI

2

Creo que cada uno tiene sus propias complicaciones masivas que los convierten en desafíos únicos y obtendrá una respuesta diferente en función de a quién le pregunte. Los programadores web pueden pensar que las aplicaciones de escritorio son más difíciles que los proyectos web simplemente debido a la falta de familiaridad 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 la comunicación mediante protocolos AJAX.

2

Dudo mucho que los programadores web necesiten conocer el winapi.Digo que la programación de la GUI toma más tiempo para ser aprendida.

+0

El .Net Fx difumina la línea un poco con respecto a los winapi. –

+0

La mayoría de los programadores de GUI que haría, no requerirían aprender el WINAPI. Parece que crear aplicaciones de aspecto profesional es menos complicado en una aplicación cliente si aún no eres un asistente en CSS/Photoshop/etc. Además, no tiene que preocuparse por las versiones de los navegadores y, en cuanto a la versión del sistema operativo, puede explicar eso más fácilmente que las guerras estándar en el cumplimiento del estándar del navegador. – BobbyShaftoe

2

Desarrollo web es Más difícil en mi experiencia, no puede permitirse el lujo de mantener el estado fácilmente; Además, tiene que lidiar con los problemas de formato (css es genial, pero es difícil de dominar).

9

En mi humilde opinión, el desarrollo web en mi humilde opinión es más estresante ... debes luchar contra el incumplimiento de Internet Explorer con el estándar, conexión lenta, comportamiento CSS extraño, exploit exploit.

+0

Sube tu candidatura porque la votación negativa no tiene sentido. –

+0

Gracias, me olvidé de los problemas de CSS. –

1

Con las aplicaciones de escritorio no tiene que tratar 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 el trabajo del desarrollador es identificar cómo mantener el estado actual de la aplicación para la sesión del usuario. Una computadora de escritorio puede usar TCP/IP y mantener una conexión con un servidor.

Con la web, es muy fácil crear una interfaz de usuario convincente, ya que puede agregar animaciones con Javascript, Flash, etc. Es más útil para el desarrollador cuando la aplicación está centrada en datos, y el estado de la aplicación es problema.

2

Trabajo en mi trabajo diario y puedo decir honestamente que el único motivo válido para desarrollar una aplicación de escritorio es que el usuario no va a estar conectado en todo momento.

Distribuir/mantener 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 tomar una cantidad excesiva de tiempo para depurar un defecto que tiene un usuario en Idaho que no tiene ningún otro usuario.

El desarrollo en los dos toma una mentalidad diferente. La web es sin estado por naturaleza y el escritorio es completo. Al cambiar entre los dos, a menudo me siento frustrado porque me acostumbro a uno y luego pruebo el mismo patrón/técnica en el otro y falla.

En última instancia, depende del problema que está tratando de resolver. Si no puede soportar un servidor web, entonces sus opciones son limitadas. Si desea que los usuarios lo usen de la manera en que lo hizo West Virginia, entonces tiene pocas opciones.

Más información en la pregunta ayudaría ya que esta pregunta es demasiado amplia para abarcarla.

2

Guau, estoy sorprendido de las respuestas hasta ahora. He hecho ambas cosas, el escritorio en el pasado y casi toda la web ahora. Encuentro que el desarrollo web es 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.

2

Las aplicaciones de escritorio son el camino a seguir. La tecnología web actual (HTML, Javascript, HTTP, ...) nunca fue diseñada con aplicaciones en mente. Fue diseñado para documentos. Y sientes que con cada línea de código que escribes.

+0

A la larga, creo que el mundo va a terminar en algún lugar entre los dos. – ine

0

Ambos tipos de aplicaciones tienen ventajas y desventajas. por ejemplo, las aplicaciones web deberían tener en cuenta 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 se le viene a la mente es la implementación y no hay necesidad de preocuparse por las diferentes plataformas (solo diferentes navegadores, sí, es más difícil de desarrollar para diferentes plataformas que para diferentes navegadores).

+0

re: "sí, es más difícil de desarrollar para diferentes plataformas". Eso no es absoluto. Si eliges el idioma correcto, es posible escribir en una plataforma y se ejecuta en las otras con poca o ninguna modificación (y no estoy pensando solo en Java). Con bastante frecuencia, se requieren tantos ajustes (o tan pocos) ajustes como para que una aplicación web funcione en varios navegadores. –

18

La mayoría de las respuestas (hasta ahora, de todos modos) parecen enfocarse en cuán fácil o difícil será la implementació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. Existen demasiadas limitaciones debido a los widgets disponibles, la latencia de la red, el hecho de que la ventana de la aplicación debe (por lo general) residir 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 ​​ejecutarla desde una ventana del navegador es una ventaja. El desbordamiento de pila y gmail son ejemplos principales de aplicaciones basadas en web que no necesitan una interfaz particularmente rica.

Por lo tanto, cuando intente decidir qué tecnología usar primero, considere al usuario. ¿Necesitan una interfaz de usuario rica y de alto rendimiento? ¿Deben poder compartir sus datos sin esfuerzo con otros a través de la red? ¿Es esta una aplicación que usarán ocho horas al día o de forma ocasional? ¿Lo usarán principalmente para editar archivos locales o para colaborar con personas en una red?

Para aquellos que dicen "las aplicaciones web siempre son mejores", déjame hacerte esta pregunta: piensa en las herramientas que usas todos los días. Su editor de texto, programación IDE, 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 cual no desearía un IDE basado en web para escribir software (o escribir un libro, o realizar una manipulación grave de imágenes).

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 la web, a veces con una interfaz de usuario de escritorio. Algunas veces cualquiera lo hará. Por supuesto, también necesita sopesar opciones tales como distribución y actualización, disponibilidad multiplataforma, etc., pero todo comienza con el usuario y sus objetivos. Si te centras en satisfacer a tu usuario final, la respuesta será bastante obvia.

+0

Proporcionó una buena respuesta, pero no respondió directamente a mi pregunta. Específicamente estoy pidiendo diferencias, no una forma de decidir si debo implementar una u otra. De todos modos, gracias por la buena respuesta. –

+0

¡Muy agradable! –

4

Existen bastantes diferencias entre los dos que crean desafíos o beneficios. Para aplicaciones web:

  • Estado - peticiones HTTP tienen ningún estado y necesita ser gestionado por pasar variables de sesión a través de todas las solicitudes o galletas. Esto es una sobrecarga en las aplicaciones web y ASP.NET a menudo se ve criticado por enormes blobs de datos de sesión.
  • Centralizada - Realizar un cambio a una aplicación web es tan fácil como actualizar los bits en el servidor frente a las aplicaciones de escritorio donde los parches deben implementarse para todos los usuarios. La naturaleza centralizada también facilita la realización de análisis y demás. Esto es una gran conveniencia. Recuerdo que GMail en un momento solucionó un problema de seguridad en menos de 4 horas. En contraste, todavía hay muchas máquinas de Windows sin parches vulnerables por ahí.
  • Arquitectónico - servidor gordo, los clientes ligeros hacen que la plataforma de aplicaciones web sea independiente. También ayuda a gestionar el equilibrio ... por ejemplo, la clasificación de tablas, la comprobación de errores, los cálculos matemáticos o gráficos (en el caso del flash, por ejemplo) se pueden realizar en el cliente o en el servidor, dependiendo de la asignación de recursos. Debido al thin client, significa que es posible realizar una revisión completa del servidor sin afectar al cliente. Este nivel de flexibilidad es realmente conveniente.
  • Seguridad - Las aplicaciones de escritorio se ejecutan en un entorno confiable donde son libres de hacer cualquier cosa mientras las aplicaciones web se ejecutan en un entorno de arena que las hace inherentemente más seguras para el cliente. Sin embargo, las aplicaciones web requieren una cierta cantidad de configuración en lo que respecta a los certificados, controles ActiveX, etc.
  • 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, saltando números de versión principales significa un aumento de los ingresos por medio de actualizaciones de usuario. En las aplicaciones web, el control de versiones es principalmente para los propios desarrolladores y es mucho más fácil hacer pequeñas mejoras iterativas. Esa es la razón por la cual las aplicaciones de escritorio aún se adhieren al ciclo de desarrollo de cascada porque eliminar los cambios es costoso y debe obtenerlo por 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 el soporte de procesadores, controladores anteriores y más.
  • Entorno - Las aplicaciones web se ejecutan en un entorno predecible que, de nuevo, es muy conveniente. Hay problemas de desarrollo entre 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 respaldos posteriores, pero AJAX ha hecho que esto sea mucho más fácil y divertido.

Estoy seguro de que hay muchos otros puntos que me faltan pero esa es mi respuesta sesgada para el desarrollo de aplicaciones web.

+0

Creo que haces algunos puntos buenos, pero lo estás basando en muchas suposiciones. Por ejemplo, todo el argumento de "control de versiones" asume que no se crea ningún tipo de función de actualización automática. Firefox parece administrar actualizaciones muy bien, por ejemplo. Además, las aplicaciones de escritorio pueden ser "independientes de la plataforma" si elige el conjunto de herramientas correcto. La semana pasada estaba trabajando en una aplicación de escritorio en mi mac box en casa. Lo llevé a trabajar y lo demostré en mi Linux Box. Entonces alguien preguntó, así que conecté mi memoria USB a mi caja de Windows y también corrí allí. –

+0

@Bryan, estos han sido cambios relativamente recientes en el paradigma donde las aplicaciones de escritorio y de Internet se están acercando con tecnologías como Adobe Flex, Google Gears, RIA en general y aplicaciones de escritorio que realizan actualizaciones automáticas. Aún así, el control de versiones es trivial con las aplicaciones web. Sucede implícitamente cada vez que cambia una línea de código en producción. Con las aplicaciones de escritorio, esos cambios deben implementarse en un ciclo de publicación mensual y luego tampoco puede sobrecargar a los usuarios y algunos nunca terminan actualizándose. – aleemb

1

Todo depende:

  1. ¿Cuál es su experiencia del desarrollador?
  2. ¿Qué tipo de aplicación necesitas hacer?

Y también, ¿a qué llamas aplicaciones web? Las aplicaciones de Silverlight o Flash se pueden hacer de forma que pueda usarlas desde el escritorio o desde el navegador. Las aplicaciones de Ajax hoy en día no son muy diferentes de las aplicaciones de escritorio, pero es mucho más difícil desarrollar algo no demasiado simple con DHTML (incluso si está tomando marcos como jQuery o incluso GWT).

HTML o DHTML Asumiendo como aplicaciones web:

He pasado muchos años en la web/Ajax y el desarrollo de escritorio y mi experiencia es igual - que he hecho manojo los de aplicaciones web y de escritorio complejas. Con un buen conjunto de herramientas y herramientas para C# y suficiente experiencia, puedo crear una mejor aplicación de escritorio que una web dentro del mismo o menor tiempo. Pero algunos tipos de aplicaciones NO PUEDEN hacerse como computadoras de escritorio porque es un requisito hacerlas como aplicaciones web.

razones por qué el desarrollo de escritorio es más simple:

  1. Idioma seguridad de tipos, sugerencias para el código
  2. Rendimiento de perfiladores código x10-1000 + rendimiento
  3. No hay necesidad de comprobar todo en todos los navegadores
  4. Excepciones informativas con stack-trace, edit y continue
  5. Posibilidad de usar multi-threading (si usted sabe cómo usarlo)
  6. previsibilidad y la estabilidad del código
  7. herramientas En general RAD

Por mucho tiempo varias ventajas de las aplicaciones web fueron:

  1. GUI Marco - HTML + CSS
  2. Es más fácil para usuarios para comenzar a usarlo
  3. El contenido de las aplicaciones se puede encontrar en los motores de búsqueda

Ahora todos tenemos Frameworks GUI fuertes como XAML para aplicaciones WPF/Silverlight. El segundo punto puede ser cubierto por las aplicaciones de Silverlight/Flash (que estoy tratando como de escritorio). El tercero se puede hacer para RIA, pero requiere un poco de esfuerzo (lo mismo se aplica a las aplicaciones ajax).

Si se dirige a algo simple y no conoce las herramientas y técnicas modernas de desarrollo de escritorio/ria que podrían ser otra buena razón para desarrollar aplicaciones web. Pero como he dicho, espero que sea algo simple.

Cuestiones relacionadas