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. Spring+Quartz实现文件中转站

    其实这个功能QQ邮箱就有,为什么还要自己开发一个呢?因为有的文件非常重要...其实是客户要求... 那么我们先来看一下QQ的界面: 我们设计的界面: 文件要到期了是否通知用户?这里我们支持邮件及短信方 ...

  2. 程序员眼中的RSA算法

    RSA算法是数学应用于实际的一项伟大发明,起数学过程相对而言还是比较专业的,有兴趣可以看看. RSA算法的证明过程,详见:http://www.ruanyifeng.com/blog/2013/06/ ...

  3. Android之使用XMLPull解析xml(二)

    转自:http://www.blogjava.net/sxyx2008/archive/2010/08/04/327885.html 介绍下在Android中极力推荐的xmlpull方式解析xml.x ...

  4. C++“窗体”程序设计启蒙(之二)

    [摘要]本文适合已经完整学习了C++面向对象机制,但在开发窗体程序方面还是零基础的同学.通过本文的引导进行实践体验,目的是消除同学们开发窗体程序的神奇感,为下一步的自学找到感觉.同一时候,能更深入地体 ...

  5. 《趣学Python编程》

    <趣学Python编程> 基本信息 作者: (美)Jason Briggs 译者: 尹哲 出版社:人民邮电出版社 ISBN:9787115335951 上架时间:2014-2-21 出版日 ...

  6. Glusterfs初试

    Gluster的模式及介绍在此不表,这里只记录安装及配置过程. 1.整体环境 server1 : gfs1.cluster.com server2 : gfs2.cluster.com Client: ...

  7. water-and-jug-problem

    以下这个解法也是参考了一些讨论: https://leetcode.com/discuss/110235/c-solution-using-euclidean-algorithm 还有这个解释原理的, ...

  8. SQL2005,错误 0xc00470fe 数据流任务 产品级别对于 组件“源 - 2009_txt”(1) 而言不足

    今天在将txt文件导入MSSQL2005时,出了这个错误,到网上查了一下资料,说是因为没有安装SQL 2005 SP1的原因,所以我就下载了个. 安装后,再次导入数据,OK 没问题了.http://w ...

  9. matlab中help所有函数功能的英文翻译

    doc funname 在帮助浏览器中打开帮助文档 help funname 在命令窗口打开帮助文档 helpbrowser 直接打开帮助浏览器 lookfor funname 搜索某个关键字相关函数 ...

  10. ArcGIS中的查询

    最近身体不适,静下心来看了一下以前收集的电子书.下面是<ArcGIS地理信息系统教程_第5版>(李玉龙)第5章“查询”的读书笔记. 1.查询的常见应用: 选择感兴趣的要素:查找哪些要素满足 ...