一.简介

web service是一种跨编程语言和跨操作系统平台的远程调用技术,是基于网络的、分布式的模块化组件。

跨编程语言就是说服务器端程序采用 Java 编写,客户端程序则可以采用其他编程语言编写,反之亦然。跨操作系统平台则是指服务器端程序和客户端程序可以在不同的操作系统上运行。

我是做 php 的,你是 java 的,他是做.net,如果我们三个之间要进行通信,要进行数据交换,怎么办呢?

我们需要一个能和我们都能通信的工具。 soap, wsdl 被创造出来,使得运行在不同的操作系统并使用不同的技术和编程语言的应用程序可以互相进行通信。

  1. 它是基于 SOAP 协议的,数据格式是 XML
  2. 只支持 HTTP 协议
  3. 它不是开源的,但可以被任意一个了解 XML 的人使用

Web services 使用 XML 来编解码数据,并使用 SOAP(XML + HTTP) 借由开放的协议来传输数据的 web 应用程序。

因为用的是通用的 XML 格式,所以可以跨语言,跨平台使用SOAP 使用了 HTTP 协议,可以通过它做承载 XML 数据。

二.工作流程

WebService的一个简易工作流程:

客户端 ——>阅读WSDL文档(了解webservice的请求) ——> 调用WebService

上面的流程是一个大致的描述,客户端阅读WSDL文档发送请求,然后调用Web服务器最后返回给客户端,这和普通的http请求一样,请求->处理->响应,与普通的请求不一样的就是webservice请求中有一个WSDL文档和SOAP协议,以及.NET Framework自带的Web Service请求处理器 ISAPI Extension。

WebService的完整工作流程:

客户端——> 阅读WSDL文档 (根据文档生成SOAP请求) ——>发送到Web服务器——>交给WebService请求处理器 (ISAPI Extension)——>处理SOAP请求——> 调用WebService——>生成SOAP应答 ——> Web服务器通过http的方式交给客户端

名词解析:

SOAP: 是以XML形式提供简单、轻量、用于在分散或分布式环境中交换结构化和类型信息的机制。SOAP消息的基本结构通过HTTP协议传递XML数据。简单的说就是一个基于XML的协议。

WSDL : 是使用XML文档描述Web服务的标准,是Web服务的的接口定义语言,描述如何访问具体的接口,包含3个基本属性:

a. 如何访问服务:和服务交互的数据格式以及必要的协议。

b. 服务在哪里: 协议相关的地址,比如url信息等

c. 服务具有哪些功能: 服务提供的具体操作方法,=》就是你webservice中提供了哪些可调用的方法

原理详细描述:

无论使用什么工具、语言编写 WebService,都可以使用 SOAP 协议通过 HTTP 调用,其工作原理相同。创建 WebService 后,将其暴露给Web客户,任何语言、平台的客户都可以阅读其 WSDL 文档,以调用 WebService 。客户可以根据 WSDL 描述文档生成一个 SOAP 请求信息。 WebService 部署在Web服务器( 如IIS )上,客户生成的 SOAP 请求会被嵌入在一个 HTTP 请求中并发送到Web服务器,Web服务器(IIS)再将请求转发给 WebService 请求处理器。

对于.Net而言,WebService请求处理器则是一个 .NET Framework 自带的 ISAPI Extension。Web请求处理器用于解析收到的SOAP请求,调用 WebService,然后生成相应的SOAP应答。Web服务器得到SOAP应答后,在通过HTTP应答的方式将其返回给客户端。

WebService优势:

  1. 平台无关性,任何平台都可以使用WebService
  2. 编程语言无关系。 基于XML,XML本身与平台无关,使用XSD作为数据类型系统,不论用什么语言编写,所有数据类型都会被转换为XSD,只需要遵守WebService的统一标准即可。
  3. 部署、升级和维护Web服务简单、方便。
  4. 实现多数据、多服务的聚合。
  5. 成本低。
  6. 不受防火墙的影响。使用SOAP协议通信,封装了XML格式的数据,以ASCII文本的方式传输,而非二进制,调试方便,而且可以使数据容易的通过防火墙,不需要单独开通信端口。

总结:

WSDL、SOAP和UDDI(统一描述、发现和集成机制) 一起工作,支持WebService与Internet上的其他服务、应用程序和设备交互作用。UDDI提供了发布和定位Web服务功能(更多请自行了解),WSDL描述了Web服务,SOAP服务提供了传输消息。

