1.1.3.1 可扩展标记语言(XML)
可扩展标记语言(XML)是W3C于1998年推荐使用的作为Internet上数据交换和表示的标准语言。经过这么多年的发展,XML已经被广泛地接受为用于不同计算机系统的互操作性解决方案。图1.1是XML的一个简单实例。从图1.1可以看出,XML可以很好地描述数据的结构。尽管XML也存在一些不足,但是由于其良好的性能已经被广为接受,所以现在是处理软件互操作性的最佳解决方案。Web服务所提供的接口、对Web服务的请求、Web服务的应答数据都是通过XML描述的,并且Web服务的所有协议都建立在XML基础之上。因此,XML被称为Web服务的基石,是Web服务中表示和封装数据的基本格式。
图1.1 XML实例
客户端和服务器能即时处理多种形式的信息,当客户端向服务器发出不同的请求时,服务器只需将数据封装进XML文件中,由用户根据自己的需求选择和制作不同的应用程序来处理数据。这不仅减轻了Web服务器的负担,也大大减少了网络流量。与HTML相比,XML文件具有如下特点。
(1)格式规范:XML文档属于格式规范的文件。HTML文件中的标记,有些是不需要结尾标记的,有些网页缺少若干结尾标记,照样能正确显示。而XML的标记一定要有结尾标记,即XML标记一定是成双成对的。
(2)具有验证机制:XML的标记是程序员自己定义的,标记的定义和使用是否符合语法需要验证。XML有两种验证方法:一种是DTD(Document Type Definition,文档类型定义),它是一个专门的文件,用来定义和检验XML文档中的标记;另一种是XML Schema,用XML语法描述,它比DTD更优越,多个Schema可以复合使用XML名称空间,可以详细定义元素的内容及属性值的数据类型。
(3)Web应用灵活:在XML中数据和显示格式是分开设计的,XML元数据文件就是纯数据的文件,可以作为数据源向HTML提供显示的内容,显示样式可以随HTML的变化而丰富多彩。也就是说,HTML描述数据的外观,而XML描述数据本身,是文本化的小型数据库表达语言。HTML数据和显示格式混在一起,显示出一种样式。XML采用的标记是自己定义的,这样数据文件的可读性就能大大提高,也不再局限于HTML文件中的那些标准标记了。由于XML是一个开放的基于文本的格式,它可以和HTML一样使用HTTP进行传送,不需要对现存的网络进行改变。数据一旦建立,XML就能被发送到其他应用软件、对象或者中间层服务器中做进一步的处理,或者可以被发送到桌面用浏览器浏览。
(4)显示样式丰富:XML数据定义打印、显示排版信息主要有3种方法。用CSS(Cascading Style Sheet,串联样式表)定义打印和显示排版信息,用XSLT(eXtensible Stylesheet Language Transformation,扩展样式表转换语言)转换到HTML进行显示和打印,用XSLT转换成XSL(eXtensible Stylesheet Language,可扩展样式表语言)的FO(Formatter Object,格式化对象)进行显示和打印。这些方法可以显示出丰富的样式,呈现漂亮的网页。
(5)电子数据交换格式:XML是为互联网的数据交换而设计的,它不仅是SGML(Standard General Markup Language,标准通用标记语言)定义的用于描述的文档,而且在电子商务等各个领域使数据交换成为可能。XML能够应用于各种领域的原因,就是它具有到目前为止其他方法所不具备的数据描述特点,控制信息不是采用应用软件的独有形式,而是采用谁都可以看得懂的标记形式来表现,所以XML最适合作为数据交换的标准,这也是XML受人关注的原因。用XML可以对数据关系进行定义,形成特有的标准,因此,各行各业都在建立自己的行业化标准,以应用于网络上电子商务的处理,把后台系统通过Web站点表现出来。在特定的企业之间或在业界归纳出一套标记集合,即约定用一套特定的XML应用语言作为交流工具是很有价值的。XML还可以作为数据仓库。一个XML文档就是一个小的数据库,通过对数据关系的定义形成各种关系、属性的数据,实现数据交换、上下文检索、多媒体传输等。
(6)数据处理便捷:XML是以文本形式来描述的一种文件格式。使用标记描述数据,可以具体指出开始元素(开始标记)和结束元素(结束标记),在开始和结束元素之间是要表现的元素数据,这就是用元素表现数据的方法。标记可以嵌套,因而可以表现层状或树状的数据集合。XML作为数据库,既具有关系型数据库(二维表)的特点,也具有层状数据库(分层树状)的特点,能够更好地反映现实中的数据结构。XML还可以很方便地与数据库中的表进行相互转换。XML是不同数据结构体的文本化描述语言。它可以描述线性表、树、图形等数据结构,也能描述文件化的外部数据结构,因此是一种通用的数据结构。XML使计算机能够很简易地存储和读取资料,并确保数据结构精确。由于XML是以文本形式描述的,所以适合于各种平台环境的数据交换。同样,由于使用文本来描述内容,XML可以越过不同平台的障碍进行正常的数据交换。当然,文本形式也可能因为文字代码的不同造成不能阅读的问题,但在这一点上,XML有着非常完美的解决方案,避免了一般语言设计的缺陷,它可支持国际化及地区化的文字编码。
(7)面向对象:XML的文件是树状结构的,同时也有属性,这非常符合面向对象的编程,而且也体现出对象方式的存储,Oracle数据库就使用了这种面向对象的特性。XML是信息的对象化语言。DTD和Schema是界面或类(Interface或Class),XML是对象实例(Object),XSL是方法和实现(Method和Implement)。XML-Data解决了XML类的继承问题,而XML中的资源(URI)寻址(URL)、物理实体等又构成了信息的组件(Component)。XML的资源描述框架(Resource Description Framework,RDF)是信息导航、浏览、搜索的用户界面(User Interface,UI)标准。
(8)开放的标准:XML基于的标准是为Web进行过优化的。Microsoft公司和其他一些公司以及W3C中的工作组正致力于确保XML的互用性,以及为开发人员、处理人员和不同系统及浏览器的使用者提供支持,并进一步发展XML的标准。由于XML彻底把标记的概念同显示分开,处理者能够在结构化的数据中嵌套程序化的描述以表明如何显示数据。这是令人难以相信的强大机制,使得客户计算机同使用者间的交互作用尽可能地减少了,同时减少了服务器的数据交换量,缩短了浏览器的响应时间。另外,XML使个人数据只能通过更新布告发生变化,减少了服务器的工作量,大大增强了服务器的升级性能。XML是信息高层封装与运输的标准。因此,XML也是不同应用系统之间的数据接口标准,是所有信息的中间层表示,是中间层应用服务器(Application Server,AS)的通用数据接口,甚至可以用于数据库技术的数据迁移过程、数据库报告格式中。
(9)选择性更新:通过XML,数据可以在选择的局部小范围内更新。每当一部分数据变化后,不需要重发整个结构化的数据。变化的元素必须从服务器发送给客户,变化的数据不需要刷新整个使用者的界面就能够显示出来。以往只要一条数据变化了,整个页面都必须重建,这严重限制了服务器的升级性能。XML也允许添加新的数据和更改原有的数据。加入的信息能够流入存在的页面,不需要浏览器发布一个新的页面。
(10)技术大家族:XML是一套完整的方案,有一系列相关技术,包括文件数据验证、显示输出、文件转换、文档对象和链接等。
另外,XML可以简化数据交换,支持智能代码和智能搜索。软件开发人员可以使用XML创建具有自我描述性的数据文档。除了上述特性之外,XML主要还有与平台无关、与厂商无关的特点。
世界上永远不会出现完美的语言,XML也一样,它也存在一些缺陷。第一,它是树状存储的,虽然搜索的效率极高,但是插入和修改比较困难。第二,XML的文本表现手法、标记的符号化等会导致XML数据以二进制方式表示的数据量增加,尤其是当数据量很大时,效率成为很大的问题。第三,XML文档作为数据提供者使用,没有数据库系统那样完善的管理功能。第四,由于XML是元置标语言,任何个人、公司和组织都可以利用它定义新的标准,这些标准间的通信就成了巨大的问题。因此,人们在各个领域形成一些标准化组织以统一这些标准,但是这些努力并不一定能够得到理想的结果。
1.1.3.2 简单对象访问协议(SOAP)
SOAP是一个基于XML的、通过HTTP在松散分布式环境中交换结构化信息的轻量级协议,是一种信息发送的格式,用于应用程序之间的通信。它为在一个松散的、分布的环境中使用XML对等地交换结构化的和类型化的信息提供了一个简单的轻量级机制。SOAP本身并不定义任何应用语义,它只是定义了一种简单的机制,通过一个模块化的包装模型和对模块中特定格式编码的数据重编码机制来表示应用语义。SOAP的这项能力使得它可以被很多类型的系统用于从消息系统到RPC(Remote Procedure Call,远程过程调用)的延伸。Web服务使用XML格式的消息与客户通信,而SOAP标准的核心思想是应该使用一种标准化的XML格式对消息进行编码。SOAP可以运行在任何传输协议上,如HTTP、简单邮件传送协议(Simple Mail Transfer Protocol,SMTP)等。Web服务希望实现不同的系统之间能够用软件对软件的方式进行对话,打破了传统的软件应用、网站和各种不同设备间互不相容的状态,实现了基于Web的“无缝集成”的目的。
我们可以把SOAP这种开放协议简单地理解为:SOAP=RPC+HTTP+XML。在这里,SOAP采用HTTP作为底层通信协议,RPC作为一致性的调用途径,XML作为数据传送的格式,允许服务提供者和服务客户经过防火墙在Internet进行通信交互。尽管HTTP不是高效的通信协议,且XML需要额外的文件解析,使得交易的速度大大低于其他方案,但SOAP还是使用HTTP来传送XML。因为XML是一个开放、健全、有语义的消息机制,而HTTP又能避免许多防火墙相关的问题,从而使SOAP得到了广泛的应用。
图1.2 SOAP消息表示框架
SOAP规范主要由4部分组成:SOAP信封(Envelop)、SOAP编码规则(Encoding Rules)、SOAP RPC表示(RPC Representation)和SOAP绑定(SOAP Binding)。SOAP信封构造定义了一个整体的SOAP消息表示框架(如图1.2),可用于表示消息中的内容是什么,是谁发送的,谁应该接收并处理它,以及这些处理操作是可选的还是必选的等。SOAP编码规则是一个定义传输数据类型的通用数据类型系统,这个简单类型系统包括程序语言、数据库和半结构数据中不同类型系统的公共特性。它通过定义一个数据的编码机制来定义应用程序中需要使用的数据类型,并可用于交换由这些应用程序定义的数据类型所衍生的实例。SOAP RPC表示定义了一个用于表示远端过程调用和响应的约定,例如如何使HTTP或SMTP协议与SOAP绑定,如何传输过程调用,在具体传输协议的哪个部分传输过程响应。具体来说,在RPC中使用SOAP时需要绑定一种协议,可以使用各种网络协议,如HTTP、SMTP和FTP(File Transfer Protocol,文件传输协议)等来实现基于SOAP的RPC,一般使用HTTP作为SOAP的协议绑定。SOAP通过协议绑定来传送目标对象的URI,在HTTP中的请求URI就是需要调用的目标SOAP节点的URI。远程过程调用是一种协议,使用RPC的时候,客户端的运行方式是调用服务器上的远程过程,这里的“过程”相当于.NET中的方法。在早些时候的编程语言中,没有“方法”这个概念,甚至还没有“函数”这个概念,所以被称为“过程”。远程过程调用RPC倾向于使Web服务的位置透明化。服务器可提供远程对象的接口,客户端使用服务器中的远程方法就像在本地使用这些Web服务对象的接口一样,这样就隐藏了Web服务的底层实现信息,客户端也不需要知道对象具体指向的是哪台主机。SOAP绑定定义了一个使用底层传输协议来完成在节点间交换SOAP信封的约定。SOAP协议中定义了与HTTP的绑定:利用HTTP来传送SOAP消息,主要是利用HTTP的请求/响应消息模型,将SOAP请求的参数放在HTTP请求里,将SOAP响应的参数放在HTTP响应里。虽然上述4部分是作为一个整体定义的,但它们在功能上是彼此独立的,尤其信封和编码规则是被定义在不同的XML命名空间中的,这样更有利于通过模块化获得定义和实现的简明性。
SOAP规范的核心部分则是消息处理框架。SOAP消息处理框架定义了一整套XML元素,用以“封装”任意XML消息,以便在系统之间传输(如图1.3、图1.4)。该框架包括的核心XML元素有Envelope、Header、Body和Fault。Envelope元素是SOAP消息的根元素,它指明XML文档是一个SOAP消息。SOAP消息的其他部分作为Envelope元素的子元素,被封装在Envelope元素之内。Header元素是包含头部信息的XML标签,是SOAP消息中的可选元素。Body元素是包含所有调用和响应的主体信息的标签,是SOAP消息中的必选元素。Fault元素是错误信息标签,它必须是Body元素的子元素,且在一条SOAP消息中,Fault元素只能出现一次。(www.xing528.com)
图1.3 SOAP请求实例
图1.4 SOAP响应实例
在Web服务中使用SOAP数据格式,这主要是由于SOAP的简洁性和通用性。此外,SOAP还有很多优点,主要包括:①支持跨平台。SOAP是一段文本代码,所以可以很轻松地在各种不同的平台下使用它,当然也可以在任何一种传送协议中发送SOAP内容。②支持标题和扩展名。使用SOAP数据时,还可以使用工具很轻松地添加追踪、加密和安全性等特性。③灵活的数据类型。SOAP允许在XML中对数据结构和DataSet编码,就像是编程语言中的简单数据类型(如数值型和字符型)一样。
1.1.3.3 Web服务描述语言(WSDL)
WSDL是一个基于XML的用于描述Web服务以及如何访问Web服务的语言。简单地说,WSDL就是一个XML文档(如图1.5),它将Web服务定义为一组服务访问点或端口的集合,客户端可以通过这些服务访问点对包含面向文档信息或面向过程调用的服务进行访问。WSDL服务定义为分布式系统提供了可被机器识别的SDK(Software Development Kit,软件开发工具包)文档,并且可用于描述自动执行应用程序通信中所涉及的细节。在WSDL中,由于服务访问点和消息的抽象定义已从具体的服务部署或数据格式绑定中分离出来,因此可以对抽象定义进行再次使用。这里,消息指对交换数据的抽象描述;端口类型指操作的抽象集合。用于特定端口类型的具体协议和数据格式规范构成了可以再次使用的绑定。将Web服务访问地址与可再次使用的绑定相关联,可以定义一个端口,而端口的集合则被定义为服务。
图1.5 WSDL文档的一个简化实例
一个完整的WSDL文档包括以下7个部分(如图1.6)。
(1)Data Type元素:Web服务使用的数据类型,它是独立于机器和语言的类型定义,这些数据类型被<message>标签所使用。
(2)Message元素:Web服务使用的消息,是对服务中所支持的操作的抽象描述,它定义了Web服务函数的参数。在WSDL中,输入参数和输出参数要分开定义,使用不同的<message>标签体标识,<message>标签定义的输入、输出参数被<port Type>标签使用。
图1.6 WSDL文档结构
(3)Port Type元素:Web服务执行的操作,该标签引用<message>标签的定义来描述函数名(操作名,输入、输出参数)。对于某个访问入口点类型所支持的操作的抽象集合,这些操作可以由一个或多个服务访问点来支持。
(4)Binding元素:Web服务使用的通信协议,是特定端口类型的具体协议和数据格式规范的绑定。<port Type>标签中定义的每一个操作在此绑定实现。
(5)Service元素:确定每一个<binding>标签的端口地址。在上述文档元素中,<data Type>、<message>、<port Type>属于抽象定义层,<binding>、<service>属于具体定义层。所有的抽象可以单独存在于别的文件中,也可以从主文档中导入。
(6)Operation元素:对服务中所支持的操作的抽象描述,一般单个operation描述了一个访问入口的请求/响应消息对。
(7)Port元素:该元素被定义为协议/数据格式绑定与具体Web访问地址组合的单个服务访问点。
1.1.3.4 通用描述、发现与集成(UDDI)协议
UDDI是一套基于Web的、分布式的、为Web服务提供信息注册中心的实现标准,同时也包含一组使企业能将自身提供的Web服务注册,以使得别的企业能够发现服务访问协议的实现标准。简单来说,UDDI是一种目录服务,企业使用它可以对Web服务进行注册和搜索。为了使用Web服务,客户当然需要知道相应公司提供的Web站点地址或者发现文件的URL。这个发现文件是非常有用的,它们可以将多个Web服务合并到一个单独的列表中,但是它们不允许客户在不了解这个公司的情况下搜索Web服务的信息。UDDI提供了一个数据库来填补这个缺陷,企业可以在这个数据库中发布自己的企业信息、企业的Web服务信息、每一个服务的类型,以及与这些服务有关的其他信息和规范的链接。不过即使用户在UDDI注册服务中找到了想要的Web服务,也只是能得到一个方法定义的集合,文档说明非常少,可以说相当于一个非常简单的API(Application Program Interface,应用程序接口)参考。
UDDI主要由UDDI模式(UDDI Schema)和UDDI应用程序接口(UDDI API)两部分构成。UDDI模式构成了Web服务的注册入口,UDDI应用程序接口描述了用于发布注册入口或查找注册入口所需的SOAP消息。UDDI模式中包含了5种XML数据结构,它们构成了一个UDDI注册入口。Business Entity定义了提供服务的企业信息;Business Service定义了提供的服务,一个Web服务可以提供多种服务;Binding Template提供了Web服务的技术规范,主要是协议和数据的交换格式;Tmodel提供了Web服务的存取位置地址,根据此地址可以找到相应的Web服务;Publisher Assertion结构用来描述一个Business Entity与其他Business Entity之间的关系。UDDI API主要包含发布API和查询API两部分。发布API定义了一系列的消息,这些消息的执行生成了UDDI模式的数据。查询API包含两类消息,即查找Web服务的消息和一个注册入口的消息。
UDDI的目标是建立标准的注册中心来加速互联网环境下电子商务应用中企业应用系统之间的集成,它是一个面向基础架构的标准。UDDI使用一个共享目录来存储企业用于彼此集成的系统界面及服务功能的描述,这些描述都是通过XML完成的。从概念上来说,UDDI注册中心所提供的信息由3部分组成(如图1.7):白页,包括地址、联系方法和企业标识;黄页,包括基于标准分类法的行业类别;绿页,包括该企业所提供的Web服务的技术信息,可能是一些指向文件或是URL指针,而这些文件或URL是为Web服务发现机制服务的。而在UDDI的第二版中新增了对外部分类法的支持(用户可以定义使用的分类方法)及描述企业与企业之间的关联关系的机制(为集团企业的注册奠定了基础)。
图1.7 UDDI构成
具备UDDI能力的企业可以在Internet上通过他们首选的企业应用,快速便捷地发现合适的商业实体并实现彼此之间的互操作,这最终将推动企业自身的经济效益。同时,UDDI也为企业迅疾地参与全球化的Internet经济提供了一个方便的发展道路;提供了一个在简单的开放式环境中,循序渐进地描述他们的服务和商业流程的途径;提供了一组规范,使企业能够在Internet上调用服务并为他们的首选客户提供增值服务。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。