开发Web应用程序与桌面应用程序有什么好处和挑战?

Mig*_*ing 17 user-interface

我与管理人员存在一些问题,因为他们认为(直观地)创建桌面应用程序比创建Web应用程序更容易(因为您的约束较少).但在我看来,由于某些原因,它更难:

  • 桌面应用程序的文献比网络应用程序要小得多
  • 编码面板和按钮比使用声明性方法(HTML)更难
  • http的无状态特性迫使您以请求/响应方式重新思考

我正在寻找GUI与桌面应用程序的坚实推理.我坚信桌面很难开发,因为我有一些工具包的经验,但如果有人在乎其他方面做出反应,请随意根据你的推理.


编辑:我恢复了我原来的问题,因为有人编辑了它,它丢失了原始内容.如果有人选择编辑问题,请发布一些有意义的评论,这样我至少可以知道为什么某些部分被更改了.

Bry*_*ley 18

大多数答案(到目前为止,无论如何)似乎都集中在实施选择的容易程度或难度上.应用程序,桌面或基于Web的整个目标都是为最终用户服务.必须是讨论的起点.

在大多数情况下,Web应用程序无法提供与桌面应用程序一样丰富的交互式体验.由于可用的小部件,网络延迟,您的应用程序窗口必须(通常)存在于另一个应用程序中等等,因此存在太多限制.

话虽如此,很多时候界面不需要大量的小部件,网络延迟也不是问题,并且从浏览器窗口运行是一个优势.gmail和堆栈溢出是基于Web的应用程序的主要示例,不需要特别丰富的界面.

因此,在尝试决定使用哪种技术时首先要考虑用户.他们需要高性能,丰富的用户界面吗?他们是否需要能够毫不费力地与网络上的其他人分享他们的数据?这是一个应用程序,他们将每天使用8小时或只是偶尔使用?他们是否会主要使用它来编辑本地文件或与网络上的人员协作?

对于那些说"网络应用总是更好"的人,让我问你这个问题:想想你每天使用的工具.您的文本编辑器,编程IDE,浏览器,电子邮件客户端.哪些是网络应用程序?可能没有,除了你的电子邮件客户端.这就是为什么你不想要一个基于Web的IDE来编写软件(或者写一本书,或者进行严肃的图像处理)的原因.

这一切都归结为用户及其目标.有时,他们的需求最好通过基于Web的UI来满足,有时使用桌面UI.有时会这样做.当然,您还需要权衡分配和更新,跨平台可用性等选项,但这一切都始于用户及其目标.如果您专注于满足最终用户,答案可能会变得相当明显.


And*_*sio 9

恕我直言网络开发更加紧张...你必须与Internet Explorer不符合标准,慢速连接,奇怪的CSS行为,浏览器漏洞.


dev*_*imi 6

大多数时候开发Web应用程序要容易得多,并且导致一个大问题 - 部署和推出新版本,就会消失.

您不必处理不同的操作系统版本,已安装的库,注册表,COM等.您可以使用不同的浏览器进行处理,但它的处理要少得多.

我无法想象每月将2-3个客户端部署桌面应用程序 - 这对于网站来说运行良好.

对于Web开发的开发,您有:

  • 更短的执行路径
  • 减少管理的状态
  • 你几乎不必自己处理并行问题
  • 要管理的资源少得多或没有资源 - 没有操作系统处理

唯一的缺点是设置开发机器通常需要更多,并且Web应用程序的调试更难.使用当前的工具状态,调试不再是一个问题.

所以如果可能的话,总是更喜欢网络应用

  • 我还想添加您的缺点列表,通常会为最终用户提供不太令人满意的体验.有非常非常少的网络应用可以与桌面应用竞争整体可用性. (2认同)

ale*_*emb 5

两者之间存在相当多的差异,这些差异带来了挑战或好处。对于网络应用程序:

  • 状态- HTTP 请求没有状态,需要通过在所有请求或 cookie 之间传递会话变量来管理。这是 Web 应用程序中的一项开销,并且 ASP.NET 经常因大量会话数据而受到攻击。
  • 集中化- 将更改推送到 Web 应用程序就像更新服务器上的位一样简单,而桌面应用程序则必须向所有用户发布补丁。集中化的性质也使得分析等工作变得更加容易。这是一个很大的便利。我记得 GMail 有一次在 4 小时内修复了一个安全漏洞。相比之下,仍然存在大量易受攻击的未打补丁的 Windows 计算机。
  • 架构- 胖服务器、瘦客户端使 Web 应用程序与平台无关。它还有助于管理平衡......例如表排序、错误检查、数学计算或图形(例如在闪存的情况下)可以根据资源分配在客户端或服务器上完成。由于瘦客户端的存在,这意味着可以对服务器进行彻底检修,而完全不会影响客户端。这种程度的灵活性确实很方便。
  • 安全性- 桌面应用程序在受信任的环境中运行,它们可以自由地执行任何操作,而 Web 应用程序在沙盒环境中运行,这使得它们本质上对客户端来说更加安全。然而,Web 应用程序需要一定量的配置,因为它涉及证书、ActiveX 控件等。
  • 版本控制——桌面应用程序的版本控制成本要高得多。这又回到了推出变更的更繁琐的过程。再说一次,主要版本号的跳跃意味着通过用户升级来增加收入。在 Web 应用程序中,版本控制主要由开发人员自己进行,并且更容易进行小型迭代增强。这就是为什么桌面应用程序仍然遵循瀑布式开发周期的原因,因为推出更改的成本很高,而且您必须在第一次就得到它。桌面应用程序还存在向后兼容性的成本,例如支持Windows 98、XP和Vista或支持较旧的处理器、驱动程序等。
  • 环境- Web 应用程序在可预测的环境中运行,这也非常方便。IE/FF/Opera 等之间存在跨浏览器开发问题,但测试和调试比在具有不同图形处理器、防病毒软件或版本的桌面系统上运行复杂的应用程序要容易得多。
  • 响应能力- 由于回发,Web 应用程序的响应速度较慢,但​​ AJAX 使这变得更加容易和有趣。

我确信我还遗漏了许多其他要点,但这是我对 Web 应用程序开发的有偏见的答案。