本文共 2864 字,大约阅读时间需要 9 分钟。
1、什么是服务
现在的应用程序变得越来越复杂,甚至只靠单一的应用程序无法完成全部的工作。更别说只使用一种语言了。
大家在写应用程序查询数据库时,并没有考虑过为什么可以将查询结果返回给上层的应用程序,甚至认为,这就是数据库应该做的,其实不然,这是数据库通过TCP/IP协议与另一个应用程序进行交流的结果,而上层是什么样的应用程序,是用什么语言,数据库本身并不知道,它只知道接收到了一份协议,这就是SQL92查询标准协议。 目前的云计算、云查杀都是一种服务,现在比较流行的说法是SOA(面向服务的框架)。 既然数据库可以依据某些标准对外部其他应用程序提供服务、而且不关心对方使用什么语言,那我们为什么就不能实现跨平台、跨语言的服务呢? 只要我们用Java写的代码,可以被任意的语言所调用,我们就实现了跨平台,跨语言的服务!
2、Webservice服务简介
WebService,顾名思义就是基于Web的服务。它使用Web(HTTP)方式,接收和响应外部系统的某种请求。从而实现远程调用. 我们可以调用互联网上查询天气信息Web服务,然后将它嵌入到我们的程序(C/S或B/S程序)当中来,当用户从我们的网点看到天气信息时,他会认为我们为他提供了很多的信息服务,但其实我们什么也没有做,只是简单调用了一下服务器上的一段代码而已。 学习WebService可以将你的服务(一段代码)发布到互联网上让别人去调用,也可以调用别人机器上发布的WebService,就像使用自己的代码一样.。
3、webservice 协议栈
4、 Soap定义
SOAP(Simple Object Access Protocol )简单对象访问协议是在分散或分布式的环境中交换信息的简单的协议,是一个基于XML的协议,它包括四个部分:SOAP封装(envelop)、SOAP编码、 SOAP RPC 、 SOAP绑定(binding)。
4.1、SOAP封装 SOAP Header SOAP Body SOAP Fault
SOAP封装(envelop):封装定义了一个描述消息中的内容是什么,是谁发送的,谁应当接受并处理它以及如何处理它们的框架。
SOAP编码规则(encoding rules),用于表示应用程序需要使用的数据类型的实例; SOAP RPC表示(RPC representation),表示远程过程调用和应答的协定; SOAP绑定(binding),使用底层协议交换信息。
–定义了一个用于表示远端过程调用和响应的约定。设计SOAP的目的之一就是利用XML的扩展性和灵活性来封装和交换RPC调用 。 –将SOAP绑定在HTTP上可以利用HTTP丰富的特性集,更恰当的描述应当是SOAP的语义通过HTTP的映射而很自然地成为HTTP的语义。同时,SOAP很自然的利用HTTP的请求/响应模型。 5、SOAP举例
请求消息
•<?xml version="1.0"encoding="UTF-8"?> •<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" • xmlns:xsd="http://www.w3.org/2001/XMLSchema" • xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" • xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/"> • <TransactionID xmlns="http://www.monternet.com/dsmp/schemas/">00880001000009</TransactionID> • <SyncOrderRelationReq xmlns="http://www.monternet.com/dsmp/schemas/"> • <Version>1.5.0</Version> • <MsgType>SyncOrderRelationReq</MsgType> • <DeviceType>400</DeviceType> • <DeviceID>901606</DeviceID> • <SPServiceID>125905180</SPServiceID> • <AccessMode>4</AccessMode> • <FeatureStr>QUJDREVGRzAwODgwMDAxMDAwMDA5</FeatureStr> • </SyncOrderRelationReq> 返回消息
•<?xml version="1.0"encoding="UTF-8"?> •<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" • xmlns:xsd="http://www.w3.org/2001/XMLSchema" • xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" • xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/"> • <TransactionID xmlns="http://www.monternet.com/dsmp/schemas/">00880001000009</TransactionID> • <SyncOrderRelationResp xmlns="http://www.monternet.com/dsmp/schemas/"> • <Version>1.5.0</Version> • <MsgType>SyncOrderRelationResp</MsgType> • </SyncOrderRelationResp> 6、小结
Webservice是一种支持异构网络之间进行服务调用的机制 Wevservice主要用到的协议栈有Soap、Xml、WSDL