频道直达 - 专题 - 新闻 - 技巧 - 组网 - 开发 - 安全 - web编程 - 图像 - 操作系统 - 数据库 - 教育 - 旅游 - 健康 - 时尚 - 驱动 - 软件 - 游戏 - 多媒体 - ERP - 讨论组

Python Web 服务开发者 第 8 部分: Python SOAP 库

来源: 作者: 出处:巧巧读书 2007-10-09 进入讨论组
上一页 1 2 3 4 5 下一页 
谢 谢 收 藏 http://www.qqread.com/xml-soap/c350669.html

  不幸的是,要利用这一技术,您需要给在模块中定义的每个函数都添加这一逻辑。 清单 4 采用了一种更为通用的方法,对于您在一个模块内定义的所有函数,这种方法允许您轻松的将其定义在一个名称空间内。

您可以相当轻松的在多个名称空间中定义同一个方法,或者定义名称空间各不相同的多个方法(只要方法名是相同的)。为了达到这一目的,叫做 _functionMap 的函数一般会利用映射字典映射请求。字典的主键是名称空间,每个条目指向一个函数,当接收到与函数相对应的名称空间里的请求时就调用这个函数。然后,为了能看到模块内最上层函数(按照 ZSI 的要求),您可以使用简单的 lambda 来代表真正的函数定义。对于 getMonth , getMonth lambda 就会被调用;它再调用 _functionMap 查看调用的名称空间以及可用的函数映射。如果发现匹配的情况,就调用函数;反之,则发出异常。现在,要给模块添加新的函数,您要定义函数和对应的 lambda。

  注意一点:您需要在每个 lambda 定义的缺省参数中都放上一个对 _functionMap 的引用。这是因为,您在创建好 lambda 时希望删除模块对 _functionMap 函数的引用;如果不删除的话,那么这个函数将会被公开在您的 Web 服务接口上,因为对于任何在最上层定义的方法,ZSI 都允许它被调用。

  清单 4 展示文件 zsi-ns-server.py , 它用 ZSI 实现了可以知道名称空间的服务器

  清单 4. zsi-ns-server.py:更为通用的方法

#!/usr/bin/env python
import sys, calendar
#Import the ZSI machinery
from ZSI import dispatch
CAL_NS = "http://uche.ogbuji.net/eg/ws/simple-cal"
#The actual implementations
def getMonth(year, month):
  return calendar.month(year, month)
def getYear(year):
 return calendar.calendar(year)
#Generic function to check the namespace
def _functionMap(name,mapping,*args):
 cb = dispatch.GetClientBinding()
 func = mapping.get(cb.GetNS())
 if func is None:
  raise TypeError, "Unimplemented method %s %s" % (cb.GetNS(),name)
 return apply(func,args)
#Publicly defined methods
getMonthMap = {CAL_NS:getMonth,
        }
getMonth = lambda year,month,_functionMap=_functionMap,map=getMonthMap:_functionMap
("getMonth",map,year,month)
getYearMap = {CAL_NS:getYear,
       }
getYear = lambda year,_functionMap=_functionMap,map=getYearMap:_functionMap("getYear",map,year)
#Delete this so it is not available as a service.
del _functionMap
 
print "Starting server..."
dispatch.AsServer(port=8888)

更多文章 更多内容请看Python实用指南Wlan组网----家庭专题Python相关文章专题,或进入讨论组讨论。
上一页 1 2 3 4 5 下一页 
收藏此文】【 】【打印】【关闭
相关图文阅读
频道图文推荐
健 康 咨 询
时 尚 咨 询
巧巧读书宗旨
相关专题
讨论组问题推荐
站内各频道最新更新文档
站内最新制作专题
热门关键字导读
Photoshop教 程照片处理 照片制作 PS快捷键 抠图
计 算 机 故 障XP系统修复
艺 术 与 设 计设计 流媒体 设计欣赏 边框
计 算 机 安 全ARP
站内频道文章精选
巧巧电脑频道编辑信箱  告诉我们您想看的专题或文章