何时选择Web界面和本地GUI界面?

17

许多应用程序(尤其是网络应用程序,例如文件共享、SQL查询程序、某些多人游戏)可以通过使用 Web 接口轻松提供。

我的问题是何时应该使用浏览器使应用程序可访问?

什么时候应该使用像 Qt、Visual Basic 等接口构建的桌面应用程序更明智呢?

9个回答

4

网络界面的一些要点:

  • 当程序需要从网络上的另一台计算机进行管理时
  • 当需要更快速的开发速度时(通常比Qt/Gtk等编写html/javascript更快)
  • 尽可能保持程序跨平台兼容性

2
我不同意编写HTML/JavaScript比Qt/Gtk更快的观点。使用Qt/Gtk,您可以准确地了解每个组件的行为,并使用GUI设计加速UI编码。但是使用HTML和JavaScript,无法预测HTML元素的行为,您必须一次又一次地尝试才能获得所需结果,这需要太长时间来使用HTML和JavaScript进行UI设计。在所有Web浏览器上,没有任何HTML代码以相同方式运行的说法是不正确的。许多标签在同一操作系统上的每个浏览器以及在不同操作系统上都不能给出相同的结果。 - Narcisse Doudieu Siewe

4

对于这个问题,没有通用的答案。这取决于一些因素:

  • 您的目标用户群 - 它是广泛分布还是集中在某个领域?
  • 可移植性 - 您的用户在哪些平台上工作?
  • 性能 - 是否需要大量性能?如果是,桌面应用程序会更好。我无法想象在浏览器中运行视频编辑软件。也许10年后 :)
  • 还有其他需要逐个确定的因素

但趋势明显是朝着基于Web的应用程序发展。您可以通过它们接触到相当多的人。


1
为了开发应用程序,最好将客户端和服务器代码分开。在桌面应用程序中,通常不是这种情况。处理用户交互的客户端代码与处理用户命令的服务器代码集成在一起。但是这不一定是必须的,只需拆分代码并通过TCP/IP进行通信即可。
接下来的问题是,您的客户端代码应该在浏览器中运行还是作为本机GUI运行。对我来说,本机GUI更好,原因如下: - 运行速度更快 - 客户端和服务器代码使用相同的编程语言 - 不太依赖于正在更改的软件组件:浏览器、html、css、web服务器
大多数GUI框架都是多平台的。
唯一的缺点是需要在计算机上安装客户端软件。如果要避免这种情况,则也可以在服务器上安装客户端,并通过终端服务器程序(如Citrix)访问。
当然,如果您的应用程序很少被用户使用,则Web应用程序最有用。
大型软件公司已经花费了数百万美元将其GUI更改为Web,而没有向其应用程序添加任何其他功能。大多数时候,界面变得更加原始。因此,这是巨大的浪费,而且仍在继续。因此,不要总是跟随群众的步伐。

1

我越来越认为我们应该使用基于Web的JavaScript(或Flex)接口作为默认选项。这意味着应用程序图像中的代码大大减少,而且它允许一个代码库很好地完成某些事情,而不是几个可能做得不太好的代码库。

如果您首先构建Web界面,则永远不会发现自己需要一个单独的项目来构建Web界面。

借助现代浏览器、JavaScript和Ajax以及JavaScript库,您可以构建一个极其丰富的界面,可以轻松更改。


许多GUI提供了一种使用webkit嵌入html/javascript的方法,可以看看Qt和Gtk(webkitGtk)。我尝试过html/javascript和Gtk。使用Galde(Gtk设计师),你可以更快地得到想要的结果,并且你确切地知道小部件的行为,但是如果尝试将“div”放在另一个“div”中,再放在“span”等中,你无法预测其行为。使用POO的Gui,您可以创建自己的事件类型,可以使用CSS样式化小部件(是的,Qt和Gtk提供CSS来样式化它们的小部件)。Web UI在执行和内存方面不够高效。 - Narcisse Doudieu Siewe

1

我认为这是一个错误的问题。你需要做的是分析平台之间的差异以及它们对你的组织产生的影响。让我给你举个实际的例子。

