加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

WebService的基本概念

发布时间:2020-12-17 02:42:04 所属栏目:安全 来源:网络整理
导读:? WebService是一种可以接收从Internet或者Intranet上的其它系统中传递过来的请求,轻量级的独立的通讯技术。 ??????? UDDI : ??? ??????? 在用户能够调用Web服务之前,必须确定这个服务内包含哪些商务方法,找到被调用的接口定义, ?还要在服务端来编制软件

?

WebService是一种可以接收从Internet或者Intranet上的其它系统中传递过来的请求,轻量级的独立的通讯技术。

??????? UDDI :
???
??????? 在用户能够调用Web服务之前,必须确定这个服务内包含哪些商务方法,找到被调用的接口定义,
?还要在服务端来编制软件。所以,我们需要一种方法来发布我们的Web服务。
?UDDI (Universal Description,Discovery,and Integration) 是一个主要针对Web服务供应商和使用者的新项目。
?UDDI 项目中的成员可以通过UDDI Business Registry (UBR) 来操作Web服务的调用,UBR是一个全球性的服务。
?Web服务供应商可以在UBR中描述并且注册他们的服务。 用户可以在UBR中查找并定位那些他们需要的服务。
?UDDI是一种根据描述文档来引导系统查找相应服务的机制。 UDDI包含标准的“白皮书”类型的商业查询方式,
?“黄皮书”类型的局部查找,以及 “绿皮书”类型的服务类型查找。
?UDDI利用SOAP消息机制(标准的XML/HTTP)来发布,编辑,浏览以及查找注册信息。
?它采用XML格式来封装各种不同类型的数据,并且发送到注册中心或者由注册中心来返回需要的数据。

??????? 对于商业用户来说,要找到一个自己需要使用的服务,他必须知道如何来调用。
?WSDL (Web Services Description Language) 规范是一个描述接口,
?语义以及Web服务为了响应请求需要经常处理的工作的XML文档。这将使简单地服务方便,快速地被描述和记录。
?以下是一个WSDL的样例:

??????????? <?xml version="1.0"?>
??????? <definitions name="StockQuote"
??????????????? targetNamespace="http://example.com/stockquote.wsdl"
??????????????? xmlns:tns="http://example.com/stockquote.wsdl"
??????????????? xmlns:xsd1="http://example.com/stockquote.xsd"
??????????????? xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
??????????????? xmlns="http://schemas.xmlsoap.org/wsdl/">
??????? <types>
??????? <schema targetNamespace=http://example.com/stockquote.xsd
???????????????? xmlns="http://www.w3.org/2000/10/XMLSchema">
??????? <element name="TradePriceRequest">
?????????? <complexType>
?????????? <all>
??????????????? <element name="tickerSymbol" type="string"/>
????????????? </all>
?????????? </complexType>
??????? </element>
??????? <element name="TradePrice">
??????????? <complexType>
??????????????? <all>
?????????????????? <element name="price" type="float"/>
???????????????? </all>
????????????? </complexType>
?????????? </element>
??????? </schema>
???? </types>
???? <message name="GetLastTradePriceInput">
???????? <part name="body" element="xsd1:TradePriceRequest"/>
???? </message>
???? <message name="GetLastTradePriceOutput">
???????? <part name="body" element="xsd1:TradePrice"/>
??? </message>
??? <portType name="StockQuotePortType">
??????? <operation name="GetLastTradePrice">
??????????? <input message="tns:GetLastTradePriceInput"/>
??????????? <output message="tns:GetLastTradePriceOutput"/>
???????? </operation>
????? </portType>
????? <binding name="StockQuoteSoapBinding"
??????????????????? type="tns:StockQuotePortType">
???????? <soap:binding style="document"
???????????????????????????????? transport="http://schemas.xmlsoap.org/soap/http"/>
??????? <operation name="GetLastTradePrice">
??????????? <soap:operation
?????????????????????????? soapAction="http://example.com/GetLastTradePrice"/>
??????????? <input>
?????????????? <soap:body use="literal"/>
??????????? </input>
??????????? <output>
??????????????? <soap:body use="literal"/>
??????????? </output>
???????? </operation>
????? </binding>
???? <service name="StockQuoteService">
??????? <documentation>My first service</documentation>
??????? <port name="StockQuotePort" binding="tns:StockQuoteBinding">
??????????? <soap:address location="http://example.com/stockquote"/>
??????? </port>
???? </service>
? </definitions>


????????? 它包含了以下的关键信息:
?? 消息的描述和格式定义可以通过XML文档中的<types>和<message> 标记来传送。
?? <portType> 标记中表示了消息传送机制。 (e.g. request-only,request-response,response-only) 。
?? <binding> 标记指定了编码的规范 。 <service> 标记中表示服务所处的位置 (URL)。
?? WSDL在UDDI中总是作为一个接口描述文档。
?? 因为UDDI是一个通用的用来注册WSDL规范的地方,UDDI的规范并不限制任何类型或者格式描述文档。
?? 这些文档可能是一个WSDL文档,或者是一个正规的包含导向文档的Web页面,也可能只是一个包含联系信息的电子邮件地址。
?? 现在Java提供了一个 Java API for WSDL (JWSDL)规范。
?? 它提供了一套能快速处理WSDL文档的方法,并且不用直接对XML文档进行操作,它会比JAXP更方便,更快速。


????? SOAP :

