热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

分布式专题(三)webService

RPC包含的要素webservice协议层:tcpip应用层:http协议SOAP:httpxml什么是webservicewebse

 

 

RPC 包含的要素

webservice

        协议层:tcp/ip

        应用层: http协议

        SOAP: http+xml

 


什么是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 protocal简单对象访问协议)

http+xml

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

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


  1. 一种简单、基于HTTP和XML的协议
  2. soap消息:请求和响应消息
  3. http+xml报文

SEI(webservice endpoint interface webservice的终端接口)

webservice服务端用来处理请求的接口,也就是发布出去的接口。

 


开发一个webservice的实例


spring cxf+REST实现一个webservice服务

pom.xml

4.0.0com.gupao.vip.mic.webservicewebservice-restfulwar1.0-SNAPSHOTwebservice-restful Maven Webapphttp://maven.apache.org4.3.10.RELEASE1.9.2junitjunit3.8.1testorg.springframeworkspring-core${spring.version}org.springframeworkspring-beans${spring.version}org.springframeworkspring-context${spring.version}org.springframeworkspring-context-support${spring.version}org.springframeworkspring-web${spring.version}org.apache.cxfcxf-rt-transports-http3.1.8org.apache.cxfcxf-rt-frontend-jaxws3.1.8org.apache.cxfcxf-rt-frontend-jaxrs3.1.8javax.ws.rsjavax.ws.rs-api2.0javax.ws.rsjsr311-api1.1.1org.codehaus.jacksonjackson-core-asl${jackson.version}org.codehaus.jacksonjackson-mapper-asl${jackson.version}org.codehaus.jacksonjackson-jaxrs${jackson.version}org.codehaus.jacksonjackson-xc${jackson.version}webservice-restful

web.xml 

