SOA的提出是在企业级计算领域,意在将紧耦合的系统划分为面向业务的、粗粒度、松耦合、无状态的服务,服务发布出来供其它服务调用,一组互相以来的服务就构成了SOA架构下的系统。
既然是一个架构,那么就认为SOA是包含了运行环境,编程模型,架构风格和相关方法论等在内的一套新的分布式软件系统构造方法和环境,涵盖服务的整个生命周期。
SOA本质上又可以看作是服务的集合,服务之间彼此通信,这种通信可能是简单的数据传递,也可能是两个或者更多的服务协调进行某些活动,服务之间通过某些方法进行链接
所谓服务就是精确定义,封装完善,独立于其他服务所处环境和状态的函数。
Web Services 是一个平台独立的,松耦合的,自包含的,基于可编程的Web应用程序,可使用开放的XML标准来描述、发布、发现、协调和配置这些应用程序,用于开发分布式的,互操作的应用程序。
几乎所有的SOA架构都离不开Web Services,它具备以下几个特点:所有的访问都通过SOAP访问进行,用WSDL定义的接口封装,通过UDDI进行目录查找,可以动态改变一个服务的提供方而无需影响客户端的配置,外界客户端根本不需要关心访问服务端的实现
适合大数据量低频率访问符合服务大颗粒度功能,基于性能和效率平衡的要求,SOA服务提供的是大颗粒度的应用功能,而且跨系统边界的访问频率也不会像程序间函数调用那么频繁,通过使用WSDL和基于文本的SOAP请求,可以实现一次性接收处理大量数据
基于标准的文本消息传递为异构系统提供了通信机制:Web Services所有的通信都是通过SOAP进行的,而SOAP是基于XML的,XML是结构化的文本消息,而他也是异构系统间通信最好的消息格式。
他是基于XML在分散或分布式的环境中交换信息的简单的协议,允许服务提供者和服务客户经过防火墙在互联网上进行通信,其设计是为在一个松耦合,分布的环境中使用XML对等的交换结构化的和类型化的信息提供了一个简单且轻量级机制
XML结构:
<bookstore>
<book category='python'>
<title lang="en">Everyday Learningtitle>
<author>davieyangauthor>
<year>2019year>
<price>1000.00price>
book>
bookstore>
SOAP消息结构如下:
<?xml version="1.0">
<soap:Envelope xmlns:soap="http://www.w3.org/2019/11/04/soap-envelope" soap:encodingStyle="http://www.w3.org/2019/11/soap-encoding">
<soap:Header>
...
...
soap:Header>
<soap:Body>
...
...
<soap:Fault>
...
...
soap:Fault>
soap:Body>
soap:Envelop>
当SOAP消息真正需要在网络上传输的时候,SOAP消息能够与不同的底层传输协议绑定,同时SOAP消息也可以在多种消息传输模式中使用,包括HTTP,SMTP以及多用途网际邮件扩充协议MIME,它还支持从消息系统到远程过程调用协议(RPC)等大量的应用程序,当然大多数情况还是绑定在HTTP协议上传输
他是一个基于XML的用于描述Web Services以及如何对他进行访问的语言。
WSDL有几个重要组成部分:
WSDL可看作是Web Services接口的一种标准格式的文档,通过阅读WSDL就知道如何调用Web Services接口
通用的描述、发现与集成服务,它是一个独立与平台的框架,通过使用Internet来描述服务,发现企业,并对企业服务进行集成
C:\Users\Administrator>pip install suds-jurko
Collecting suds-jurko
Downloading https://files.pythonhosted.org/packages/bd/6f/54fbf0999a606680d27c69b1ad12dfff62768ecb9fe48524cebda6eb4423/suds-jurko-0.6.tar.bz2 (143kB)
|████████████████████████████████| 153kB 344kB/s
Installing collected packages: suds-jurko
Running setup.py install for suds-jurko ... done
Successfully installed suds-jurko-0.6
C:\Users\Administrator>python
Python 3.7.2 (tags/v3.7.2:9a3ffc0492, Dec 23 2018, 23:09:28) [MSC v.1916 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> from suds.client import Client
>>> url = "http://ws.webxml.com.cn/WebServices/MobileCodeWS.asmx?wsdl"
>>> client=Client(url)
>>>
>>> print(client)
Suds ( https://fedorahosted.org/suds/ ) version: 0.6
Service ( MobileCodeWS ) tns="http://WebXml.com.cn/"
Prefixes (1)
ns0 = "http://WebXml.com.cn/"
Ports (2):
(MobileCodeWSSoap)
Methods (2):
getDatabaseInfo()
getMobileCodeInfo(xs:string mobileCode, xs:string userID)
Types (1):
ArrayOfString
(MobileCodeWSSoap12)
Methods (2):
getDatabaseInfo()
getMobileCodeInfo(xs:string mobileCode, xs:string userID)
Types (1):
ArrayOfString
>>> result=client.service.getMobileCodeInfo("15901281916")
>>> print(result)
15901281916:北京 北京 北京移动大众卡
>>>
C:\Users\Administrator>python
Python 3.7.2 (tags/v3.7.2:9a3ffc0492, Dec 23 2018, 23:09:28) [MSC v.1916 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> from suds.client import Client
>>> from suds.xsd.doctor import ImportDoctor, Import
>>> url = "http://www.webxml.com.cn/WebServices/WeatherWebService.asmx?wsdl"
>>> imp = Import("http://www.w3.org/2001/XMLSchema", location="http://www.w3.org/2001/XMLSchema.xsd")
>>> imp.filter.add('http://WebXml.com.cn/')
>>> client=Client(url, plugins=[ImportDoctor(imp)])
>>> result=client.service.getWeatherbyCityName(u"北京")
>>> print(result)
(ArrayOfString){
string[] =
"直辖市",
"北京",
"54511",
"54511.jpg",
"2019/11/4 17:56:54",
"5℃/16℃",
"11月4日 晴",
"西南风小于3级转东北风3-4级",
"0.gif",
"0.gif",
"今日天气实况:气温:14℃;风向/风力:西南风 3级;湿度:61%;紫外线强度:中等。空气质量:中。",
"紫外线指数:中等,涂擦SPF大于15、PA+防晒护肤品。
健臻·血糖指数:不易波动,天气条件好,血糖不易波动,可适时进行户外锻炼。
穿衣指数:较冷,建议着厚外套加毛衣等服装。
洗车指数:较不宜,路面有积水,车子易被溅上泥水。
空气污染指数:中,易感人群应适当减少室外活动。
",
"5℃/16℃",
"11月5日 晴转阴",
"东北风转南风小于3级",
"0.gif",
"2.gif",
"3℃/15℃",
"11月6日 多云",
"西南风转东北风小于3级",
"1.gif",
"1.gif",
"北京位于华北平原西北边缘,市中心位于北纬39度,东经116度,四周被河北省围着,东南和天津市相接。全市面积一万六千多平方公里,辖12区6县,人口1100余万。北京为暖温带半湿润大陆性季风气候,夏季炎热多雨,冬季寒冷干燥,春、秋短促,年平均气温10-12摄氏度。北京是世界历史文化名城和古都之一。早在七十万年前,北京周口店地区就出现了原始人群部落“北京人”。而北京建城也已有两千多年的历史,最初见于记载的名字为“蓟”。公元前1045年北京成为蓟、燕等诸侯国的都城;公元前221年秦始皇统一中国以来, 北京一直是中国北方重镇和地方中心;自公元938年以来,北京又先后成为辽陪都、金上都、元大都、明清国都。1949年10月1日正式定为中华人民共和国首都。北京具有丰富的旅游资源,对外开放的旅游景点达200多处,有世界上最大的皇宫紫禁城、祭天神庙天坛、皇家花 园北海、皇家园林颐和园,还有八达岭、慕田峪、司马台长城以及世界上最大的四合院恭王府等各胜古迹。全市共有文物古迹7309项,其中国家文物保护单位42个,市级文物保护单位222个。北京的市树为国槐和侧柏,市花为月季和菊花。另外,北京出产的象牙雕刻、玉器 雕刻、景泰蓝、地毯等传统手工艺品驰誉世界。",
}