09 十月, 2007 14:42
BI 的前景
“我最佩服的是林肯,他很善于用人,能把各种各样的人,甚至是曾经的竞选对手的智慧都发挥到极致”。2007年初夏的一天,John Schwarz在接受本刊的采访时说道。作为Business Objects这家商务智能软件供应商的CEO,Schwarz不断地强调人的重要性。“商务智能(BI,Business Intelligence)也进入了2.0时代。如果说在过去的1.0时代,商务智能意味着数据,那么BI2.0时代,核心将是人——用户将发生翻天覆地的变革,高科技让每个人都成为专家”。Schwarz对高科技的憧憬,让人看到了一名“科技乐观主义者”特有的自信。
1990年Bernard Liautaud成立了Business Objects公司,在国际上率先开辟了商务智能软件市场,十多年来,Business Objects逐渐成为商务智能阵营中最具影响力的独立供应商之一。Gartner的调查数据显示,2000年到2004年之间,企业的IT投资排在第一位的一直是安全,在商务智能方面的投资2000年时仅排在第14位,而到了2007年却突飞猛进,排到了第一位,而且预计还在上升。
两年前Bernard退居二线,时任赛门铁克公司总裁兼COO的Schwarz加入Business Objects,成为这家商务智能先锋新的领航人。在Schwarz执掌Business Objects前后,商务智能市场中的角逐者开始掀起此起彼伏的并购风暴。就在Schwarz接受本刊独家专访之后不到两周,Business Objects宣布收购Inxight软件,一家从施乐公司分离出去的搜索技术公司。而在快速变化的市场中,目前规模在5500人,年收入为12.5亿美元的Business Objects也有可能成为一些更大的软件商的囊中之物。
“我们对被收购丝毫不感兴趣,保持独立很重要”。Schwarz告诉记者,他为Business Objects设立了一个远景目标,在2009年之前,把Business Objects做成一家年收入上几十亿的独立软件公司。精力充沛的Schwarz在赛门铁克期间,就曾经帮助这家公司把业务从不足10亿元美元做到超过27亿美元。
虽然面对同样的数字压力,“然而,这一次很不同,”在谈论业务和技术时一直很严肃的Schwarz,眼睛里开始出现柔和的光芒,“Business Objects,商务智能,不但可以推动商业,而且是可以挽救生命的高科技”。
热爱航海的Schwarz掌舵Business Objects之后,除了像其他公司的CEO一样会见股东、拜访客户以外,把更多的时间花在了和不同行业、不同职位、不同层次的人进行交谈,从谈话中吸取对方的创新想法。对于行业趋势的深入了解让Schwarz有了更大的信心,“现在已经是商务智能收获的季节了。”
用科技挽救生命让我感到很兴奋
Q:对你本人而言,在软件业界有着丰厚的经验,你是如何运用以往获得经验,来经营一家由众多精英组成的公司?
A:我其实不太确定自己的经历是否称得上丰厚。我在软件行业工作了35年,所以,每一类软件都接触过,从操作系统到数据库再到应用程序。我也曾经目睹了一家公司从100人的小规模逐步发展到8000人的大公司。所以,我获得了一些鉴赏能力,能实现从创新的想法到工程开发,到产品,然后到客户的过程。
我意识到的最核心的问题在于,如何在个体创新和必要的控制之间实现平衡,因为后者对于高质量的创造和保持专注的方向来说,是至关重要的。
Q:在你30多年的高科技从业生涯中,最让你感到兴奋的有哪些时刻?
A:其实有许多。加入Business Objects是让我很兴奋的一件事情。因为在这之前,我的职业生涯中全是在解决技术问题、数据库问题。加入Business Objects之后,我第一次尝试使用高技术手段来解决商业问题和挽救生命。
Q:挽救生命是怎么讲?BO只是一家做软件的公司????
A:是的,我们是在挽救商业的同时也在挽救生命。举个例子,我们曾经和一个应急中心合作。他们在医院中使用我们提供的工具来监控疾病、疫情和自然灾害。我们还帮助他们实施了器官移植的管理项目。这些精彩的案例让我直接看到,从科技出发可以去挽救生命。这是前所未有的经历。
Q:那在你的职业生涯中,经历过的最困难的时刻是什么时候?
A:那应该是2000年当我离开IBM的时候,那时我加入了一家小公司,为媒体行业提供电子商务。主要是出售音乐、广播和书籍。最后我们不得不在市场上作价,把这家公司卖掉。这对于我来说是很难过的事情,因为在当时,除了出售公司以外,我们看不到其他更好的出路。
Q:你觉得自己的领袖风格是怎样的?
A:我比较民主、开放,善于倾听。我总是尽量把来自不同的人的不同想法整合在一起。但是我比较缺乏耐心,所以,我总是告诫自己,不要急着做决定,要等到时机成熟,充分考虑事情的正反两面。此外,我非常注意不使公司业务个人化——有很多CEO是这样做的。这家公司有5500人,所以,关键在于让每个人都承担一部分责任。我的工作只是去引导和协调,而不是唯一的决策者。当然我必须以CEO的身份来代表公司形象,但我不会让自己成为唯一的决策者。
商务智能直接进入收获季
Q:高树楷先生(Business Objects大中华区总裁)曾经比喻,商务智能的萌芽期就像上海的春天一样,非常短暂,很快就会进入夏季。那么你预计,对商务智能来说,收获的季节什么时候会来到?
A:现在就是了。现在,人们无论是对商业管理,或是机构管理都热情高涨。如果你看看Gartner或者IDC的报告就会发现,在商务智能方面的投资已经成为企业IT投资中优先度最高的项目。
Q:在这样利好的背景条件下,你对Business Objects的业务预估也会有所提升吗?
A:我们没有具体的预测数字。我们希望成为一个年收入几十亿美元的一家公司。去年我们做到12.5亿美元,今年又有明显的增长。我们相信在2009年以前,收入可以突破20亿,但这个不是计划,是我们的愿景。
Q:要实现这样的愿景,你预计要跨越怎样的障碍?
A:我想目前最大的挑战来自于技能方面。不光是在公司内部,我们的合作伙伴和客户也面临这个问题,如何深刻理解客户在业务中遇到的问题,如何理解正确的决策点,如何把数据呈现给用户,帮助他们更容易地做出最佳决策,这些都需要熟练的技能。我们在不断创造工具帮助人们使用数据,但是却仍然缺乏对于真正需求的了解。
另一个挑战来自于Oracle、SAP等大公司在市场上制造的迷雾,他们宣称商务智能是ERP应用在某些方面的延续,这是没有道理的。商务智能的基础价值在于,它是所有应用的延伸,而不仅仅是ERP。
创新:有序的自由
Q:对于Business Objects来说,最重要的竞争力来源于哪里?
A:随着市场上兼并的不断发生,许多真正很有创造性的人才不太喜欢在大公司里面工作,他们会选择加入同样具有创造性,而且反应快速的公司。我们正是这样一家独立、行动迅速而又专注的公司,不会由于人数众多以及内部系统庞大而受困。
同时,我们公司的组织架构并非错综复杂的形式,我们寻求的是网络式的结构,采取分散式的管理,以便方便地搜集到来自各个角落的创新想法。因为我们对于那些有能力引领自己未来的员工,我们会充分地赋予权力。我们毫不犹豫地采取自下而上式的创新机制,显然,这样的机制形成,需要管理者投入时间,我们会鼓励员工参与到这一过程中。
Q:关于自下而上的创新,在公司内部有没有一些成功的实例?
A:例如,网络查询服务(Query)现在是我们的产品上的一颗明珠,但这个想法最初正是来自于和用户的一次会面。当时我们有一个从事生物科技的美国客户,他们需要远程读取公司内部数据库里的信息,而他们不想重新构建基础设施,只想实现简单的功能。我们的一名客服工程师研究了一下,然后提出,如果我们能够为产品界面提供查询入口,就能满足客户的需求。然后他就召集了一些工程师,开发了一套模型,并向客户演示,果然奏效。其后,他们看到了这个功能的强大作用,就把它加到了企业数据库当中。这样的创新是以客户需求为导向的。
Q:在Business Objects你是怎样实现自下而上的创新?
A:首先我们有一个愿景,确保公司里的每一个人都认可这一愿景。具体的来说,就是要通过信息的智能化,帮助客户改善他们的业务模式。每个员工都在思考,他们要如何做才能帮助把这一切变成现实。我们有专门的流程去搜集员工的想法,然后整理、排序,并测试这些想法的可行性,想方设法把它们实现。
例如,我们建立了一个“实验室”,把最好的、最有创造力的三四十名开发者放进去,但其实这个团队是分布在温哥华、巴黎、印度和中国等不同地点,他们不断收集新的想法,建造新模型,当发现真正有吸引力的东西,就会把它引入工程开发阶段,最终形成产品。所以,我们采用的是一种既受到管理又相对自由的自下而上式创新。归根结底,我们是一家上市公司,是需要盈利的,但是我们通过管理与创新之间的平衡,尽量不让公司的创新部门背上负担。我们现在这样做还是比较容易的,但如果公司到了10万人的规模就比较难了。所以我们现在保持在一个容易实现互动和快速反应的规模。
软件无处不在,人人都是专家
Q:谈及软件行业的未来发展趋势,你对商务智能的长远预测是什么?
A:从技术的角度来看,有三个大潮流。首先,是网络服务变得日益重要。在网络上,连接不同应用的服务和功能将越来越强大。原先这些应用软件是被设计成独立完成各自的任务的,将来它们将变成可以互相协作。
其次,未来的应用将更多地迁移到移动终端上面。软件将围绕移动终端的特征展开设计,例如,用户界面将会很不一样,要充分考虑到语音操作或适用于移动终端的小屏幕。这将是一个给我们带来革命的趋势。
第三,软件将不仅仅是一个工具,而将变成终极目标。人们在过去要思考,怎样在电脑上打开复杂的浏览器,打开一个个程序。在未来,人们只需要想到简单的动作,获取数据、设计一所房子,就像打个电话一样简单。软件将无所不在,但是却将隐身于人们周围的环境当中。这需要结合图形、语音和媒体的技术来实现。所以,软件会变成环境的一分子。
Q:你认为BI2.0 不同于BI1.0的地方在哪里?
A:最大的不同是,在1.0的时代,你需要专家。你需要专家告诉你,数据在什么地方,如何建立一个报告,如何做查询。而在2.0的时代,每个人都可以做到这一点。每个人都可以读取到数据。每个人都可以协作,社区的概念将形成,尽管里面的人有可能隔着半个地球,说着不同的语言,他们彼此协作共同解决问题的时候,根本不需要知道对方的存在。BI2.0使得人、数据和工具充分融合。
Q:在软件行业,并购时有发生。每一个公司既有可能收购其他公司,也有可能被收购。Business Objects在这方面有什么样的策略?
A:我们所在的行业竞争很激烈,软件公司之间的并购趋势是显而易见的。我们希望做收购者,事实上我们已经在收购其他公司,它们都是非常专注于BI领域的。我们的战略是:在自己擅长的部分依靠自己的力量,在缺乏技能之处通过并购来解决。我们希望成为真正可以把商务智能变成现实的领先者。我们认为,只有保持独立才能做到这一点,所以我们对于被收购丝毫不感兴趣。
Q:你认为怎样做才能保证并购的成功?
A:对并购来说最重要的是寻找合力。在很多情况下,并购只是为了获得用户,而产品的重合却是一个非常难以解决的问题。如果两家公司原来的产品很类似,客户就不得不从一种产品转向另一种,它们是很讨厌这样做的。所以,这是一个代价高昂,吃力不讨好的事情。
我们寻求的是互补性。这意味着尽可能少的产品重合,尽可能多的合力。所以,我们真正收购的是竞争力。购买商务智能方案的客户,和购买财务报告方案的是同一群人。我们在满足客户需求时,并不需要替换他们原来使用的方案。这就是合力。
中国:一步跨越10年
Q:你对中国的商务智能市场有怎样的预期?
A:我们在中国的业务增长很快,目前差不多有100人在负责中国业务。我们认为中国是世界上第三或第四大经济实体。当中国的客户完成了实施ERP以及基本的自动化之后,他们将会对商务智能非常感兴趣。我们已经在一些领先的公司看到了这样的潮流产生。而且我们相信,在世界其他地方需要15年才完成的过程,在中国有可能在两三年内实现。
Q:所以你认为中国有能力一步跨越10多年?是什么让你有这种信念?
A:是的。通过借鉴发达国家的经验,中国可以跳过很多误区,可以看到,错误是怎样产生的,因而可以更开放、更大规模地发展,而且,可以在一开始的时候就采用更先进的方案。
回顾欧美发达国家企业的发展历程,由于自动化产生了许多孤岛,即,一个部门在做一件事情,另一件部门也在做同样的事情,而且到最后它们不能很好地融合,而在中国,我很少看到这样的情况。所以我认为中国可以避免走欧美企业走过的弯路,只用2~3年的时间就可以经历10多年的发展。
约翰·施瓦兹(John Schwarz)个人档案
Business Objects公司CEO
赛门铁克公司前总裁和首席运营官。此前,在IBM 就职长达25年。
目前还担任美国信息技术协会(ITAA)软件部主席。
拥有加拿大多伦多大学的工商管理学位和Manitoba大学的计算机学学士学位。2004年,被Dalhousie 大学授予法学荣誉学士学位。
30 九月, 2007 10:11
作为BizTalk平台的一部分,微软公司的新产品能使程序员尽快地研发出新的针对RFID的应用程序,而不需编写复杂的与读写器及相应硬件连接的接口代码。由于微软公司提供的产品都是捆绑出售,因此作为应用程序供应商可以运用此产品作为一个平台来建立其产品。如Xterprise公司在微软新发布的产品中拥有许多其它的针对RFID的应用程序。这将为所有应用开发商与系统集成商创造RFID应用程序打开了一扇门。
BizTalk RFID的另一个优势是它与其他微软产品的无缝结合,因而能用于位于世界各地各的种组织的各种架构中。拥有微软的这项产品也意味着拥有一大批专业的应用开发商与系统集成商,他们将精通RFID终端用户使用的微软技术。
BizTalk RFID系统还具有鲁棒性。该系统已经由微软的合作伙伴Xterprise公司试运行,至今已经过了一年的测试。另外,微软公司在系统正式宣告发布之前曾让12个系统集成商试用过,很少出现问题。
BizTalk平台目前已较成熟。因其不仅仅是来自微软的几个中间层应用程序,更是一个企业级的平台。Xterprise公司生产的基于BizTalk的装置每个月都在处理数百万的RFID数据,而另一种装置已经安装在近24个生产基地中。
微软推出的低成本的BizTalk RFID解决方案标志着第2个具有领导性的技术公司于今年进入RFID市场。另一个是Intel,该公司于今年3月份 发布了Gen2读写器芯片
查看全文30 九月, 2007 09:55
日前,IBM(中国)发布LotusNotes/Domino8(简称ND8)这个以Web2.0为技术平台的协同工作平台发布的同时,IBM还宣布使用ND8的产品的可以免费使用Open office源代码生成的生产力套件(Productivity tools),作为一般办公软件套件使用。
如果按微软历代office平均300美元来算,每个用户省去300美元。这对于IBM公司来说,绝对不是单纯地想给ND8用户顺便送去300美元大礼那么简单,实在是一个用ND8后台颠覆目前几乎占有95%的前台的MS office的行动。
尽管OpenOffice前身名叫Star Office,其自身是一个可以独立使用的免费开源社区中产品,7年来由SUN提供技术支持.但从应用角度和与微软文档格式兼容方面来说都不太理想。
IBM加入了OpenOffice.org社区,并且将Lotus noteS底层基于eclipse开发重新写过,开发出来的员工生产力套件替换掉自己的亲生儿子Lotus1?2?3办公套件(当然用户也可以花钱买到其升级版本),并在这次作为Louts ND8中的一个办公组件发布的生产力办公套件,不但成为统一通信、统一沟通非同质化的表现,同时说明IBM己经公开在前台产品上招募了SuN,并且和微软直接对阵。.
据悉,Open office已能与Linux无缝联接,如果说,中间协同用ND8,前台操作系统能免费用Linux,加上前台应用生产力套件,起码可以给用户省、越多的用户越省钱多多。
尽管IBM公司的前台操作系统诞生于1994年,2000年后代声称放弃前台桌面定位,OS/2WAP就是证据。近几年突然间,IBM公司意识到,尽管前台应用不赚钱,或者根本赚不到钱(微软也这样认为),可失去了前台市场就等于失去了面对公众的界面,IBM对于用户影响力的减少,无法量化描述,成为IBM公司的硬伤。当然IBM公司可以不承认,可以死撑到底,拼命把自己往企业级用户所用的中间件线上靠。但是为什么又悄悄地将power pc芯片潜入游戏机市场?
IBM公司的市场顾问们应该知道,这是一个消费时代,尽管消费类市场可以带动企业级市场,但必竟不是一个完全的企业用户的时代、这是一个几乎所有IT产品应用向五六级市场进军的时代,这甚至是一个可以人人可以利用IT产品都是成为媒体、都可以导演的时代,难道IBM公司死抱住后台中间件,不肯向前一步?除非IBM顾问团和决策层集体有病。
但是,怎样二次进军前台的战术如何制定、如何实现?再像90年代中期那样拿出什么名叫0S/3之类的操作系统与windows系列、office系列短兵相接,费力费时还没把握取胜?干脆白送!白送?决不能白送,必须拉动ND8!这样IBM有了影响前台产品格局的同时,又有ND8的营业额,还有了面向7.72亿网民的品牌效应,一箭三雕。
当然,这只是IBM的单相思,微软决不是省油的灯,微软在12年前,IBM推出OS/2Wap时就作好了用前台颠覆后台的准备,并且收购了当时exchange、sLQ serber等企业、产品系列的同时,使足了吃奶的劲,把windows推向后台。
推出了Sever级的产品,当然英特尔X86服务器,一路升二路,二路升四路体系结构、加之单核、双核、多核、…CPu、80nm、65nm…半导体工艺…推波助澜,水涨船高,才有了今天PC服务器的这般繁荣,眼看着UNIX己属三流服务器市场日落西山,只靠着升级换代市场为生,或者五年折旧完毕换PC服务器的结果。
这结果IBM能不着急吗?
说完了IBM后台颠覆前台、微软前台颠覆后台的绕口令之后,再来看看市场。尽管每天邮箱垃圾不断,病毒常来烦,动不动莫名其妙地死机,新产品从上市起就打补丁,一直补到产品淘汰…咱们的用户每天还是离不了用现在的office,白送一个Open office咱们大多数用户(那怕有50%)愿意把文件往白送的Open office上转移吗?除非大多数用户成了发烧友。
可不颠覆不行吗?不行,看那价格,看微软那种对待用户不用也得用的劲头,不颠白不颠!IBM公司当然明明知道,颠了也白颠,起码让用户感觉,既使冒险转移文件,起码还有选择。
IBM LOtusND8白送Open office,不管用户领不领情,也虽败尤荣。
27 九月, 2007 09:29
观察过去一年 SOA 在美国的发展,一个愈来愈明显的趋势是,SOA 和传统 EA (Enterprise Architecture;企业架构) 领域逐渐在协作和融合。不久前,美国知名的 SOA 顾问大卫·林锡肯,David Linthicum 在一个由 The Open Group 主办的大会上预言:五年后,大家将不再像现在这么看待 SOA,因为 SOA 将逐渐融入 EA,变成只是 EA 实践中的一部份。此话一出,引发各方激烈的讨论。
对于绝大多数 IT 从业人员来说,"EA" 一直是个模糊而遥远的名词,尽管它已经悄悄存在约二十来年了(这点,从 EA 相关书籍数量之少,便可看出)。在许多世界五百强、一千强的大企业中,尽管在 IT 中存在着 EA 的组织,但这些架构师在组织外的其他 IT 同事眼中,往往是一小撮象牙塔里的文书官僚 (paper-pushers),对于他们实际的工作内容,往往非常陌生,也不关注;许多项目实施团队,对于 EA 架构小组所制定的各种标准和规范,甚至采取 “上有政策,下有对策” 的态度。
要正确了解什么是“企业架构”?首先必须先对 “Enterprise”、即“企业”有一个清楚的界定。制定 EA 规范的机构 The Open Group,对 “Enterprise” 所下的定义是:
若干个组织的集合体,具有共同的目标和/或单一的财务底线。
一个企业可以是:
·一个政府机关
·整个公司
·某公司的一个分支
·一个单独的部门
·一个组织链,所有权同属于某群人/组织
·一个“延伸型企业”,其中包括伙伴、供应商,和客户,以及内部的业务单位
由此可见,EA 架构方法论,对“企业”适用的范围,相当具有弹性。不过,任何企业或组织在实施 EA 之前,应先在宪章中,对 “企业” 的范畴,有清楚的界定。必也正名乎。
把 EA 中的 "E" 交待了以后,我们可以把 EA 简单定义为:一套管理企业 IT 转型计划和变革的一连串动态过程和方法论。它为企业提供一个何去何从的地图,为业务和 IT 变化提供路线,计划,和蓝图。作为一个专业科目,EA 的任务在通过架构督导和治理,来促成业务和 IT 的紧密配合。
在这里,我们看到一个在 SOA 领域不断出现的关键词 -- governance(常见翻译包括:治理、管控、督导、监管)。由此可看出,EA 和 SOA 有着相同的总目标 -- 让业务和 IT 更紧密地配合 (alignment),以 IT 作为重要的竞争工具,进而达成企业的战略目标,包括为客户提供更好的服务、提升客户满意度,进而为股东创造最大的价值。至于 SOA 究竟为 EA 带来什么样的新思维和新方法,稍后再来谈 。
上面对于 EA 的解释,比较抽象。我们可以进一步用城市规划 (City Planning) 来比喻:EA 要做的工作,就是一个城市的整体规划,具体的工作和内容,涉及多几种角色,包括市政府领导(业务拥有者、stakeholder)、建筑师(架构设计)、土建包商(项目管理)、专业施工团队(程序员)。大家都知道,软件设计有许多灵感来自可重复套用的建筑模式 (Design Patterns),被 Gamma 等进一步体系化,一转眼已经走过一轮生肖了;其实 EA 甚至更早便从建筑中得到灵感,例如著名的 Zachman (扎克曼)框架体系,正是受建筑和航天工业的启发,这是二十年前的事了(注:"ch" 在此发 /k/ 的音,美国著名的投资银行 Goldman Sachs,和一家大银行 Wachovia 名字中的 "ch",也是相同的发音)。扎克曼以建筑作比喻,让规划者能将复杂的企业架构内容,分解成水平六层不同的视角来分析,就像前面比喻的城市规划,市政府领导、建筑师、包商,和施工队成员,各层有各层关注和需要的信息;在纵向的维度,再根据六大问句来切割 -- What(数据)、How(功能)、Where(网络)、Who(人、演员)、When(时间、事件)、Why(动机)-- 来一一整理出不同层面的架构信息。扎克曼提供了一个很好的逻辑分类结构,来描述企业信息化的方方面面。
除了扎克曼架构外,其他几个最主流的 EA 架构,包括 The Open Group 的 TOGAF(The Open Group Architecture Framework;读作:偷盖夫)、美国联邦政府的标准架构 FEA、美国国防部的 DoDAF。
TOGAF 的主干是一个包括业务、信息、应用,和技术架构的四维模型:
业务架构:定义业务战略、业务驱动因素、治理 (governance)、组织结构、角色定义,和重要的业务流程
信息/数据架构:描述一个组织的逻辑数据模型、物理结构,和数据管理资源,包括数据的规类、与业务应用的关系、数据的使用和管理策略等
应用架构:对要部署的应用系统,提供一个蓝图,应用间的相互关系,和他们与核心业务流程之间的关系
技术架构:描述用来支持业务、数据、应用服务部署的基础设施能力,包括中间件、网络、通信等软硬件,及相关的平台和技术标准等
TOGAF 提供一套详细的方法过程(称作 ADM; Architecture Development Method),依据业务需求,来指导企业架构的开发。ADM 和 Zachman、FEA
等框架间没有冲突或矛盾,而是为所有的框架,提供一个从收集、记录现况,然后制定未来蓝图愿景,再分析鸿沟,并制定如何填满鸿沟的计划;一个自上而下的规划过程。
看到这里,可能有人会问:EA 工作如果做得好,规划出来的项目都能一一落实,是不是就不需要 SOA 了?换一个角度问,SOA 是否给传统 EA 领域,带来什么新的理念和方法?
前面一开始提到,多年下来,许多企业的 EA 组织,在一般 IT 同事的心目中,往往是一群定标准规范、做 PPT、画蓝图,定架构发展路线图的理论家。换句话说,EA 规划和项目的执行成效,落实与否之间,往往有一个断层。在许多企业中,EA 的角色,最后往往流于只是在制定软硬件采购标准这类的工作。但制定标准规范这件事本身,并不能使业务更加敏捷灵活(应该说只有比较间接的帮助),而这样的贡献,更是很难订出指标来衡量其绩效;在这样的恶性循环之下,EA 的 ROI 很难得到充分的支撑。
有人批评 SOA 的 “S”,认为到底什么是“服务”,已经说不清楚了;而这两年市场上关于 SOA 的炒作和杂音,似乎只让问题更为加剧。这是个非常有趣的话题,因为 SOA 给 EA 带来的关键价值,我认为其实正在于此 -- 表面上看,“服务” 的确是个模糊的概念,从业务人员、架构师,到程序员,各自对“服务”的解读,都不相同;但这恰好是 SOA 给 EA 、传统面向应用的需求管理,和项目交付方式,所带来的最大价值。“服务”概念的出现,其最大意义,在于提供了我们一个能贯穿从业务需求、架构规划、项目交付,一路到上线后的运营监控的统一概念 -- 一个具有很长的生命周期、能够全程管理的单元。业务功能能通过“服务”来沟通,并且针对个别服务,制定契约来规范它的功能,以及效能指标、安全要求等非功能性需求。用扎克曼层次化的概念来看,尽管“服务”在各个层次所着重的内容不同,但最终是个统一贯穿的概念;更重要的,是它跨越了传统 EA 和项目交付两大迭代,让 EA 所规划出来的模型和规范,能真正贯彻、落实到项目的执行,甚至于上线后的生产运营,和监控管理(第三个迭代),将绩效反馈给业务的 stakeholder,形成一个能不断迭代精炼的闭环。这是 SOA 概念及方法论给 EA 和传统面向应用的需求、项目管理方式,所带来最大价值。
26 九月, 2007 21:28
无论是桌面程序还是基于Web的程序,数据处理始终是它们的核心。数据可以使用不同的技术进行描述和处理。
这些数据处理技术之一就是对象关系映射技术,或者简称为ORM技术。ORM技术将数据库中的数据表或视图映射成了面象对象的类。而ORM框架的作用就是架起数据和对象之间的桥梁,以及为桥梁两端的数据和对象提供相应的服务。由于ORM框架自成一体,因此,开发人员的主要工作就是将ORM框架和其它的框架(如web框架)连接起来,从而使它们可以协同工作。
在ORM框架家族中,RoR很特别。RoR的核心是ORM框架,而这个框架在RoR中是以活动记录的形式表现的。在本文中,我们将关注活动记录的一些基本概念和她最诱人的地方:快速连接和操作数据库。本文的第一部分将讨论活动记录的基础知识。第二部分将一步步地指导读者如何使用活动记录快速地连接和操作数据库。在第三部分中我们以一个完整的例子来讨论如何将活动记录和ActionController以及ActionView一起使用。以上是本文所讨论的主要内容。
什么是活动记录
活动记录是一个ORM框架,也可以看做是和RoR一起发布的一个数据库映射层。活动记录是RoR的核心。活动记录是一个ORM层,它提供了以下的映射服务:
1. 将表映射成类
2. 将字段映射成类的属性
3. 将表中的主键映射成Ids属性
4. 将行映射成对象
活动记录和其它的ORM框架最大的区别是它们的映射方式不同。大多数流行的ORM框架(如Hibernate)是以XML作为映射容器。而活动记录采用的是更容易使用的"约定"方式进行映射。下面让我们来看看活动记录是如何做的。
将表映射成类
为了将表映射成类,Ruby类必须从ActiveRecord::Base继承。这个Base类在ActiveRecord包中。那么一个类从ActiveRecord::Base继承后发生了什么呢?实际上这个子类已经和一个数据表相对应了。也许大家看到这有一些迷糊,我除了写一个从ActiveRecord::Base继承的空类什么代码都没写,怎么就映射完了。其实这要依靠活动记录的命名约定。活动记录假设一个类名的复数形式(英文类名)就是表名。如果类名中有多个大写字母,那么活动记录就假设表名就是这些单词中间用下划线隔开后连在一起,请看下面的例子。
| 类名 | 表名 |
| Record | Records |
| LineItem | Line_Items |
| Datum | Data |
以上所描述的是活动记录的默认的映射行为,我们也可以为活动记录定义自已的行为。要改变这些默认的行为,可以按以下步骤做:
1.将全局变量ActiveRecord::Base. pluralize_table_names设为false。这个变量被定义在config目录中的environment.rb中。
2.可以通过set_table_name改变默认的表名。例如,如果将表Orders映射成类Order的代码如下:
| class Order < ActiveRecord::Base end |
但如果这个类名要映射成MyOrder,那么它的实现代码如下:
| class Order <ActiveRecord::Base set_table_name "MyOrder" end |
接下来让我们看看如何将字段映射成属性。
将字段转换为属性
在一个数据表被映射成类后,表中的字段就将自动映射成类的属性。这是因为活动记录是在程序运行时动态地将表中的字段映射成类的属性。事实上,在从ActiveRecord::Base的类自动将表中的字段包装在了类中。下表将描述SQL数据类型将被映射成Ruby的哪些数据类型:
| SQL数据类型 | Ruby数据类型(类) |
| int, integer | Fixnum |
| decimal, numeric | Float |
| interval, date | Date |
| clob, blob, text | String |
| float, double | float |
| chat, varchar, string | String |
| datetime, time | Time |
下面让我们来讨论主键的映射。
将主键映射成Ids
假设有一个Orders表,它的主键是Order_Id。现在让我们看看这个Order_Id字段,这个字段由16个数字组成,其中包括Item id,User Id等。在以后如果Order_id变成20位数字,最后4位数字是一个RFID代码,那么所有依赖这个Order_id字段的列都将发生变化。这些工作量是非常大的,即使这个应用程序并不大。然而活动记录确能自动做到这些。自动映射可按如下代码去做:
| class Order < ActiveRecord::Base set_primary_key "orderId" end |
将记录映射成对象
无论什么时候,映射类的查询方法被执行时,在内部都会调用相应的SQL语句来查询数据库,并且将查询结果返回,这些返回的结果最终以对象的形式表现。列值将成为对象的属性。返回的每一行将被映射成一个对象。例如以下代码将返回Id等于100的Order对象:
| an_order = Order.find(100) |
上面的代码演示了如何得到特定的记录。接下来让我们看一下使用活动记录建立相应的操作的步骤。
26 九月, 2007 17:30
在MVC模式中的V,即视图(View),它的作用是将数据以用户所需要的形式展现出来,和传统的模式不同的是,视图在展现数据时可以省去许多不必要的细节。也就是说,任何基于MVC模式的框架(framework)都应该提供更容易的方法提取和显示需要的数据。RoR就是这样的框架。它将动作视图作为其核心组件之一。
在本文中,将主要讨论动作视图的基础服务。第一部分介绍了和动作视图相关的服务。在第二和第三部分讨论动作视图的一些基本功能,在最后一部分,将给出一个实例来说明如何使用动作视图。
动作视图的服务
视图的功能就是向用户展现数据。下面列举了动作视图中的主要服务:
·模板
·布局
·分页
当然,在动作视图中还在很多的服务,但上面的三个服务在动作视图中是最重要的。
模板
所谓模板,就是在一个文件中预定义了一些共用的资源,应用程序通过使用这些共用的资源,可以简化应用程序的开发过程,从而达到重用的目的。在动作视图中的模板所包含的资源主要就是布局信息、一些数据所存放的路径等。在动作视图中的模板很多,如HTML格式的登录模板、以及Email模版等。
布局
从软件(包括Web和桌面程序)上来说,布局就是将GUI中的控件进行组织和安排,也就是说布局控制着GUI控件(如按钮、文本框等)如何被放置在界面上。例如,布局可通过垂直等间距方式将要排列的控件按垂直方向等间距进行排列。
分页
分页的作用就是将大量的数据分批地显示在页面上,可通过"上一页"和"下一页"进行页间的切换。分页有些象用打印机打一个大的文档,一张纸打不下,就将数据分成多张纸来打。虽然将分页这种显示数据的方式应用到程序中可以解决大数据量显示的问题,但这同时又会带来另外一个问题,那就是如果对数据进行导航,也就是翻页问题。
除了以上提到的服务外,在动作视图中还有其它的服务,如格式化助手等。但是上面所介绍的三个服务是动作视图中最重要的。在下一部分,我们将讨论如何使用这些服务。
模板和格式化助手
动作视图为我们提供了很多建立动态视图的服务。下面是动作视图提供的主要的服务:
·模版
·格式化助手
·分页
·布局
上面的4种服务,除了格式化助手外,其它三个服务都已经在前面介绍过了。
模板
就象以前讨论的一样,在模板中包含了一些代码、标记、简单文本或它们的组合。在其中的代码可以通过Controller中的访问信息提供动态的内容。代码通过执行环境访问信息。这个环境为代码提供了以下的信息:
1. Controller的实例变量,通过这些变量可以将数据从Controller传给模板。
2. 作为存取器的Controller对象。这些对象包括对象头、参数、请求、响应和会话。
3. 当前正在使用的Controller对象。模板代码可以从这个Controller对象中调用它的public方法。
在RoR中的模板是RHTML文件。RHTML文件有些类似于JSP文件,在RHTML文件中有静态的HTML,也有动态的内容。动态的内容可以由内嵌的代码生成技术产生,也可以用手工编写。如以下的RHTML文件显示了当前的日期和时间:
| <h1>大家好!</h1> <p> <b> 当前日间: <%= Time.now %> </b> </p> |
和JSP类似,在RHTML中有两种写动态代码的方法,一种是将代码写到<%= … %>中,另外一种是将代码写在<% … %>中。在<%= … %>中的Ruby语句只是当作一个值返回,如果其中含有多条语句,则返回最后一条语句的值。而将代码放到<% … %>中,则按着正常的程序逻辑执行。虽然RHTML中可以执行Ruby语句,但最好不要将商业逻辑代码写在RHTML中。代码的执行原理可看下面的例子。
如果有以下代码:
| <% 5.times do %> <5> <% end %> |
在执行RHTML时,将上述代码转换为Ruby语句:
| 5.times do puts "<5>" end |
26 九月, 2007 17:28
1. Web 2.0:Web 2.0社区已经为
2. SAAS:传统的软件生产方式、认证和标准下,通常软件厂商跟软件最终的结果关系不大。但是有了SAAS(software as a service),
3. Global-Class Systems:Global-Class Systems,或者说是许多
4.
5. 开源:开源使上述四种技术更好地得到开发和应用。但运行方式仍是需要解决的问题,虽然开始时的直接成本降低了,但最终花费会由于多版本带来的管理花费而上升。【
26 九月, 2007 17:11
在短短几个月内,Ajax从一种十分模糊稀罕的技术一下变成最热门的东西。本文将介绍极其容易使用的Ajax支持-作为Ruby on Rails web应用程序框架的一部分实现。本文不是一个详细的教程,所以我假定你已经了解一点关于如何组织和构建一个Rails web应用程序的知识。
最开始出现的是万维网。比较于桌面应用程序,web应用程序相当缓慢和沉闷。无论如何,人们都喜欢上了web应用程序,因为他们无论在什么地方都能上网,只要身边的计算机上安装一个浏览器就行。之后,微软在Internet Explorer 5中创建了XMLHttpRequest,它使得浏览器端JavaScript可以与web服务器在后台进行通讯而不需要浏览器显示一新的web页面。这使得人们有可能开发更具有流畅性和响应性的web应用程序。Mozilla不久在它的浏览器中也实现了XMLHttpRequest,还有Apple(Safari浏览器)和Opera等公司。
XMLHttpRequest原先一定是Web上的一个被保持得最好的秘密。自从它在1998年初次登场,只有很少几个站点使用它,而大多数开发者,如果他们曾经了解过它的话,也从未使用过它。Google最终改变了这一现状-它发行了一系列的高度轮廓性的web应用程序-在XMLHttpRequest技术支持下,它们拥有平滑的新颖的UI。最具有视觉吸引力的是Google Maps,它给你产生这样的幻想-能够在它的很小的窗口中围绕着一个无限大小的地图拖动鼠标。
当Google的突出对XMLHttpRequest的使用的事实戏剧性地表明完全可以大大改进web应用程序UI效果的时候,是Jesse James Garrett的一篇论文最终给了这种技术一个可用的名字:Ajax(异步JavaScript和XML)。如果还不了解它的话,我们的整个业界至今可能还在等待之中。如今新的Ajax名字就象疾风野火迅速传播开来。我从来没见过如此迅速和这么亲近地采纳一种新技术!
二、 传统型Web应用程序与Ajax应用程序的对比
让我们通过分析一个使用案例-把一个新项插入到一个列表中-来看一下一个Ajax web应用程序最本质的所在。
在例中实现了一典型用户接口-在一个web页面中显示当前列表,后面跟着一个输入字段-用户在此可以输入一个新项的文本。当用户点击一个新建项目按钮时,应用程序实际上创键并把一个新项插入到列表中。
在这种情况下,一传统型web应用程序会发送输入字段值到服务器;然后,服务器作用于数据(通常通过更新一数据库)并通过发送回一个新的web页面-它显示一个被更新后的包含该新项的列表-作为响应。这种情况占用了很多带宽,因为大多数新的页面内容与原先的完全一样。这个web应用程序的性能随着列表的增长而逐渐下降。
相反,一个Ajax web应用程序在后台发送输入字段到服务器并且只更改当前web页面受到影响的部分。这大大提高了用户接口的响应能力,使它感觉起来象一个桌面应用程序。
你可以亲自试验一下这些效果。下面是一些到不同博客的链接,其中的一个使用Ajax来发送评价而另一个没用。你可以在它们之间相互寄送进行实验:
·传统型的Web应用程序
·Ajax Web应用程序
注意,Ajax仅仅在于使用性。但是,就象任何技术一样,你可以高效地使用它,也可能低效地使用。在展示了怎样使用Ajax之后,我将给出一些关于何时使用Ajax的简单建议。
三、 怎样在Web应用程序中使用Ajax
在你的web应用程序中使用Ajax技术的较麻烦的方法是创建你自己的定制JavaScript-它直接使用XMLHttpRequest对象的API。为此,你必须处理每种浏览器的特性。
一个较容易些的办法是使用一个JavaScript库-它提供了较高级的Ajax服务并且隐藏了浏览器之间的差别。象DWR,Prototype,Sajax和Ajax.NET这样的库都是很好的选择。
最容易的办法是使用Rails中内建的Ajax工具。事实上,Rails使Ajax变得如此容易,以至于在典型情况下,使用Ajax和不用变得几乎一样容易。
四、 Rails是怎样实现Ajax的
Rails拥有一个简单的一致性模型来实现Ajax操作。
一旦浏览器生成并显示了起始web页面,不同的用户操作要求它显示一个新的web页面(就象任何传统型的web应用程序)或触发一个Ajax操作:
1. 发生一个触发器行动。这可能是用户点击一个按钮或一个超级链接或者用户改变了表单中的数据或字段中的数据,或只是一个周期的触发器(基于一个定时器)。
2. 与触发器相联系的数据(一个字段或一个完整的表单)经由XMLHttpRequest被异步地发送到服务器上的一个行动处理器。
3. 服务器端行动处理器基于这些数据采取一些行动(这就是为什么称为一个行动处理器),并且返回一个HTML片断作为它的响应。
4. 客户端JavaScript(由Rails自动地创建)收到该HTML片断并且使用它更新当前HTML页面指定的部分,经常是一个<div>标签的内容。
一个到服务器的Ajax请求也可能返回任意的数据,但是我将仅讨论一下HTML片断。真实的美丽在于Rails使得在你的web应用程序中实现这些是多么地容易。
26 九月, 2007 17:02
RoR中所提供的控制器叫动作控制器(ActionController)。本文将主要讨论动作控制器所提供的几种服务,以及如何使用动作控制器。
什么是动作控制器
在RoR中,动作包(Action Pack)是这个框架的核心。它包括两部分,动作视图和动作控制器。动作包的一个特点是除了Web程序,不能使用在其它类型的程序中。下面让我们看看在我们通过浏览器键入一个URL后,如http://localhost:3000/demo/say/hello,都发生了什么。下面是在RoR中处理动作的步骤:
1. RoR首先装载了位于app/controllers目录中的say_controller.rb文件。这个文件只被装载一次。
2. 然后 RoR建立了类SayController的实例。
3. 一旦SayController类被实例化,RoR就会在app/helpers中查找say_helper.rb文件。如果这个文件存在,它就会被装载,并且这个文件将会和SayController对象混合。这就意味着在SayController对象中可以直接访问SayHelper中的方法。
4. 最后在app/models中查找say.rb文件,如果存在,装载它。
到现在为止,我们已经对应用程序的初始化过程非常清楚了,接下来让我们继续看看动作控制器所提供的服务。下面是RoR所提供的服务列表:
1. URL映射
2. 会话跟踪
3. 过滤和验证
4. 缓冲
现在又带来一个问题。这些服务为什么由控制器来提供。当然,答案也很简单,这是因为控制器介于数据和应用程序之间,因此,它可以监视数据的存取,并且可以根据需要对URL进行映射。因此,这些服务理所当然由控制器来提供。下面我们将详细讨论控制器提供的这些服务。
1. URL映射
当我们在浏览器中输入http://localhost:3000/admin/show时,会显示相应的内容。但你也许会有疑问,RoR是如何将URL链接映射成相应的类或方法呢?事实上,这些映射的代码都被写在了config目录中的routers.rb中。下面是这个文件的部分代码。
| ActionController::Routing::Routes.drawdo|map| map.connect ':controller/service.wsdl', :action => 'wsdl' map.connect ':controller/:action/:id' end |
动作控制器通过它的映射组件将来自外部请求的URL和内部的应用程序连接了起来。上述代码的第3行就是完成这个功能的。在这行语句中,map.connect的连接字符串是":controller/:action/:id"。请求的URL只有匹配这个字符串才能被接受。对于一个URL请求来说,它可以被RoR分成三部分:
a. 第一部分是模式字符串中的:controller部分。
b. 第二部分是模式字符串中的:action部分。
c. 第三部分是模式字符串中的:id部分。
根据上面所描述的三部分,URL:http://localhost:3000/demo/admin/show/1/将被映射成以下三部分:
| :controller : 'admin', :action :'show', :id :1 |
根据以上的三部分,RoR将调用admin控制器的show方法,并将参数1传到show方法中。因此,我们可以看出,RoR在其中做了很多本应该由我们做的事件。因此,RoR是一项十分强大技术。
2. 会话跟踪
跨应用跟踪用户是大多数Web应用程序都需要的功能。在RoR中,我们可使用由RoR框架提供cookies或session管理来跟踪用户。但在RoR中的cookies和session管理和其它框架所提供的类似的管理不同的,RoR的cookies和session管理无需显式地调用相应的cookies和session对象就可以做到这一切。下面让我们来看看它的实现代码:
| class CookiesController < ApplicationController def create_cookie cookies[:the_time] = Time.now.to_s redirect_to :action =>"action_two" end def get_cookie cookie_value = cookies[:the_time] render(:text =>" #{cookie_value}") end end |
在以上代码中,在控制器中有两个动作方法,一个是设置cookie的,另一个是读取和显示cookie值的。在这里cookies[]是一个cookies对象数组,我们不需要声明它,只需要将它看成一个普通数组即可。
接下来使用redirect_to方法通过参数:action将请新进行重定向。在get_cookie动作中,cookies的值被取出来,然后使用render()方法显示这些值。
上面讨论cookie的使用方法。但如果有一种方法可以透明使用cookie,那不是更好吗?这个技术就是session。就象cookie一样,session数组也无需声明。它的用法类似于cookie对象。下面的代码描述了session的使用。
| class SessionController < ApplicationController def login user = User.find_by_name_and_password(params[:user], params[:password]) if user session[:user_id] = user.id redirect_to :action =>"index" else reset_session flash[:note] ="有户名或密码不正确!" end end |
上面代码对user_id和password进行核对。如果用户存在,将这个用户的user-id保存在session中。其中session[:user_id] = user.id的形式和保存cookie的形式完全一样。接下来重定向到index页上。如果用户不存在,使用reset_session将session设为无效,并通过RoR返回简单的提示信息。
3. 过滤和验证
在一此情况下,在请求被处理之前,要进行一系列处理。这个过程就叫做过滤。过滤器所包含代码需要在许多动作执行前或执行后被调用。因此,过滤器分为两种,before过滤器和after过滤器。Before过滤器的代码在请求被处理前被执行,而after过滤器恰恰相反,是在请求被处理之后执行过滤代码。例如,验证用户身份代码必须要在调用一个动作之前被调用,代码如下示:
| def authorize unless session[:user_id] flash[:notice] ="请登录" redirect_to(:controller =>"login", :action =>"login") end end class AdminController < ApplicationController before_filter :authorize … … |
以上代码在AdminController中的任何动作被执行之前调用,而在控制器中要想调用authorize函数,必须在其中加上before_filter。after_filter的使用方法和before_filter类似。
过滤器虽然可以执行验证代码,但有时对请求需要更进一步的验证,如此一来,过滤器就显得捉襟见肘了。为了完成这些功能,我们就需要使用更为强大的验证机制。在控制器中,可以通过verify实现更强大的验证功能。如下面的代码验证了用户提交方式。即用户只能用post进行提交。
| class BlogController < ApplicationController verify :only => :post_comment, :session => :user_id, :add_flash => { :note =>"You must log in to comment"}, :redirect_to => :index … … |
4. 缓冲
从以上代码可看出,服务器总是一遍一遍调用同样的动作,如果调用这些动作很费时间的话,将会严重影响服务器的性能。因此,RoR为了解决这一问题,为我们提供了缓冲的功能。如果某一个动作经常被调用,将这个动作进行缓冲将是一个好主意。
在RoR中,可以通过caches_page来实现缓冲功能。缓冲可分为不同的层次,如对整个网页进行缓冲,对动作缓冲,或是同时对网页和动作进行缓冲。如在一个blog管理应用程序,将大家经常访问的内容进行缓冲的代码如下:
| class ContentController < ApplicationController before_filter :verify_premium_user, :except => :public_content caches_page :public_content … … |
26 九月, 2007 15:12
SOA,三个简单的英文字母组成了目前软件业内一个最响亮的名字,它同时也是一个颇具争议的话题。关于SOA的定义有很多,简单的说,SOA(Service-Oriented Architecture)是一种方法,一种服务导向的软件架构,是为了解决在新环境下业务集成的需要,通过连接能完成特定任务并实现独立功能的一种软件系统架构。
对 SOA 的需要来源于企业需要,为了使业务 IT 系统变得更加灵活,以适应业务中的改变,IT 系统既可以利用现有系统的功能,又可以准备在以后做一些改变来满足它们之间交互的需要。天极ChinaByte特别采访了金蝶国际软件集团有限公司EAS事业部首席架构师胡锦敏先生,请他谈一谈对于SOA发展过程中的体会和感受。
SOA的概念并不新 关键在于应用和实施
胡锦敏先生首先阐述了对SOA的整体印象,他表示,SOA首先是一种新架构的思路和服务,与以往的软件架构不同,SOA采用集合、灵活的方式达到敏捷的业务响应,它将业务和技术有机的结合起来,是面向IT人员的服务。
另外,他还特别强调,其实在SOA的概念诞生之前,软件业就一直在朝着SOA所设想的方向努力着,软件行业发展的目标没有变,有没有SOA都一样。
软件业的终极目标就是像硬件一样,达到即插即用,这也是发展SOA的初衷。SOA给我们带来了一个全新的思路,而这个思路的出现正好迎合了IT市场的趋势,所有的技术都是为了应用,这就是实施SOA的关键。
企业需要IT规划和IT治理 才能有效运用SOA
胡锦敏先生表示,SOA解决的是不同系统之间如何通过服务有效的整合,对于技术人员来说,SOA是一种架构,而对企业来说,SOA就可以说是IT治理的一种方法。SOA支撑着业务变革,需要一整套的服务定义,从企业的业务分析开始,到流程分析,再到服务的细化,通过SOA的设计,服务的细化可以反作用于企业的业务、流程分析,从而达到改善企业的目的。
但这一切的前提都是企业要有一套科学合理的机制和规划,达到流程可见,在实施SOA之前就要对自身进行整理,知道业务是怎么运行的。Web 服务并不是实现 SOA 的惟一方式,可是有很多企业就只认为SOA是一种Web Service。
SOA将IT资源透过服务这样一个在业务上有重要涵义的概念来提供、共享,把IT与业务的距离更加拉近了一步。服务在涉及的层次上要比组件、函数、流程等更高,而且往往在业务上可以找到与之直接对应的概念或实体,例如报价、订单。服务打破了IT系统间的藩篱,就像一家公司的各个部门,平常各自扮演特定对内或对外服务的角色,但彼此间如果能有效地通过共通的语言及文字,进行良好的沟通,便能协力达成更大、更高的目标。
SOA 在本质上是一种分布式的架构方法,因此其治理需求比集中式环境更显重要。要获得必需的业务和技术适应能力,企业需要适当的功能、资产和流程。SOA 环境的治理目标就是要确保在这些功能、资产和流程中实现面向服务的战略。
许多企业现在都在着手开发面向服务架构,但结果可能是大多数企业的实施都不太尽如人意。大多数企业实际关注的目标范围都比较窄,它们过于关注技术,而对业务服务的关注不足。
更重要的是,很多企业中的IT人员没有规划,可SOA偏偏不能脱离规划,SOA这个方法是建立在规划的基础上的,企业要清楚自身的需求,了解自身的业务流程,一定要有良好的规划才能有效实施SOA,提升企业竞争能力。
26 九月, 2007 14:25
SOA几乎可以看作是测试IT公司敏感度的一个试金石。十年前Gartner首度提出这个概念,其后数年间追捧者不断。如今,在SOA提出整整十年之后,一个迟到的追捧者出现了,它就是Oracle。
从8月初开始,Oracle就分别在上海、北京和广州启动了服务导向架构(SOA)主题论坛,介绍其SOA五步走的方法论体系。综合各方面资料我们发现:与IBM、BEA、微软和SAP等厂商相比,Oracle高调推广其SOA产品的时间明显较晚,而且就其发布的相关产品和方法论来看,也并无多少新意。
从产品上看,Oracle宣称,其SOA套件是一套用于创建、部署和管理SOA的全面的、热插拔式的软件组件,由其融合中间件的服务导向架构组件构成。但是我们也注意到,在这些组件中,像BPEL流程管理器、企业服务总线(Oracle Enterprise Service Bus)等产品其实大都是早在两年前就已推出的“老”产品。至于其向开发者提供的Oracle SOA Suite 10g Release 3预览版本,目前才刚刚开始提供官方下载。
从方法论上看,Oracle提出了SOA构成的三个维度:企业文化、方法论和实施平台,并提出了使SOA从理论走向现实的所谓“SOA五步走”方法论。但是,如果比照目前各大厂商已经提出过的方法论,这个所谓“SOA五步走”并未体现出什么新的建树。说白了,这种放之四海而皆准的方法论对于用户实践SOA用处不多。
值得注意的是,在SOA主题论坛之后,Oracle还相继在几大城市举办了企业网格基础架构建设CIO高峰论坛,同样也提出了一个网格建设“五步走”。而且,在其第四次网格指数调查中首次将SOA纳入调查范畴,并认为要有效采用网格计算,部署SOA是必须的。看来,Oracle在决定追捧SOA的同时,仍然对其一直鼓吹的网格念念不忘。
总起来看,在SOA上,IBM、BEA,甚至SAP都已经走在了Oracle的前面,比如IBM提出的SOA五个切入点,BEA在一年前提出的流体计算(Think Liquid)策略,还有SAP的下一代企业服务架构ESA,无一不是围绕SOA展开。而Oracle作为一个迟到者,其步子似乎应该迈得更大些。
26 九月, 2007 13:54
今年,作为最热门的话题之一,SOA因BEA WORLD 2006的召开而让人们有了进一步的认识。
几年前,BEA说,SOA是一个基于标准的组织和设计方法,在上周召开的BRA WORLD 2006大会,“把人、流程和知识结合在一起”是这家企业对SOA的最新注解。
在这次主题为“流畅思维,灵转世界”的大会上,BEA最新推出了AquaLogic BPM(业务流程管理)协作版,把BEA面向门户、协作和BPM的三款产品整合为一种集成产品,为企业用户提供了丰富、交互的环境,帮助他们更好地管理活动和知识密集型的协作流程。AquaLogic BPM协作版是BEA SOA 360°平台的关键组成部分。
正如BEA执行副总裁Mark Carges所说:“传统的BPM专注于自动管理自动化后的流程,很难应对动态流程的挑战,动态流程需要流程参与者之间有更深的关联和协作。这类业务流程很难通过某个单一的系统来解决,结合了BPM、协作技术以及丰富交互的门户框架的解决方案才是最佳支持方案。”
他还归纳了AquaLogic特性,也是SOA的关键点:为整个业务流程生命周期提供动力;让企业知识能够为流程所用;在每个层面、每个步骤都实现协作;统一、个性化的用户体验。
业界人士对BEA的这一理念表示认同,Babcock & Wilcox公司相关负责人说:“把业务流程管理与协作相联起来,无疑可以有助于我们提升业绩,增强业务灵敏性。新的BEA AquaLogic BPM协作版可以帮助我们扩展公司门户上的销售应用,因为它可以把销售流程活动与最佳实践方法对应起来。这样可以帮助我们简化销售流程,并确保销售部门的一致性,从而提高效率、降低成本、缩短开发时间。”
在BEA的“流畅思维”愿景中,让软件和硬件之间的关系更加灵活,能够像流体一样,让用户能够借助SOA组件和服务,将人与流程、知识结合起来,为活动密集型协作业务流程管理提供有效帮助,以提高业务部署和迁移应用的灵活性是最终目标。而BEA召开的这次会议,正是这家高举SOA大旗的公司向目标迈进的关键一步,对深化SOA理念和全球范围部署有着极大的推进作用。
26 九月, 2007 13:15
主随客便。既然Sandra在博客把Impact2007称为是一次定义SOA的大会,那么我们的采访就从SOA的定义开始。几乎没有做任何思考,Sandra给出了明确的答案:SOA是一个基于业务的架构,通过把业务灵活性和IT灵活性链接起来,让企业能够实现业务模式的灵活应变。在Sandra眼中,SOA就是业务,而不是什么技术。“创新需要改变,而SOA 支持改变,能让改变更快速、更敏捷、更灵活”。为了实现向SOA的转变,IBM目前甚至还在美国大学推动设立服务科学(service science)的本科学位,一如当年IBM在美国大学中推动设立计算机科学一样。
Sandra强调,IBM Impact2007就是一个有关企业商业的大会,讨论的是国际商业机器(International Business Machine),而不是国际技术机器(International Technology Machine)。和以往不同,这次Impact大会把来宾分成了四类:商业领导、IT领导、技术人员,第四类Sandra把他成为T型人,这类人既懂技术,也懂商业,具有双重技能。Sandra表示,这类人在今年大会中占到了46%的比例,充分证明了Impact2007是一场商业为主的大会。今年7月,IBM还将在中国举办Impact大会。
有意思的是,当问及中国的Impact大会是偏商业还是偏技术时,Sandra想了想说,这两类都会有。她承认,T型人在中国并不多,所以对于中国的Impact大会,会根据实际情况调整。总的来说,IBM在中国会通过Impact大会,来发布其SOA行业路线发展图和与之相关的商业蓝图。6个行业将是Impact中国要重点关注的:银行,保险,保健医疗,零售,电信和制造,而为了吸引这些行业的业务高层参加,IBM涉及的话题都会从一些最热门的业务话题去展开,比如银行业的支付问题,保险业的代理协同问题等。在商业蓝图上,IBM还会给出基于SOA框架的商业模式、合作者资料以及行业的经营模式。
Sandra认为,SOA是由大学、社会化网络、业务伙伴等组成的生态圈,她承认,目前要推动SOA往前走的最大两个阻碍是T型技能和企业文化。也正是看到了这一点,Sandra 在其新书《新商业语言——SOA与Web2.0》中,给CIO们提出“十不要”(10 Don’ts)。她特别指出,SOA对CIO的职业生涯影响重大。那些推动SOA发展的CIO,至少在美国,一种是会发展成为T型人,一种是会成为业务的领导者。这两种,对不同人可能有先有后,但总的一点是他们将成为企业的业务决策核心。至少,他们的收入会大幅上升。在IBM,具有T型技能的人,工资就会高一点。
当谈到如何让技术出身的技术人员或CIO们变成T型人时,自己就是技术出身的Sandra显得格外精神。这位会8钟编程语言的IBM副总裁从一家银行的实习生开始,然后又去学了MBA学位,最终成为了具有业务和技术双重技能的T型人。她建议那些希望变成T型人的技术人员,可以从业务的实习生开始,另外,可以在工作中慢慢切入到业务流程中,了解业务流程和技术的关系。
在博客中,对于如何把SOA销售给CEO,Sandra给了CIO十个建议,其中特别提到了要明确说明SOA对企业的业务价值。但在中国,很多CIO觉得这个很难说明。她表示,这个问题已经能够解决。IBM开发了一系列具体的工具包,侧重衡量SOA在成本下降、灵活性、降低风险等三方面的具体价值。当然,根据企业目标的不同,这些工具包还能进行调整。而关于SOA究竟是整合现有流程意义大一点,还是为了创造新的流程,Sandra骄傲地说,正是IBM能够同时整合现有流程,复用现有的应用代码,并同时能够根据企业需要设计新的流程,所以,IBM目前在SOA上的市场份额已经一家独大了。她引用一家第三方调研公司的数据说,目前,IBM在SOA上的市场份额已经达到53%,而第二名微软的市场份额只有区区8%。
在采访结束的时候,Sandra让负责Websphere平台市场营销的经理David Lapp给我们演示了一个名叫Innov8的电子游戏。游戏的大概内容是,一家公司即将倒闭,而游戏者的人物是需要在一夜之间通过业务流程管理(BPM)整合公司的现有流程,在SOA架构上,进行流程创新,从而挽救这家企业。游戏的动画逼真程度觉不亚于那些大型电子游戏。

