Graceful degradation web应用程序领域之外的优雅降级:这是一个多么重要的问题?

Graceful degradation web应用程序领域之外的优雅降级:这是一个多么重要的问题?,graceful-degradation,progressive-enhancement,Graceful Degradation,Progressive Enhancement,为冗长的介绍道歉-只是试图适当地设置场景以避免歧义和混乱 Web应用程序已经从用于服务器端逻辑的基于浏览器的哑接口发展为完全基于浏览器的应用程序,对服务器端逻辑的需求最小。可以通过识别清晰的web应用程序代来描述这种演变 现在我们只考虑两代人:AJAX前后。当然还有其他因素,比如与CSS支持和访问控制头相关的因素,但让我们从简单开始 从一个没有样式的JavaScript、不那么简单的系统开始,添加几层优雅的降级增强,最后使用一个ajax打包、响应速度快的当代应用程序,这是一项具有挑战性且容易出错

为冗长的介绍道歉-只是试图适当地设置场景以避免歧义和混乱

Web应用程序已经从用于服务器端逻辑的基于浏览器的哑接口发展为完全基于浏览器的应用程序,对服务器端逻辑的需求最小。可以通过识别清晰的web应用程序代来描述这种演变

现在我们只考虑两代人:AJAX前后。当然还有其他因素,比如与CSS支持和访问控制头相关的因素,但让我们从简单开始

从一个没有样式的JavaScript、不那么简单的系统开始,添加几层优雅的降级增强,最后使用一个ajax打包、响应速度快的当代应用程序,这是一项具有挑战性且容易出错的任务。这绝非易事

web应用程序可能属于哪一代取决于访问应用程序的方式。如果通过Lynx访问,则同一个web应用程序看起来是第一代应用程序,如果通过FireFox 3.1访问,则是最新一代应用程序,根据用于访问应用程序的用户代理,两者之间有几个级别

创建一个根据用户代理的能力而优雅降级的web应用程序是一个非常困难的问题,在这个问题上,为利用当前浏览器功能而创建的东西将恢复到15年前Lynx创建的东西的功能

我无法想象一个桌面应用程序在操作环境中会面临如此大的变化

当在XP下运行或缺少某些Vista功能时,能够利用Vista功能的单个可执行文件(而不是一组特定于操作系统的变体)可能很好地应对。要在与web应用程序相当的距离上降级,同一个桌面应用程序在DOS等仅命令行环境中运行时仍必须运行,尽管方式不那么花哨

在Lynx下运行,这是第一代web应用程序。在Firefox3.1下运行同样的程序,这是一款别致、闪亮的当代网络应用程序。如果遇到这样一个问题,你会认为它是有挑战性的,棘手的,但可行的。 在DOS下运行,这是一个命令行应用程序。在Vista下运行它,这是一款别致、闪亮的当代网络应用程序。如果面对这样一个问题,你会认为它是疯狂的。或者你会吗

桌面应用程序是否曾像web应用程序那样在操作环境中面临如此广泛的变化?


这个问题(差异的广度,而不是差异本身)是web应用程序领域特有的,还是可以在桌面开发中找到?在应用程序和操作系统(OS)领域,问题通常是相反的。正是操作系统处理了维护兼容性的所有复杂性。另一方面,应用程序通常指定最低操作系统版本


应用程序开始发现这个问题的另一个地方是Java世界,在较小程度上是所有其他在多操作系统上工作的所谓脚本语言。

桌面应用程序在这方面没有web应用程序的问题。它们通常在一个定义明确的平台上运行

这在将来可能会改变。计算机正在从台式机转向移动电话和小型笔记本电脑。未来,桌面应用程序将不得不在更广泛的平台上运行。这可能会导致问题,因为我们用来开发桌面应用程序的大多数框架处理这个问题的能力甚至比web应用程序的框架还要差

我无法想象一个桌面应用程序在操作环境中会面临如此大的变化

桌面应用程序必须处理不同种类的差异。游戏中的图形卡就是一个很好的例子:你想为基本客户提供像样的支持,但拥有闪亮新图形卡的高端客户会希望为他们的钱奔波。当您进入GPU处理和卡上内存管理领域时,您将有足够的理由诅咒操作环境的变化

通常,与web应用相比,您还需要处理更多处理器和内存密集型软件,因此您也必须考虑到这一点。我甚至没有谈论操作系统间的可操作性(许多桌面软件都能很好地处理)


当然,没有什么能让桌面软件发布商对环境施加严格的标准。这只是生意上的问题。但也没有什么强迫你支持非主流浏览器(大多数web应用程序真的支持Lynx吗?!?)

“并且大多数Web应用程序真的支持LYX吗?”- Lynx被提到在操作环境中展示可行的方差广度,即在很少的情况下,支持这种差异是不可行的。如果你想比较苹果和苹果,你应该考虑在这两个世界中被认为是“主流”的东西。对我来说,支持Lynx就像支持Vista,而10年前的RedHat版本(在许多情况下这可能是一个合理的要求)Vista/RedHat并不完全相同。你不会让完全相同的可执行文件在这两个平台上工作,你会有非常相似的操作系统特定的变体。Vista与RedHat的比较更类似于你的web应用有一个特定于Lynx的版本,还有一个单独的FireFox/IE/Safari/Chrome/Opera版本。哦,我不知道。。QT对于跨平台开发来说确实相当好。那么,你最大的问题就是设备功能——例如,与桌面相比,手机屏幕的大小。我同意,跨平台开发已经可以通过多种语言和框架实现。但优雅的降级是指在需要时缩小屏幕分辨率、带宽、cpu、内存等。Qt或其他