【发布时间】:2011-02-07 03:10:00
【问题描述】:
只是想知道您的 cmets 对当前趋势的看法是什么,因为一切都在转移到网络甚至云端。操作系统或桌面应用程序的重要性不如 Web 应用程序受到关注。因此,对于那些仍在开发 Windows 应用程序(例如 WPF)的人来说。为什么还要这样做?为什么不转向网络编程?以 Silverlight 为例...
【问题讨论】:
-
这应该被标记为社区维基。
只是想知道您的 cmets 对当前趋势的看法是什么,因为一切都在转移到网络甚至云端。操作系统或桌面应用程序的重要性不如 Web 应用程序受到关注。因此,对于那些仍在开发 Windows 应用程序(例如 WPF)的人来说。为什么还要这样做?为什么不转向网络编程?以 Silverlight 为例...
【问题讨论】:
因为您仍然可以使用桌面应用程序而不是 Web 应用程序提供一定级别的安全性和交互性。
【讨论】:
一个原因是性能。 Web 应用程序将始终在沙箱中运行,并且无法完全访问本机资源。因此,它们不能像桌面应用程序那样快。这对于 IDE、CAD 系统和游戏等应用程序非常重要。
【讨论】:
我现在正在运行的应用程序:
我看不出其中任何一个有什么好处(也许是 Excel,但如果您曾经尝试使用 html + ajax 制作一个大数据透视表,那您只会惹恼您的用户)作为 Web 应用程序。人们制作了很多具有类似需求的应用程序。为并不严格需要它的应用程序强制执行网络/Web 连接也是愚蠢的。
Silverlight 介于两者之间,我不确定我是否会将其视为典型的“网络”应用程序,更像是一个带有一些沙盒功能的网络部署应用程序 - 尽管区别变得模糊。
【讨论】:
设计良好的桌面应用程序通常比设计良好的网络应用程序更实用。这是因为 Web 应用程序受限于浏览器允许的内容,受限于浏览器具有与应用程序无关的控件(工具栏按钮、菜单等)这一事实,受限于网络固有的延迟,等等
对于许多类型的问题,这并不重要,基于网络的应用程序的好处超过了可用性问题。但至少在当今浏览器的状态下,很少有网络应用程序可以在可用性和响应性方面与桌面应用程序配合使用。
我所说的“网络应用程序”是指其 UI 基于浏览器,并且与主要通过网络的数据模型进行交互的应用程序。我所说的“桌面应用程序”是指使用本机控件、与本地数据模型进行交互的应用程序,或者是在 LAN 上的应用程序。
【讨论】:
现在
桌面软件速度更快(您无需访问网络即可读取/写入/处理数据)
硬件访问更容易且更适合在本地执行,因为安全性
不需要互联网连接可能很好(例如,需要连接互联网以收听 mp3 或查看自己的照片的笔记本电脑不会更快,也不够私密)
也许有一天,云会比本地存储更可取且速度更快,但每当我们在寻找独立、故障安全或极简主义时,我们都需要拔掉电源
【讨论】:
桌面应用程序和网络开发/云之间没有直接的脱节。无论 UI 层是网站还是应用程序,云仍然可以支持您的应用程序。我认为瘦客户端正在兴起,其中诸如 Silverlight 之类的 RIA 技术只是其中一个推动者。
也就是说,有些任务在本地完成更有意义。如果我必须连接到云来构建我的控制台 java 应用程序,我会很沮丧。
【讨论】:
我厌倦了“网络应用与桌面应用”的不断划分。
没有所谓的“网络应用” - HTML 和 JavaScript 由浏览器在您的桌面上执行;当您导航到 URL 时,它们恰好是按需交付的。但如果它们碰巧在缓存中,即使这样也可能不是真的。
人们通常认为的“网络应用”是浏览器托管的应用,它恰好在操纵托管在云上的资源;而且这种操作通常也涉及到在服务器上运行的代码。
但没有什么可以阻止“桌面应用程序”成为用户操作基于云的资源的丰富前端。看看所有的 WPF、Air 和 Objective-C Twitter 客户端。
此外,没有什么可以阻止您交付基于浏览器托管的基于 HTML5/JS 的应用程序,该应用程序仅操作本地资源。只需看一下“网络应用”的 3 个典型示例 - Gmail,它可以离线工作,无需网络访问。
更不用说随着浏览器和 RIA 平台(包括 Flash 和 Silverlight)的所有进步 - 删除浏览器 chrome、分离进程中的选项卡、支持浏览器外执行,这就是所谓的“网络应用” “如今正在迅速转变为应该更好地称为“轻量级桌面应用程序”或“便携式桌面应用程序”的东西。 :-)
真正的区别是“富应用”与“覆盖应用”。 开发人员可能会大力投资实施富应用,该应用严重依赖特定平台的能力来提供一定程度的否则无法实现的用户体验。或者,他们可能希望投入巨资实施旨在在尽可能多的平台上覆盖尽可能多的用户的应用程序,并愿意以某些方式限制用户体验以促进渗透。
在这种情况下,您的问题就没有实际意义了。表示层的选择与您的应用程序操作的资源位置的选择完全正交。
【讨论】:
这取决于环境。可以预期企业用户一直/大部分时间都在线,而家里的某人可能不会持续连接。此外,您还会遇到每个应用程序遇到的各种安全问题、控制和更新问题。在商业环境中,Web 应用程序非常棒,因为您只需更新一次应用程序,每个人都会立即看到更改。我现在做这种类型的工作。但大多数应用程序都是数据驱动的网络应用程序。对于图形或处理器密集型的事情,您希望在桌面级别工作(就像上面提到的其他一些人一样)。
【讨论】: