企业级Web开发实战
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

1.1 Web 2.0 介绍

在介绍Web 2.0之前,还是让我们从Web的发展历史开始说起吧。

1.1.1 Web的发展历史

1.1.1.1 从无到有

Web是一种典型的分布式应用架构。Web应用中的每一次信息交换都要涉及客户端和服务器端两个层面。因此,Web开发技术大体上也可以被分为客户端技术和服务器端技术两大类。我们先来谈谈客户端技术的萌芽和演进过程。

Web客户端的主要任务是展现信息内容,而HTML语言则是信息展现的最有效载体之一。作为一种实用的超文本语言,HTML的历史最早可以追溯到20世纪40年代。

1945年,Vannevar Bush在一篇文章中阐述了文本和文本之间通过超级链接相互关联的思想,并在文中给出了一种能实现信息关联的计算机Memex的设计方案。Doug Engelbart等人则在1960年前后,对信息关联技术做了最早的实验。与此同时,Ted Nelson正式将这种信息关联技术命名为超文本(Hypertext)技术。

1969年,IBM的Charles Goldfarb发明了可用于描述超文本信息的GML(Generalized Markup Language)语言。1978到1986年间,在ANSI等组织的努力下,GML语言进一步发展成为著名的标准通用标记语言(Standard Generalized Markup Language,SGML)。

1989年,欧洲粒子物理研究所(European Council for Nuclear Research,CERN)的Tim Berners-Lee意识到,与其简单地引用其他人的工作,为什么不干脆链接呢?读一篇文章时,科学家可以打开所引用的文章。超文本(Hypertext)当时相当流行,并利用了他先前在文档和文本处理方面的研究成果。Tim Berners-Lee同时感到SGML是描述超文本信息的一个上佳方案,但美中不足的是SGML过于复杂,不利于信息的传递和解析。于是,Tim Berners-Lee对SGML语言做了大刀阔斧的简化和完善,提出了SGML的一个子集,称为超文本标记语言(HyperText Markup Language,HTML)。TimBerners-Lee不仅创建了一个称为超文本传输协议(HyperText Transfer Protocol,HTTP)的简单协议,还发明了第一个Web浏览器,叫做WorldWideWeb。Tim Berners-Lee提出的HTML获得巨大的应用,他本人也由此获得了“互联网之父”的称号。

1.1.1.2 Web 1.0 发展概述

在HTML提出之后,Web获得了飞快的发展,下面从服务器端和客户端两个方面说起。

1. 客户端Web的发展

最初的HTML语言只能在浏览器中展现静态的文本或图像信息,这满足不了人们对信息丰富性和多样性的强烈需求——这件事情最终的结果是,由静态技术向动态技术的转变成为了Web客户端技术演进的永恒定律。

能存储、展现二维动画的GIF图像格式早在1989年就已发展成熟。Web出现后,GIF第一次为HTML页面引入了动感元素。但更大的变革来源于1995年Java语言的问世。Java语言天生就具备的平台无关的特点,让人们一下子找到了在浏览器中开发动态应用的捷径。1996 年,著名的Netscape浏览器在其2.0 版中增加了对Java Applet和JavaScript的支持。Netscape的竞争对手,Microsoft的IE 3.0浏览器也在这一年开始支持Java技术。现在,开发人员可以用Java和JavaScript语言开发丰富HTML页面的功能了。顺便说一句,JavaScript语言在所有客户端开发技术中占有非常独特的地位:它是一种以脚本方式运行的、简化了的Java语言,这也是脚本技术第一次在Web世界里崭露头角。为了用Microsoft的技术与JavaScript抗衡,Microsoft还为1996年的IE 3.0设计了另一种后来也声名显赫的脚本语言——VBScript语言。

真正让HTML页面表现更加丰富和强大的,则是CSS(Cascading Style Sheets)和DHTML(Dynamic HTML)技术。1996年年底,W3C提出了CSS的建议标准,同年,IE 3.0引入了对CSS的支持。CSS大大提高了开发者对信息展现格式的控制能力。1997年的Netscape 4.0不但支持CSS,而且增加了许多Netscape公司自定义的动态HTML标记,这些标记在CSS的基础上,让HTML页面中的各种要素相互交互。1997年,Microsoft发布了IE 4.0,并将动态HTML标记、CSS和动态对象模型(DHTML Object Model)发展成了一套完整、实用、高效的客户端开发技术体系,Microsoft称其为DHTML。同样是实现HTML页面的动态效果,DHTML技术无须启动Java虚拟机或其他脚本环境,可以在浏览器的支持下,获得更好的展现效果和更高的执行效率。