Innov8游戏截屏 1

Innov8游戏截屏 2
在Sandra的新书《新商业语言——SOA与Web2.0》中,Sandra创造了一种名为* Flex-pon-sive*的企业,他们既有灵活性(Flexibility),又有责任感(responsibility)。对于快速变化的业务需求,他们能以光速作出敏捷反应,这些企业又一个共同点,就是高度关注依赖IT进行快速改变的流程。
从技术到业务;从游戏到出书;从研究室到大学;IBM在SOA上的思路越来越清晰,方式也越来越创新了。
26 九月, 2007 13:11
Anders和Bechauf回答了为什么要有标准,包括以前的Java EE5,服务组件架构(SCA)以及现在的OASIS和与WS-I说明有关的SOA工具。Bechauf还谈到了有关最后的和最好的技术争论之上的Web服务协作及其必要性。他还说,商业人士正在网络中寻找一种独特的刻度情况,因此他们可以像在电话上一样方便的在互联网上进行业务处理。
你正在演示的组成环境到底是怎么样的一个东西呢?
Jeff Anders:这是我们SAP的NetWeaver开发平台。只是我们一个新的产品商标。我们正在使用Java EE5应用程序服务器,并将他们投入到商业上使用的产品当中。在应用程序服务器之上,我们使用一些你可能已经知道的SAP的技术。组成应用软件程序框架,引导程序,可视化设计等。而且我们还将这些放到了一起,并添加了一些新的技术,使得其成为了组成的集成包。我们现在正试图做的,是提供出一个完整的环境,在上面,我们的程序开发人员、我们的伙伴,我们的独立软件开发商等所有等级的写作都在一个集成的包里进行。我们拥有服务组成、资产组成和UI组成。我们想要做的事情是让这些企业享受品质,让那些组织中的可使用的东西实现多用户、多国家的不同的开发功能。
有很多SAP的竞争者是这样评论的,只要你使用SAP工作的话,那么你就会拥有组成的工具,但是一旦你和其他的产品进行合作的时候,就不能使用了。你如何说服人们相信即使是在使用其他的产品进行工作的时候还能使用NetWeaver开发平台进行开发呢?
Anders: 在NetWeaver开发环境的每一个部分那都是基于标准的。我们使用的结构,我们使用的接口也都是符合标准的。毫无疑问的是,这不是私有的东西。他是为任何基于标准的基于服务的环境提供的。这也是可以帮助Michael更好的解释这一点的地方。
Michael Bechauf: 在Java EE5当中,目标之一就是标准化。我们也这样描述我们对于服务组成架构(SCA)的情景。SCA的完全的目的在于支持不同的结构。我们想要保证无论是谁使用这个组成的环境,他都会通过使用我们公司服务和我们公司产品而有一种一流的感觉。但是,另一方面,因为我们支持Java EE5以及SCA,这要求开发人员能够在不同的开发环境当中集成所有的JMS产品。
基于SAP的在企业IT方面的经验,你觉得SCA是怎么传递人们真正想要的东西呢?
Bechauf:基本上说,他是将简单化介绍给多机会的开发上面。例如,一种设计的时间模型,一个组成模型,一个很多软件厂商都支持的组成集合。因此一个习惯于在一种开发环境下进行开发的程序开发人员可以转移到另一个开发环境中去,而且可以发现熟悉的工具集。因此,有效率的开发人员将找到相似的环境。对他们而言,这是很容易学习的。他们不需要再学习、
对于WS-I的文件,你支持他并准备在上面工作吗?从我们上次十二月进行谈话之后,又有什么新的进展吗?
Bechauf:是的,有很多的进展 我正在WS-I的轮值主席,而有一件事我们已经宣布的就是对于WS Basic Security 1.0 大家都可以获得。而最重要的完成之一就是对于协同工作能力的支持。WS-I概要的方法正在变得有意义,因为他们在整个行业当中都被广泛运用着。这并不是简简单单的一张纸就可以写下的。它实际上是五个能够协同工作的平台的一部分。我们和微软、IBM、SAP、Novell以及Oracle公司合作做了很多关于协同工作能力的论证。它增加了安全性。我们现在正在做的下一件事是WS-I 可靠性安全属性1.0.本质上来说,我们正在从OASIS规范中进行对Web服务可靠性信息的支持,我们还将其成为联合主席。
UDDI3.0已经出来了,你和一些分析人士谈论这点的时候他们说他们没有使用UDDI2.0,就直接使用UDDI3.0. BPEL2.0也公布出来了,SOAP是WS-I概要的下一代。那么WS-I需要赶上这些标准吗?
Bechauf:对于WS-I而言,他需要解决一些广泛范围内的协同性工作能力的问题。这也是WS-I工作的方式。有很广泛的协同工作能力的事件,通过他们,行业可以验证所有的软件厂商是不是WS-I的一部分,他们需要做些什么。从WS-I的观点来看,如果我们能够提供给那五个软件厂商能够让他们有效使用的标准,那么我们就可以从事于这件事。谈到UDDI,有很多确定的使用的案例。在案例里,客户会说:“从软件厂商A那里得到的UDDI注册和从软件厂商B那里得到的UDDI仓库需要进行协同工作。”问题是,这真的是一个行业范围的问题吗?我们从客户中听到了很多。我们也正在处理收集来的WS-I的部分的需求。坦白地说,这正是他们做到的。这是一个独特的协同工作能力问题还是一个行业范围的协同工作能力问题呢?
WSDL2.0还没有最后定下来,但是其正在进行最后的呼唤。你对于WSDL2.0是怎么看的呢?因为我们知道的原因,人们会寻求向下兼容的问题吗?他会使得人们需要做些什么吗?或者说这会让其死亡?
Bechauf: 他还没有上升到行业级别的地步。在WS-I方面,我们正在将SOAP1.2作为基本概要2.0的一部分。已经有了一些对于这件事的议论,但是公平的说,WSDL2.0还没有来临。
除了WS-I之外,向下兼容会成为一个问题吗?
Bechauf:他一定会是需要考虑的东西的。让我们从SAP的角度去看这件事。我们现在正在做的,就是企业服务结构的一部分。我们正在建立数以千计的服务。他们中有WSDL1.2的服务。在我们的开发部门当中存在着一些讨论,关于是否支持WSDL2.0的讨论。很有可能的是需要花费一段时间才可能采用它。但是从WSDL1.2到WSDL2.0的过渡一定是有工具存在的。
现在有没有什么标准能让你真正的非常的高兴的呢?
Bechauf:非常坦白地说,我对于协同工作能力非常的兴奋。协同工作能力并不总是要求最新的和最好的东西。我们来看一看行业前进的方向,而我们所说的东西之一就是商业网络。网络要像普遍存在的拨号区域一样。如果你将你的业务关系建立于很多个公司之间,而且你想要自动哈德处理公司之间的关系的话,你需要最后担心的事情就是协同工作能力。看一看通信领域吧。你拿起蜂窝电话,你可以呼叫任何人,任何世界上的角落,接着电话响了。这就是Web服务前进的方向。网络作为一个无处不在的媒介可以建立起联系。但是,对于建立起来的伙伴关系、可靠性以及安全而言,他们基本的原理是什么呢?因此如果说有一件使我现在觉得非常兴奋的话,那就是在协同工作能力上面的对话。在一周前的OASIS会议上,人们一直再说我们并不需要最新的和最好的标准。我们需要系统之间协同工作,确保我们能够使网络像拨号区域一样支持商业网络。这就是他们关心的内容。他么不管版本号是2.0,3.0还是5.0,他们只想要协同工作的能力。
26 九月, 2007 11:01
在这个提倡整体解决方案的时代,SOA以便捷、高效、和高兼容性逐渐走进了企业的视线,也成为企业竞相“投身”的一个新的领域,即将登上飞机的黄柳青先生快速而详尽地向天极描述了他眼中SOA的应用价值和中外之间SOA道路的差异性。
SOA标准只是为了客户更好的应用体验
无论是提供SOA的企业还是需要SOA的企业,它的应用价值都是需要首先了解的事情。
“随着各个企业和媒体的呼吁,SOA的概念在中国已经开始普及,由于客户业务上的增多和变化,很多以前基于指针分布式运算的架构已经远远不能满足需要,就算再接上很多软件系统以增强应用也是极其繁琐。”
很多企业都将SOA的应用价值想象得过于复杂,而在黄柳青眼中,SOA的存在就是为了增强客户的应用体验。
“普元作为中国企业参加了SOA标准的制定,但是在其过程中发现,尽管外国的SOA技术发展已经很成熟,但是仍然缺少一个标准,标准的出现就是为了让更多的企业找到统一高效的方法,不管是买到谁的产品,标准是统一的,应用起来也就不会麻烦。因为SOA绝对不只是软件的简单整合。”总之一句话,应用的灵活性是SOA标准的主要任务之一。
中外SOA之路的差异性
在进行SOA标准制定的过程中,黄柳青还发现了中国和外国SOA之路的差异性。
“美国开始推行SOA的时候,企业系统的建设是比较稳定的,有很多应用是SOA重复的,这也与国内外信息化进程的差距有关,在整体系统上加接SOA接口,可能只需要更改原系统的20%就能让整个架构实现SOA的应用。”
在黄柳青先生的介绍中,笔者对国内的SOA推广有了更深的了解:在国内很大的行业中,就像金融或者电信,在系统架构之初并没有很成熟的应用需要,那么就需要来打破70%甚至更多的原有体系架构进行全新的规划,这给实施实际上是增加了难度。
“SOA的架设就像国内外城市的建设一样,国外城市规划很成熟,加盖新楼只是进行修复,而国内的城市一般都会推倒旧楼盖新楼,城市需要重建。”黄柳青用一个形象的比喻结束了这个话题。
每个厂商都在SOA的发展中扮演自己的角色
当笔者提及微软也要进入SOA领域时,黄柳青立刻说道:“SOA是一个开放的标准,虽然大家走的路不一样,但是结果都是对SOA的推广有好处。”
不过,黄柳青显然对同处软件行业的微软了解甚多。“很多大的厂商IBM等等,在SOA领域有着极高的声誉,也是SOA标准的大力推动者之一。不过我想微软可能跟我们走的路不一样。”
“也许微软的选择不是遵循SOA标准,而是在自己已经开发的系统里加上SOA标准接口,毕竟微软在客户端有着巨大的优势,在注重客户体验上微软更有经验,在系统里加上SOA接口或者是别的客户端对微软来说根本不是难题。”黄柳青这样分析道,“每个厂商都在市场上扮演自己的角色,虽然大家走的路不一样,最终都在推动SOA市场的发展。”
在离登机还有十分钟的时候,黄柳青先生与天极结束了这次采访。越是企业蜂拥进入SOA行业的时候,我们越是要看清SOA真正蕴含的价值:SOA的存在是为了更好的应用体验,应用的灵活性是SOA发展的终极目标。




