• 热门标签

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

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

被写过,分裂函数创建一个数组,使用“ #”作为分隔。这是因为在R P C调用期间当B o o k R e c o r d
被创建时,书籍标题同它的作者被“ #”号所隔开。因此,当分裂函数创建数组时,第一个元素
将总是保持书籍的标题,剩下的元素将是书籍作者。
程序清单11 - 4 8
如果没有相关的书籍,那么将给出一个提示消息,记录集资源将被释放。
程序清单11 - 4 9
3. 目录的更新
这种分布式系统的一个重要表现是它有能力从中心服务器更新条目,并独立于任何正在运
456使用XML 高级编程
下载
行的分布服务器。更新条目的H T M L界面如下所示。在下载的例子文件为A d d N e w. a s p文件(参
见图11 - 1 8)。
在这个部分,你将必须作为一名允许写文件的用户被登录,因为你将直接更新X M L文件。
一种方法是进行响应鉴定和对于客户目录的匿名用户失效。你能在IIS Management
Console中通过右击客户目录和选择特性做到这些。然后,选择Directory Securing(目录安
全)标记并点击E d i t(编辑)键,保证Allow Anonymous Access(允许匿名登录)不被选
择,而Windows NT Challenge/Response被选中。
图11-18
图11 - 1 9显示目录更新是如何工作的:
图11-19
被称作A d d N e w. a s p的文件包含以上的H T M L和实现X M L - R P C所需要的脚本。我们想激活的
第11章服服务器到服务器使用457 下载
AddNew.asp
使用者录入适当的
书籍信息,并点击
“Add Book”按钮
Bookserver.asp
用新的书籍更新本地
XML数据文件
XML-RPC调用
加入新的书箱
X M L - R P C方法有如下接口(参见表11 - 2)。
表11 - 2
方法名称参数
AddNewBook( ) c i t y—城市名字
P u b D a t e—出版日期
Ti t l e—书籍标题
A u t h o r s—书籍作者列表
S u b j e c t—书籍的主题领域
在客户页, A d d N e w. a s p以常用的PRC include文件和H T M L报头开始:
程序清单11 - 5 0
然后从上面的网页检查是否有一个作者被提交(它对一本书总是需要的)。如果有,就对每
一个提交的值设立参数数组:
程序清单11 - 5 1
既然对方法已定义了参数,就能对X M L - R P C使用C O M对象来激活它。该X M L - R P C将返回
一个已经被加入的书的新I D(关于XML-RPC COM工具的更多信息将在“到哪里去”一部分给
出)。通过创建x m l r p c C l i e n t对象的实例并向A d d N e w B o o k()方法传送参数得以实现。然后客户
得到了已经加入的新书的I D。
作为一个练习,你可能希望尝试和扩展该功能,即从B o o k S e r v e r. a s p文件里使用一个X M L -
RPC调用从书库得到一个新的ID,而不是从本地XML文件中得到ID。
程序清单11 - 5 2
458使用XML 高级编程
下载
最后是一个实际使用的用于更新书籍所需要的程序段,可输入城市、出版日期、书籍标题、
作者和书籍主题。A d d B o o k()方法作为一个隐藏元素引入。
程序清单11 - 5 3
4. Wr o x书籍服务器
在该应用中我们仍然没有处理的部分是由B o o k S e r v e r. a s p所支持的服务器的实现。这是在
I n t e r n e t上工作所使用的X M L - R P C实现工具的典型范例。不需要直接访问服务器代码,但是提供
一个界面标准和语义。这一部分对于理解R P C应用程序的另一侧是非常有用的。如果你自己写
R P C服务器应用程序,那么它也会有特别的帮助。
应用程序的这一部分就是实现我们已经在前面的程序中调用的远程方法。
在X M L - R P C的A S P版本里,尽管调用过程r p c s e r v e r()来激活X M L服务器,客户和服务器
的执行工具有相同的i n c l u d e文件报头部分对于所有X M L - R P C服务器的实现都是需要的——它是
一个简单的使用数据对服务器的初始化,这些数据都是通过X M L - R P C调用从客户处P O S T的。
第11章服服务器到服务器使用459 下载
程序清单11 - 5 4
除了早些看到的V B A r r a y函数,服务器的剩余部分都使用J a v a S c r i p t实现。
程序清单11 - 5 5
第一个函数是对于特定的城市得到一个相关主题。创建一个MSXML DOM对象的实例并打
开该城市的X M L文件,然后使用g e t E l e m e n t s B y Ta g N a m e ( )方法得到N o d e L i s t对象,并创建一个
相关主题的一维数组(它是书籍元素的第三个子结点)。
程序清单11 - 5 6
当集中了所有主题,我们想有一个方法来得到特定城市中被选主题的所有书籍,G e t B o o k s()
函数将做此工作,同样也装载该相关城市的X M L库。
程序清单11 - 5 7
460使用XML 高级编程
下载
然后,在一个N o d e l i s t对象里得到所有< b o o k >元素,并遍历每一个元素,检查书籍的主题类
型(书籍元素的第三个子结点)是否与从客户发送的一样。如果有一个主题匹配,那么该书的
标题被加入,成为一个数组的第一个元素。重复遍历每一个< a u t h o r s >元素(< b o o k >元素的第二
个子结点),每一个< a u t h o r s >元素可能有多个< a u t h o r >子结点。每个作者被加到数组的第二个元
素;该数组就是刚刚将书籍标题加入的那一个,其中每本书的作者被“ #”隔开,下一本书被加
到数组的下一元素等等,以以下形式直至结束。
实现该功能的代码如下:
程序清单11 - 5 8
如果对于特定城市无相关标题,那么将简单地返回文本“ no titles”(无标题)。
第11章服服务器到服务器使用461 下载
程序清单11 - 5 9
为了更新城市的X M L书库,我们将调用A d d N e w B o o k()方法,它将把新书标题、一个作
者的数组和书籍的主题作为数据加入。我们创建一个MXSML DOM的实例, 并用
 
中国航空网 www.aero.cn
航空翻译 www.aviation.cn
本文链接地址:XML高级编程上(143)