为了在HTML页面中实现音频、视频等更为复杂的多媒体应用,1996年的Netscape 2.0成功地引入了对QuickTime插件的支持,插件这种开发方式也迅速风靡了浏览器的世界。在Windows平台上,Microsoft将客户端应用集中在了20世纪90年代中期刚刚问世的COM和ActiveX身上。1996年,IE 3.0正式支持在HTML页面中插入ActiveX控件的功能,这为其他厂商扩展Web客户端的信息展现方式开辟了一条自由之路。1999年,RealPlayer插件先后在Netscape和IE浏览器中取得了成功,与此同时,Microsoft将媒体播放软件Media Player也被预装到了各种Windows版本之中。同样值得纪念的还有Flash插件的横空出世:20世纪90年代初期,Jonathan Gay在FutureWave公司开发了一种名为Future Splash Animator的二维矢量动画展示工具,1996年,Macromedia公司收购了FutureWave,并将Jonathan Gay的发明改名为我们熟悉的Flash。从此,Flash动画成了Web开发者表现自我、展示个性的最佳方式。

除了编写HTML页面之外,客户端应用的开发者还可以利用一些成熟的技术将浏览器的功能添加到自己的应用程序中。从1992年开始,W3C就免费向开发者提供libwww开发库。借助libwww,我们可以自己编写Web浏览器和Web搜索工具,也可以分析、编辑或显示HTML页面。1999年,Microsoft在IE 5.0中引入的HTAs(HTML Applications)技术则允许我们直接将HTML页面转换为一个真正的应用程序。从1997 年的IE 4.0 开始,Microsoft为开发者提供了WebBrowser控件和其他相关的COM接口,允许程序员在自己的程序中直接嵌入浏览器窗口,或调用各种浏览器的功能,如分析或编辑HTML页面等。Windows 98及其后的Windows操作系统甚至还利用WSH(Windows Script Host)技术将原本只在浏览器中运行的JavaScript、VBScript变成了可以在Win32环境下使用的通用脚本语言,这些都极大地扩展和增强了Web客户端开发技术。

2. 服务器端技术的成熟与发展

与客户端技术从静态向动态的演进过程类似,Web服务器端的开发技术也是由静态向动态逐渐发展、完善起来的。

最早的Web服务器简单地响应浏览器发来的HTTP请求,并将存储在服务器上的HTML文件返回给浏览器。一种名为SSI(Server Side Includes)的技术可以让Web服务器在返回HTML文件前,更新HTML文件的某些内容,但其功能非常有限。第一种真正使服务器能根据运行时的具体情况,动态生成HTML页面的技术是大名鼎鼎的CGI(Common Gateway Interface)技术。1993年,CGI 1.0的标准草案由NCSA(National Center for Supercomputing Applications)提出;1995年,NCSA开始制定CGI 1.1标准;1997年,CGI 1.2也被纳入了议事日程。CGI技术允许服务器端的应用程序根据客户端的请求,动态生成HTML页面,这使客户端和服务器端的动态信息交换成为了可能。随着CGI技术的普及,聊天室、论坛、电子商务、信息查询、全文检索等各式各样的Web应用蓬勃兴起,人们可以享受到信息检索、信息交换、信息处理等更为便捷的信息服务。

早期的CGI程序大多是编译后的可执行程序,其编程语言可以是C、C++、Pascal等任何通用的程序设计语言。为了简化CGI程序的修改、编译和发布过程,人们开始探寻用脚本语言实现CGI应用的可行方式。在此方面,不能不提的是Larry Wall于1987年发明的Perl语言。Perl结合了C语言的高效,以及sh、awk等脚本语言的便捷,似乎天生就适用于CGI程序的编写。1995年,第一个用Perl写成的CGI程序问世。很快,Perl在CGI编程领域的风头就盖过了它的前辈C语言。随后,Python等著名的脚本语言也陆续加入了CGI编程语言的行列。

1994年,Rasmus Lerdorf发明了专用于Web服务器端编程的PHP(Personal Home Page Tools)语言。与以往的CGI程序不同,PHP语言将HTML代码和PHP指令合成为完整的服务器端动态页面,Web应用的开发者可以用一种更加简便、快捷的方式实现动态Web功能。

1996年,Microsoft借鉴PHP的思想,在其Web服务器IIS 3.0中引入了ASP技术,ASP使用的脚本语言是我们熟悉的VBScript和JavaScript。借助Microsoft Visual Studio等开发工具在市场上的成功,ASP迅速成为了Windows系统下Web服务器端的主流开发技术。

