1.6分布式通讯协议-WebService
RPC 包含的要素(webservice)
协议层:tcp/ip
应用层: http协议
SOAP: http+xml
分布式通信框架-webservice分析
什么是webservice
webservice也可以叫xml web service webservice, 轻量级的独立的通讯技术
- 基于web的服务:服务端提供的服务接口让客户端访问
- 跨平台、跨语言的整合方案
为什么要使用webservice
跨语言调用的解决方案
什么时候要去使用webservice
电商平台,订单的物流状态。
.net实现的webservice服务接口
webservice中的一些概念
WSDL(web service definition language webservice 定义语言)
webservice服务需要通过wsdl文件来说明自己有什么服务可以对外调用。并且有哪些方法、方法里面有哪些参数
wsdl基于XML(可扩展标记语言)去定义的
- 对应一个.wsdl的文件类型
- 定义了webservice的服务器端和客户端应用进行交互的传递数据和响应数据格式和方式
- 一个webservice对应唯一一个wsdl文档
SOAP(simple object access protocol简单对象访问协议)
http+xml
webservice通过http协议发送和接收请求时, 发送的内容(请求报文)和接收的内容(响应报文)都是采用xml格式进行封装
这些特定的HTTP消息头和XML内容格式就是SOAP协议
- 一种简单、基于HTTP和XML的协议
- soap消息:请求和响应消息
- http+xml报文
SEI(webservice endpoint interface webservice的终端接口)
webservice服务端用来处理请求的接口,也就是发布出去的接口。
开发一个webservice的实例
1.定义一个借口并用注解标明为WebService方法
@WebService
interface ISayHello { @WebMethod
public String Hello(String name);
}
2.接口的实现
@WebService
public class ISayHelloImpl implements ISayHello{
@Override
public String Hello(String name) {
return "hello,"+name+". I'm qiansion";
}
}
3.用WebService发布
public class BootStrap {
public static void main(String[] args) {
Endpoint.publish("http://localhost:8888/qiansion/hello",new ISayHelloImpl());
System.out.println("publish success!");
}
}
//服务启动之后,在浏览器输入:http://localhost:8888/qiansion/hello?wsdl
//就会返回wsdl文档
分析WSDL文档

Types
定义整服务端的数据报文
Schema
Message
定义了在通信中使用的消息的数据结构
PortType
定义服务器端的SEI
input/output表示输入/输出数据
Binding标签
- type属性: 引用porttype
<soap:binding style=”document”> 表示输出类型为文档
- operation : 指定实现方法
- input/output 表示输入和输出的数据类型
Service标签
service: 服务器端的一个webservice的容器
name属性: 指定客户端的容器类
address: 当前webservice的请求地址


