RPC 包含的要素(webservice)

协议层:tcp/ip

应用层: http协议

SOAP: http+xml

分布式通信框架-webservice分析

什么是webservice

webservice也可以叫xml web service webservice, 轻量级的独立的通讯技术

  1. 基于web的服务:服务端提供的服务接口让客户端访问
  2. 跨平台、跨语言的整合方案

为什么要使用webservice

跨语言调用的解决方案

什么时候要去使用webservice

电商平台,订单的物流状态。

.net实现的webservice服务接口

webservice中的一些概念

WSDL(web service definition language  webservice 定义语言)

webservice服务需要通过wsdl文件来说明自己有什么服务可以对外调用。并且有哪些方法、方法里面有哪些参数

wsdl基于XML(可扩展标记语言)去定义的

  1. 对应一个.wsdl的文件类型
  2. 定义了webservice的服务器端和客户端应用进行交互的传递数据和响应数据格式和方式
  3. 一个webservice对应唯一一个wsdl文档

SOAP(simple object access protocol简单对象访问协议)

http+xml

webservice通过http协议发送和接收请求时, 发送的内容(请求报文)和接收的内容(响应报文)都是采用xml格式进行封装

这些特定的HTTP消息头和XML内容格式就是SOAP协议

  1. 一种简单、基于HTTP和XML的协议
  2. soap消息:请求和响应消息
  3. 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标签

  1. type属性: 引用porttype

<soap:binding style=”document”> 表示输出类型为文档

  1. operation : 指定实现方法
  2. 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. 1.4分布式-通讯协议TCP/IP

    服务器和浏览器的通讯依靠http协议,今天就来分析一下http协议的具体内容以及https的加密过程.除了这些协议,为了增加服务器和浏览器交互的可拓展性,也出现了rest风格的请求方式,方便调用接口. ...

  2. Kafka 温故(三):Kafka的内部机制深入(持久化,分布式,通讯协议)

    一.Kafka的持久化 1.数据持久化:     发现线性的访问磁盘(即:按顺序的访问磁盘),很多时候比随机的内存访问快得多,而且有利于持久化:     传统的使用内存做为磁盘的缓存     Kafk ...

  3. 1.5分布式通讯框架-RMI

    分布式通信框架-RMI讲解 什么是RPC Remote procedure call protocal RPC协议其实是一个规范.常用PRC框架:Dubbo.Thrif.RMI.Webservice. ...

  4. 关于wcf,webservice,webapi或者其他服务或者接口有什么区别 WCF、WebAPI、WebService之间的区别 【转载】HTTP和SOAP完全就是两个不同的协议 WebService学习总结(一)——WebService的相关概念

    wcf,webservice采用的是rpc协议,这个协议很复杂,所以每次要传递.要校验的内容也很复杂,别看我们用的很简单,但实际是frame帮我们做掉了rpc生成.解析的事情webapi遵循是rest ...

  5. 基于dubbo框架下的RPC通讯协议性能测试

    一.前言 Dubbo RPC服务框架支持丰富的传输协议.序列化方式等通讯相关的配置和扩展.dubbo执行一次RPC请求的过程大致如下:消费者(Consumer)向注册中心(Registry)执行RPC ...

  6. Kafka的通讯协议

    Kafka的通讯协议 标签:kafka Kafka的Producer.Broker和Consumer之间采用的是一套自行设计的基于TCP层的协议.Kafka的这套协议完全是为了Kafka自身的业务需求 ...

  7. 理解java底层通讯协议

    引言: 本周自己重新对底层通讯方式进行了学习,在此做一个输出. 分别从客户端发送多个请求的需求角度与服务端接收多个连接发送请求的需求角度,剖析4种基于java自身技术实现的消息方式通讯所带来的影响,解 ...

  8. MODBUS-RTU通讯协议简介

    MODBUS-RTU通讯协议简介   什么是MODBUS? MODBUS 是MODICON公司最先倡导的一种软的通讯规约,经过大多数公司 的实际应用,逐渐被认可,成为一种标准的通讯规约,只要按照这种规 ...

  9. 【读书笔记】iOS-防止通讯协议被轻易破解的方法

    开发者可以选择类似Protobuf之类的二进制通讯协议或者自己实现通讯协议,对于传输的内容进行一定程度的加密,以增加黑客破解协议的难度. 参考资料: <iOS开发进阶> --唐巧

随机推荐

  1. linux/shell/bash 自动输入密码或文本

    linux有些命令需要输入密码,比如ssh或su,又不能通过参数指定,正常只能手动输入.这让人多少有些懊恼,尽管这样很安全! 破解:expect 默认没这个东西,需要安装 apt/yum instal ...

  2. 扫码下单与ERP客户端锁桌功能FAQ

    一.需求场景:因为目前客户端和平台端有两套数据库,两套数据库通过网络交互信息,且双方都可以发起支付,这种结构容易造成: 1.一笔订单同时支付.一笔订单支付时未按最新订单进行支付,支付多付.支付少付的情 ...

  3. 网页验证码出不来,读取验证码时出错:javax.imageio.IIOException: Can't create cache file!

    版权声明:本文为博主原创文章,仅作为学习交流使用 转载请注明出处 https://www.cnblogs.com/linck/p/10593053.html 今天打开项目时,发现登陆界面的验证码出不来 ...

  4. jquery字符串操作

    目的:把自己常用到的jquery操作字符串总结一下 w3cSchool关于js字符串的整理:有需要的时候可以查 http://www.w3school.com.cn/js/jsref_obj_stri ...

  5. ios copy和strong,浅拷贝和深拷贝

    copy@property (nonatomic, copy) NSString *name;self.name = mutableString;这时,name对mutableString一个深拷贝, ...

  6. Elastic Stack-Elasticsearch使用介绍(二)

    一.前言     写博客,更要努力写博客! 二.Mapping介绍 Mapping类似于数据库中的表结构的定义:这里我们试想一下表结构定义需要那些: 1.字段和字段类型,在Elasticsearch中 ...

  7. mysql查询order by 指定字段排序

    当MySQL查询时排序的字段不是数字时而是汉字的时候也可以用when  then 来指定排序. 列如yewu_check表的status 字段不是0,1,2而是汉字待办,已办,退回.可以如下写法: S ...

  8. jeecg入门操作—一对多表单开发

    一.创建主表 创建订单主表(torder_main)  二.创建附表客户信息表(torder_customer) 设置附表页面外键不可见 设置附表外键  三.创建附表机票 信息表(torder_tic ...

  9. 解决 golang unrecognized import path "golang.org/x" 之类错误的一种尝试

    如果使用的开发IDE是goland,那么 打开 FILE -> setting -> Go Modules 选项 ,在proxy 选项上填写 "https://goproxy.i ...

  10. MacOS10.14下Eclipse安装lombok

    按照网上的教程来做,会导致eclipse启动不了,这里记录一下解决方案: 一.复制lombok.jar到../Eclipse/下 二.修改eclipse.ini,在末尾追加: -Xbootclassp ...