//概述
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学习笔记doc文档,喜欢或想要了解webservice的朋友可以下载学习一下。
Eclipse下WebService学习.doc
JAVA的WebService支持V3.0.pdf JAVA6开发WebService WebService CXF学习:整合Spring框架
WebService学习资料(很全)WebService学习资料(很全)WebService学习资料(很全)WebService学习资料(很全)WebService学习资料(很全)WebService学习资料(很全)
webService学习笔记
springboot2.0webService学习
WebService学习笔记 比较经典
webservice初学者适用
webservice学习资料和样例webservice学习资料和样例webservice学习资料和样例webservice学习资料和样例webservice学习资料和样例webservice学习资料和样例
对于网络服务不是很了解的朋友就下载看看吧。
axis+webservice学习教程 网络转载,他人贡献。 在此表示感谢
WebService学习过程中,知识点的总结,和例子。
尚硅谷Webservice学习笔记,详情请参看文档,仅供个人学习
webservice学习资料XMLWSDL教程,webservice学习资料XMLWSDL教程
Webservice学习Webservice学习
Webservice学习笔记
WebService学习和了解 WebService的优点 SOAP是什么?WSDL是什么?
Eclipse下WebService学习