一、WebService是什么?

WebService,是RPC的一样实现方式。

RPC(Remote Procedure Call Protocol)——远程过程调用协议,它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议

客户端要能调用服务端必须遵循TCP协议,而WebService使用的是更高一级的HTTP协议。

客户端访问服务器的目的是为了获取数据,那数据格式必须是与平台、语言无关的。WebService采用的是XML.

WebService的使用场景:ESB(企业服务总线)

如果一个企业存在多个使用不同语言开发的在用系统,数据传递和整合就显得尤其麻烦,利用传统连接各个系统的方法,存在如果新添加一个系统,都需要和每一个已经存在的系统建立关联,集成系统的时候入侵性太强,往往伴随着整体系统结构的改变。

所以在这种场景下,可在企业系统里搭建一根总线——ESB(企业服务总线),用来连接企业里各个系统的服务的。每个系统和总线连接起来,用XML传输数据。

把各系统连接到总线上以后,例如查询销售单,把请求抛给总线,由总线负责把消息带到进销存系统中去,再把结果按照应的规范传到总线上,由总线负责把结果返回到财务系统中。若要增加额外的系统,如WebQQ,就只需要把他挂到ESB上就OK了。ESB也是一个应用模块,负责把每个系统连接起来。

ESB全称为EnterpriseServiceBus,即企业服务总线。

它是传统中间件技术与XML、Web服务等技术结合的产物。ESB提供了网络中最基本的连接中枢,是构筑企业神经系统的必要元素。ESB的出现改变了传统的软件架构,可以提供比传统中间件产品更为廉价的解决方案,同时它还可以消除不同应用之间的技术差异,让不同的应用服务器协调运作,实现了不同服务之间的通信与整合。从功能上看,ESB提供了事件驱动和文档导向的处理模式,以及分布式的运行管理机制,它支持基于内容的路由和过滤,具备了复杂数据的传输能力,并可以提供一系列的标准接口。

ESB不是万能的,他不是一个应用程序框架,也不是一个企业应用的解决方案.它只是一个基于消息的调用企业服务的通信模块!你可以把它嵌入到你的应用程序框架中,例如嵌入到spring容器里面,或者嵌入到工作流系统中.它的作用是对企业里面的SOA服务的调用提供一个框架和简便的方法。

SOA

对于这一种架构,我们称为SOA:面向服务的架构。要使用总线上挂的各个服务则需要对暴露的接口做一个描述。

第一,ESB怎么知道有哪些什么样服务?那此时我们就得对暴露出去的服务做一个描述,而这个描述就是WSDL。

WSDL(WebServicesDescriptionLanguage):WS的描述语言。告诉总线自己暴露了哪些服务。

第二,查询:我暴露了这个服务,要找到他则需要一个类似于DNS这样的东西,用于服务的注册、查询,而这个就是UDDI。

UDDI(Universal Description,Discovery andIntegration):是一种目录服务,用于统一地描述、发现和集成协议。UDDI定义如何查找WS(及其WSDL文件),可它并不像WSDL和SOAP一样深入人心,因为很多时候,使用者都知道Web服务的位置(通常位于公司的企业内部网中)。

第三,传输数据:定义数据传输规范,这里都使用XML进行传递,把对象和XML进行转换由SOAP规范。

SOAP(Simple Object Access Protocol):简单对象访问协议。是一种轻量的、简单的、基于XML的协议,它被设计成在WEB上交换结构化的和固化的信息。

二、关于WebService

WS是一种基于Http协议和XMl技术,并使用WSDL描述和使用SOAP协议传输的异构系统解决方案。 跨语言、跨系统

我们把调用WS的应用程序称为客户端,把提供WS的应用程序称为服务器端。

使用WS最重要的是什么:

一是:WSDL文件(服务藐视);

二是:对象与XML转换(数据)。

WS和SOA的区别:

Web Service是技术规范,而SOA是设计原则,一种架构模式。

