不管如何,通过WWW,这个有点憨厚的英国人已经彻底改变整个世界。
1993年5月,伊利诺斯州大学的天才少年Marc Andreessen开发了第一个浏览器Mosaic,1994年上半年他和Jim Clark成立了Mosaic Communications(也就是Netscape的前身),同年10月发布了Netscape 0.9,这个是我们看到的第一个浏览器的Logo,虽然今日已经面目全非。
而Netscape的出现终于让WWW得到了爆炸性的普及。
Browser/Server,一个无法完美的名字
随着浏览器大战的开始,世人真正意义的享受了科技进步给人类带来的福旨。一夜之间,B/S结构成为应用开发最主流架构,浏览器成为客户端的唯一工具,这种不需要部署的软件应用确实给了很多人无限的疯狂。ISV、解决方案提供商及其企业用户也不约而同的提出采用B/S架构作为企业信息应用的架构,因为那样可以免去之前C/S时代高昂的部署和升级费用,能够快速适应不断变动的企业业务。
渐渐的,他们发现自己不断复杂的业务通过简单的页面浏览已经无法满足要求,这个时候相关的客户端脚本技术走上舞台,说起来有点戏剧性,Netscape设计脚本的初衷是为了让网页有更好的浏览性,从而增加页面浏览的乐趣,他们一定没有想到这个概念却在他们的对手发挥到极致,等到那场浏览器大战的硝烟渐渐淡去的时候,我们发现脚本已经面目全非,或者说已经臃肿不堪。
为了沿袭C/S结构下的界面使用体验,开发人员不得不利用大量的JavaScript和DHTML去实现或者说“模拟”传统应用程序的使用界面,比如菜单,工具条,还有那复杂的图形和表格。也因为如此,Web开发成为当今最火爆的应用领域,除了相关的服务器开发技术如ASP,PHP,JSP还有后来的王者ASP.NET,客户端技术则包括了HTML,CSS,JavaScript,DHTML等等方面的技术,这些都成为开发人员的一种追逐。更有甚者,利用客户端技术开发了一整套完整的类库,这点最著名的莫过于Bindows(可以从http://www.bindows.net下载)。
在解决了部署和更新的问题之后,B/S同样引入了一些令人头痛的问题:
1) 始终没有一个非常标准的技术规范来约定,由此造成了各个浏览器在w3c之外做的扩展,在应用开发中,更多的是需要依赖于这些扩展去实现更加绚丽的图形表现和灵活的交互。比如IE里面提出了HTC的概念,也增加了许多相关的滤镜(Filter),Mozilla也提出了XUL用来扩展用户界面。但是如果需要设计一个具有强大功能的用户系统,我们更多情况下不得不依赖于专有浏览器的扩展实现。
2) 作为浏览器大战的胜利者IE从2001年之后就没有推出过重要版本更新,那么也就意味者我们所有的开发技术是停滞在2001年之前的理念,这点和服务器端技术的不断发展已经渐渐脱节。
3) 作为基于浏览器的应用,因为安全等等方面的原因始终做不到能够成为应用的集成者,更多时候是被动的去接受单一服务器提供的应用,比如对于客户端希望能够跨越不同网络调用相关的Web Services,因为安全模型的畸形(不是非常完善的资源访问控制),我们无法做到在同一浏览器内流畅的实现跨应用集成[1]。
4) 基于浏览器的技术严格意义来说是依赖于在线访问而构建的应用,在需要一些离线(Office Line)的应用中,就显得有心无力,毕竟从浏览器设计的一开始就是希望能够在意个最小权限的“沙盒”模型下去运行,因此对于本地资源的访问默认情况下是拒绝的,而某些浏览器如IE允许通过设置来跨越这个安全模型,但是没有提供一个非常良好的权限分层机制,闸门一开,一切犹如洪水猛兽。
Browser/Server,这个近10年来风光无限的词眼,依旧不是那么尽善尽美。