WebService

一、背景

WebService:解决异构系统之间的数据共享问题
  WebService就是一个部署在Web服务器上的,它向外界暴露出一个能够通过Web进行调用的API。当我们想要获取相关信息时,我们可以调用别人写好的service服务,我们调用就能够得到结果了!amazon,天气预报系统,淘宝网,校内网,百度等把自己的系统服务以WebService服务的形式暴露出来,让第三方网站和程序可以调用这些服务功能。
  
1、不同语言之间数据共享需要解决什么问题?
(1)传输的数据可以跨平台,谁都认识它。
(2)提供的服务要能很方便调用最好像网站那样可以什么浏览器什么操作系统都可以访问。

2、目前有哪些技术可以解决上面的问题?
(1)json与xml每个语言都认识还可以解析。所以我们只要传送json或者xml这种格式的数据就行了。
(2)如果我们把服务部署在web站点上是不是可以做到像访问网站那样方便呢?如果可以,那应该叫web服务(web service)。

二、定义

(1)应用程序组件
(2)使用开放协议进行通信
(3)独立的(self-contained)并可自我描述
(4)可通过使用UDDI来发现
(5)可被其他应用程序使用
(6)XML是Web Services的基础

1、理解WebService是一种跨编程语言和跨操作系统平台远程调用技术(RPC)。
(1)跨编程语言和跨操作平台:服务端程序采用java编写,客户端程序则可以采用其他编程语言编写,反之亦然!跨操作系统平台则是指服务端程序和客户端程序可以在不同的操作系统上运行。
(2)远程调用:一台计算机A上的一个程序可以调用到另外一台计算机B上的一个对象的方法,譬如,银联提供给商场的POS刷卡系统,商场的POS机转账调用的转账方法的代码其实是跑在银行服务器上。再比如,amazon,天气预报系统,淘宝网,校内网,百度等把自己的系统服务以WebService服务的形式暴露出来,让第三方网站和程序可以调用这些服务功能,这样扩展了自己系统的市场占有率,往大的概念上吹,就是所谓的SOA应用。
  从表面上看,WebService就是一个应用程序向外界暴露出一个能通过Web进行调用的API,也就是说能用编程的方法通过Web来调用这个应用程序。我们把调用这个WebService的应用程序叫做客户端,而把提供这个WebService的应用程序叫做服务端。
  从深层次看,WebService是建立可互操作的分布式应用程序的新平台,是一个平台,是一套标准。它定义了应用程序如何在Web上实现互操作性,你可以用任何你喜欢的语言,在任何你喜欢的平台上写Web service ,只要我们可以通过Web service标准对这些服务进行查询和访问。
  WebService平台需要一套协议来实现分布式应用程序的创建。任何平台都有它的数据表示方法和类型系统。要实现互操作性,WebService平台必须提供一套标准的类型系统,用于沟通不同平台、编程语言和组件模型中的不同类型系统。Web service平台必须提供一种标准来描述Web service,让客户可以得到足够的信息来调用这个Web service。最后,我们还必须有一种方法来对这个Web service进行远程调用,这种方法实际是一种远程过程调用协议(RPC)。为了达到互操作性,这种RPC协议还必须与平台和编程语言无关。
这几段话引用自:https://blog.csdn.net/qq_31683583/article/details/105793037

理解以HTTP协议为基础,通过XML进行客户端和服务器端通信的框架/组件
(1)两个关键点:
1)服务端提供的功能,通过xml描述;
2)第一步中描述的功能,嵌入到HTTP协议中,使得能通过HTTP协议进行通信(就是SOAP)
(2)采用这两个技术的主要目的:
1) 跨平台,支持HTTP协议的主机和服务器都能够建立通信联系,并且大部分主机和服务器都支持HTTP协议,一般而言,所有主机和服务器之间的通信都需要通过防火墙,HTTP协议的优势在于防火墙一般不会封掉80端口,这样就方便安全通信;
2) 跨语言,任何语言都支持XMl文件的解析,这样不同语言之间也可以用XML传递信息,通信的内容受XMl限制;例如,java开发的服务器端,c语言的客户端也可以访问。
这几段话引用自:https://blog.csdn.net/weixin_41768263/article/details/80507945

三、Web services 平台的元素

1、XML(Extensible Markup Language,扩展性标记语言)
可参考:《XML 系列教程》

XML用于传输格式化的数据,是Web服务的基础。
namespace-命名空间。
xmlns=“http://itcast.cn” 使用默认命名空间
xmlns:itcast=“http://itcast.cn”使用指定名称的命名空间

2、SOAP(Simple Object Access Protocol,简单对象访问协议)
可参考:《SOAP 教程》