WSDL,UDDI和SOAP是SOA基础的基础部件。

WSDL:用来描述服务;

UDDI:用来注册和查找服务;

SOAP:作为传输层,用来在客户端和服务器端之间传送消息。

三、关于WebService的常见标签

1、 @WebService标签

使用@WebService标签,需要配置在类上,代表这是一个提供WS的服务类。

endpointInterface:定义服务抽象WebService 协定的服务端点接口的完整名称。不允许在端点上使用此成员值,该元素的值必须有WebService标签。默认情况下,服务器自动生成服务端接口。

name:服务接口名称(对应wsdl: portType的name属性,用在服务接口上);

serviceName:服务类名称。默认为,实现类名+Service(对应service的name和definition上的name属性对应,用在实现类上)。

portName:Web Service的端口名称。此名称被用作wsdl:port的名称。

targetNamespace:目标命名空间,描述服务的预定义WSDL的位置(同时用在实现类和服务接口上,需统一)。

wsdlLocation:WSDL地址(服务端除了WSDL优先的情况外可不写,客户端代理接口上必须配置此属性,指向web端WSDL文件地址)

2 @WebMethod标签

使用@WebMethod标签,需要把他配置到方法上。

operationName:指定暴露服务方法的别名。

exclude:是否暴露此标记的方法。

3 @WebResult标签

使用@WebResult标签,需要把他标记在方法上或者方法返回类型定义之前。

name:定义返回值的名称。

header:布尔类型,是否把值放到header元素中进行传递。

4 @WebParam标签

使用@WebParam标签,需要把他标记在形参声明之前。

name:定义传递时参数的名称(默认参数以arg0,arg1…)。

header:布尔类型,是否把值放到header元素中进行传递。

5 @SOAPBinding

使用@ SOAPBinding标签,需要把他标记在类上。

SOAPBinding.ParameterStyleparameterStyle 确定方法参数是否表示整个消息正文,或者参数是否是包装在以操作命名的顶层元素中的元素。

SOAPBinding.ParameterStyle.WRAPPED,默认,使用对参数进行包装

SOAPBinding.ParameterStyle.BARE,不对参数进行包装

SOAPBinding.Style style 定义发 送到Web Service 的消息 和从Web Service发送的消息的编码样式。

SOAPBinding.Style.RPC:面向RPC

SOAPBinding.Style.DOCUMENT 默认,面向文档

SOAPBinding.Useuse 定义发送到WebService的消息和从WebService发送的消息的格式样式。

SOAPBinding.Use.LITERAL,默认,字面量风格,若服务端和客户端不在一起开发,就应该使用这个

SOAPBinding.Use.ENCODED使用SOAP编码风格,可能导致WS互操作方面失败问题,尽量避免使用。