我曾经为一家只开发基于Web的应用程序的小公司工作过。其中一个应用程序不成功,部分原因是我们有很多拨号用户,需要离线支持。

公司决定开发一个.NET客户端应用程序,结果他们受到了惊吓。公司没有准备好将应用程序部署到任意数量的客户端配置的复杂性。例如,我们被Novell Networks所困扰。他们没有准备好支持客户端应用程序的成本增加。(是的,开发人员曾经警告并试图告诉他们这意味着什么)。

因此,你不仅需要提出各种问题,还需要在生产软件的组织背景下对它们进行评估。

需要问的问题包括:

  1. 首先,你的应用程序能否作为Web应用程序运行?有些应用程序根本不可行。如果你需要访问低级资源,你将没有太多选择。
  2. 你能负担得起客户端软件的维护成本吗?如果这是一个分布式应用程序,当你更新服务器但客户端没有更新时会发生什么。
  3. 你能支持客户端吗?
  4. 构建软件的团队有什么经验?在我看来,这非常重要。无论一个团队在构建Web应用程序方面有多么出色,他们在做客户端应用程序时都会犯一些有经验的客户端开发人员不会犯的错误。

1

只有在您可以控制环境(内部网络)或编写适用于该软件包/应用程序运行的环境(跨平台版本)时,才选择桌面应用程序。

现在的趋势是一切都在浏览器中进行,我们得到了与桌面应用程序同样好的交互。而且,运行应用程序所需的唯一条件是浏览器,这总是很好的,我们只需要要求用户拥有正确版本的浏览器,他就可以使用它了。


1
在我的经验中,我发现Web应用程序通常需要更长的开发时间,但是在开发Web应用程序方面有一些优势。
  1. 您不必部署基于Web的应用程序
  2. 人们通常更习惯使用Web浏览器而不是自定义应用程序,因此通常应用程序的可用性会提高
  3. 通常,用户可以更轻松地在Web应用程序中找到他们所需的内容,这是由于界面的原因。
  4. 您只需要测试几个浏览器,并避免测试可能会冲突的许多客户端配置。
  5. 使用Web应用程序,您不必担心客户端可能使用的操作系统。例如,假设您的公司决定将桌面计算机迁移到Linux,则无需构建新版本。

如果您需要快速开发某些东西,或者需要性能/响应式界面(Web仍然比桌面慢),或者正在开发无法在Web中完成的内容(考虑图形软件/复杂游戏),则应开发桌面软件。


有许多标签在同一操作系统的不同浏览器中的工作方式不同,对于同一浏览器,在不同的操作系统上行为也不同。尝试查看一些HTML / JavaScript,您会发现某些奇怪的标签仅适用于Mozilla,其他标签适用于IE,而其他标签适用于Chrome。 - Narcisse Doudieu Siewe

0

如果您的应用程序的用户界面可以实现为良好的Web服务/应用程序,那么您应该认真考虑它作为一种选择。

在浏览器中运行的UI最大的好处是它独立于客户端操作系统。今天,大多数计算机用户通常连接在网络中的多台计算机上。不同操作系统的分布每天都在增加(替代Windows的选择正在获得更大的市场份额)。因此,您可以获得最大的UI可移植性。您的应用程序可以在一台计算机上启动一次,并从任何地方访问。


GUI可以执行Web服务。POST+JSON是关键。例如,使用Python+Gobject+Gtk+requests(Web Python库),您可以与Web服务器进行交互。 - Narcisse Doudieu Siewe

0

随着本地和 Web 开发的不断改进,GUI 部分甚至可移植性变得不那么重要。本地应用程序最大的因素是当您需要更低的硬件访问权限或者如果浏览器的安全保护机制限制了开发人员时。也许更重要的是,如果您的应用程序需要高性能和计算量很大,就像金融应用程序中需要并行编程一样,那么您确实需要一个本地应用程序。如果您的应用程序不需要这些功能,请选择适合您口味的应用程序,有许多开发人员可以使用任何技术编写这些应用程序。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接