Webservice介绍

 
n  

l          Web Service 的基本概念

l       Web service 是分布式的服务组件。Web Service 本质上就是要以标准化的形式实现企业内外各个不同服务系统之间的互调或集成。其由两部分组成 SOAP--Web Service之间的基本通信协议;WSDL--Web Service描述语言,它定义了Web Service做什么,怎么做和查询的信息 <o:p></o:p>

l       Web   Service所使用的是Internet上统一、开放的标准,如HTTPXMLSOAP(简单对象访问协议)、WSDL等,所以Web   Service可以在任何支持这些标准的环境(Windows,Linux)中使用 <o:p></o:p>

<o:p> </o:p>

l       Web service目的和优劣势<o:p></o:p>

l       目的:<o:p></o:p>

l       将逻辑服务接口调用层和逻辑服务实现层完全分离开来<o:p></o:p>

l       实现服务接口传输和调用的标准化,soap消息传输协议已经成为消息传输协议的事情标准。其独立于数据库,操作系统,以及传输协议。<o:p></o:p>

l       优势:  
  <st1:place w:st="on">I.</st1:place>
它的跨平台;  
  II.
并且SOAP协议是基于XMLHTTP这些业界的标准的,得到了所有的重要公司的支持。  
  III.
由于使用了SOAP,数据是以ASCII文本的方式而非二进制传输,调试很方便;并且由于这样,它的数据容易通过防火墙,不需要防火墙为了程序而单独开一个漏洞 
  IV.
此外,WebService实现的技术难度要比CORBADCOM小得多。  
  V.
要实现B2B集成,EDI比较完善与比较复杂;而用WebService则可以低成本的实现,小公司也可以用上。  
  VI.
C/S的程序中,WebService可以实现网页无整体刷新的与服务器打交道并取数。  
   
 
缺点:  
  I. WebService
使用了XML对数据封装,会造成大量的数据要在网络中传输,性能方面与非webService方法比如EJBRMI方法要消耗约15%左右的效率。  
  II. WebService
规范没有规定任何与实现相关的细节,包括对象模型、编程语言,这一点,它不如CORBA<o:p></o:p>

l       <o:p> </o:p>

l       Webservice实现过程<o:p></o:p>

l       假如服务A 要调用服务B上的服务,要实现这个目的需要下面3个元素。<o:p></o:p>

l       服务B要以一种标准化的语言告诉服务A它能提供什么样的服务,比如调用它的服务,它的服务在那里等,这就是WEB SERVICE 的服务描述,是WHAT HOWWHERE部分。<o:p></o:p>

l       服务A要以标准化的通信消息格式告诉服务B ,它想调用什么服务,并加入相应的输入参数,当服务B完成服务后,会同样以标准化的通信方式告诉B相应的服务结果,是WEB SERVICE的服务消息的requestresponse部分。<o:p></o:p>

l       服务B要注册到相应的公共网址,以便外部能找到,是URL部分<o:p></o:p>

<o:p> </o:p>

<o:p> </o:p>

Wsdl 概念<o:p></o:p>

n       WSDL的全称是Web Service Description Language ,是一种基于XML格式的关于WEB 服务的描述语言,其主要目的是在于WEB SERVICE的提供着将自己的WEB服务的所有有关内容,如所提供的服务传输方式,服务方法接口,接口参数,服务路径,生成相应的完全文档,发布给使用者,使用者通过这个WSDL文档,创建相应的SAOP请求消息,通过HTTP传递给WEB SERVICE 提供者,WEB服务在完成服务请求后,将SOAP返回消息传回请求者,服务请求者再根据WSDL文档将SOAP返回消息传回请求者,服务请求者再根据WSDL文档将SOAP返回消息解析成自己能够理解的内容。当前wsdl版本有wsdl1.1wsdl1.2(wsdl2.0版本)<o:p></o:p>

<o:p> </o:p>

l       WSDL1.1文档结构

<o:p> </o:p>

<v:shapetype id="_x0000_t75" stroked="f" filled="f" path="m@4@5l@4@11@9@11@9@5xe" o:preferrelative="t" o:spt="75" coordsize="21600,21600"><v:stroke joinstyle="miter"></v:stroke><v:formulas><v:f eqn="if lineDrawn pixelLineWidth 0"></v:f><v:f eqn="sum @0 1 0"></v:f><v:f eqn="sum 0 0 @1"></v:f><v:f eqn="prod @2 1 2"></v:f><v:f eqn="prod @3 21600 pixelWidth"></v:f><v:f eqn="prod @3 21600 pixelHeight"></v:f><v:f eqn="sum @0 0 1"></v:f><v:f eqn="prod @6 1 2"></v:f><v:f eqn="prod @7 21600 pixelWidth"></v:f><v:f eqn="sum @8 21600 0"></v:f><v:f eqn="prod @7 21600 pixelHeight"></v:f><v:f eqn="sum @10 21600 0"></v:f></v:formulas><v:path o:connecttype="rect" gradientshapeok="t" o:extrusionok="f"></v:path><o:lock v:ext="edit" aspectratio="t"></o:lock></v:shapetype><v:shape id="_x0000_i1025" style="WIDTH: 414.75pt; HEIGHT: 233.25pt" o:ole="" type="#_x0000_t75"><v:imagedata o:title="" src="file:///C:\DOCUME~1\WANGDE~1\LOCALS~1\Temp\msohtml1\01\clip_image001.emz"></v:imagedata></v:shape>