跨平台调用之WebService的更多相关文章

  1. C#远程调用技术WebService修炼手册

    一.课程介绍 一位伟大的讲师曾经说过一句话:事物存在即合理!意思就是说:任何存在的事物都有其存在的原因,存在的一切事物都可以找到其存在的理由,我们应当把焦点放在因果关联的本质上.所以在本次分享课开课之 ...

  2. java调用CXF WebService接口的两种方式

    通过http://localhost:7002/card/services/HelloWorld?wsdl访问到xml如下,说明接口写对了. 2.静态调用 // 创建WebService客户端代理工厂 ...

  3. java获取https网站证书,附带调用https:webservice接口

    一.java 获取https网站证书: 1.创建一个java工程,新建InstallCert类,将以下代码复制进去 package com; import java.io.BufferedReader ...

  4. JQuery的Ajax使用Get,Post方法调用C#WebService并返回数据

    本文将介绍jQuery调用基于.NET Framework 3.5的WebService返回JSON数据,另外还要介绍一下用jQuery调用WebService的参数设置及设置不当所出现的问题,还有出 ...

  5. Java调用.Net WebService参数为空解决办法 (远程)调试webservice方法 转

    Java调用.Net WebService参数为空解决办法 (远程)调试webservice方法   同事遇到一个很囧的问题,java调,netwebservice的时候,调用无参数方法成功,调用有参 ...

  6. JAVA调用.NET WebService终极方案(包含对SoapHeader的处理)

    一.前言:      今日部门的产品需要用到短信功能,需要走公司统一的接口,而该短信接口是由.net开发的,利用两天时间彻底搞定了用java来调用.net 的web service,包括对soap h ...

  7. Java 常调用的Webservice接口的方法

    WebService是基于Web的服务,WebService使用SOAP协议实现跨编程语言和跨操作系统平台,接收和响应外部系统的某种请求,从而实现远程调用.WebService采用HTTP协议传输数据 ...

  8. 调用具体webservice方法时时报错误:请求因 HTTP 状态 503 失败: Service Temporarily Unavailable

    添加web引用会在相应项目的app.cofig文件中产生如下代码: <sectionGroup name="applicationSettings" type="S ...

  9. Android之ksoap2-android详解与调用天气预报Webservice完整实例

    Google为Android平台开发Web Service客户端提供了ksoap2-android项目,在这个网址下载开发包http://code.google.com/p/ksoap2-androi ...

随机推荐

  1. MySQl安装图形界面

    对于mysql的图形界面有很多个:1.MySQL GUI Tools MySQL GUI Tools是一个可视化界面的MySQL数据库管理控制台,提供了四个非常好用的图形化应用程序,方便数据库管理和数 ...

  2. [atAGC034F]RNG and XOR

    令$N=2^{n}$先将$\forall 0\le i<N,a_{i}$除以$\sum_{i=0}^{N-1}a_{i}$,即变为概率 令$f_{i}$表示$i$的答案(第一次变成$i$的期望步 ...

  3. [gym102822I]Invaluable Assets

    令$f(x)=\frac{x^{2}+c}{x}$,换言之即$x$物品的性价比的倒数 对其求导即$f'(x)=1-\frac{c}{x^{2}}$,其导数严格递增,换言之即是一个严格下凸函数,记$x_ ...

  4. HouseRobber II

    // // Created by Administrator on 2021/7/27. // #ifndef C__TEST01_HOUSEROBBER2_HPP #define C__TEST01 ...

  5. 9.2 k8s结合Jenkins与gitlab实现代码升级与回滚

    1.部署Jenkins 1.1 安装jdk # apt 安装jdk11 apt install openjdk-11-jdk # 查看 root@jenkins:~# java -version op ...

  6. FFT/NTT复习笔记&多项式&生成函数学习笔记Ⅰ

    众所周知,tzc 在 2019 年(12 月 31 日)就第一次开始接触多项式相关算法,可到 2021 年(1 月 1 日)才开始写这篇 blog. 感觉自己开了个大坑( 多项式 多项式乘法 好吧这个 ...

  7. Codeforces 1340F - Nastya and CBS(分块+哈希)

    Codeforces 题面传送门 & 洛谷题面传送门 首先看到这样的数据范围我们可以考虑分块,具体来说,对于每一块我们记录其中的括号是否能完全消掉,以及对其进行括号相消之后的括号序列(显然是一 ...

  8. Atcoder Regular Contest 072 C - Alice in linear land(思维题)

    Atcoder 题面传送门 & 洛谷题面传送门 首先求出 \(s_i\) 表示经过 \(i\) 次操作后机器人会位于什么位置,显然 \(s_0=D\),\(s_i=\min(s_{i-1},| ...

  9. RSA,DSA,ECDSA,EdDSA和Ed25519的区别

    RSA,DSA,ECDSA,EdDSA和Ed25519的区别 用过ssh的朋友都知道,ssh key的类型有很多种,比如dsa.rsa. ecdsa.ed25519等,那这么多种类型,我们要如何选择呢 ...

  10. 【豆科基因组】普通豆/菜豆/四季豆Common bean (Phaseolus vulgaris L.) 683个自然群体重测序2020NG

    目录 一.来源 二.结果 683份材料重测序 地方种landraces和育种品系breeding lines的多样性 表型和基因-环境互作(G by E) 菜豆产量潜力相关的MTAs(显著关联位点) ...