????? 当商业用户通过UDDI找到你的WSDL描述文档后,他通过可以Simple Object Access Protocol (SOAP)
????? 调用你建立的Web服务中的一个或多个操作。 SOAP是XML文档形式的调用商业方法的规范,
????? 它可以支持不同的底层接口,象HTTP(S)或者SMTP。 之所以使用XML是因为它的独立于编程语言,
????? 良好的可扩展性以及强大的工业支持。之所以使用HTTP是因为几乎所有的网络系统都可以用这种协议来通信,
????? 由于它是一种简单协议,所以可以与任何系统结合,还有一个原因就是它可以利用80端口来穿越过防火墙。
????? SOAP的强大是因为它简单。SOAP是一种轻量级的,非常容易理解的技术,并且很容易实现。它有工业支持,
????? 可以从各主要的电子商务平台供应商那里获得。从技术角度来看,SOAP详细指明了如何响应不同的请求以及如何对参数编码。
????? 一个SOAP封装了可选的头信息和正文,并且通常使用HTTP POST方法来传送到一个HTTP 服务器,当然其他方法也是可以的,
????? 例如SMTP。SOAP同时支持消息传送和远程过程调用。以下是一个SOAP请求。

??????? POST /StockQuote HTTP/1.1
?Host: www.stockquoteserver.com
?Content-Type: text/xml; charset="utf-8"
?Content-Length: nnnn
?SOAPAction: "Some-URI" <SOAP-ENV:Envelope
???? xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
???? SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
???? <SOAP-ENV:Header>
??<t:Transaction xmlns:t="some-URI" SOAP-ENV:mustUnderstand="1">
???? 5
??</t:Transaction>
???? </SOAP-ENV:Header>
???? <SOAP-ENV:Body>
??<m:GetLastTradePrice xmlns:m="Some-URI">
????? <symbol>SUNW</symbol>
??</m:GetLastTradePrice>
???? </SOAP-ENV:Body>
?</SOAP-ENV:Envelope>
????

???? JAXR :

???? 为了支持UDDI在Java平台上的功能,Java APIs for XML Registries (JAXR)允许开发者来访问注册中心。
???? 值得注意的是,JAXR并不是建立Web服务必需的,你可以利用其他常用的XML APIs来直接集成这些协议。
???? JAXR是一个方便的API,它提供了Java API来发布,查找以及编辑那些注册信息。
???? 它的重点在于基于XML的B2B应用,复杂的地址本查找以及对XML消息订阅的支持等Web服务。
???? 它也可以用来访问其他类型的注册中心,象ebXML注册中心。这些对Web服务的注册信息进行的操作,
???? 可以使用当前的一些Web服务工具来完成(例如第三方的SOAP和ebXML消息工具)。
???? 另外,当JAXP提供了一致并具有针对性的API来完成这些操作,这将使开发变得更加容易。

???? JAX/RPC :

???? 为了使开发人员专注于建立象SOAP那样的基于XML的请求,
???? JCP正在开发基于RPC (JAX/RPC) 的Java API。JAX/RPC是用来发送和接收方法调用请求的,
???? 它基于XML协议,象SOAP,或者其他的象XMLP (XML Protocol,要了解更多可以参考http://www.w3.org/2000/xp/)。
???? JAX/RPC使你不用再关注这些协议的规范,使应用的开发更快速。不久,开发人员就不用直接以XML表示方法调用了。
???? 目前有很多第三方实现了SOAP,开发人员可以在不同的层次上调用SOAP,并选择使用哪一种。
???? 将来,JAX/RPC会取代这些APIs并提供一个统一的接口来构造以及处理SOAP RPC请求。
???? 在接收一个从商业伙伴那里过来的SOAP请求的时候,一个Java servlet用JAX/RPC来接收这个基于XML的请求。
???? 一旦接收到请求后,servlet会调用商务方法,并且把结果回复给商业伙伴。

????
???? JAXM :

???? 当从商业合作伙伴那里接收一个Web服务的请求时,我们需要Java API实现一个Servlet来处理ebXML消息,
???? 就象我们用JAX/RPC来处理SOAP请求一样。
???? Java API for XML Messaging (JAXM) 是集成XML消息标准(象ebXML消息或者SOAP消息)的规范。
???? 这个API是用来推动XML消息处理的,它检测那些预定单的消息格式以及约束。
???? 它控制了所有的消息封装机制,用一种直观的方式分割了消息中的信息,象路由信息,发货单。
???? 这样,开发人员只要关注消息的有效负载,而不用去担心那些消息的重复处理。
???? 目前的开发人员用JAXP来实现JAXM将要提供的功能,JAXM将会提供一套非常具有针对性的API来处理基于XML的消息传送。
???? 这将大大简化开发人员的代码,并使它们具有统一的接口。
???? JAXM和JAX/RPC的差别在于处理消息导向的中间件以及远程过程调用的不同。
???? JAXM注重于消息导向,而JAX/RPC是用来完成远程过程调用的。


????? 请注意,在JAXM 和 JAX/RPC技术成熟之前,开发人员还是依赖于第三方的SOAP APIs,象Apache SOAP,IdooXOAP,以及 GLUE。
????? 当JAXM 和 JAX/RPC正式发布后,它将为当前不同的SOAP和ebXML消息提供统一的接口。
????? 就象JDBC位多种不同的数据库提供统一的接口。??

???? JAXB :

???? XML绑定技术可以把XML文档和Java对象进行自由转换。 用JAXB,你可以在后台的EJB层,把XML文档转换成Java对象。???? 同样你也可以把从EJB中取出的Java对象转换成XML文档返回给用户。 JAXB接口提供了比SAX和DOM更高级的方法来处理XML文档。???? 它提供的特性可以在XML数据和Java类之间互相映射,提供了一个简单的方法来转换XML数据。它比逐个解析标记更简单。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读