<o:p> </o:p>

l       What 部分

l       Types - 数据类型定义的容器,它使用某种类型系统(一般地使用XML Schema中的类型系统)<o:p></o:p>

l       Message - 通信消息的数据结构的抽象类型化定义。使用Types所定义的类型来定义整个消息的数据结构。 <o:p></o:p>

l       Operation - 对服务中所支持的操作的抽象描述,一般单个Operation描述了一个访问入口的请求/响应消息对。 <o:p></o:p>

l       PortType - 对于某个访问入口点类型所支持的操作的抽象集合,这些操作可以由一个或多个服务访问点来支持。 <o:p></o:p>

l       Binding - 特定端口类型的具体协议和数据格式规范的绑定。 <o:p></o:p>

n       Port - 定义为协议/数据格式绑定与具体Web访问地址组合的单个服务访问点。 <o:p></o:p>

l       Service- 相关服务访问点的集合

l     Namespace<o:p></o:p>

<o:p> </o:p>

n       definitions>和子节点<schema>都是namespace属性<o:p></o:p>

n       <wsdl:definitions targetNamespace="http://localhost:7001/webModule/services/checkUserLoginService" xmlns:apachesoap="http://xml.apache.org/xml-soap" xmlns:impl="http://localhost:7001/webModule/services/checkUserLoginService" xmlns:intf="http://localhost:7001/webModule/services/checkUserLoginService" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:tns1="urn:wsClient" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:wsdlsoap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> <o:p></o:p>

     每个namespace属性都声明了一个缩略语,用在文档中。例如"xmlns:xsd"就为 http://www.w3.org/2001/XMLSchema定义了一个缩略语(xsd)。这就允许对该namespace的引用只需简单的在名字前加上前缀就可以了,如:"xsd:int"中的"xsd"就是合法的类型名。普通范围规则可运用于缩略前缀。也就是说,前缀所定义的元素只在元素中有效。targetNamespace表示在这个元素下的所有元素都属于这个目标名称空间,xmlns表示缺省的名称空间,xmlns:impl表示实现的命名空间, xmlns:intf表示接口的命名空间(注:本示例中接口和命名空间一致,若不一致,则通过ant 工具生成两个wsdl文件,一个是接口,一个是实现,实现中引用接口命名空间),名称空间xmlns:tns tnsThis NameSpace的缩写,用来对当前WSDL进行引用,其与<wsdl:types> targetNamespace匹配。<o:p></o:p>

<o:p> </o:p>

l       Type

n       Types是一个数据类型定义的容器,包含了所有在消息定义中需要的XML元素的类型定义。使用XML Schema具体说明服务接口方法,包括方法名,输入参数以及类型和返回结果类型 ,为了获得最大程度的互操作性和平台中立性,WSDL 选用 XSD 作为标准类型系统,并将其当作固有类型系统。 <o:p></o:p>

     示例:<o:p></o:p>

n       <wsdl: types><o:p></o:p>

n       <!—服务接口方法 –><o:p></o:p>

n       <element name=”checkUserLogin”><o:p></o:p>

n         <complexType><o:p></o:p>

n          <sequence><o:p></o:p>

n             <element name=loginName nillable=true type=xsd:string/><o:p></o:p>

n       <element name =password nillable=true type=xsd : string/><o:p></o:p>

n       </sequence><o:p></o:p>

n       </complexType><o:p></o:p>

n       </element><o:p></o:p>

n       <!—返回结果的类型à<o:p></o:p>

n       <element name=”checkUserLoginResponse”><o:p></o:p>

n         <complexType><o:p></o:p>

n          <sequence><o:p></o:p>

n            <element name=checkUserLoginReturn type=xsd: boolean/><o:p></o:p>

n       </sequence><o:p></o:p>

n       </complexType><o:p></o:p>

n       </element><o:p></o:p>

n       </wsdl:types><o:p></o:p>

<o:p> </o:p>

<o:p> </o:p>

Messages<o:p></o:p>

n       定义Web  Service 所有的请求消息,响应消息和异常消息,包括一个或多个 片断(part)参数。<o:p></o:p>

n       <!—请求消息à<o:p></o:p>

n       <wsdl: message name=”checkUserLoginRequest”><o:p></o:p>

n         <wsdl: part eleme=impl:checkUserLogin name=parameters/><o:p></o:p>

n       </wsdl: message><o:p></o:p>

n       <!—返回消息<o:p></o:p>

n        <wsdl:message name=”checkUserLoginResponse”><o:p></o:p>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值