1. Web Service基本概念

Web Service(Web服务)是一种远程调用技术,他的作用就是从远程系统中获取业务数据。具体来说,Web Service可以让你的网站使用其他网站的资源,比如在网页上显示天气、地图、twitter上的最新动态等等。

在Web Service的体系架构中有三个角色:服务提供者(Service Provider),也叫服务生产者;服务请求者(Service Requester),也叫服务消费者;服务注册中心(Service Register),也叫服务代理,服务提供者在这里发布服务,服务请求者在这里查找服务,获取服务的绑定信息。

角色间主要有三个操作:

  • 发布(Publish),服务提供者把服务按照规范格式发布到服务注册中心;
  • 查找(Find),服务请求者根据服务注册中心提供的规范接口发出查找请求,获取绑定服务所需的相关信息。
  • 绑定(Bind),服务请求者根据服务绑定信息对自己的系统进行配置,从而可以调用服务提供者提供的服务。

Web Service的实现是通过SOAP在Web上提供的软件服务,使用WSDL文件进行说明,并通过UDDI进行注册。

相关概念:

  • XML:(Extensible Markup Language)扩展型可标记语言。面向短期的临时数据处理、面向万维网络,是SOAP的基础。
  • SOAP:(Simple Object Access Protocol)简单对象存取协议。是XML Web Service 的通信协议。当用户通过UDDI找到你的WSDL描述文档后,他通过可以SOAP调用你建立的Web服务中的一个或多个操作。SOAP是XML文档形式的调用方法的规范,它可以支持不同的底层接口,像HTTP(S)或者SMTP。
  • WSDL:(Web Services Description Language) WSDL 文件是一个 XML 文档,用于说明一组 SOAP 消息以及如何交换这些消息。大多数情况下由软件自动生成和使用。
  • UDDI (Universal Description, Discovery, and Integration) 是一个主要针对Web服务供应商和使用者的新项目。在用户能够调用Web服务之前,必须确定这个服务内包含哪些商务方法,找到被调用的接口定义,还要在服务端来编制软件,UDDI是一种根据描述文档来引导系统查找相应服务的机制。UDDI利用SOAP消息机制(标准的XML/HTTP)来发布,编辑,浏览以及查找注册信息。它采用XML格式来封装各种不同类型的数据,并且发送到注册中心或者由注册中心来返回需要的数据。

2. 天气查询服务(入门)

2.1 需求

服务端:发布一个天气查询服务,接收客户端城市名,返回天气数据给客户端

客户端:发送城市名称给服务端,接收服务端的返回天气数据,打印

2.2 服务端

2.2.1  创建SEI(Service Endpoint Interface)接口,本质上就是Java接口

public interface WeatherInterface {
public String queryWeather(String cityName);
}

2.2.2  创建SEI实现类,在实现类上加入@WebService

import javax.jws.WebService;
//@WebService表示该类是一个服务类,需要发布其中的public的方法
@WebService
public class WeatherInterfaceImpl implements WeatherInterface {
@Override
public String queryWeather(String cityName) {
System.out.println("form client..."+cityName);
String weather = "晴转多云";
return weather;
}
}

2.2.3 发布服务,Endpoint发布服务,publish方法,两个参数:1.address:服务地址;2. implementor:服务实现类

import javax.xml.ws.Endpoint;

public class WeatherServer {
public static void main(String[] args) {
//使用Endpoint发布服务
Endpoint.publish("http://127.0.0.1:12345/weather", new WeatherInterfaceImpl());
}
}

2.2.4 测试服务是否发布成功,通过阅读使用说明书,确定客户端调用的接口、方法、参数和返回值存在,证明服务发布成功。

2.3 客户端

2.3.1 wsimport命令生成客户端代码

wsimport -s . http://127.0.0.1:12345/weather?wsdl

生成如下代码

2.3.2 根据使用说明书,使用客户端代码调用服务端

  • 第一步:创建服务视图,视图是从service标签的name属性获取
  • 第二步:获取服务实现类,实现类从portType的name属性获取
  • 第三步:获取查询方法,从portType的operation标签获取
import com.zang.ws.jaxws.ws.WeatherInterfaceImpl;
import com.zang.ws.jaxws.ws.WeatherInterfaceImplService; public class WeatherClient {
public static void main(String[] args) {
// 创建服务视图
WeatherInterfaceImplService weatherInterfaceImplService = new WeatherInterfaceImplService();
// 获取服务实现类
WeatherInterfaceImpl weatherInterfaceImpl = weatherInterfaceImplService
.getPort(WeatherInterfaceImpl.class);
// 调用查询方法,打印
String weather = weatherInterfaceImpl.queryWeather("北京"); System.out.println(weather);
}
}

3. Web Service优缺点

优点:

  • 发送方式采用http的post发送,http的默认端口是80,防火墙默认不拦截80,所以可以跨防火墙。
  • 采用XML格式封装数据,XML是跨平台的,所以webservice也可以跨平台。
  • Web Service支持面向对象。

缺点:

  • 采用XML格式封装数据,所以在传输过程中,要传输额外的标签,随着SOAP协议的不断完善,标签越来越大,导致webservice性能下降。

4. Web Service应用场景

4.1 跨越防火墙通信

Web服务使用基于XML消息处理作为基本的数据通信方式,应用程序可以使用HTTP和XML消息等标准在基于Web的应用程序之间交换信息,从而跨越防火墙。

4.2 应用程序集成

Web服务的开放标准使组织创建可重用的应用程序接口。当多个应用程序被包装成一个或一组Web服务之后,任何应用程序理论上都可以通过SOAP消息与任何其他应用程序进行通信。