在此期间,以Sun公司为首的Java阵营在这种潮流中也陆续推出了一些新的技术。1997年,Servlet技术问世;1998年,JSP技术诞生。Servlet和JSP的组合(还可以加上JavaBean技术)让Java开发者同时拥有了类似CGI程序的集中处理功能和类似PHP的HTML嵌入功能。此外,Java的运行时编译技术也大大提高了Servlet和JSP的执行效率——这也正是Servlet和JSP被后来的J2EE平台吸纳为核心技术的原因之一。

Web服务器端开发技术的完善使开发复杂的Web应用成为了可能。在此起彼伏的电子商务大潮中,为了适应企业级应用开发的各种复杂需求,为了给最终用户提供更可靠、更完善的信息服务,两个最重要的企业级开发平台——J2EE和.Net在2000年前后分别诞生,它们随即就在企业级Web开发领域展开激烈的竞争。这种竞争关系促使了Web开发技术以前所未有的速度在提高和跃进。

J2EE是纯粹基于Java的解决方案。1998年,Sun发布了EJB 1.0标准,EJB为企业级应用中必不可少的数据封装、事务处理、交易控制等功能提供了良好的技术基础。至此,J2EE平台的三大核心技术Servlet、JSP和EJB都已先后问世。1999年,Sun正式发布了J2EE的第一个版本。紧接着,遵循J2EE标准,为企业级应用提供支撑平台的各类应用服务软件争先恐后地涌现出来。IBM的WebSphere、BEA的WebLogic都是这一领域里极为成功的商业软件平台。随着开源运动的兴起,JBoss等开源世界里的应用服务新秀也吸引了许多用户的注意力。到2003年时,Sun的J2EE版本已经升级到了1.4版,其中3个关键组件的版本也演进到了Servlet 2.4、JSP 2.0和EJB 2.1。至此,J2EE体系及相关的软件产品已经成为了Web服务器端开发的一个强有力的支撑环境。

和J2EE不同的是,Microsoft的.Net平台是一个强调多语言间交互的通用运行环境。尽管.Net的设计者试图以.Net平台作为绝大多数Windows应用的首选运行环境,但.Net首先吸引的却是Web开发者的目光。2001年,ECMA通过了Microsoft提交的C#语言和CLI标准,这两个技术标准构成了.Net平台的基石,它们也于2003年成为了ISO的国际标准。2002年,Microsoft正式发布.Net Framework和Visual Studio .Net开发环境。早在.Net发布之前,就已经有许多Windows平台的Web开发者迫不及待地利用Beta版本开发Web应用了。这大概是因为,.Net平台及相关的开发环境不但为Web服务器端应用提供了一个支持多种语言的、通用的运行平台,而且还引入了ASP.Net这样一种全新的Web开发技术。ASP.Net超越了ASP的局限,可以使用VB.Net、C#等编译型语言,支持Web Form、.Net Server Control、ADO.Net等高级特性。客观地讲,.Net平台,尤其是.Net平台中的ASP.Net,为Web开发技术在Windows平台上发展提供了良好的平台基础。

1.1.1.3 从Web 1.0到Web 2.0

Web 2.0是相对Web 1.0的新的一类互联网应用的统称。由Web 1.0单纯地通过网络浏览器浏览HTML网页模式向内容更丰富、联系性更强、工具性更强的Web 2.0互联网模式的发展已经成为互联网新的发展趋势。Web 1.0与Web 2.0在互联网应用经过一段时间发展之后,理念上产生了差异。这种差异的核心并不复杂,最简单的说法就是以信息为中心,还是以人为中心。具体一点说,Web 1.0是以信息为中心,是人与信息的关系;Web 2.0是以人为中心,是人与人的关系。Web 1.0的主要特点在于用户通过浏览器获取信息,Web 2.0则更注重用户的交互作用,用户既是网站内容的消费者(浏览者),也是网站内容的制造者。

Web 1.0到Web 2.0的转变,具体地说,从模式上是单纯的“读”向“写”、“共同建设”发展;从基本构成单元上,是由“网页”向“发表/记录的信息”发展;从工具上,是由互联网浏览器向各类浏览器、RSS阅读器等内容发展;从运行机制上,由“Client Server”向“Web Services”转变;作者则由程序员等专业人士向全部普通用户发展。

目前Web 2.0还没有一个明确的概念,目前一个比较清晰的定义是这样定义Web 2.0的:

