面向任务,还是面向信息?

真・懒写于

我自己时常会被各种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作为数据保存、输送的纽带而已, 因此,假如运行出错或者环境限制,我们只能告知用户,你用不了我们的程序,请检查哪里哪里,如果还不行只能抱歉了。

但是在面向信息的应用中,请问,假如用户在受限的环境下获取不了信息,这说得过去吗?面向信息就是以信息的传达为目标,不应该有所限。

所以,在项目的开始之初,我们需要必须明确的第一件事情是,我们是面向信息还是面向任务,这才能让项目的方向明确,不至于让各种貌似很高级的东西迷惑了我们的决策。