Blog

XML的跨平台的WEB分布式数据交互

在需要对不同WEB系统之间进行跨语言、跨系统、跨平台的复杂的数据交互和共享,我们可以使用WDDX,它是一种基于XML的WEB分布式数据交互技术,这样就更能提高WEB站点的整体价值和方便构建强大的WEB系统。 下面先简要解释一下WDDX的交互原理 WDDX是通过“XML中间件”来实现数据交互。在WEB的各式各样的开发环境(PHP、ASP.net、Java等)都提供数据库支持,都有自己的数据结构,而WDDX为每个语言都提供 了一些模块,而这些模块能将这些数据结构转换成一种基于XML所描述的数据结构,即对这些数据进行序列化,反之,也可以把这些序列化的数据转换为某个语言的数据结构,也即是反序列化。在序列化和反序列化都是对数据进行无损转换。同时,由于所有的XML处理和交互过程都转移至WDDX模块中,开发者就不必再对XML文档本身进行编程和处理,从而使得这种语言之间的转换过程对于开发者来说就更加透明。 WDDX是由两个部分组成:
  1. 第一部分是根据XML 1.0规范制定的一种独立语言的数据描述。依据规范,WDDX支持的数据类型有布尔型(boolean)、 数字型(number)、 日期型(date-time) 和字符串型(string)这些基本数据类型。此外WDDX还支持下列复杂数据类型:数组(array)、 结构(structure)和记录集(recordset)。其中,数组可以是用整数标引的任意类型对象的集合,结构可以是用字符串标引的任意类型对象的集合,记录集则是对数据的列表型封装。记录集中只允许有基本数据类型。
  2. 第二部分就是为那些使用WDDX的语言所编制的模块集合。这些语言包括PHP 、Java、ASP.net、Python、ActiveX、COM、Perl等。另外,WDDX不仅仅适用于Web应用,将WDDX同COM相结合,开发人员甚至可以在任意一种流行的Windows应用开发环境下(包括Visual Basic,Delphi,PowerBuilder,C++和Java)用WDDX进行分布式数据开发。
下面是一个WDDX的范例: <wddxPacket version="1.0"> <header> <comment>PHP</comment> </header> <data> <struct> <var name="pi"> <number>3.1415926</number> </var> <var name="cities"> <array length="3"> <string>a</string> <string>b</string> <string>c</string> </array> </var> </struct> </data> </wddxPacket> 下面介绍一下WDDX的应用 使用WDDX主要包括数据序列化、WDDX包创建、数据反序列化三个步骤,通过调用相关函数实现。WDDX为不同的应用开发语言提供了不同的相关函数,为了简化,这里以利用WDDX在两个不同服务器上的PHP脚本之间传递复杂的数据结构为例,简要说明WDDX的使用。 PHP中的WDDX函数 wddx_packet_start(): 创建一个新的WDDX包,返回一个包标识。 语法: int wddx_packet_start(string [comment]);返回值: 整数 wddx_packet_end(): 结束一个指定的 WDDX包,并返回WDDX的字符串表示。参数 packet_id 为封包的标识代码。 语法: string wddx_packet_end(int packet_id);返回值: 字符串 wddx_serialize_value(): 生成一个单值的序列化表示,并创建一个新的WDDX包来包含该序列化的值,返回WDDX包的字符串表示。参数 var为将被序列化的值的内容。参数comment为在封包表头的字符串,可省略。。 语法: string wddx_serialize_value(mixed var, string [comment]);返回值: 字符串 wddx_serialize_vars(): 将多个数值序列化,并创建一个新的WDDX包来包含这一组序列化后的值,返回WDDX包的字符串表示。参数依次为将被序列化的值的内容。。 语法: string wddx_serialize_vars(string var_name | array var_names [, ... ] );返回值: 字符串 wddx_add_vars(): 用于增加一个或多个变量到使用wddx_packet_start()所创建的包中。若不成功则返回 false。 语法: boolean wddx_add_vars(int packet_id, ...);返回值: 布尔值 wddx_deserialize()/wddx_unserialize(): 将WDDX封包反序列化成分散资料,返回一个混合类型的变量,可以是字符串、数组等。如果 WDDX包包括超过一个的变量,一个相关数组将被返回,数组的键值将是序列化变量的名字。 参数 packet 为封包字符串。 语法: mixed wddx_deserialize(string packet);返回值: 混合类型资料 $pi = 3.1415926; $packet_id = wddx_packet_start("PHP"); wddx_add_vars($packet_id, 'pi'); $cities = array('a', 'b', 'c'); wddx_add_vars($packet_id, 'cities'); $packet = wddx_packet_end($packet_id); //header("Content-Type: text/xml"); echo $packet; //输出WDDX字符串 //解析WDDX字符串 $t = wddx_deserialize($packet); var_dump($t);

Words translated by CCJK

146,096,379

Request a call or contact us

  •  

    Call ccjk.support for professional assistance

  •  

    Click Here to leave us a message and be as detailed as possible.

We are Certified

Our Client Satisfaction

rating for previous quarte

4.00
  •  
    Inquiry Form

    Please take few minutes to fill
    inquiry form and get Free Quote

  •  
    Request a Call

    Click to receive Free Call, Our
    Representative will contact you

  •  
    Leave a Message

    Please leave us a message and
    be as detailed as possible

Over 95% of our clients recommend our language services to others


Copyright © CCJK Technologies Co., Ltd. 2000-2017. All rights reserved.
TOP