“Web 2.0是以Flickr、Craigslist、Linkedin、Tribes、Ryze、Friendster、Del.icio.us、43Things.com等网站为代表,以Blog、TAG、SNS、RSS、WIKI等应用为核心,依据六度分隔、XML、Ajax等新理论和技术实现的互联网新一代模式。”

虽然Web 2.0的定义模糊,不过一个普遍的特征是与使用者互动性更高。另一项特征是Aajx技术的应用,使得前端Web应用可以和后端数据库互动,将XML信息重新整理、重组再显示到网页上。这也使得新一代的网站应用必须兼顾使用者经验及信息与商业流程。

如果Netscape可以称为Web 1.0的前驱,那么Google几乎可以肯定是Web 2.0的旗手,只要看看他们的首次公开上市是如何地揭示了各自的时代就清楚了。所以我们就从这两个公司和其定位的差别入手。

Netscape以传统的软件摹本来勾勒其理念“互联网作为平台”:他们的旗舰产品是互联网浏览器,一个桌面应用程序。同时,他们的战略是利用他们在浏览器市场的统治地位,来为其昂贵的服务器产品建立起市场。从理论上讲,在浏览器中控制显示内容和程序的标准,赋予了Netscape一种市场支配力,如同微软公司在个人计算机市场上所享受的一样。

最终,浏览器和网络服务器都变成了“日用品”,同时价值链条也向上移动到了在互联网平台上传递的服务。

作为对比,Google则以天生的网络应用程序的角色问世,它从不出售或者打包其程序,而是以服务的方式来传递。客户们直接或间接地为其所使用的服务向Google付费。原有软件工业缺陷荡然无存,没有了定期的软件发布,只需要持续地改善;没有了许可证或销售,只需要使用;没有了为了让用户在其设备上运行软件而不得不进行的平台迁移,只需要搭建宏大的、由众多个人计算机组成的、可伸缩的网络,其上运行开源操作系统,及其自行研制的应用程序和工具,而公司之外的任何人则永远无法接触到这些东西。

虽然Netscape和Google都可以被描述为软件公司,但显然Netscape可以归到Lotus、Microsoft、Oracle、SAP,以及其他发源于20世纪80年代软件革命的那些公司所组成的软件世界。

而Google的同伴们,则是像eBay、Amazon、Napster乃至DoubleClick和Akamai这样的互联网公司。这些互联网公司的兴起,标志着Web 2.0正式走上了Web历史舞台。

1.1.1.4 Web 2.0 特征

如前所述,Web 2.0并不是一个具体的事物,而是一个阶段,是促成这个阶段的各种技术和相关的产品服务的一个称呼。所以,我们无法说,Web 2.0是什么;但是可以说,哪些是Web 2.0。

WikiPedia的Web 2.0条目下列出了这些条件(引自维基百科):

■ CSS和语义相关的XHTML标记;

■ Ajax技术;

■ Syndication of data in RSS/ATOM;

■ Aggregation of RSS/ATOM data;

■ 简洁而有意义的URL;

■ 支持发布为Web log;

■ RESTian(preferred)或者XML WebService API;

■ 一些社会性网络元素。

必须具备的要素有:

■ 网站应该能够让用户把数据在网站系统内外倒腾;

■ 用户在网站系统内拥有自己的数据;

■ 完全基于Web,所有的功能都能通过浏览器完成。

虽然这只是一家之言,不过,对于其中谈到的几个要素,大家还是公认的。

■ 基于RSS/ATOM/RDF/FOAF等XML数据的同步、聚合和迁移。

■ 社会性因素。内容跟着人走,内容又能够被用户自由地组合,也就是说,用户能够自由地借助内容媒介,创建起一个个的社群,发生各种社会性的(网络)行为。此外还有标签,以及建立在开放标签系统之上的Folksonomy。

■ 开放API。目前Amazon、Flickr、Google map等都开放了API,可以利用这些API快速建立各种Web 2.0应用。

上面这些内容中,主要包括两条:微内容和用户个体。除了这两条最基本的外,还可以考虑社群内的分享,以及提供API,如图1-1所示。

图1-1 Web 2.0

■ 微内容:英文是microcontent。用户所生产的任何数据都算是微内容,比如一个Blog、评论、图片、收藏的书签、喜好的音乐列表、想要做的事情、想要去的地方、新的朋友等。这些微内容,充斥着我们的生活、工作和学习,它的数量、重要性,还有我们对它的依赖,这些都是Web 2.0重要的数据基础。我们每天都生产众多的微内容,也消费着同样多的微内容。对于Web 2.0来说,对微内容的重新发现和利用,如何帮助用户管理、维护、存储、分享、转移微内容,就成了关键。

