基于浏览器的应用程序或独立的GUI应用程序?

cry*_*ice 29 python browser user-interface

我确定之前已经问过,但我找不到它.

使用基于浏览器的界面进行独立应用程序与使用普通GUI框架相比有哪些好处/限制?

我正在研究一个目前使用wxPython实现GUI的Python程序.该应用程序只是用户输入表单和对话框.我正在考虑转移到PyQt,因为它有小部件(为了将来的扩展),然后我意识到我可能只是使用浏览器做很多相同的事情.

该应用程序目前不需要访问Internet,但将来可能会有这种情况.如果我基于浏览器,我正在考虑将Karrigell用于Web框架.


编辑为了澄清,截至目前,该应用程序将基于浏览器,而不是基于Web.所有信息都将本地存储在客户端计算机上; 不需要进行服务器调用,也不需要访问Internet(虽然可能会在以后出现).它只是一个浏览器GUI而不是wxPython/PyQt GUI.希望有道理.

Ken*_*tle 13

让我们假装开发/部署/维护工作/成本相等,我们从应用程序用户的角度来看待它:

用户会找到哪个UI更有用?

就......而言

  • 便于使用
  • 响应
  • 熟悉的导航/使用模式
  • 最像平台上使用的其他工具/应用程序(即本机)

我知道"有用"是主观的.如果我能够逃脱它,我个人永远不会再次使用(作为用户,而不是开发人员)Web界面.我他们

有些应用程序在开发基于浏览器的应用程序时没有意义.

从发展的角度来看

  • 今天没有两种浏览器呈现完全相同.
  • 即使使用Ajax,javascript和动态响应式接口也非常容易实现/调试.

有很多很多独立的GUI应用程序都很糟糕,没有任何争议.多平台GUI的开发/部署和维护非常重要.

开发良好的用户界面是困难的时期.

现实情况是,我在过去10年中一直致力于开发基于Web的应用程序,因为它们开发速度更快,部署更容易并且提供足够的实用程序,人们将在必要时使用它们.

如果给出替代方案,我不相信大多数用户会使用Web界面.

IMNSHO


Ste*_*son 11

基于浏览器的明显优势:

  • 无论平台如何,您都可以呈现相同的UI
  • 您可以轻松升级应用程序,并且所有用户都运行相同版本的应用程序
  • 您知道应用程序将在其中运行的环境(服务器硬件/操作系统),与安装GUI应用程序的众多操作系统/硬件配置相比,这样可以更轻松地进行测试和支持.

对于基于GUI:

  • 某些应用程序(例如:图像编辑)可以说在本机GUI应用程序中工作得更好
  • 不需要网络访问

另请参阅我对此问题的评论:

跨平台GUI是一个古老的问题.Qt,GTK,wxWindows,Java AWT,Java Swing,XUL - 他们都遇到了同样的问题:生成的GUI在每个平台上看起来都不是原生的.更糟糕的是,每个平台的外观和感觉都略有不同,所以即使你能够以某种方式获得在每个平台上看起来都是原生的工具包,你也必须以某种方式编写你的应用程序以在每个平台上感觉原生.

这取决于一个决定:您是否希望最大限度地减少开发工作,并且在每个平台上都拥有一个看起来不太合适的GUI,或者您是否希望最大化用户体验?如果选择第二个选项,则需要为每个平台开发一个通用后端和自定义UI.[编辑:或使用网络应用程序.]

我刚想到的另一个想法是:您还需要考虑应用程序操作的数据类型以及存储位置,以及用户对此的感受.人们显然可以将他们的Facebook个人资料数据存储在网络服务器上,但如果您正在编写像MYOB这样的财务应用程序并且您希望将所有个人财务详细信息存储在您的服务器上,他们可能会有不同的感受.您可能能够实现这一点,但需要付出很多努力才能实现所需的安全性并确保用户群的数据安全.在这种情况下,如果使用本机GUI应用程序,您可能会认为总体工作量较低.


coo*_*ird 5

当谈到使用用户输入表单的简单数据输入时,我认为使用基于浏览器的解决方案可能会更容易、更快地开发。

除非你的核心特点是接口本身(“如果它是一个核心业务职能-自己动手,不管是什么”,看到不收此处发明综合征的防御乔尔的软件),我觉得浏览器会能够比从头开发 GUI 更好地执行表单渲染和处理。此外,更不用说编写 GUI 需要更长的时间,而不是生成 HTML 表单并在浏览器 POST 后处理它们。

我过去发现的是,一位朋友要求我编写一个应用程序来输入调查结果。起初,我正在编写一个 Java 小程序来显示带有所有单选框的调查本身,当我突然想到我最好编写一个简单的 HTTP 服务器来生成表单并处理它们。

真正归结为您是否正在开发:

  1. 用户界面
  2. 数据输入应用程序

如果您正在制作数据输入应用程序,那么将用户界面留给浏览器,并专注于您的核心功能。