• 小步前进之WebService


    Web Service

    什么是Web Service?

    有这样的需求,我们已经有一个使用JAVA编写的服务端程序,但是客户端使用C#语言编写,当我们的客户端想获取服务端的一个数据的时候,我们该如何做呢?

    Web Service由此而生。

    Web Service是一种跨编程语言和跨操作系统平台的远程调用技术。

    从表面上看,Web Service就是一个应用程序向外界透露出一个能通过Web进行调用的API,

    也就是说能用编程的方法通过Web来调用这个程序,即我们的客户端,而提供Web Service的叫做服务端。

    从深层来看,Web Service是建立可互操作的分布式应用程序的新平台,是一个平台,是一套标准。

    你可以用任何你喜欢的语言,在任何你喜欢的平台上写Web Service,

    只要我们可以通过Web Service标准对这些服务进行查询和访问。

    为什么使用Web Service

    跨平台协同工作
    我们可以用不同语言相互开发后,通过Web Service进行交互。

    可重复使用的应用程序组件
    像天气预报、语言翻译等我们可以直接通过Web Service进行访问,不需要重新开发。

    WebService交互的过程就是,WebService遵循SOAP协议通过XML封装数据,然后由Http协议来传输数据。
    WebService

    XML

    什么是XML?

    可扩展标记语言,标准通用标记语言的子集,简称XML,是一种用于标记电子文件使其具有结构性的标记语言。——《百度百科》

    首先,我们得知道什么是标记?在现实生活中,标记指的是记录某个信息的符号,而在计算中,标记指计算机所能理解的信息符号

    为什么使用XML?

    可扩展性
    通过此标记,计算机可进行处理包含的信息。它不像HTML,将已有的标记定义好,用户只能按照它的格式进行编写,xml是可拓展的,用户可自行定义软件的配置信息、版本号、使用语言等相关信息。

    SOAP(Simple Object Access Protocol)

    什么是SOAP?

    (SOAP)简单对象访问协议, 当双方需要进行数据交互的时候,数据应该采取一定的格式,这个格式就叫做协议。

    简单理解为:**soap=RPC+HTTP+XML,**即采用http作为通信协议,

    RPC作为一致性调用途径,XML作为数据传送的格式,从而允许服务提供者和服务客户经过防火墙在Internet上进行交换。

    它的作用就是 规定发送消息的格式和使用HTTP进行消息交换

    因为使用HTTP进行应用间的通信,而所有浏览器都支持HTTP,所以SOAP使用广泛。

    一条SOAP消息就是一个XML文档,它是基于XML的,它包含下列元素:

    • 必需的 Envelope 元素,可把此 XML 文档标识为一条 SOAP 消息
    • 可选的 Header 元素,包含头部信息
    • 必需的 Body 元素,包含所有的调用和响应信息
    • 可选的 Fault 元素,提供有关在处理此消息所发生错误的信息

    在下面的例子中,一个 GetStockPrice 请求被发送到了服务器。此请求有一个 StockName 参数,而在响应中则会返回一个 Price 参数。此功能的命名空间被定义在此地址中: http://www.example.org/stock
    SOAP 请求:

    POST /InStock HTTP/1.1
    Host: www.example.org
    Content-Type: application/soap+xml; charset=utf-8
    Content-Length: nnn
    
    <?xml version="1.0"?>
    <soap:Envelope
    xmlns:soap="http://www.w3.org/2001/12/soap-envelope"
    soap:encodingStyle="http://www.w3.org/2001/12/soap-encoding">
    
    <soap:Body xmlns:m="http://www.example.org/stock">
      <m:GetStockPrice>
        <m:StockName>IBM</m:StockName>
      </m:GetStockPrice>
    </soap:Body>
    
    </soap:Envelope>
    

    SOAP 响应:

    HTTP/1.1 200 OK
    Content-Type: application/soap+xml; charset=utf-8
    Content-Length: nnn
    
    <?xml version="1.0"?>
    <soap:Envelope
    xmlns:soap="http://www.w3.org/2001/12/soap-envelope"
    soap:encodingStyle="http://www.w3.org/2001/12/soap-encoding">
    
    <soap:Body xmlns:m="http://www.example.org/stock">
      <m:GetStockPriceResponse>
        <m:Price>34.5</m:Price>
      </m:GetStockPriceResponse>
    </soap:Body>
    
    </soap:Envelope>
    

    这样就完成了一次获取价格参数的数据交互。

    SOAP和HTTP关联和区别

    Soaphttp
    xml形式纯文本格式
    可以传递机构化的数据只能传输纯文本数据
    是简单对象访问协议标准超文本传输协议

    做个比喻就好理解了。

    TCP和 UDP 都是公路,暂且把TCP认为是一般公路,UDP 高速公路, SOAP和http就都是汽车,

    那么SOAP和http都可以在TCP和UDP 上跑。 说SOAP可以通过http来传送,

    实际就是说SOAP是小轿车,http是装轿车的卡车, 把SOAP的信息装到http里面,

    然后再运输,当然走的道路还是TCP或UDP 。 说SOAP可以通过http协议来传输,

    这句话不太准确,比较准确第说法是: SOAP信息可以通过http协议包装后通过TCP或UDP 传输。

    WSDL(web service definition language)

    web service的定义(描述)语言。当我们想调用WebService 的时候,怎样知道有什么函数可以调用以及函数调用时的参数呢

    我们需要一个文档,用来描述相关函数信息,自己阅读文档是需要成本的,能不能让机器阅读呢?

    解决方法是:用机器能阅读的方式提供一个正式的描述文档

    web service描述语言(WSDL)就是这样一个基于XML的语言,用于描述web service及其函数、参数和返回值。

    因为是基于XML的,所以WSDL既是机器可阅读的,又是人可阅读的,这将是一个很大的好处。

    一些最新的开发工具既能根据你的web service生成WSDL文档,又能导入WSDL文档,生成调用相应web service的代码。

    通俗来说,WSDL就是一本说明书,主要用来说明有什么函数可以调用以及相关参数。

    总结

    WebService服务器端首先要通过一个WSDL文件来说明自己有什么服务可以对外调用。简单的说,WSDL就像是一个说明书,

    用于描述WebService及其方法、参数和返回值。 WSDL文件保存在Web服务器上,通过一个url地址就可以访问到它。

    客户端要调用一个WebService服务之前,要知道该服务的WSDL文件的地址。

    WebService服务提供商可以通过两种方式来暴露它的WSDL文件地址:1.注册到UDDI服务器,以便被人查找;2.直接告诉给客户端调用者。

    作者信息
    2年crud码农一枚,如有错误请指正,如果本文对你有所帮助,请点赞,谢谢。
    参考 菜鸟教程SOAP与HTTP区别WebService

  • 相关阅读:
    Picasa生成图片幻灯片页面图文教程
    Ubuntu下缓冲器溢出攻击实验(可以看看问题分析)
    redis源码笔记 aof
    redis源码笔记 bio
    redis源码笔记 slowlog
    记录一个字符数组和字符指针的不同
    redis源码笔记 rediscli.c
    redis源码笔记 redis对过期值的处理(in redis.c)
    redis源码笔记 有关LRU cache相关的代码
    redis源码笔记 initServer
  • 原文地址:https://www.cnblogs.com/ma-nong01/p/14323443.html
Copyright © 2020-2023  润新知