1、基于 XML 的三层 CS 模型基于 XML 的三层 C/S 模型日期:2005-08-12 来源: 作者: 字体:大 中 小 基于 XML 的三层 C/S 模型华中科技大学电信系 邓东华 杨宗凯 乐春晖摘要可扩展标志语言(简称 XML)在实现信息标准化、信息的交流与共享上有其独特的技术优势,因此它受到了广泛的重视。全文首先提出了基于 XML 的三层 Client/Server 模型;然后对其从数据获取、传输至显示以及外部处理的应用进行分析;接着以图书资料管理系统为例,说明了其具体的实现;最后对基于 XML 的三层 C/S 模型在信息标准化、数据处理等方面的应用优势进行了总结。关键词 XML,
2、Client/Server 模型 三层结构模型1问题的提出可扩展的标记语言 (Extensible Markup Language,缩写为 XML)是 SGML (Standard Generalized Markup Language,标准通用标记语言)的一个子集,是简化的 SGML。它是互联网联合组织(W3C)创建一组规范,以便于软件开发人员和内容创作者在网页上组织信息,其目的不仅在于满足不断增长的网络应用需求,而且也在于确保在通过网络进行交互合作时,具有良好的可靠性与互操作性。随着 Web 技术、分布式对象技术两者的有机结合,传统的Client/Server 主从结构逐渐向灵活的多级分布
3、式 Web 计算模型进行着演变。多级分布式 Web 体系结构可划分为三层:表示层(客户机层)、功能层(应用服务器层)、数据层(数据库服务器层)。而由于 XML 可以自定义文件类型,有利于信息的表达和结构化组织,而且可以以一致的方式格式化和传送数据,若将其运用到三层Client/Server 模型中,必将产生很大的网络应用优势。于是也就引出了本文讨论的问题-基于 XML 的三层 C/S 模型。2基于 XML 的三层 C/S 模型从网络体系结构各层次上看,基于 XML 的三层 C/S 模型具体实现的功能概括如下:数据层-实现数据的集成,XML 数据产生于多种数据源,但都以统一的 XML 格式表达传
4、输。功能层-实现数据的发送与处理,应用服务器通过 HTTP 交换数据,通过 DOM 处理 XML 数据。表示层-实现数据的显示,XML 数据的可以有多种表现形式,而且可以为外部直接访问、编辑或转换,也可被其他系统所用。基于 XML 的三层 Client/Server 模型的应用结构如图一所示:在基于 XML 的三层 C/S 模型中把 XML 作为一种结构化信息交换的表示方法,负责所有与数据源的通信,根据最终用户的要求,聚集和组织从多个远程数据库服务器上获取数据,并用 XML 形式交互式的把数据源返回的消息传递给客户机。以下是对基于 XML 的三层 C/S 模型应用过程的分析:2.1 从数据层获
5、取数据生成 XML 文档由于 XML 能够使不同来源的结构化的数据很容易的结合在一起,所以通过 XML,可以在中间层服务器上对从后端数据库和其它应用处来的数据进行集成。然后,数据就能被发送到客户或其他服务器做进一步的集合、处理和分发。虽然每个数据库描述数据都是不同的,但 XML 可以自己定义文件标签,例如:通过 XML,图书管理资料就可以很容易以标准的方式按照书名、作者、图书简介或其他的标准进行分类。2.2 XML 数据的发送与刷新利用 XML 开放的、基于文本的格式,可以将它通过 HTTP 像 HTML 一样传送。同时,中间层应用服务器将支持 XML 更新功能,将数据服务器上数据的变化及时地
6、传递给客户,反之亦然。因此,中间层能够从客户端得到更新的数据,并把数据传送到数据储存服务器上。2.3 XML 数据在表示层的显示XML 描述的数据发到表示层后,能够用多种方式显示。XML 定义的数据,其显示与内容是分开的,因此允许对同一数据指定不同的显示方式,使数据更合理地表现出来。CSS 和 XSL 为数据的显示提供了公布的机制,本地的数据能够以客户配置、使用者选择或其他标准决定的方式动态地表现出来。如图二所示:HTML 描述数据的外观,而 XML 描述数据本身。由于 XML 注重的是内容,其显示要通过 XSL(eXtensible Stylesheet Language,可扩展样式语言)或
7、 CSS 来实现。XSL 是为 XML 文件定义的一种标识语言,它提供类似但却远远超过 CSS 的强大功能。XSL 以包含了一套元素集的 XML 语法规范而定义,该语法规范将被用来把 XML 文件转换成 HTML 文件或 XML 文档。一个 XSL 样式表集合了一系列设计规则以用于将信息从 XML 文件中汲取出,并将其转换成 HTML 等其它格式。XSL 凭借其可扩展性能够控制无穷无尽的标签,而控制每个标签的方式也是无穷尽的。这就给 Web 提供了高级的布局特性。2.4 处理和编辑 XML 数据在基于 XML 的 C/S 模型中,不但能够通过 XML 集合多个数据源的数据,并把数据源数据及时传
8、输给表示层,而且,只要能理解 XML 数据,就能从客户层处理和编辑中间层的数据,然后通过中间层与数据层之间的数据刷新机制,对数据层数据进行刷新。运用 XML 解析器能够读入一串 XML 数据,经过处理,产生一棵结构树,并且使用 DOM 把所有数据元素作为对象。解析器或者用脚本把数据进行进一步的处理,或者把数据移交给另外的应用软件或对象进行进一步的处理。DOM 实际上是一个应用编程接口(API) ,用来定义一种标准方法。通过这种方法,能够处理 XML 结构树的元素。对象模式控制着使用者如何同结构树交流,并且把所有树的元素作为对象暴露出来。DOM用扩展方式支持名域、数据类型、查询和 XSL 转化。
9、3. 基于 XML 的三层 C/S 模型的应用实例下面具体介绍如何实现基于 XML 的三层 C/S 模型,以我们做所过的三层 C/S 模式的图书资料管理为例,它是基于 XML 表达、传输与处理的,其详细实现如下: 3.1 获取数据生成 XML 文档中间层通过 XML 获取数据源数据,生成 XML 文档,其中每一的书目信息包括:书名、作者、图书简介、出版日期。下面所列的就是获取数据源的一段典型例程。3.2 XML 文档通过 HTTP 从应用服务器传送到客户机层,并且支持XML 更新功能,使得中间层或数据服务器上数据的变化可以传递给客户。3.3 XML 数据的在表示层(客户机层)的表达发送到客户端
10、的数据(图书资料管理数据) ,可以根据用户对象及其不同的应用要求有不同的显示形式。如下所示的 XSL 样式表,就是一个显示示例,将生成一个 HTML 文档,包括一个表格,其中的一行就为一个“书目“元素。图书资料管理3.4 编辑、处理数据的实现只要理解了中间层 XML 文档的数据,就能从任何地方处理和编辑数据(图书资料管理数据) 。如下例所示,LoadDocument 程序打开 XML 文档,然后调用另一个程序 DisplayNode,它用来显示文档的结构。LoadDocument 传递给正在打开的 XML 文档的 ChildNodes 属性一个引用作为它的参数,同时传递一个整数用来标示开始显示
11、的层次级别。代码利用参数来格式化在 Visual Basic 文档结构显示窗口中的文本。DisplayNode 属性的函数会遍历文档寻找需要的 NODE_TEXT 节点类型串,一旦代码找到一个 NODE_TEXT 的节点,它会利用 NodeValue属性来获得相应的文本串。另外,当前节点的 ParentNode 属性指向一个元素类型的节点。元素节点实现了一个 NodeName 属性,Public Sub LoadDocument()Dim xDoc As MSXML.DOMDocumentSet xDoc = New MSXML.DOMDocumentxDoc.validateOnParse
12、= FalseIf xDoc.Load(“C:My Documentssample.xml“) ThenDisplayNode xDoc.childNodes, 0Else The document failed to load.End IfEnd SubPublic Sub DisplayNode(ByRef Nodes As MSXML.IXMLDOMNodeList, _ByVal Indent As Integer)Dim xNode As MSXML.IXMLDOMNodeIndent = Indent + 2For Each xNode In NodesIf xNode.nodeT
13、ype = NODE_TEXT ThenDebug.Print Space$(Indent) & xNode.parentNode.nodeName & _“:“ & xNode.nodeValueEnd IfIf xNode.hasChildNodes ThenDisplayNode xNode.childNodes, IndentEnd If Next xNodeEnd Sub4.总结在基于 XML 的三层 C/S 模型中,中间层一次性从远程数据库中获取满足客户需求的信息,生成相应的 XML 文档,以后中间层就不需要再与远程数据库进行交互了,即与远程数据库的连接也就终止了。一旦中间件软件把
14、满足客户需要的信息组装起来以后,就可以以XML 形式发送给客户了,这样客户与中间层也就无需进一步交互。同时,丰富的 XML 数据发送给客户端后,客户应用和脚本语言就可以直接使用这些数据,这时客户端与中间层服务器之间连接就可以中止了。因此,在 C/S 模型中发送给中间层的信息是简洁的、个人化的和精确的。应用服务器负责在正确的时候组装并交付正确的信息,这将网络上的流量减小并提供了高度的交互能力和用户的满意程度。而且,由于中间层可以提供动态的、易访问的内容,这些内容可以被客户方操作。而且,无需刷新整个用户界面就可以更新页面的内容,这样就减少了从服务器方获取客户方已有的信息所需的交互时间。用户可以方便
15、的远程管理数据,使得网络成为一种具有更大的交互性和互操作性的媒体。 其次,运用基于 XML 的三层 C/S 模型,XML 结构化的数据可以从商业规范和表现形式中分离出来,而且可以更详细地定义某个数据对象的数据结构,解决了信息标准化的问题。通过在三层 C/S 模型使用 XML,使得企业之间可以通过网络,与合作伙伴间,进行跨平台,跨操作系统的信息交换。参考文献 1 Hiroshi Maruyama ,Kent Tamura , Naohiko Uramoto .XML and Java Developing Web ApplicationsM. Addison-Wesley, August 1999. 2 Ed Tittel, Norbert Mikula , Ramesh Chandak . XML For DUMMIES M. IDG BOOKS Worldwide ,Inc ,1999. 3 宋晓梁,刘东生,许满武. 中间件及其在三层客户机/服务器模型中的应用N . 计算机应用 990713