■ 用户个体。对于Web 1.0的典型产品/服务来说,用户没有具体的面貌、个性,它只是一个模糊的群体的代名词而已。但是对于Web 2.0的产品和服务来说,用户是个实实在在的人。Web 2.0所服务的,是具体的人,而不是一个如同幽灵般的概念。并且,这个人的具体性,会因为服务本身而不断地充实起来。如何为这个具体的个体服务,是Web 2.0设计的起点。

因此,可以被称作Web 2.0的产品/服务将是这样的:

■ 服务于用户个体的微内容的收集、创建、发布、管理、分享、合作、维护等的平台。

■ 微内容的XML表现、微内容的聚合、微内容的迁移、社会性关系的维护、界面的易用性等,以及是否开源、参与、个人价值、草根、合作等。

归纳起来,Web 2.0与Web 1.0的区别就在于:“Web 1.0天天谈门户,Web 2.0谈个人化;Web 1.0谈内容,Web 2.0谈应用;Web 1.0谈商业模式,Web 2.0谈服务;Web 1.0谈密闭、大而全,Web 2.0大家谈开放、谈联合;Web 1.0谈网站中心化,Web 2.0谈个人中心化;Web 1.0谈一对一,Web 2.0谈社会性网络。”

1.1.1.5 未来趋势与Web 3.0

所有人都在关心Web的发展前景,所有人都想知道10年以后的Web会成长成什么样子。要回答这些问题,没有谁比W3C更有权威了。W3C明确地告诉我们:Web的未来是语义化的Web(Semantic Web)。今天的Web可以方便地生成、传递和展现各式各样的信息,但它还只是一个信息的“容器”,很难揭示出信息本身的内容和特性。与此相对的是,未来的语义化Web是一种懂得信息内容的Web,是真正的“信息管理员”。

从技术角度看,XML语言统一了信息的表达方式,但这离揭示信息内容的目标还相距甚远。1998年,W3C和一些研究机构开始对元数据(Metadata)进行研究。元数据是描述数据的数据,可以揭示信息的内容特性。1999年,Netscape提出的RSS(Rich Site Summary)建议标准是用元数据技术描述新闻等信息内容的第一次尝试。1999年,W3C的研究小组提出了RDF(Resource Description Framework)标准草案。RDF在XML语法的基础上,规定了元数据的存储结构和相关的技术标准。使用RDF语言,我们可以用统一的、可交换的格式揭示出信息本身的各种特性。2001年,W3C又开始着手制定OWL(Web Ontology Language)标准。OWL语言也是一种符合XML标准的语言,它比RDF又前进了一步,可以更加深入、细致地描述信息内容。在RDF和OWL语言的帮助下,我们能让Web上的信息内容变得更容易理解,更便于交换和共享。2003年,W3C成立了语义化Web Service研究小组(Semantic Web Services Interest Group),研究在Web Service中加入语义技术的相关问题。2004年2月,W3C宣布RDF和OWL标准正式成为W3C的建议方案,这标志着语义化Web的研究正式开始。

随着语义化Web的诞生和发展,Web开发技术也必将经历更为重大的变革。可以预见的是,在未来的几年里,还会有许多新的开发技术或开发平台出现。从静态技术到动态技术,从开发平台到应用模型,从传统Web到语义化Web……为了让更多的人获得更有价值的信息服务,Web开发者们也许还会经历一次又一次的技术浪潮,还会面临更为严峻的技术挑战,但这一切都是为了互联网的根本目的即信息共享服务的。

1.1.2 Web 2.0相关技术

1.1.2.1 XML语言及相关技术

如果说HTML语言给Web世界赋予了无限生机的话,那么,XML语言的出现可以算成是Web的又一次革命。按照Tim Berners-Lee的说法,Web是一个“信息空间”。HTML语言具有较强的表现力,但也存在结构过于灵活、语法不规范的弱点。当信息都以HTML语言的面貌出现时,Web这个信息空间是杂乱无章、没有秩序的。为了让Web世界里的所有信息都有章可循、有法可依,就需要一种更为规范、更能够体现信息特点的语言。