Axis/Axis2
apache开源的webservice工具
可以通过Axis生成其他语言版本的客户端
CXF
Celtix+Xfire 。 用的很广泛,因为集成到了spring
Xfire
高性能的Webservice
HTTP+JSON (新的webservice)
HTTP+XML
springmvc+REST实现的新webservice
1.6分布式通讯协议-WebService的更多相关文章
- 1.4分布式-通讯协议TCP/IP
服务器和浏览器的通讯依靠http协议,今天就来分析一下http协议的具体内容以及https的加密过程.除了这些协议,为了增加服务器和浏览器交互的可拓展性,也出现了rest风格的请求方式,方便调用接口. ...
- Kafka 温故(三):Kafka的内部机制深入(持久化,分布式,通讯协议)
一.Kafka的持久化 1.数据持久化: 发现线性的访问磁盘(即:按顺序的访问磁盘),很多时候比随机的内存访问快得多,而且有利于持久化: 传统的使用内存做为磁盘的缓存 Kafk ...
- 1.5分布式通讯框架-RMI
分布式通信框架-RMI讲解 什么是RPC Remote procedure call protocal RPC协议其实是一个规范.常用PRC框架:Dubbo.Thrif.RMI.Webservice. ...
- 关于wcf,webservice,webapi或者其他服务或者接口有什么区别 WCF、WebAPI、WebService之间的区别 【转载】HTTP和SOAP完全就是两个不同的协议 WebService学习总结(一)——WebService的相关概念
wcf,webservice采用的是rpc协议,这个协议很复杂,所以每次要传递.要校验的内容也很复杂,别看我们用的很简单,但实际是frame帮我们做掉了rpc生成.解析的事情webapi遵循是rest ...
- 基于dubbo框架下的RPC通讯协议性能测试
一.前言 Dubbo RPC服务框架支持丰富的传输协议.序列化方式等通讯相关的配置和扩展.dubbo执行一次RPC请求的过程大致如下:消费者(Consumer)向注册中心(Registry)执行RPC ...
- Kafka的通讯协议
Kafka的通讯协议 标签:kafka Kafka的Producer.Broker和Consumer之间采用的是一套自行设计的基于TCP层的协议.Kafka的这套协议完全是为了Kafka自身的业务需求 ...
- 理解java底层通讯协议
引言: 本周自己重新对底层通讯方式进行了学习,在此做一个输出. 分别从客户端发送多个请求的需求角度与服务端接收多个连接发送请求的需求角度,剖析4种基于java自身技术实现的消息方式通讯所带来的影响,解 ...
- MODBUS-RTU通讯协议简介
MODBUS-RTU通讯协议简介 什么是MODBUS? MODBUS 是MODICON公司最先倡导的一种软的通讯规约,经过大多数公司 的实际应用,逐渐被认可,成为一种标准的通讯规约,只要按照这种规 ...
- 【读书笔记】iOS-防止通讯协议被轻易破解的方法
开发者可以选择类似Protobuf之类的二进制通讯协议或者自己实现通讯协议,对于传输的内容进行一定程度的加密,以增加黑客破解协议的难度. 参考资料: <iOS开发进阶> --唐巧
随机推荐
- Android远程桌面助手(B1391)
ARDC(B1391), Download:https://files.cnblogs.com/files/we-hjb/ARDC%28B1391%29_EN.7z Android远程桌面助手(B13 ...
- 使用免费 mongodb数据库 + 免费node.js服务器搭建小程序接口
由于微信的小程序只支持不带端口的域名接口,不支持IP地址和接口,所以我们需要映射到80端口并绑定备案过的域名才能被微信小程序访问到.简单点就是接口需要 https 协议才行,找了许久的免费的数据库与n ...
- selenium-自动化用例(十一)
思路 将页面操作与用例case分别封装,编写case时就可以用同一个操作方法对应多个case 如下图: PageGUI:存放页面操作方法,每个页面写一个文件,每个文件中写同一个页面不同的操作,例如检索 ...
- python字典结构化数据
https://www.cnblogs.com/evablogs/p/6692947.html dict: 键-值(key-value)对集合{key:value},查找速度极快,但浪费内存. 1 2 ...
- linux如何批量关闭进程
碰到需要杀掉某一类进程的时候,如何批量杀掉这些进程,使用awk命令是很好的选择. 代码: ps -ef|grep aaa|grep -v grep|awk '{print "kill -9 ...
- EF Code First 连接MySql
看了很多文章,尝试了很多次总是进行不下去,整理一下,以便日后查看. 1.创建ASP.NET MVC项目(EFCodeFirst) 1.1.右键点击引用选择管理NuGet程序包下载MySql.Data. ...
- MATLAB中“fitgmdist”的用法及其GMM聚类算法
MATLAB中“fitgmdist”的用法及其GMM聚类算法 作者:凯鲁嘎吉 - 博客园http://www.cnblogs.com/kailugaji/ 高斯混合模型的基本原理:聚类——GMM,MA ...
- pyqt5在textBrowser添加文本并自动滑动到底
pyqt5在textBrowser添加文本并自动滑动到底 说明: 1.按下按钮pushButton,把单行文本框lineEdit里的内容循环不断的添加到多行文本展示框textBrowser.2.必须要 ...
- Neutron vxlan network--L2 Population
L2 Population 是用来提高 VXLAN 网络 Scalability 的. 通常我们说某个系统的 Scalability 好,其意思是: 当系统的规模变大时,仍然能够高效地工作. L2 ...
- clipboardjs复制到粘贴板
<!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head runat=&qu ...