技术开发 频道

软件2.0时代 毛新生谈他眼中的Web2.0

【IT168技术分析】
    IBM的首席架构师毛新生讲述了对于Web 2.0的看法。他认为,在讨论Enterprise 2.0之前,应该先来了解什么是Web2.0以及Web。在演讲中他提到,Web是一个“活物”,是一个时时新、日日新,每天都在生长着的世界上最大的开放分布式系统。Web和以前的IT系统之间的差别主要体现在两个方面:

    首先,从社会角度来看,Web站点所服务的人数规模前所未有的庞大,动辄就是百万、千万。然而如此规模的人群却也能很好的共处,还能通过协作做一些很有意义的事情。而以前要做到这点并不容易。

    其次,从技术角度来看,创建和提供这些服务的方式,也和过去是如此的不同。比如Google、Amazon,他们所使用的硬件、构造的软件、使用的技术,甚至技术人员所说的话,都和传统企业世界里的不同。

    如果要探讨推动Web发展的第一驱动力,其实就是千千万万的普通人。在全球宽带化的背景下,越来越多的人参与到其中,并在参与的过程中和别人建立联系、分享想法、创建内容,甚至编写小的应用等等。因此线下的种种事情,都能反映到线上的虚拟世界;而线上虚拟世界的种种交互和参与,又能带动线下的生活、工作和商业的大幅度变化。

    这样的变化给Web带来了巨大的商业潜力,在利益驱使下,相当多的 *.com公司前仆后继地去进行技术和商业模式的创新。而这些创新主要集中在下面两方面:

    一、如何将内容、应用和服务带给一个非常大规模的人群?如何大规模的将内容分发出去?能不能大规模生产简单的应用和工具来供人们使用?这需要在软件开发方法、基础架构、技术和开发过程、软件存在形态和供应方式等等方面,都要发生大的变化。

    二、在拥有大规模使用人群之后,如何让这些人从以前Web 1.0时单纯的消费者变成生产者?因此,我们可以看到Web 2.0出现了新的模式:一个网站什么都没有,只有一点计算资源,然后运作一个品牌、确定一个方向、提供一些工具,剩下的就让这群人自己玩。然后,寻找一种设计模式,一种全新的软件模式,想办法把这群人搭的台、唱的戏中比较精华的东西抽取出来。而这种模式也就是群体智慧。

    Web 2.0展示了如何通过社会计算,将大规模人群组织起来,为他们搭建一个环境和平台,由他们自己去协作,去分发和生产大规模的内容,甚至创建各种各样大量简单的应用,来服务于一个大规模的、有机的、动态的群体所需要的生活、工作和娱乐方式。

Web 2.0带来的技术变革

    Web 2.0在这样的尝试中,逐渐找到了一些新的模式,而这些模式如今已遍及了我们的生活、商业、技术和社会的各个层面。所以,Web 2.0实质上是一个社会、商务、技术三相融合的发展趋势的总和。

 
图:Web 2.0 是一个社会、商务、技术三相融合的发展趋势

    在技术上,我们发现一种新型分布式架构范式在浮现——这就是WOA(Web Oriented Architecture,面向Web的体系结构),这也是SOA(Services Oriented Architecture,面向服务的体系结构)的最新发展。

    过去Web 1.0的网络在逐渐被由结构化的数据(如REST,即Xml Over Http)或者半结构化的数据(如Feeds)这样的充满了语义的网络所替代,网络的结构化、语义化为WOA的出现奠定了技术基础。而社会层面的发展也非常的迅速,像 Blog\Wiki这样的社会计算的工具仅仅是开始的一个小插曲而已,未来还会出现拥有更加强大能力,支持更大大规模人群协作、内容分发,和拥有更多新功能的应用。

    所以,Web 2.0其实就是在将信息和服务大众化。也就是让不具备特别IT技能的普通人,也有能力去消费各种想要的内容、数据和服务。在技术上它从三个大的方面来实现:

    第一,将软件服务化进行到底。当前的SOA其实就是在谈论如何将企业内部的核心业务流程,相对稳定和关键的信息资源进行拆分重组,变成可重用、可组装、位置透明和技术无关的及基于分布式架构的服务。而此时,Web 2.0又从消费者和Web的角度启动了另外一种模式的服务化。所以,无论是国外的Amazone、eBey,还是国内的淘宝、阿里巴巴,他们所做事情的关键点就是服务化。

    第二,就是如何能够将大规模的人群很好地,有机地组织起来。即大家可以自由活动,但同时也非常有序;大家可以很自由的去做事情、去分享,但也能出来很好的结果。这方面是社区、社会计算等所努力去探索的地方。

    最后,就是如何“简化”,如何将消费和提供服务变得简单和傻瓜化,让大众都能够做到。相比较而言,SOA处理的比较多的还是IT领域专业的东西,SOA也是给IT专业人员用的,主要用在处理企业内部比较复杂的事情。这也是WOA和SOA的一个很重要的区别。