Archetype Created Web ApplicationcontextConfigLocationclasspath:application.xmlorg.springframework.web.context.ContextLoaderListenerCXFServletorg.apache.cxf.transport.servlet.CXFServlet1CXFServlet/ws/*

public class Response {String code;String msg;public String getCode() {return code;}public void setCode(String code) {this.code = code;}public String getMsg() {return msg;}public void setMsg(String msg) {this.msg = msg;}
}

import java.util.Arrays;
import java.util.List;public class Storage {//数据仓库public static List users= Arrays.asList(new User(1,"james"),new User(2,"mic"),new User(3,"sam"));
}

import javax.xml.bind.annotation.XmlRootElement;@XmlRootElement
public class User {private int id;private String name;public User() {}public User(int id, String name) {this.id = id;this.name = name;}public int getId() {return id;}public void setId(int id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}@Overridepublic String toString() {return "User{" +"id=" + id +", name='" + name + '\'' +'}';}
}

import javax.jws.WebService;
import javax.ws.rs.*;
import javax.ws.rs.core.MediaType;
import java.util.List;@WebService
@Path(value="/users/")
public interface UserService {@GET@Path("/") //http://ip:port/users@Produces({MediaType.APPLICATION_JSON,MediaType.APPLICATION_XML})List getUsers();@DELETE@Path("{id}") //http://ip:port/users/1@Produces({MediaType.APPLICATION_JSON,MediaType.APPLICATION_XML}) //请求acceptResponse delete(@PathParam("id") int id);@GET@Path("{id}") //http://ip:port/users/1@Produces(MediaType.APPLICATION_JSON)User getUser(@PathParam("id") int id);@POST@Path("add")Response insert(User user);@PUT@Path("update")Response update(User user);}

import org.springframework.stereotype.Service;import java.util.List;@Service
public class UserServiceImpl implements UserService{public List getUsers() {return Storage.users;}public Response delete(int id) { //0 1
// Storage.users.remove(id);Response response=new Response();response.setCode("00");response.setMsg("succes");return response;}public User getUser(int id) {return Storage.users.get(id);}public Response insert(User user) {return null;}public Response update(User user) {return null;}
}

application.xml


 


推荐阅读
  • 小白轻松使用axis2构建webservice
    引言:使用axis2是来实现webservice接口是比较常见的,就我来说,如果要学一个首次接触东西,简单了解相关基础概念 ... [详细]
  • SOA架构理解理解SOA架构,了解ESB概念,明白SOA与微服务的区别和联系,了解SOA与热门技术的结合与应用。1、面向服务的架构SOASOA(ServiceOrien ... [详细]
  • 2018深入java目标计划及学习内容
    本文介绍了作者在2018年的深入java目标计划,包括学习计划和工作中要用到的内容。作者计划学习的内容包括kafka、zookeeper、hbase、hdoop、spark、elasticsearch、solr、spring cloud、mysql、mybatis等。其中,作者对jvm的学习有一定了解,并计划通读《jvm》一书。此外,作者还提到了《HotSpot实战》和《高性能MySQL》等书籍。 ... [详细]
  • SpringMVC接收请求参数的方式总结
    本文总结了在SpringMVC开发中处理控制器参数的各种方式,包括处理使用@RequestParam注解的参数、MultipartFile类型参数和Simple类型参数的RequestParamMethodArgumentResolver,处理@RequestBody注解的参数的RequestResponseBodyMethodProcessor,以及PathVariableMapMethodArgumentResol等子类。 ... [详细]
  • 基于Socket的多个客户端之间的聊天功能实现方法
    本文介绍了基于Socket的多个客户端之间实现聊天功能的方法,包括服务器端的实现和客户端的实现。服务器端通过每个用户的输出流向特定用户发送消息,而客户端通过输入流接收消息。同时,还介绍了相关的实体类和Socket的基本概念。 ... [详细]
  • Activiti7流程定义开发笔记
    本文介绍了Activiti7流程定义的开发笔记,包括流程定义的概念、使用activiti-explorer和activiti-eclipse-designer进行建模的方式,以及生成流程图的方法。还介绍了流程定义部署的概念和步骤,包括将bpmn和png文件添加部署到activiti数据库中的方法,以及使用ZIP包进行部署的方式。同时还提到了activiti.cfg.xml文件的作用。 ... [详细]
  • 精讲代理设计模式
    代理设计模式为其他对象提供一种代理以控制对这个对象的访问。代理模式实现原理代理模式主要包含三个角色,即抽象主题角色(Subject)、委托类角色(被代理角色ÿ ... [详细]
  • 后台自动化测试与持续部署实践
    后台自动化测试与持续部署实践https:mp.weixin.qq.comslqwGUCKZM0AvEw_xh-7BDA后台自动化测试与持续部署实践原创 腾讯程序员 腾讯技术工程 2 ... [详细]
  • 微服务下的几个难点问题及常见的解决方案
    原文链接:https:cloud.tencent.comdevelopernews1362051背景介绍1.1幂等性定义数学定义在数学里,幂等有 ... [详细]
  • 本文为转载,原连接:https:www.zhihu.comquestion40822826简单说一下吧做要解释这些要从netconf说起。netconf ... [详细]
  • 原文地址:http:dogdogcom.blog.51cto.com2402458490398tcpdump-a将网络地址和广播地址转变成名字;-d将匹配信息包的代码以人们可以理解 ... [详细]
  • 阿里首席架构师科普RPC框架
    RPC概念及分类RPC全称为RemoteProcedureCall,翻译过来为“远程过程调用”。目前,主流的平台中都支持各种远程调用技术,以满足分布式系统架构中不同的系统之间的远程 ... [详细]
  • 1.一般应用(访问名称空间下方法)usenamespacemx_internal;vartextArea:TextAreaTextArea();textArae.htmlText ... [详细]
  • GetWindowLong函数
    今天在看一个代码里头写了GetWindowLong(hwnd,0),我当时就有点费解,靠,上网搜索函数原型说明,死活找不到第 ... [详细]
  • WCF分布式开发常见错误(30):StartelementBinaryexpected(期望的初始元素是Binary).FoundSayHello.调试WCF4.0代 ... [详细]
author-avatar
和你在一起1979
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有