1996年,W3C在SGML语言的基础上,提出了XML(Extensible Markup Language)语言草案。1998年,W3C正式发布了XML 1.0标准。XML语言对信息的格式和表达方法做了最大程度的规范,应用软件可以按照统一的方式处理所有XML信息。这样,信息在整个Web世界里的共享和交换就有了技术上的保障。HTML语言关心的是信息的表现形式,而XML语言关心的是信息本身的格式和数据内容。从这个意义上说,XML语言不但可以将客户端的信息展现技术提高到一个新的层次,而且可以显著提高服务端的信息获取、生成、发布和共享能力。为了将XML信息转换为HTML等不同的信息展现形式,1999年,W3C制定出了XSLT标准。同一年,IE 5.0增加了对XML和XSLT的支持。

现在,网站的开发者可以直接使用XML语言发布信息了。针对不同的应用领域,人们还制定了许多专门的XML规范。例如,2001年W3C发布的SVG(Scalable Vector Graphics)1.0标准就是一种用XML语言表达的、全新的二维矢量图形格式。开发者可以用SVG格式描述大多数已有的Flash动画。与Flash格式相比,符合XML标准的SVG格式显然更有利于信息交换和共享。

Web本身就是一个最大的分布式应用系统。对于分布式开发而言,XML技术也大有用武之地。一个明显的事实是,如果能让分布式应用借助XML格式交换信息,那么,以往横亘在分布式架构上的信息交换难题也就迎刃而解了。1999年,W3C和相关的企业开始讨论设计基于XML的通信协议。2000年,W3C发布SOAP(Simple Object Access Protocol)协议的1.1版。利用SOAP协议传递XML信息的分布式应用模型就是Web Service。2001年,W3C发布了WSDL(Web Services Description Language)协议的1.1版。SOAP协议和WSDL协议共同构成了Web Service的基础。随后,J2EE和.Net这两大企业级开发平台先后实现了Web Service,并将其视为平台的一项核心功能。

Web Service对于Web开发者的重要意义在于,当需要在不同的服务器端、不同的客户端乃至不同的应用类型、不同的计算设备之间传递信息时,以往的分布式开发技术或者因为适应性不强,或者因为扩展能力不足,都难以满足现代Web开发的需要,而Web Service正好填补了这一空白。

1.1.2.2 Ajax技术

基于XML的异步JavaScript,简称Ajax,是当前Web发展(称为Web 2.0)中的一个重要技术。这个术语源自描述从基于网页的Web应用到基于数据的应用的转换。在基于数据的应用中,用户需求的数据如联系人列表,可以从独立于实际网页的服务器端取得并且可以被动态地写入网页中,这极大得地提高了缓慢的Web应用体验,使之像桌面应用一样具有良好的交互性。

Ajax的最大特色在于用户体验。在使应用更快响应和创新的过程中,定义Web应用的规则正在被重写,例如用户通常希望每一次按钮点击会导致几秒的延迟和屏幕刷新,但Ajax正在打破这种长时间的状况。因此用户需要重新体验按钮点击的响应了。

可用性是Ajax令人激动的地方,而且已经产生了几种新颖的技术。其中最引人注目的是一种称为“黄色隐出”的技术,它在数据更新之前将用户界面变为黄色,更新完成后立刻恢复原来的颜色。Ajax开发人员将用户从Web应用,的负载中解放出来;小心地利用Ajax提供的丰富接口,Ajax开发人员就可以开发像桌面应用一样的Web应用。

1.1.2.3 Blog

Blog的全名应该是Web log,后来缩写为Blog。Blog是一个易于使用的网站,你可以在其中迅速发布想法、与他人交流或从事其他活动,所有这一切都是免费的。Blogger就是写Blog的人。从理解上讲,博客是“一种表达个人思想、网络链接、内容,按照时间顺序排列,并且不断更新的出版方式”。简单地说,Blogger是一类人,这类人习惯于在网上写日记。

关于Blog/Blogger的中文名称,其实有很多争论,有称为“博客”,也有称为“网志”,中国台湾还有称之为“部落格/部落客”。现在基本统一为“博客”,其中根据博客内容的不同,又有博客、播客之分,博客强调文字性,而播客则强调视频。

博客是继E-mail、BBS、ICQ之后出现的第4种网络交流方式,代表着新的生活方式和新的工作方式,更代表着新的学习方式。通过博客,让自己学到很多,让别人学到更多。

1.1.2.4 RSS

RSS是站点用来和其他站点之间共享内容的一种简易方式(也叫聚合内容)的技术。最初源自浏览器“新闻频道”的技术,现在通常被用于新闻和其他按顺序排列的网站,例如Blog。但是RSS没有一个统一的名称,下面是RSS的缩写。

