面向任务,还是面向信息?
我自己时常会被各种 Web 应用所困惑。我自己的观点也时常也会被某些现实中的应用所推倒。比如,我一向所持的观点是,在 JavaScript 横行的时代尤其需要注意网站的无障碍,就是说,没有/禁止 JavaScript 的情况下保证信息的可传达。但是,可以看到很多应用,比如 Gmail, 比如 Google Reader 等,都是两极的做法,提供一个不需要 JavaScript 的基本视图或者干脆明白地告诉你不开 JavaScript 不给你用。
那么我一直提倡的 Unobtrusive JavaScript 还有什么意义?其实跟人交流的时候我的底气也不足,因为,确实,不 Unobtrusive 也不见得有什么坏处啊,最典型的例子就是前面所举的 Gmail 例子。跟人论战,若有人举出如此例子,我一般也只能缴械,确实,我没能找到合适的理由来反驳。
不断地翻资料,终于在非技术层面找到一些看起来应该算是比较可靠的理由,不敢独吞,遂分享。不敢保证正确,如有任何想法,务必留言交流,谢谢!
WWW(你可以叫它互联网,但也有人称之为万维网)诞生之时,只是一个超文本(hypertext)的系统,所担负的任务只有一个,依靠线性的超连接来传递信息,这是一个典型的信息系统体系。
随着各种前端,后端技术的飞速发展和成熟,加上商业的介入,人们不再满足 WWW 作为一个信息系统而已。很多人尝试将常规软件,特别是桌面应用软件的设计的规则搬到 WWW 中并针对其弱点(比如无状态的传输协议 HTTP)进行改良,使得 WWW 俨然成为一种软件性的应用,即使说, 不停留在信息传播的层面上而已,而是让人们能够依靠它完成某些任务。这就是任务型的 WWW,最典型的,还是前面所举的例子,Gmail 和 Google Reader,人们依赖它们去完成收信,抓取 Feed 等的任务,而且是建立在一种比较直观的交互方式上,没错,跟桌面软件一样直观。
这种利用 WWW 的优势(跨平台,跨时空)可以说是 WWW 的一个发展趋势。因为它能把人们从对某个特定环境(比如特定的计算机,特定的操作系统等)的依赖解放出来。RIA(富互联网应用)的概念兴起已有一段时日, 但真正引爆流行的是 Ajax 概念的出现。这个概念更容易让人把某些 WWW 应用设计成桌面程序,而不分青红皂白,哦,不,是不分自己所做的项目到底是面向任务还是面向信息的。
面向信息是 WWW 天生就具备的功能,可以说现在的 WWW 大部分应用依然如此,比如门户网站,比如电子商务,这是我为什么每次都强调要保证信息的可传达性,不管在什么情况下。但是就如前所提到,WWW 已经有了新的发展模式, 尽管未来可能有更多的面向任务型的 Web 应用,但不论如何,这两条线是平衡发展的,不会有谁取代谁的机会,顶多是综合运用。
问题就出在综合运用这里。很多人一听说 Ajax,毫无考虑,虽然心中无面向信息或者面向任务的概念,但一开始就认为这是面向任务的,因为 Ajax 的概念先入为主了。在面向信息的应用中,比如门户网站,比如政府公告,使用 Ajax 或者其他 JavaScript 来增色应用是没有问题的,但要确保信息的无障碍(貌似我强调了好多遍了)。
当然,在面向任务型的应用中,这只是把浏览器当成是一个软件的运行环境( Runtime Environment? ),就如同 Java 程序需要 JRE 一样,只不过面向任务的 WWW 应用充分利用 WWW 作为数据保存、输送的纽带而已, 因此,假如运行出错或者环境限制,我们只能告知用户,你用不了我们的程序,请检查哪里哪里,如果还不行只能抱歉了。
但是在面向信息的应用中,请问,假如用户在受限的环境下获取不了信息,这说得过去吗?面向信息就是以信息的传达为目标,不应该有所限。
所以,在项目的开始之初,我们需要必须明确的第一件事情是,我们是面向信息还是面向任务,这才能让项目的方向明确,不至于让各种貌似很高级的东西迷惑了我们的决策。