Web Service基础——基础概念
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 测试服务是否发布成功,通过阅读使用说明书,确定客户端调用的接口、方法、参数和返回值存在,证明服务发布成功。
- WSDL地址:服务地址+”?wsdl” [ http://127.0.0.1:12345/weather?wsdl ]
- WSDL阅读方式:从下往上
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基础——基础概念的更多相关文章
- .NET基础拾遗(7)Web Service的开发与应用基础
Index : (1)类型语法.内存管理和垃圾回收基础 (2)面向对象的实现和异常的处理 (3)字符串.集合与流 (4)委托.事件.反射与特性 (5)多线程开发基础 (6)ADO.NET与数据库开发基 ...
- Web service基础
Web service是Web应用程序 平台是XML+http XML是不同平台和不同编程语言之间的语言,用于编解码数据. http是因特网协议 XML是web service的基础 Web serv ...
- Web Service学习之一:Web Service原理
一.定义 Web Service 不是框架也不是技术 而是解决远程调用.跨平台调用.跨语言调用问题的一种规范. 二.应用1.同一个公司新.旧系统的整合:比如CRM系统与OA.客服系统相互调用2.不同公 ...
- Web Service(一) 基础学习
1 基础的Web Service平台是XML+HTTP. 2 Web Service平台的元素包括:SOAP(Simple Object Access Protocol)简单对象访问协议: UDDI( ...
- Web Service基础——规范及三要素
1. Java中的Web Service规范 Java 中共有三种WebService 规范,分别是JAX-WS(JAX-RPC).JAX-RS.JAXM&SAAJ(废弃). 1.1 JAX- ...
- Android笔记之 Web Service 基础
一.Web Service是什么? 就是网络服务.依据W3C的定义,WebServices(Web服务)是一个用于支持网络间不同机器互操作的软件系统,它是一种自包括.自描写叙述和模块化的应用程序,它能 ...
- Web Service基本概念
Web Service也叫XML Web Service WebService是一种可以接收从Internet或者Intranet上的其它系统中传递过来的请求,轻量级的独立的通讯技术.是:通过SOAP ...
- WCF、Net remoting、Web service概念及区别
Windows通信基础(Windows Communication Foundation,WCF)是基于Windows平台下开发和部署服务的软件开发包(Software Development Kit ...
- WCF、.Net Remoting、Web Service概念及区别
此文章主要参考http://www.cnblogs.com/weiweibtm/archive/2013/06/21/3148583.html 参考书籍<WCF全面解析上册>.<WC ...
随机推荐
- pytest文档21-pytest-html报告优化(nodeid中文显示[\u6350\u52a9\u6211\u4eec]问题解决)
前言 pytest-html报告中当用到参数化时候,获取用例的nodeid里面有中文时候,会显示[\u6350\u52a9\u6211\u4eec]这种编码(再次声明,这个不叫乱码,这是unicode ...
- 《Java并发编程实战》第四章 对象的组合 读书笔记
一.设计线程安全的类 在设计线程安全类的过程中,须要包括下面三个基本要素: . 找出构成对象状态的全部变量. . 找出约束状态变量的不变性条件. . 建立对象状态的并发訪问管理策略. 分析对象的 ...
- (原)用WebBrowser浏览Office Web Apps Server,除去“下载”按钮
对,没错,如果你按关键字找到这篇随笔了,相信一定知道背景,以及我所说的是什么. 上一段子代码. private void timerHideButton_Tick(object sender, Eve ...
- JTS(Geometry)(转)
原文链接:http://blog.csdn.net/cdl2008sky/article/details/7268577 空间数据模型(1).JTS Geometry model (2).ISO Ge ...
- JMS基本概念之一
The Java Message Service(JMS) API is a messaging standard that allows application components based o ...
- VMware与Cisco DRAC中的virtual disk的对应关系
笔者面临的问题如下: 笔者有一台Cisco C240的服务器, 其中有十块容量一样大的SAS的local disk, 一块SSD. 其中的两块SAS盘组成了一个RAID 1的virtual drive ...
- jquery中filter(fn)的使用研究
jquery中filter(fn)给出的官方说明是: 筛选出与指定函数返回值匹配的元素集合 这个函数内部将对每个对象计算一次 (正如 '$.each'). 如果调用的函数返回false则这个元素被删除 ...
- IOS实现多媒体音频之音乐播放器
随着智能手机市场越来越活跃,相应的app也变得五彩缤纷,各式各样,让你的app更吸引人多媒体技术不可避免.通过对音频和视频等控制让你的app更加丰富多彩,今天和大家一起研究下基本的音频使用.本文只提供 ...
- vs2013 密钥_
vs2013 密钥 最佳答案: BWG7X-J98B3-W34RT-33B3R-JVYW9
- 如何解决Win7将任务栏程序自动分组的困扰
Win7默认把任务栏程序自动分组,比如多个资源管理器窗口被分到一起,其实这挺让人恼火的,关键弊病是多出一个人工检查的步骤,这在操作繁忙时容易增加人的负担,不能按预定记忆处理. 还好微软也没把蠢事做绝, ...