■ Really Simple Syndication(真正简易的聚合)

■ Rich Site Summary(丰富的站点摘要)

■ RDF Site Summary(RDF站点摘要)

利用RSS,我们可以:

(1)订阅Blog(在Blog上,你可以订阅自己工作中所需的技术文章;也可以订阅与自己有共同爱好的作者的日志。总之,Blog上你对什么感兴趣你就可以订什么)。

(2)订阅新闻(无论是奇闻怪事、明星消息、体坛风云,只要你想知道的,都可以订阅)

通过RSS,我们可以订阅最新的新闻消息,这些新闻具有如下特点:

■ 没有广告或者图片来影响对标题或者文章概要的阅读。

■ RSS阅读器自动更新定制的网站内容,保持新闻的及时性。

■ 用户可以加入多个定制的RSS提要,从多个来源搜集新闻整合到单个数据流中。

(3)扩大了网站内容的传播面,也增加了网站访问量,因为访问者调阅的RSS文件和浏览的网页,都是从网站服务器上下载的。

■ RSS文件的网址是固定不变的,网站可以随时改变其中的内容。RSS内容一旦更新,浏览者看到的内容也随即更新了。

1.1.2.5 Tag

Tag(标签)是一种更为灵活、有趣的分类方式,你可以为每篇日志、每个帖子或者每张图片等添加一个或多个Tag(标签),你可以看到网站上所有和你使用了相同Tag的内容,由此和他人产生更多的联系。Tag体现了群体的力量,使得内容之间的相关性和用户之间的交互性大大增强。

比如,你在一篇日志上添加了“读书”和“Tag”两个标签,就能通过这两个Tag看到和你有相同兴趣的其他日志。同样,如果你给自己的网络书签贴上不同标签,那么,在下一次去寻找时,会轻易找到自己想要的信息。

那么,如果我贴了Tag,能产生什么效果呢?首先,信息将会条理化;其次,当积累了一定数量的Tag之后,你会发现自己最关心的话题。Google的“我的搜索历史”功能就采用了标签,你的每次搜索关键词都可以成为Tag,之后,你会了解自己这一天在关心什么。

当然,你也可以看到有哪些人和自己使用了一样的Tag(标签),进而找到和自己志趣相投的人。

1.1.2.6 WiKi

WiKi概念的发明人是Ward Cunningham,该词来源于夏威夷语的“wee kee wee kee”,原本是“快点快点”(quick)的意思。

WiKi——一种多人协作的写作工具。WiKi站点可以由多人(甚至任何访问者)维护,每个人都可以发表自己的意见,或者对共同的主题进行扩展或者探讨。

WiKi指一种超文本系统,这种超文本系统支持面向社群的协作式写作,同时也包括一组支持这种写作的辅助工具。有人认为,WiKi系统属于一种人类知识网格系统,我们可以在Web的基础上对WiKi文本进行浏览、创建、更改,而且创建、更改、发布的代价远比HTML文本小;同时WiKi系统还支持面向社群的协作式写作,为协作式写作提供必要帮助;WiKi的写作者自然构成了一个社群,WiKi系统为这个社群提供简单的交流工具。与其他超文本系统相比,WiKi有使用方便及开放的特点,所以WiKi系统可以帮助我们在一个社群内共享某领域的知识。

WiKi最适合做百科全书、知识库、整理某一个领域的知识等知识型站点,几个分在不同地区的人利用WiKi协同工作共同写一本书等。WiKi技术已经被较好地应用在百科全书、手册/FAQ编写、专题知识库方面。WiKipedia,中文名称为“维基百科”,是目前基于WiKi的全球最大的自由的网络百科全书,是一个自由、免费、内容开放的百科全书协作计划,参与者来自世界各地,并且其内容和规模都已经超过了《大英百科全书》。WiKi具有如下特点:

(1)使用方便

■ 维护快捷:快速创建、存取、更改超文本页面(这也是为什幺叫作“wiki wiki”的原因)。

■ 格式简单:用简单的格式标记来取代HTML的复杂格式标记(类似所见即所得的风格)。

■ 链接方便:通过简单标记,直接以关键字名来建立链接(页面、外部链接、图像等)。

■ 命名平易:关键字名就是页面名称,并且被置于一个单层、平直的名空间中。

(2)有组织

■ 自组织的:同页面的内容一样,整个超文本的组织结构也是可以修改、演化的。

■ 可汇聚的:系统内多个内容重复的页面可以被汇聚于其中的某个上,相应的链接结构也随之改变。

(3)可增长