4.3 软件复用

软件复用是在软件开发中避免重复劳动的解决方案。Web服务实现了业务级别的软件复用,通过互相调用Web服务,实现了Web服务的共享,Web服务的使用企业不需要再重新开发其他企业中已经存在的服务。

以天气Web服务为例,示例如下

5. Web Service适用场景

适用场景:

  • 发布一个服务(对内/对外),不考虑客户端类型,不考虑性能,建议使用webservice。
  • 服务端已经确定使用webservice,客户端不能选择,必须使用webservice。

不适用场景:

  • 考虑性能时不建议使用webservice。
  • 同构程序下不建议使用webservice,比如java 用RMI,不需要翻译成XML的数据。

Web Service基础——基础概念的更多相关文章

  1. .NET基础拾遗(7)Web Service的开发与应用基础

    Index : (1)类型语法.内存管理和垃圾回收基础 (2)面向对象的实现和异常的处理 (3)字符串.集合与流 (4)委托.事件.反射与特性 (5)多线程开发基础 (6)ADO.NET与数据库开发基 ...

  2. Web service基础

    Web service是Web应用程序 平台是XML+http XML是不同平台和不同编程语言之间的语言,用于编解码数据. http是因特网协议 XML是web service的基础 Web serv ...

  3. Web Service学习之一:Web Service原理

    一.定义 Web Service 不是框架也不是技术 而是解决远程调用.跨平台调用.跨语言调用问题的一种规范. 二.应用1.同一个公司新.旧系统的整合:比如CRM系统与OA.客服系统相互调用2.不同公 ...

  4. Web Service(一) 基础学习

    1 基础的Web Service平台是XML+HTTP. 2 Web Service平台的元素包括:SOAP(Simple Object Access Protocol)简单对象访问协议: UDDI( ...

  5. Web Service基础——规范及三要素

    1. Java中的Web Service规范 Java 中共有三种WebService 规范,分别是JAX-WS(JAX-RPC).JAX-RS.JAXM&SAAJ(废弃). 1.1 JAX- ...

  6. Android笔记之 Web Service 基础

    一.Web Service是什么? 就是网络服务.依据W3C的定义,WebServices(Web服务)是一个用于支持网络间不同机器互操作的软件系统,它是一种自包括.自描写叙述和模块化的应用程序,它能 ...

  7. Web Service基本概念

    Web Service也叫XML Web Service WebService是一种可以接收从Internet或者Intranet上的其它系统中传递过来的请求,轻量级的独立的通讯技术.是:通过SOAP ...

  8. WCF、Net remoting、Web service概念及区别

    Windows通信基础(Windows Communication Foundation,WCF)是基于Windows平台下开发和部署服务的软件开发包(Software Development Kit ...

  9. WCF、.Net Remoting、Web Service概念及区别

    此文章主要参考http://www.cnblogs.com/weiweibtm/archive/2013/06/21/3148583.html 参考书籍<WCF全面解析上册>.<WC ...

随机推荐

  1. 使用sun.misc.BASE64Decoder出错解决方案

    Access restriction: The type BASE64Decoder is not accessible due to restriction on required library ...

  2. LXT技术平台(Lenovo Trust Technology)

    LXT技术平台(L是Lenovo的缩写,T是技术Technology,X代表多个应用方向),是联想以用户需求为导向,整合先进技术,为用户提供最佳应用体验的一体化解决方案. 中文:LXT技术平台 外文: ...

  3. JavaBean的应用

    1. 获取JavaBean属性信息 例1.1 在JSP页面中显示JavaBean属性信息. (1)创建名称为Produce的类,该类是封装商品对象的JavaBean,在Produce类中创建商品属性, ...

  4. 我所理解的设计模式(C++实现)——解释器模式(Interpreter Pattern)

    概述: 未来机器智能化已然成为趋势,现在手机都能听懂英语和普通话,那我大中华几万种方言的被智能化也许也是趋势,我们的方言虽然和普通话相似,但是还是不一样的.这可能需要一个新的语法分析器来帮助我们. 我 ...

  5. BS系统经验总结

    本文章是对刚做完BS系统的总结.主要记录开发过程中遇到的问题,及问题是如何解决的. 1,界面显示 一个系统界面首先要和谐,比如不同页面文本框长度高度要统一,按钮样式要一致,表格显示一样居中都居中靠左都 ...

  6. C#中的集合(HashTable与Array类)

    一.Array类 1.Array类的属性 序号 属性 & 描述 1 IsFixedSize 获取一个值,该值指示数组是否带有固定大小. 2 IsReadOnly 获取一个值,该值指示数组是否只 ...

  7. HashTable HashMap HashSet区别(java)

    Hashtable: 1. key和value都不许有null值 2. 使用enumeration遍历 3. 同步的,每次只有一个线程能够访问 4. 在java中Hashtable是H大写,t小写,而 ...

  8. Element table使用技巧详解

    1.控制table某些行数不显示 下载附件的需求,有些行有附件,有些没有,所以需要过滤,重点是:Array.filter()使用 <el-card :body-style="{ pad ...

  9. C++类模板的三种特化

    说起C++的模板及模板特化, 相信很多人都很熟悉 ,但是说到模板特化的几种类型,相信了解的人就不是很多.我这里归纳了针对一个模板参数的类模板特化的几种类型, 一是特化为绝对类型: 二是特化为引用,指针 ...

  10. shell more less cat

    cat 连续显示.查看文件内容 more 分页查看文件内容 less 分页可控制查看文件内容 通俗点说: cat一次性把文件内容全部显示出来,管你看不看得清,显示完了cat命令就返回了,不能进行交互式 ...