`

WebService学习

阅读更多
//概述
1. What is web service
Web Service技术是基于Web的分布式组件对象模型
分布式组件对象模型:分布式对象技术是在面向对象技术的基础上发展起来的,它要解决的主要问题是位于不同进程中的对象之间的调用问题。
传统的分布式技术主要包括CORBA(OMG), DCOM(微软), EJB.

Web Service是在互联网上,通过基于标准的互联网协议(例如HTTP、SMTP)访问的一段业务逻辑。或者叫Web服务组件。
Web Service承诺在一个分布式环境中,不同的平台的,不同语言的应用和应用组件之间能够互操作。

技术上来说,Web Service也是一种远程方法调用,思考一些问题:
1异构应用系统之间如何集成
2不同公司之间的系统如何集成(B2B)
3需要集成的系统之间有防火墙
4代码重用的问题(如EJB)

2. Web Service解决的问题
   1)异构应用系统之间如何集成
异构程序定位:使用URI标志软件程序
传输协议:HTTP、FTP、SMTP等公共协议
数据格式:XML(SOAP)
接口描述:XML(WSDL)
   2)不同公司之间的系统如何集成
公共的互联网协议HTTP、FTP、SMTP
   3)需要集成的系统之间有防火墙
使用公共的网络协议HTTP、FTP、SMTP
区别于web应用
web application: 人(浏览器)与应用的交互
web service: 应用与应用的交互


   4)代码重用的问题
使用HTTP等服务,无需下载或安装服务程序的代码


//SOAP协议

1. What is SOAP(Simple Object Access Protocol)
SOAP是一种,可在各种分布的环境中进行数据交换的轻量级协议
SOAP使用XML技术定义了一个可扩展的消息框架,底层可以通过各种协议进行数据交换(主要HTTP、FTP、SMTP)
SOAP定义为与特定的编程模型和实现语言无关


2. SOAP信封
一条 SOAP 消息就是一个普通的 XML 文档,包含下列元素:
必需的 Envelope 元素,可把此 XML 文档标识为一条 SOAP 消息
可选的 Header 元素,包含头部信息
必需的 Body 元素,包含所有的调用和响应信息
包含可选的 Fault 元素,提供有关在处理此消息所发生错误的信息

所有以上的元素均被声明于针对 SOAP 封装的默认命名空间中:
http://www.w3.org/2001/12/soap-envelope
以及针对 SOAP 编码和数据类型的encodingStyle属性:
http://www.w3.org/2001/12/soap-encoding


SOAP 消息的基本结构
<?xml version="1.0"?>
<soap:Envelope
xmlns:soap="http://www.w3.org/2001/12/soap-envelope"
soap:encodingStyle="http://www.w3.org/2001/12/soap-encoding">

<soap:Header>
  ...
</soap:Header>

<soap:Body>
  ...
  <soap:Fault>
    ...
  </soap:Fault>
</soap:Body>

</soap:Envelope>


3. SOAP Header
可选的,用于扩展SOAP消息,例如:
    路由信息
指明路由的下一个中介节点
    调用的上下文
目前的应用模式基本上停留在远程过程/对象的调用上,基于多次协调调用或者遵循上下文的调用模式尚很少使用,这其实是受简单的SOAP消息的制约
    安全认证
保存用户标识及密码信息或者其他鉴定证书
    事务控制
利用SOAP Header条目进行事务控制


4. SOAP Body
必须的,包含传递给最终的节点的实际信息
  <soap:Body xmlns:m="http://www.example.org/stock">
<m:GetStockPrice>
<m:StockName>IBM</m:StockName>
</m:GetStockPrice>
  </soap:Body>

5. SOAP Fault
可选的,元素用于存留 SOAP 消息的错误和状态信息。必须出现在SOAP Body中
<soap:Body xmlns:m="http://www.example.org/stock">
<soap:Fault>
<faultcode>MustUnderstand</faultcode>
<faultstring>
一个或多个必须的soap头未被理解
</faultstring>
</soap:Fault
</soap:Body>

<faultcode> 供识别故障的代码
<faultstring> 可供人阅读的有关故障的说明


//WSDL

1. What is WSDL(Web Service Description Language)
是一个用来描述Web服务和说明如何与Web服务通信的XML语言
WSDL既是机器可阅读的,又是人可阅读的,这将是一个很大的好处。一些最新的开发工具既能根据你的Web service生成WSDL文档,又能导入WSDL文档,生成调用相应Web service的代码

2. WSDL文档结构
<definitions>

<types>
   definition of types........
</types>

<message>
   definition of a message....
</message>

<portType>
   definition of a port.......
</portType>

<binding>
   definition of a binding....
</binding>

<service>
   service of a binding....
</service>

</definitions>

总体上可以分为两大部分:
    1)抽象定义
        定义要交换的数据格式(数据类型/参数/返回值/方法声明)
types
定义数据类型,使用XML Schema作为类型系统typing system

messages
定义要交换的数据,数据类型是types中定义的数据类型。对应方法的参数
包括若干个part,每个part 都对应types中定义一个元素。对应方法的一个参数

porttype(接口) 都包含若干 operation
定义一个服务,对应Java的接口
包含一些operation,operation对应Java的方法
operation 包含一个input 和 output 消息(messages中定义)

    2)具体描述
    定义要采用的互操作协议(soap、http)、传输协议(http,ftp,smtp 等)、声明服务的访问地址

binding :针对 porttype 定义协议绑定和数据格式的细节:
首先是定义操作风格(style) 和 传输协议(transport)
然后是对操作的参数使用的类型系统(use)
service 包含若干 port
port 定义了一个通信端点,代表 binding(不同协议)到 address 的映射



SOAP的两种操作风格Operation Style
style=[document|rpc]

1. RPC (Remote Proceduce Call): 客户端使用远程过程调用约定. 优点: 对开发人员更加简单.
SOAP请求消息的Body中, sub-element必須与operation同名
SOAP响应消息的Body中,sub-element则命名为operation-name + "Response"

<SOAP:Body>
<sayHello>
<message-part-1><!-- mapped to a parameter-- >
<message-part-2><!-- mapped to a parameter-- >
</sayHello>
</SOAP:Body>


document:
客户端使用 XML 模式调用约定;优点:更松散的客户端和服务器端耦合性,跨平台互操作性更好

<SOAP:Body>
  <message-part-1> ...
  <message-part-2> ...
</SOAP:Body>

document分两种:
bared (裸露)
wrapped,模拟rpc(包装的)


binding的传输协议
transport="http://schemas.xmlsoap.org/soap/http"
transport="http://schemas.xmlsoap.org/soap/smtp"

binding中消息格式Message format
user=[literal|encoded]
literal: 使用types定义的数据类型
encoded: 使用soap定义好的数据类型,不能使用自定义数据类型
http://schemas.xmlsoap.org/soap/encoding/

一般web服务平台支持的style/user组合
1. style="rpc" and use="encoded"
2. style="rpc" and use="literal"
3. style="document" and use="literal"

其中2、3是Web服务标准的格式。即要实现异构平台的互操作,use必须是literal



//开发Web Service
XFire动态客户端
    第一步:引入 XFire相关的类库
Core Libraries
JAXB Libraries
HTTP Client Libraries

    第二步:
Client client = new Client( new URL("WSDL文档URL")); //创建一个动态客户端
Object[] results = client.invoke("test", new Object[] { "Juliet" }); //调用方法
System.out.println( results[0]);

查看wsdl
http://localhost:8088/HelloS/services

//UDDI

What is UDDI (Universal Description Discovery and Integration)
即统一描述、发现和集成协议。UDDI一种发布和查找Web服务的方式。UDDI使贸易伙伴彼此发现对方和查询对方。

预想的结构:发布者--注册服务--使用者
不是必须的,公共的注册服务目前还没有被广泛接受
分享到:
评论

相关推荐

    webservice学习

    标题“webservice学习”表明我们将探讨WebService的基本概念、重要性以及如何在Java环境中进行开发。这里涉及的知识点主要包括: 1. **WSDL**:WSDL是一种XML格式的规范,用于定义Web服务接口。它描述了服务的位置...

    WebService 学习

    【WebService学习】 WebService是一种基于互联网的、松散耦合的分布式计算模型,它允许不同的系统之间进行数据交换和业务交互。这项技术的核心是利用XML(可扩展标记语言)作为数据交换的标准格式,SOAP(简单对象...

    Eclipse下WebService学习.doc

    【Eclipse下WebService学习】 在IT领域,WebService是一种基于开放标准的、允许不同系统之间进行交互的技术。在Eclipse这个流行的Java集成开发环境中,开发者可以方便地创建、部署和测试WebService。本文档主要介绍...

    WebService学习笔记

    【WebService学习笔记】 WebService是一种基于互联网的、标准化的、跨平台的、跨语言的通信机制,使得不同系统间的应用程序可以互相交互数据和服务。它的核心理念是服务导向架构(SOA),即通过服务的方式实现应用...

    WebService学习资料(很全)

    WebService学习资料(很全)WebService学习资料(很全)WebService学习资料(很全)WebService学习资料(很全)WebService学习资料(很全)WebService学习资料(很全)

    webService学习笔记

    在本篇WebService学习笔记中,我们将探讨几个关键的概念和技术,包括SOAP协议、JAX-WS、WSDL文档以及一些常用的Web服务框架。 首先,SOAP(Simple Object Access Protocol)是一种基于XML的协议,用于在分布式环境...

    Eclipse下WebService学习

    【Eclipse下WebService学习】 在IT行业中,Web Service是一种基于开放标准(如XML、WSDL和SOAP)的互操作技术,允许不同系统间的应用程序通过网络进行通信。它提供了一种松散耦合的方式,使得软件组件可以跨越各种...

    springboot2.0webService学习

    springboot2.0webService学习 

    webservice学习笔记doc文档

    在本学习笔记中,主要介绍了使用Apache Axis2框架来开发和测试Web Service的过程。Apache Axis2是Apache SOAP栈的一个实现,提供了简单且高效的Web Service开发工具。 首先,开发者需要在Eclipse集成开发环境中搭建...

    webservice 学习的c#版本实例

    本教程以"webservice 学习的c#版本实例"为主题,将引导你深入理解Webservice的原理以及C#中实现Webservice的方法。 首先,让我们了解ASMX Web Service。ASMX是.NET Framework早期用于构建Web服务的技术,它基于SOAP...

    webservice学习资料和样例(xfire)

    webservice学习资料和样例webservice学习资料和样例webservice学习资料和样例webservice学习资料和样例webservice学习资料和样例webservice学习资料和样例

    WebService学习总结

    WebService学习过程中,知识点的总结,和例子。

    WebService学习之路三

    【WebService学习之路三】 在IT领域,WebService是一种用于构建分布式应用程序的技术,它允许不同系统间的交互,不受平台或编程语言的限制。本篇主要聚焦于WebService的学习,通过深入理解其原理和实践,来提升我们...

    webservice学习文档及案例

    本学习文档及案例适用于Web Service的初学者,旨在帮助理解Web Service的基本概念、工作原理以及如何实现。 一、Web Service基础知识 1. 定义:Web Service是一种通过HTTP协议传输数据的服务,它能够暴露业务逻辑...

    WebService学习之路四

    【WebService学习之路四】 在IT领域,WebService是一种基于标准协议(如SOAP、WSDL和UDDI)的开放式网络服务,允许不同系统间的应用程序通过互联网进行通信。本篇将深入探讨WebService的学习路径,重点关注其核心...

    WebService学习笔记0001

    【WebService学习笔记0001】 在IT领域,WebService是一种基于开放标准(如XML、SOAP、WSDL和UDDI)的互操作性技术,它允许不同系统间的应用程序通过网络进行通信。本学习笔记将围绕WebService的核心概念、工作原理...

    WebService学习和了解

    WebService学习和了解 WebService的优点 SOAP是什么?WSDL是什么?

    WebService学习1.docx

    【WebService学习】 WebService是一种基于XML的互联网交互协议,它允许不同系统间的应用程序进行通信,消除了语言和平台的障碍。在C#中,通过使用ASP.NET技术,我们可以轻松创建和消费WebService。以下是一个初学者...

Global site tag (gtag.js) - Google Analytics