您的位置: 首页 > 技术文档 > 网络编程 > WebService的基本概念
用 Mozilla 调试网页 回到列表 [ASP]提高数据显示效率--缓存探幽
 WebService的基本概念

作者:Stone艺术工作室  时间: 2005-09-13 文档类型:转载 来自:相关论坛

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

这种技术允许网络上的所有系统进行交互。随着技术的发展,一个Web服务可以包含额外的指定功能并且可以在多个B2B应用中协作通讯。 Web服务可以理解请求中上下文的关系,并且在每一个特定的情况下产生动态的结果。这些服务会根据用户的身份,地点以及产生请求的原因来改变不同的处理,用以产生一个唯一的,定制的方案。这种协作机制对那些只对最终结果有兴趣的用户来说,是完全透明的。  

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

对于商业用户来说,要找到一个自己需要使用的服务,他必须知道如何来调用。 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数据。它比逐个解析标记更简单。

出处:相关论坛
责任编辑:moby

◎进入论坛网络编程版块参加讨论

相关文章 更多相关链接
Windows2000 DNS服务器的区域类型
Flash MX 2004与WebService使用
为flash构建asp.net Webservice
为Flash构建 Java WebService
CFMX For F2K4 WebService
热门搜索:CSS Fireworks 设计比赛 网页制作 web标准 用户体验 UE photoshop Dreamweaver Studio8 Flash 手绘 CG
站点最新 站点最新列表
周大福“敬•自然”设计大赛开启
国际体验设计大会7月将在京举行
中国国防科技信息中心标志征集
云计算如何让安全问题可控
云计算是多数企业唯一拥抱互联网的机会
阿里行云
云手机年终巨献,送礼标配299起
阿里巴巴CTO王坚的"云和互联网观"
1499元买真八核 云OS双蛋大促
首届COCO桌面手机主题设计大赛
栏目最新 栏目最新列表
浅谈JavaScript编程语言的编码规范
如何在illustrator中绘制台历
Ps简单绘制一个可爱的铅笔图标
数据同步算法研究
用ps作简单的作品展示页面
CSS定位机制之一:普通流
25个最佳最闪亮的Eclipse开发项目
Illustrator中制作针线缝制文字效果
Photoshop制作印刷凹凸字体
VS2010中创建自定义SQL Rule
分享按钮

蓝色理想版权申明:除部分特别声明不要转载,或者授权我站独家播发的文章外,大家可以自由转载我站点的原创文章,但原作者和来自我站的链接必须保留(非我站原创的,按照原来自一节,自行链接)。文章版权归我站和作者共有。

转载要求:转载之图片、文件,链接请不要盗链到本站,且不准打上各自站点的水印,亦不能抹去我站点水印。

特别注意:本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有,文章若有侵犯作者版权,请与我们联系,我们将立即删除修改。

您的评论
用户名:  口令:
说明:输入正确的用户名和密码才能参与评论。如果您不是本站会员,你可以注册 为本站会员。
注意:文章中的链接、内容等需要修改的错误,请用报告错误,以利文档及时修改。
不评分 1 2 3 4 5
注意:请不要在评论中含与内容无关的广告链接,违者封ID
请您注意:
·不良评论请用报告管理员,以利管理员及时删除。
·尊重网上道德,遵守中华人民共和国的各项有关法律法规
·承担一切因您的行为而直接或间接导致的民事或刑事法律责任
·本站评论管理人员有权保留或删除其管辖评论中的任意内容
·您在本站发表的作品,本站有权在网站内转载或引用
·参与本评论即表明您已经阅读并接受上述条款
推荐文档 | 打印文档 | 评论文档 | 报告错误  
专业书推荐 更多内容
网站可用性测试及优化指南
《写给大家看的色彩书1》
《跟我去香港》
众妙之门—网站UI 设计之道
《Flex 4.0 RIA开发宝典》
《赢在设计》
犀利开发—jQuery内核详解与实践
作品集 更多内容

杂⑦杂⑧ Gold NORMANA V2