XML领域内的几项重要技术
第一讲:XML与SOAP
李安渝
目前IT界有两股热潮,一是企业间的数据交换及流程自动化,一是软件转型走Web
Service路线;前者已经如火如荼地在进行,后者则暗潮汹涌,蓄势待发。而在背后直接促成这两项转移(paradigm
shift)的底层技术就是XML。
在过去一两年里,XML的流行风吹到国内,随着一波波企业的推波助澜,开始达到沸腾点,并逐渐在产、官、学界人士的心目中,凝聚起相当的份量。那么到底什么是XML?
XML朝广义化发展
从狭义和广义来看,就XML本身而言,简单讲,它是一种可自由定义文件格式的语言。但就像可用来开发应用程序的C语言一样,如果单只有一套语法规范,那么可能除了专门研究语言的人以外,一般人不会觉得它特别有趣,甚至不知从何下手。但如果C语言加上了编译器(Compiler)、基本操作平台以及愈来愈多的函数库之后,实用性便大大提高,各式应用便如雨后春笋般出现。XML也是一样的情形,XML格式需要解析器(Parser),来做进一步的处理及确认,而围绕在四周的,还有XSLT、DOM、SAX、XPath等许多的相关标准和技术。
因此在当大家谈到XML,所指的往往已经不只是那套枯燥的语法,而是包含更多相关的语言和标准,各式各样的周边技术(如数据库存储及查询),及各行各业的应用(如RosettaNet、XML/EDI、ebXML等国际性的产业流程标准),涵盖了相当广的IT领域。
在过去,企业内电子化及数据整合的需求,逐渐促使企业采用各种ERP和EAI(Enterprise Application
Integration,企业应用集成)的解决方案及相关产品。但近几年来,Internet和Web的风起云涌,带起B2C和B2B电子商务浪潮,促使运算平台朝网络迁移,企业间互动的需求随之大增,旧式的ERP和EAI解决方案已无法满足网络时代的新需求。XML的出现,无疑如一阵及时雨。XML提供了一套跨平台、跨网络、跨程序语言,而且不偏颇任何业内的数据描述方式。在此之前,任何远程过程调用(RPC)和信息传递,都必须透过双方系统都支持的通信协议和API来达成。XML则提供了更大的弹性。传统ERP及EAI业者近年来也逐渐开始支持XML。新一代的企业信息整合方案,及各大大小小的B2B交易等,无不采用XML作为底层的数据格式。
Web Service风起云涌
近来,有不少读者尚未听说过Web
Services,却已饱受SOAP、WSDL、UDDI等时髦新词轰炸。事实上,有点讽刺的是,SOAP、UDDI等标准正是为架构Web
Services之用而设计。而这些标准则又都借用XML的语法定义。
软件Web
Services化,不少分析家认为它将和P2P(Peer-to-peer)的趋势携手并进,带动未来几年内IT软件的另一波革命。这个推测在各大重量级软硬件厂商,从微软、IBM、HP、Oracle,到最近的Sun,纷纷宣布各自支持Web
Services的策略而得到进一步的证实和支持。尽管各家厂商目前对Web Services概念有不同的名称(微软的产品是.NET,Sun的是Sun
ONE,Software AG则采用Gartner Group所说的“e-Services”),但其中心思想却大同小异。
Web
Services对软件世界的未来,描绘了一个新的蓝图:应用程序在Web上提供服务。让其它机器上的程序透过Web的窗口将它的API(应用程序接口)分享出来,直接让网络上其它的程序调用。对Services的调用,可能来自企业内另一台服务器,也可能来自交易伙伴的服务器,或是用户的手机、PDA,甚至IA家电。举一个常被引用的Web
Services例子:一个购物网站在顾客Check
Out,需要做信用卡确认时,可实时动态搜索,运用(譬如根据手续费高低)当时网络上所能找到、最合适的网关服务。
SOAP借XML启航
象上面所提过,在XML的相关技术中,相信许多人对SOAP(Simple Object Access
Protocol,简单对象访问协议)这个名词已经不再陌生。在业界的强力炒作、推波助澜之下,SOAP在信息软件界俨然已凝聚了一股势态,成为当下网络软件逐步通向Web
Services时,一个重要的业界即成标准。现在已经有越来越多的软件开始对SOAP提供支持,而像RosettaNet这样著名的电子商务标准,也考虑在未来利用SOAP的机制。
关于SOAP的说法,相信大家多少都听过一些,这是一个令人迷惑的简称,因为它既不简单,也不与任何对象相关!许多人可能还是要问:它到底是做什么用的?事实上,SOAP可用三四个字来简单说明——“RPC/messaging
through XML”。RPC(Remote Procedure
Call)是远端过程调用。也就是说,SOAP以XML为媒介,为分布式环境下的程序和系统之间,提供了一套简单的信息通讯协议。但我们知道,RPC早已不是什么新鲜话题。在企业软件日趋网络化、分布式的环境下,不论是企业内或跨企业的信息整合,以及新一代整合工程所偏好的多层式运算架构(如微软的DNA及Sun的J2EE),Server对Server,程序对程序间的沟通均大量增加;而此类沟通的特性是必须跨越行程,甚至服务器软、硬件,及企业的边界。过去几年内,最为知名的RPC机制包括了CORBA、Java
RMI及COM。Java RMI是J2EE及其主角EJB(Enterprise Java
Beans)框架的重要底层技术;COM/DCOM/COM+则是Windows
DNA赖以维系的命脉。这些机制对平台或程序语言的一致性,都有一定的要求:RMI捆绑的是Java语言,COM捆绑的是Windows操作系统,CORBA则需要适当的运行环境和平台来支持。这些远端通讯的机制在今日,乃至可预见的未来,仍会在IT领域中扮演着重要的角色。在过去
,企业为达到内部整合(EAI),或许应用程序统一采用DCOM、CORBA,再搭配某种Message
Broker的通讯机制,并通过Broker作传输枢纽即可达成。然而,网络所带来的信息革命及电子商务,加上企业并购风潮的盛行,促使企业对系统整合的需求日盛,异构性系统间的通信亦随着大量增加,CORBA、Java
RMI、COM等RPC机制,开始显得僵硬、弹性不足,而这正是XML和SOAP诞生、并开始大放异彩的时代背景:SOAP利用XML纯文字的特性,提供一套机制,以XML来包装程序调用和信息。由于采用了XML,SOAP顺理成章地继承了许多XML的优点,可轻易透过HTTP、SMTP等网络上最常使用、极为流行的通信通道来夹带,更能穿越企业的防火墙,还可利用SSL、S/MIME等机制加密,安全性高。透过XML来传递信息,还有一项更大的优点,就是CORBA、Java
RMI及DCOM这些以专属二进制格式传送数据所不及的,那就是对程序语言、操作系统的独立性。由于是纯文字XML格式,SOAP信息可由任何一种程序语言所产生,被任何程序语言、甚至肉眼所解读。这个late-binding的特性,正是Web
Services时代所迫切需要的。
当然,SOAP不是万能丹,顾名思义,它是简单的标准。SOAP的设计者在设计时刻回避了一些分布式运算环境中较为复杂的课题,包括分布式垃圾收集技巧(Distributed
Garbage
Collection)等相关课题。SOAP的设计者认为,标准尽量保持简单,往往会给用者更大的弹性空间。
许多人担心SOAP的前途,深恐XML
Protocol Working Group未来会制定出一套取代SOAP的正式标准。但根据来自W3C内部的消息指出,未来XML
Protocol的研发方向,将是制定出一套和SOAP能追溯相容的标准。对SOAP的支持者来说,无疑是剂强心针。
如果您希望与本文章的作者或其所在机构,进一步交流,请联系:畅享网 姜小姐
jill.jiang@amt.com.cn | 021-51096826-112 |
在线联系