WebService,ESB笔记的更多相关文章

  1. WebService学习笔记系列(二)

    soap(简单对象访问协议),它是在http基础之上传递xml格式数据的协议.soap协议分为两个版本,soap1.1和soap1.2. 在学习webservice时我们有一个必备工具叫做tcpmon ...

  2. Java WebService学习笔记 - Axis进阶(二)

    上一篇  Java WebService学习笔记 - Axis(一) 前一篇博文中简单介绍了Axis的使用方法,这篇将介绍一些Axis的一些高级特性 Axis中Handler的使用 Handler ...

  3. Java WebService学习笔记 - Axis(一)

    WebService 简介 实际开发中,很多系统都是基于历史遗留系统进行开发,有时,这些系统基于不同的语言,如C,C++,C#,java,PHP等等.为了实现历史系统的再利用,或向外部程序暴露调用接口 ...

  4. webservice 学习笔记 1

    Webservice----------->跨语言服务调用 (视频学习总结) 1-1.有OA系统 需要添加一个功能,登录之后显示天气情况 此时可以使用Webservice eg1: 气象局自己有 ...

  5. webservice 学习笔记

    1.webservice的概念 Web Service也叫XML Web Service WebService是一种可以接收从Internet或者Intranet上的其它系统中传递过来的请求,轻量级的 ...

  6. WebService学习笔记一

    01——Schema约束复习 1.1 schema约束 几个重要知识: 1.namespace 相当于schema文件的id 2.targetNamespace属性 用来指定schema文件的name ...

  7. WebService学习笔记系列(四)

    今天主要来看看服务端的编写及发布. 服务端的编写主要包括三个步骤: 1.编写一个接口,即SEI(server endpoint interface) 2.编写接口的实现类,即SIB (server i ...

  8. WebService学习笔记系列(三)

    网上有一些提供webservice服务的网站,我们要怎么调用呢? 今天来看个如何调用手机归属地查询服务.这个网站上提供了许多webservice服务,其中包括手机归属地查询服务,我们今天就用wsimp ...

  9. WebService学习笔记系列(一)

    webservice主要是解决两个系统或者两个应用程序之间的远程调用,它提供了一种通过web方式访问的api,调用是跨语言.跨平台的. webservice的客户端与服务端进行交互的时候使用xml来传 ...

随机推荐

  1. [Java] zjdbcping:JDBC数据库连接测试工具

    作者: zyl910 一.缘由 当数据库服务器很多时,或者要与第三方公司做数据库表交换时,此时觉得若有一个简单快捷的数据库连接测试工具就好了. 因为若是采取直接把程序部署到tomcat等容器再测试的办 ...

  2. libfacedetection简单使用记录

    目录 1.源码下载 2.编译 2.1.linux 2.2.Windows MINGW64 2.3.VS2017 NMake编译 3.简单测试程序 3.1.测试截图 3.2.测试代码如下 1.源码下载 ...

  3. QGIS Server使用记录

    目录 0. 简述 1. 下载QGIS桌面64位版本 2. 下载安装QGIS Server程序 3. 下载安装Apache服务器 4.使用及问题处理 0. 简述 关于QGIS Server相关的文档很少 ...

  4. c# 非调试状态下面执行

    #if !DEBUG                View("ErrorSimple").ExecuteResult(ControllerContext);#endif

  5. SpringBoot里使用RMI进行远程方法调用

    一.Java RMI定义 Java RMI:Java远程方法调用,即Java RMI(Java Remote Method Invocation)是Java编程语言里,一种用于实现远程过程调用的应用程 ...

  6. new和delete操作符

    C 语言中提供了 malloc 和 free 两个系统函数, 完成对堆内存的申请和释放.而 C++则提供了两个操作符 new 和 delete. 1. newnew 分配内存空间时,  分配内存空间大 ...

  7. Windows7系统不显示.gitignore文件名

    从码云拉取项目后,发现Win7下不能显示.giignore文件名. 这是因为Win7系统默认隐藏了已知的拓展名,而.gitignore逗号前没有字符,于是显示的文件命是空白的. 打开工具—文件夹选项, ...

  8. 全局Threshold和动态阈值分割Dyn_Threshold的应用场景

    手册里面的particle例子,例子的任务是分析颗粒在液体中.在这个应用程序的主要困难:存在两种类型的对象:大明亮物体和较低的小物体的对比.此外噪音使分割的存在困难:无法使用全局灰度阈值thresho ...

  9. centos7.3安装nvidia驱动和cuda9

    一, 挂载本地源镜像 1) 下载操作系统镜像 所有服务器操作系统必须统一,本平台只支持 CentOS 7.3 1611,镜像下载地址. 2) 上传镜像到服务器 ,假设上传在 root 下 3) 建立挂 ...

  10. 3 ansible-playbook 条件语句-外部变量使用

    外部变量指的是从playbook文件之外获取的数值 lookups file file是我们经常使用的一种lookups的方式,它的原理就是使用python的codecs.open打开文件然后把结果返 ...