SOAP 是基于 XML 的简易协议,可使应用程序在 HTTP 之上进行信息交换。
或者更简单地说:SOAP 是用于访问网络服务的协议。

SOAP 是XML的协议通信规范,SOAP作为一个基于XML语言的协议用于网上传输数据。
SOAP = 在HTTP的基础上+XML数据
SOAP是基于HTTP的
SOAP的组成如下:
(1)Envelope,必须的部分。以XML的根元素出现。
(2)Headers,可选的。
(3)Body,必须的。在body部分,包含要执行的服务器的方法。和发送到服务器的数据。

3、UDDI(Universal Description, Discovery and Integration,通用描述、发现与集成服务)
可参考:《UDDI》

UDDI 是一种目录服务,企业可以使用它对 Web services 进行注册和搜索。
UDDI 是一个独立于平台的框架,用于通过使用 Internet 来描述服务,发现企业,并对企业服务进行集成。
(1)UDDI 指的是通用描述、发现与集成服务
(2)UDDI 是一种用于存储有关 web services 的信息的目录。
(3)UDDI 是一种由 WSDL 描述的 web services 界面的目录。
(4)UDDI 经由 SOAP 进行通信。
(5)UDDI 被构建入了微软的 .NET 平台。

4、WSDL(WebService Description Language,Web服务描述语言)
可参考:《WSDL 教程》

告诉别人如何调用服务
通过XML形式说明服务在什么地方-地址。
通过XML形式说明服务提供什么样的方法 – 如何调用。

WSDL 是基于 XML 的用于描述 Web Services 以及如何访问 Web Services 的语言。
(1)WSDL 指网络服务描述语言
(2)WSDL 使用 XML 编写
(3)WSDL 是一种 XML 文档
(4)WSDL 用于描述网络服务
(5)WSDL 也可用于定位网络服务
(6)WSDL 还不是 W3C 标准

5、XSD(XML Schema Definition,XML定义模式)
可参考:《Schema 教程》

XML Schema 的作用是定义 XML 文档的合法构建模块,类似 DTD。
(1)定义可出现在文档中的元素
(2)定义可出现在文档中的属性
(3)定义哪个元素是子元素
(4)定义子元素的次序
(5)定义子元素的数目
(6)定义元素是否为空,或者是否可包含文本
(7)定义元素和属性的数据类型
(8)定义元素和属性的默认值以及固定值
  WebService平台就是用XSD来作为其数据类型系统的。当你用某种语言(如VB.NET或C#)来构造一个Web service时,为了符合WebService标准,所有你使用的数据类型都必须被转换为XSD类型。你用的工具可能已经自动帮你完成了这个转换,但你很可能会根据你的需要修改一下转换过程。

为什么说XML Schema 很快会在大部分网络应用程序中取代 DTD?
(1)XML Schema 可针对未来的需求进行扩展
(2)XML Schema 更完善,功能更强大
(3)XML Schema 基于 XML 编写
(4)XML Schema 支持数据类型
(5)XML Schema 支持命名空间

XML+XSD,SOAP和WSDL就是构成WebService平台的三大技术
总结:
  Web Service 就是发布在web上的服务。使用http传递数据。传递的数据是满足soap协议规范的xml文档。使用wsdl描述发布信息让别人能看懂怎么去调用。

四、Socket通信

ISO七层模型:物理层、数据链路层、网络层、传输层、会话层、表示层、应用层。
1、Socket是大多数通讯协议实现传输数据的基础。
2、HTTP是对Socket的进一步封装,可以提高我们的开发效率。
3、SOAP协议其实就是规定了XML文本应该满足怎样的格式,因为这样才方便解析,做到了统一。
后续可Socket相关补充代码。

五、WebService的原理流程

1、Client 有需要,想调用一个服务,但不知道哪里去调用。但知道 UDDI Registry 上可以查到。
2、果然 UDDI 记录了某个一个叫做 Web Server A 的服务器能提供这样的服务。
3、于是 Client 去 Web Server A, 询问确切的调用方法。
4、Web Server A 看到 Client 提出的“确切方法查询”之后, 立即返回给它一个 WSDL 描述的 xml 文档这里记录他能提供的各类方法接口。
5、Client 了解到这些之后,将这些 xml 的接口方法,封装成为 HTTP 请求 , 发给 Web Server A。这些封装方式采用的是标准的 SOAP 方式 , 实质是满足 HTTP 协议的一些 SOAP 的报文消息
6、Web Server A 回应的也是 HTTP 协议的 SOAP 包。这样双方的请求 - 响应完全畅通。

参考文献:
https://blog.csdn.net/weixin_41768263/article/details/80507945
https://www.w3school.com.cn/webservices/index.asp
https://segmentfault.com/a/1190000013806509
https://blog.csdn.net/qq_31683583/article/details/105793037

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值