WebService是一个〔平台〕(https:baike。baidu。comitem平台1064049)独立的,低耦合的,自包含的、基于可〔编程〕(https:baike。baidu。comitem编程)的web的应用程序,可使用开放的〔XML〕(https:baike。baidu。comitemXML)(〔标准通用标记语言〕(https:baike。baidu。comitem标准通用标记语言6805073)下的一个子集)〔标准〕(https:baike。baidu。comitem标准219665)来〔描述〕(https:baike。baidu。comitem描述8928757)、发布、发现、协调和配置这些应用程序,用于开发分布式的交互操作的〔应用程序〕(https:baike。baidu。comitem应用程序5985445)。〔1〕 WebService技术,能使得运行在不同机器上的不同应用无须借助附加的、专门的第三方软件或硬件,就可相互交换数据或集成。依据WebService规范实施的应用之间,无论它们所使用的语言、平台或内部协议是什么,都可以相互交换数据。WebService是自描述、自包含的可用网络模块,可以执行具体的业务功能。WebService也很容易部署,因为它们基于一些常规的产业标准以及已有的一些技术,诸如〔标准通用标记语言〕(https:baike。baidu。comitem标准通用标记语言6805073)下的子集〔XML〕(https:baike。baidu。comitemXML)、HTTP。WebService减少了应用接口的花费。WebService为整个企业甚至多个组织之间的业务流程的集成提供了一个通用机制。 SOAP SOAP即〔简单对象访问协议〕(https:baike。baidu。comitem简单对象访问协议)(SimpleObjectAccessProtocol),它是用于交换〔XML〕(https:baike。baidu。comitemXML)(〔标准通用标记语言〕(https:baike。baidu。comitem标准通用标记语言)下的一个子集)编码信息的轻量级协议。它有三个主要方面:XMLenvelope为描述信息内容和如何处理内容定义了框架,将程序对象编码成为XML对象的规则,执行〔远程过程调用〕(https:baike。baidu。comitem远程过程调用)(RPC)的约定。SOAP可以运行在任何其他〔传输协议〕(https:baike。baidu。comitem传输协议)上。例如,你可以使用SMTP,即因特网〔电子邮件协议〕(https:baike。baidu。comitem电子邮件协议)来传递SOAP消息,这可是很有诱惑力的。在〔传输层〕(https:baike。baidu。comitem传输层)之间的头是不同的,但XML有效负载保持相同。 WebService希望实现不同的系统之间能够用〔软件〕(https:baike。baidu。comitem软件)软件对话的方式相互调用,打破了软件应用、网站和各种设备之间的格格不入的状态,实现基于Web无缝集成的目标。目录结构webserviceclientclient。pyserverapp。pyservice。py 使用Python实现服务端 service。py服务端启动文件fromspyneimportApplicationfromspyne。protocol。soapimportSoap11fromspyne。server。wsgiimportWsgiApplicationfromwsgiref。simpleserverimportmakeserverfromwebservice。server。appimportPyWebServiceifnamemain:soapappApplication(〔PyWebService〕,PyWebService,inprotocolSoap11(validatorlxml),outprotocolSoap11())wsgiappWsgiApplication(soapapp)host127。0。0。1port9567servermakeserver(host,port,wsgiapp)print(WebServiceStarted)print(http:host:str(port)PyWebService?wsdl)server。serveforever() app。pywebservice接口importjsonfromspyneimportServiceBase,rpc,DoublefromspyneimportInteger,Unicode,StringclassUser(object):definit(self,age,username):self。ageageself。usernameusernameself。sex0defgetuserlist(self,currentpage,pagesize):l〔〕foriinrange(10):l。append({age:self。age,sex:self。sex,username:self。username})returnlusermgrUser(18,Tom)classPyWebService(ServiceBase):。。。rpc(returnsUnicode)defgetversion(self):获取系统版本:return:returnjson。dumps({version:1。0})rpc(Integer,Integer,returnsUnicode)defgetuserlist(self,currentpage,pagesize):获取用户列表:return:returnjson。dumps(usermgr。getuserlist(currentpage,pagesize)) 使用Python实现客户端 client。pyimportjsonfromsuds。clientimportClientwsdlurlhttp:127。0。0。1:9567PyWebService?wsdlclientClient(wsdlurl)创建一个webservice接口对象respclient。service。getversion()调用这个接口下的getversion方法,无参数print(json。loads(resp)) 上面调用的客户端接口,测试结果如下:{version:1。0}