Quiero crear una aplicación local que tenga una interfaz de usuario basada en el navegador en lugar de una GUI independiente basada en MFC/Qt/etc. Si no deseo ejecutar un servidor web en la máquina local, ¿cómo puedo implementarlo? las partes dinámicas de mi aplicación? ¿Puede el navegador apuntar a scripts, ejecutables o bibliotecas locales en la máquina? ¿Puedo usar una base de datos local directamente? ¿Qué riesgos existen con este enfoque?¿Es posible escribir una aplicación web local que no necesita un servidor?
Respuesta
Sí, pero con limitaciones. La principal limitación es que no puede hacer nada de CGI porque el navegador abrirá y mostrará el código fuente de su script en lugar de ejecutarlo. Esto tiene varias implicaciones:
- No se puede conectar a una base de datos. Esto hace que sea difícil hacer cosas comunes como almacenar estados y datos de usuario.
- No puede establecer el tipo de contenido. Esto significa que no puede hacer ningún tipo de cosas elegantes de XML como servir archivos SVG o usar XML en XMLHttpRequest.
- No puede generar imágenes dinámicas (con ImageMagick o GD). Aunque con HTML5 puedes hacerlo con el lienzo.
- No puede leer o escribir en el sistema de archivos. De nuevo, esto limita su capacidad para guardar datos. Pero se puede hacer con los permisos de usuario correctos (más sobre esto a continuación).
Pero hay soluciones. HTML5 le permite almacenar datos en el almacenamiento local, pero obviamente esto no funcionará en navegadores más antiguos. Puede almacenar datos en cookies, pero eso tiene limitaciones de tamaño. Finalmente, puedes guardar en el archivo. Debe indicar a sus usuarios que modifiquen las preferencias de su navegador para permitir que su script haga esto, pero se puede hacer. Un ejemplo de esto es TiddlyWiki. Es una wiki personal autónoma en un solo archivo HTML. Cada vez que guardas contenido nuevo, la página se modifica y se guarda a sí misma. Es posible que desee ver cómo lo hacen en busca de inspiración.
Si quiere la ruta HTML pura HTML5 le permitirá crear una base de datos local en el navegador; con suficiente experiencia en la codificación de JavaScript podría escribir todo un sitio en él que represente todo en JS en lugar de cargar archivos HTML. Carga un archivo y muestra todo después de eso usando el motor de JavaScript.
Si se trata de una aplicación con sentido y puedes escribirla sin enojarte.
Si está en Windows, puede hacer trampa y usar Active x/vbscript, pero si lo hace, ¿por qué no escribe un clic una vez .NET aplicación. Sin tener algún componente de aplicación de servidor web, el navegador no podrá hablar con un motor de base de datos tradicional.
Creo que sus únicas opciones en términos de scripting serían Javascript en este escenario. (O Java Applets o Flash, pero no creo que quiera eso)
Sugiero que eche un vistazo al paquete web incrustado de QT. Podrías usarlo para insertar un navegador en una aplicación QT simple y usarlo para la mayoría de tu IU, entonces tienes el poder de C++/QT para tu back-end. QT puede vincular el código de C++ directamente a Javascript.
Consulte el QWebFrame class, especialmente el método addToJavaScriptWindowObject, y el Qt WebKit Bridge.
- 1. ¿Es posible cargar gzip javascript comprimido sin un servidor web?
- 2. ¿Es posible ejecutar un trabajo cron en una aplicación web?
- 3. ¿es posible escribir un rastreador web en javascript?
- 4. Escribir un servidor web simple en Ruby
- 5. ¿Puede una aplicación local html5 tener una sesión asp.net? (Aplicación web local para iPhone)
- 6. ¿Es posible escribir una función SQL que emita JSON?
- 7. ¿Es posible escribir un cliente de Skype?
- 8. ¿Es posible interactuar con una aplicación local en una extensión de Google Chrome?
- 9. ¿Es posible alojar un servidor web en VBA?
- 10. Escribir una aplicación para trabajar sin conexión (aplicación web)
- 11. ¿Cómo escribir un servidor retorcido que también es un cliente?
- 12. ¿Incrustar un servidor web liviano en una aplicación .net (node.js)?
- 13. Acceda al almacenamiento web desde el servidor, ¿es posible?
- 14. ¿Cuál es la mejor forma de que una aplicación cliente encuentre un servidor en una red local en C#?
- 15. ¿Es posible implementar una aplicación ASP.NET como aplicación de escritorio (con componente de servidor)
- 16. ¿Es posible escribir un cliente SSH de JavaScript que use conectores web para el transporte?
- 17. JavaScript local - escribir al archivo local
- 18. es posible hacer que nant ejecute una publicación en el proyecto de aplicación web
- 19. Posible lanzar una aplicación de iOS desde un enlace web
- 20. ¿Es posible escribir código para escribir código?
- 21. Usar servidor web IIS local para depurar
- 22. ¿Es posible escribir un firewall en python?
- 23. C# - ¿Necesita una aplicación que permitirá IDictionary un nulo clave
- 24. Escribir archivo en el servidor web - ASP.NET
- 25. ¿Es posible crear un applet web JavaFX?
- 26. ¿Aplicación web y servidor Python?
- 27. Cómo escribir un archivo EXE que es también un servidor COM en Delphi
- 28. Escribir una aplicación que puede usar complementos
- 29. ¿Por qué implementar una aplicación web como FastCGI en lugar de un nuevo servidor web?
- 30. ¿Es posible compartir una instalación de Symfony2 (múltiples sitios web [dominios] en un servidor)
¿Cuál es el proceso que le ha llevado a esta decisión? – u07ch
HTTP + CSS son excelentes para hacer una GUI dinámica y portátil. Pero un servidor es un inconveniente de una aplicación web local, lo que significa que la instalación necesita elevación, etc. Por eso, si es posible, desea evitar el servidor. – paperjam
@paperjam: un servidor realmente no necesita privilegios de root para instalar.Correr en el puerto 80 lo necesita pero puede ejecutar su servidor en otros puertos. Hemos hecho esto para implementar una versión de escritorio de nuestra aplicación web. Básicamente, un servidor perl mínimo (nuestra aplicación está en perl) ejecutándose en un puerto aleatorio y un ejecutable webkit personalizado que se conecta al servidor. Elegimos webkit para construir nuestro navegador personalizado porque es compatible con Big 3: Windows, Mac y Linux. – slebetman