在这样的一些趋势之下,Web 2.0也逐步的浮现出相应的编程模型,主要有下面几个大的要素:

    首先Web 2.0是一个轻量级的编程模型,用来构建一些必要的逻辑,这些逻辑通常会以REST,Feeds的形式表现出来。其背后的理念是:Web as the platform。

    其次是数据服务,即如何轻松的将来自不同地方的数据进行融合、过滤并重新构造成新的数据,同时确保数据的一致性、安全性、可管理性和访问控制等。这背后的理念是:Web as the database。

    然后UI部分是RIA(Rich Internet Applications),即如何利用Ajax技术或者其他技术去提供非常易用,并和过去大不相同的用户体验。这背后的理念是:Browser as the application platform。

在这些编程模型的基础之上有两个十分重要的关键点:

    一是我们如何将这些数据和服务转化为 Mash-able Assets,即可以被用来Mash-up的东西。什么是Mash-up?Mash-up之于Web 2.0,就好比是集成相对于SOA;但不同之处在于,SOA集成需要IT专业知识来做,而Mash-up只需要普通人拖拖拽拽就可以完成。

    二是有了这些Mash-able Assets之后,我们如何将他们放在一起,这就需要由企业级的Mashup Makers来做。通过一些工具,很简单的将这些数据和服务连接起来,形成新的应用。

    当然,Web 2.0编程模型还在持续的演化,其结果就是当前大家所谈论的 WOA。从本质上讲,WOA和SOA遵循同样的哲学、设计原则和范式。而当我们将WOA看作是SOA范式的一种实践或者实例的时候,那么传统SOA的内涵将发生变化。我们目前通常所讲的SOA,即以WS-*协议为主构建服务的SOA,我们确切地称之为 Enterprise SOA;而WOA和Enterprise SOA都是SOA范式的不同实现。

WOA和Enterprise SOA的差别
    那么WOA和Enterprise SOA的差别又是什么?

    服务的表现形式从Enterprise SOA基于WS-*等协议,转变为WOA基于简单的XML over HTTP,即REST的方式。其次,WOA交换的数据是经过编码的XML,或者JSON以及ATOM。最后,WOA通常使用Ajax等RIA技术来构建用户界面。

    我们再来看看WOA非常好的实践中的一些有趣的范式:

    UI层运行在十分轻量的Web服务器和浏览器中,不需要任何容器,很简单;
内容也很简单,人和机器都能够阅读;
所使用和遵循的技术和标准是Web几个最成熟的技术,如HTML,XML,CSS,JavaScript,HTTP,RSS,REST等;

    当然,引入WOA范式给我们带来巨大的好处:WOA和Enterprise SOA可以用来分别处理不同领域的问题。Enterprise SOA 用来处理企业中稳定性、确定性比较强的,比较核心的业务流程和信息资产等;而WOA用来处理比较边缘性的应用,一些不正式和不确定的过程。

    比如和合作伙伴的交互、人与人之间的协作、一些情景应用等等,这样的应用,都让IT工程师用Enterprise SOA来实现很不现实;而WOA则提供了一种方式能让用户自己来搭建这样的应用,这些应用做出来之后,还可以一生二、二生三、三生万物……WOA作为SOA一种简化的架构范式,事实上是将SOA的实践推进到了一个新的阶段和境界。
0
相关文章