• 热门标签

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

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

一个包含信息的包,这些包被传送到一个过程或从此返回。顶层是一个包。
下面这个例子是不允许的,因为它打破了这些规则:
程序清单11 - 8 9
数组a r r a y-1是错误的,因为它应该在顶层。而数组a r r a y-2的错误在于,如果它想在其他
地方被引用,那么应该使用A r r a y O f语法。
(6) 数据处理扩充的小结
S O A P加入了一些高级的X M L-R P C数据处理能力。一些可能成为X M L应程程序的标准的
数据类型的加入使S O A P有了一个坚实的基础。同样,一些技术,例如稀疏数组和多引用元素,
对于减少消息的传送量很有帮助。最后,像X M L一样进行传送,而不是编码成为名字/值对,
使数据格式变得更加灵活。
既然我们已经使数据处理能力大为提高,那么就再关注一下调用方法。
2. 调用
S O A P加入了大量的产生调用的方法。特别是它允许站点管理者很好地控制服务器什么消息
能处理和什么不能处理。更多的消息在消息包的头部提供,同样增加了使用H T T P动词的灵活
性。
对于远程过程调用使于H T T P标准作为传输机制存在的一个问题是,对以下两种请求难以区
分。即一些请求可能是某些高级通信过程的一部分,而另一请求可能是低级的或是恶意的。像
我们使用X M L-R P C时所看见的, P O S T动词用于传送这样一些消息,即该消息将决定哪个过程
将被执行。但是P O S T也被用于填写一些表格,它甚至被用于文档的上载。
在某些情况下,对R P C使用P O S T动词也许并不麻烦。例如;安全可能不成问题,或者——
更可能的情形是—可能有这样一种情况,开发商想在一个服务器上实现R P C功能,但是我们
没有向该服务器加入新动词或报头消息的能力。因此,我们总是想首先通过P O S T来尝试和传送
R P C消息。
第11章服服务器到服务器使用473 下载
但是,由于某些原因管理者可能采用防火墙技术阻止P O S T表单到达到服务器。他们尽管想
允许R P C调用通过,但并不想允许任何其他P O S T通过。区别X M L - R P C请求是一个被提交远程
过程调用而不是非RPC POST的唯一方法是通过考查实际被传送的数据。但是这意味着防火墙要
有更多的工作,因它需要防火墙能识别有效负载,并解析X M L。如果对于S O A P使用防火墙,那
么为什么不能使用B i z Ta l k,We b D AV,或者另外别的什么协议?一方面新的软件不停地被加入
防火墙,一方面又设计一些新的标准,这对于维护防火墙是不可能的。在这种状态下,我们将
需要一个动词来区分P O S T。
X M L - R P C的强大功能在于它使用H T T P作为它的传送机制。这是非常重要的,因为这就意
味着任何防火墙都将允许我们的过程调用通过—并不需要像使用Corba 或者D C O M那样设置特
别的端口。但是, X M L - R P C的一个问题是对自身的描述不够精确。它通过“ t e x t/x m l”内容形
式来使用动词P O S T,使对粒度的控制变得比较困难。
(1) HTTP的扩展
向H T T P加入新的动词是不可能也是不希望的,设想一下如果每一个人都能简单地把它们所
喜欢的动词随意加入的情况吧!防火墙和服务器管理者将无法知道特定请求的目的,无法提供
可靠的过滤。如果两个不同的服务器都想发明一个如R E N A M E的新动词,我们如果区分它们?
即使需要,也不能加入新的动词,应该在报头提供更多的消息。H T T P扩展模式提供一种机
制用于加入附加报头和对于H T T P请求加入动词信息,希望能在不分析请求本身的情况下,被传
送的消息自然状态能被推断出来。
对于HTTP扩展的一个完整描述参见:
http://www.w3.org/Protocols/HTTP/ietf-http-ext/。
在一条消息被处理前,扩展模式允许一个报头列表被一个服务器或者代理所理解。同样的
方法,你能够指定一个功能调用所需要的参数。如果函数能被运行,它可能需要一个起始参数
和一个终结参数,两者缺一,即为非法调用。使用扩展模式我们能够指定一些相似的过程。如
果服务器不理解任何强制性参数,那么它必须拒绝全部调用。
那么对于指定的消息又如何呢?首先无论你想使用什么H T T P动词,必须在它前面加前缀M
—如果出现了任何强制性的报头。第二个要求是这些强制性的报头使用同X M L命名空间相同
的机制被编组。下面扩展模式的例子有助于问题的理解:
程序清单11 - 9 0
在我们关注扩展之前,对于H T T P标准部分的含义应加以更新:
• 第一行的结尾指明我们遵从HTTP 1.1版本的要求。
474使用XML 高级编程
下载
• 主机报头说明将接收请求的服务器是w w w. w 3 . o rg。
• 第一行的中间有要求的U R L,格式为/ a - r e s o u r c e。
• 请求的长度是1 203 字节(C o n t e n t - l e n g t h),请求的M I M E类型是H T M L。
现在让我们看一下附加的扩展模式部分的信息:
• 因为第一行的动词有M -前缀,那么这肯定是一个M a n:报头。
• 一旦M -被删除,那么请求将使用H T T P动词P U T。
• Man:报头用一个U R I来识别一个命名空间和用1 6来命名它(第二行)。
• 16可以用来定义所有必需的用于P U T的报头。
• 我们有两个强制性报头—copyright 和c o n t r i b u t i o n s。
你所看到这里允许任何人使用c o p y r i g h t报头为他们自己的目的服务,只要一个唯一的命名
空间前缀用来避免混淆另外的c o p y r i g h t报头和我们在该例中所使用的c o p y r i g h t报头—它们可
能有许多。
(2) SOAP的强制性报头
让我们看一下S O A P所需要的报头。事实上在最新的规范里目前仅只有一个,你可能比较喜
欢这种方式。以前的S O A P标准有一个接口名和一个方法名。但是,事实上,方法名前有一个命
名空间前缀—在这个例子里为S o m e - N a m e s p a c e - U R I # G e tLa s t Tr a d e P r i c e—这可能会使S O A P
 
中国航空网 www.aero.cn
航空翻译 www.aviation.cn
本文链接地址:XML高级编程上(147)