• 热门标签

当前位置: 主页 > 航空资料 > 计算机 >

时间:2010-08-09 13:05来源:蓝天飞行翻译 作者:admin
曝光台 注意防骗 网曝天猫店富美金盛家居专营店坑蒙拐骗欺诈消费者

交到服务器脚本和网关的应用程序,因此,他们绝大多数都能使用这些有力的技术实现所需的
代码。
在这一部分,我们将关注对X M L - R P C的一些改进,它们中的一些被提议称为简单对象访问
协议(Simple Object Access Protocol, SOAP)。首先,我们将关注什么是S O A P和它形成的理由,
这一点与X M L - R P C的某些缺点的定位有关。随后,将看到使用A S P描述S O A P的简单工具—
尽管与你在X M L - R P C看到的风格一样,但一个S O A P界面能使用任何语言来写。最后,将就
S O A P所能解决的问题范围和不能解决问题的范围进行讨论。
我们将遵循S O A P的最新标准,它来自于h t t p : / / m s d n . m i c r o s o f t . c o m / x m l / g e n e r a l / s o a p s p e c - v 1 . a s p。
请注意,许多文章,包括在M i c r o s o f t站点的一篇仍然参考0 . 9版,但是该版本与新版本有很
大的不同。
11.4.1 XML-RPC++
最初,远程过程调用是通过H T T P的—使用X M L来定义那些调用—其灵活而功能强大,
因为它建立在两个广泛使用的标准之上。本书将使你相信—只要你需要—X M L作为标准之
第11章服服务器到服务器使用465 下载
一,功能是非常强大的,因为它能在许多系统里存储或传送、接收数据。就标准的通用性而言,
H T T P无疑是该领域的鼻祖。现在,几乎没有平台不使用针对该协议的服务器软件。
对于X M L - R P C的局限性的讨论与它的构筑基础的一些概念无关,这点我们11 0 %的确信。更
深入地对这些概念的实现进行分析,我们将看到需要比X M L - R P C更进一步。我们需要X M L -
R P C + +,我们需要S O A P。
当然,你将注意到我们并不是只做了如S t r o u s t r o p对C + +的原始定义中所描述的“++”
的工作。
那么, X M L - R P C在什么地方需要改进呢?第一个方面—尽管包含的范围很广—与在
X M L - R P C里消息被标记的方式有关,因此,我们将从关注X M L - R P C处理数据的复杂开始,并
考察S O A P是如何定位的。第二个方面与控制有关,将关注管理者如何管理什么能和什么不能被
传送入他所管理的系统,因此,当关注完数据问题之后,我们将继续考虑X M L - R P C的“全部或
没有”的问题是如何去解决的。
你可能会问既然S O A P如此之好,可为什么不将X M L - R P C完全淘汰呢?原因是尽管X M L -
R P C只存在于一个较短的时间,但它已经吸引了大量的爱好者。全球的程序员都与D a v e
Wi n e r的U s e r l a n d的例子交互,这些例子是使用X M L - R P C的。并且,正如你在这一部分看
到的,XML-RPC在实现上比SOAP简单,因此,它可能要存在一个较长的时间。
但是,如果某些人不能为他们的平台找到或建立一个S O A P模块,那么我将极力建议构造
一个仅使用X M L - R P C的新R P C系统。行业化的应用程序不可能使用X M L - R P C—尽管它
有许多爱好者。M i c r o s o f t是设计S O A P的关键,也非常热衷于推出它。不久,它可能将使
其他一些服务器到服务器的技术黯然失色。
1. 数据
在数据传送问题上, X M L - R P C的主要薄弱环节是冗长和数据类型。首先,我们将关注在
X M L - R P C里需要传送消息的数量,然后注意数据被分类的方式——通过这种办法,将看到整型
和字符串型在数据传送上的不同。然后,关注S O A P是如何允许复杂结构和数组被传送的。最后,
我们对S O A P不同于X M L - R P C的特点加以总结。
(1) 冗长
字典里对冗长的定义是:
冗长—过于详细的说明;使用了许多不需要的词语; 嗦;词不达意等。
它详细说明了这个X M L - R P C问题,要注意利用X M L - R P C进行消息传送的核心是内容不应
被遗失,即使是使用另外一套(更小的)符号集。
像你在前几段看到的那样,在X M L - R P C里,每个值被一个<Va l u e>元素定义。该元素里又
存在另一个元素,这个元素指明该数据类型,接下来是它本身的值,例如:
程序清单11 - 6 8
466使用XML 高级编程
下载
在这里有两个问题,第一个是从X M L的角度去考察,数据是没有类型的。只是简单地由一
个元素包含另一个元素,而这个元素又依次包含一个字符串,事实是直到开始在X M L - R P C的层
次上处理文档,才知道数据为整型—这可能对D O M是无效的。因为我们所拥有的只是一个被
称作<i n t>的元素。在X M L中关于数据分类的大量工作最近才开始,因此X M L - R P C的初始创作
者没有使用它。但是,正是因为我们开始使用它,故而我们将迅速地关注这个问题。
第二个问题是虽然对于一条或两条消息这种编码方法可能是较好的选择,但对于大量数据,
它将变得十分冗长:
程序清单11 - 6 9
因为可能的元素—<i n t>、<s t r i n g>、<a r r a y>等等—只有在高层才会理解,<v a l u e>
和<d a t a>元素在此显得效果不佳。例如,数组能够被这样表示:
程序清单11 - 7 0
(2) 结构
对于X M L - R P C的冗长问题,当我们对一个数据结构进行编码时将变得更为突出。回忆一下
X M L - R P C部分,< s t r u c t>元素用于传递一个结构,并且每部分都有一个< n a m e>和<v a l u e>
对,例如:
程序清单11 - 7 1
第11章服服务器到服务器使用467 下载
相同的消息也能被这样传送(假定仍然使用比较冗长的类型消息):
程序清单11 - 7 2
这仍然在使用一些如< s t r i n g>和<i n t>的元素来指明数据类型—稍后将解决该问题—
其优点是它将结构直接映射到了X M L。这意味着如果我们把句法加到X M L - R P C中去,那么我们
能够直接在客户和服务器间传递X M L。这也表明X M L - R P C如果不通过< s t r u c t>的整理,它无
法做到这一点,因为该< s t r u c t>元素“隐藏”了数据的结构。S O A P将处理这个问题,但是通
 
中国航空网 www.aero.cn
航空翻译 www.aviation.cn
本文链接地址:XML高级编程上(145)