■ 可增长:页面的链接目标可以尚未存在,通过单击链接,可以创建这些页面,从而使系统得到增长。

■ 修订历史:记录页面的修订历史,页面的各个版本都可以被获取。

(4)开放性

■ 开放的:社群的成员可以任意创建、修改、删除页面。

■ 可观察:系统内页面的变动可以被访问者观察到。

1.1.2.7 网摘

“网摘”又名“网页书签”,起源于一家叫做Del.icio.us的美国网站自2003年开始提供的一项叫做“社会化书签”(Social Bookmarks)的网络服务,网友们称之为“美味书签”(Delicious在英文中的意思就是“美味的、有趣的”)。

1.1.2.8 SNS

SNS是英文Social Networking Service的缩写,直译就是“社交网络服务”。SNS是Web 2.0体系下的一个技术应用架构。SNS基于六度分隔理论运作,这个理论的通俗解释是:“在人脉网络中,要结识任何一位陌生的朋友,中间最多只要通过6位朋友就可以达到目的。”放在Web 2.0的背景下,每个用户都拥有自己的Blog、社会化书签。用户通过Tag 、RSS或者IM、邮件等方式连接到一起,按照六度分隔理论,每个个体的社交圈都不断放大,最后成为一个大型网络,这就是SNS。

1.1.3 SOA与Web 2.0

让Web作为机器之间、应用程序之间相互交流协作的平台,就必须在Web中传递程序和数据,而使得这种传递成为可能的技术体系,我们称为Web服务。随着Web 2.0的崛起,Ajax带来了客户端体验的划时代进步,而被称为REST的新的Web应用架构,实现了HTTP风格Web服务的文艺复兴。Web 2.0时代的Web服务是这样的:完全符合Web标准,充分利用HTTP协议的特点,通过REST风格暴露服务,支持Ajax/RIA异步数据传输和界面刷新机制,使用Syndication机制推送数据,以XML表达丰富的、具有初步语义信息的数据,并可方便地被mash-up。SOA的润滑油企业应用就是支撑企业运营的软件系统。纯粹从编程技术上来看,企业应用的开发通常是平淡无奇的,既没有高超的算法,也不涉及精妙的底层炫技,然而企业应用之难却是业界公认的。企业应用需求多变,业务逻辑复杂,工期紧张,对分布性、整合、性能、可靠性和可监管性要求甚高,构成企业应用之难的根本原因。然而,当前我们采用的基于构件的软件思想与业务层面距离过大,各技术流派之间难以整合,这些偶发复杂性加剧了企业应用的难度。SOA正是试图从这两方面来降低企业应用开发和运维的复杂性。首先,SOA以服务为基础。这一概念既可以作为描述业务的元素和语言,也可以在技术空间得到直接的表达,从而成为沟通业务与技术的桥梁,也缓解了技术与业务之间“阻抗不匹配”的困难,使得IT能够随业务需求灵活应变。其次,SOA通过标准化的、跨平台的技术规范,使得运行在不同地点、不同环境中的服务能够被统一调配组装,从而在业务流程上实现整合。Web 2.0的技术浪潮给SOA带来一些新的思路。Web是天生的标准化、高效、高度可扩展的分布式文档系统,通过Ajax/RIA表现出丰富的人机交互界面。mash-up是构建组合应用简单而理想的方式,而且mash-up所生成的新应用本身可以作为XML数据源而成为新组合应用的基础,这些都与SOA的目标惊人的一致。能否将Web 2.0的技术根据SOA的需求加以整合改造,从而形成一个轻量级的SOA技术栈呢?这是一个很自然,同时又令人心驰神往的境界。APP(ATOM Publish Protocol)协议已经具备了丰富的数据操作能力,XQuery语言也已经成为W3C正式标准,有人提出要给REST架构添加一个类似WSDL的服务契约描述协议,也有一些企业正在研制完整的Web Oriented Architecture技术栈,将Web技术引入企业IT领域。Web 1.0给企业应用带来的变化是巨大的,所谓B/S模型现在已经成为企业应用的绝对主流。但是从根本上讲,Web 1.0没有触及到企业应用的核心问题,只是给企业应用安装了一副脸面。能够深刻改变企业IT的是SOA,而Web 2.0又恰好与SOA形成默契的搭档。所以,Web 2.0不但将成为企业应用的新面孔,而且成为SOA的润滑剂,会深入到SOA当中,深刻改变企业应用的开发思路。这部分关于SOA的具体技术内容,我们将在后续的系列丛书中进行专门的介绍。