zoukankan      html  css  js  c++  java
  • WebService相关概念介绍

    最近重新拾起WebService,之前用过Axis2开发过服务,但是非常具体的概念还不是很清楚,在此粗略总结一下。

    本文重点研究以下几个问题:

        1.WebService以及相关的概念介绍

        2.主要实现技术有哪些?

        3.Axis2和CXF之间的比较

        4.SOAP跟RESTFul服务的问题

    一.WebService以及相关的概念介绍

        WebService:应当是一个软件系统,用以支持网络间不同机器的互动操作。网络服务通常是许多应用程序接口API)所组成的,它们透过网络,例如国际互联网(Internet)的远程服务器端,执行客户所提交服务的请求。

       区别于:浏览器和服务器之间的数据传输,WebService主要用来进行服务器之间的数据 交流传输。

      一个WebService的三个要素:服务生产者,服务请求者,服务代理。他们之间的关系可以通过下图来表示。

    Webservices.png

    其中,这有涉及了几个概念:

         一个基于XML的可扩展消息信封格式,需同时绑定一个网络传输协议。这个协议通常是HTTP或HTTPS,但也可能是SMTPXMPP

        一个XML格式文档,用以描述服务端口访问方式和使用协议的细节。通常用来辅助生成服务器和客户端代码及配置信息。

        一个用来发布和搜索WEB服务的协议,应用程序可借由此协议在设计或运行时找到目标WEB服务。

    二.WebService主要实现技术有哪些?

       主流的服务实现平台主要有:Axis2,apache CXF,Spring-ws等等

    在介绍这几种技术之前,先来了解几个概念:

    • JAX-RPC:

    JAX-RPCJava API for XML-based RPC简称JAX-RPC)允许Java应用程序可以通过已知的描述信息调用一个基于Java的Web服务,描述信息与Web服务的WSDL(Web服务描述语言)描述相一致. JAX-RPC可以被看作是Java RMI在Web服务协议上的实现。JAX-RPC 2.0被更名为JAX-WS 2.0 (Java API for XML Web Services).

    • JAX-WS:

    Java API for XML Web Services (JAX-WS)Java程序设计语言一个用来创建Web服务API。JAX-WS是sunJava企业平台一部分。和其它Java EE的API一样,JAX-WS使用了Java SE 5引入的Java 标注机制来简化Web服务客户端和服务端的开发和部署。

    • JAX-RS:

    Java API for RESTful Web Services是一个Java编程语言应用程序接口,支持按照 表象化状态转变 (REST)架构风格创建Web服务Web服务[1]. JAX-RS使用了Java SE 5引入的Java 标注来简化Web服务客户端和服务端的开发和部署。

    • JAXB:

    JAXB(Java Architecture for XML Binding简称JAXB)允许Java开发人员将Java映射为XML表示方式。JAXB提供两种主要特性:将一个Java对象序列化为XML,以及反向操作,将XML解析成Java对象。换句话说,JAXB允许以XML格式存储和读取数据,而不需要程序的类结构实现特定的读取XML和保存XML的代码。

    3.Axis2和CXF之间的比较

    新一代的 Web Services 框架如 Axis2、CXF 都是由现有的项目中逐渐演化而来的,Axis2 是由大家熟悉的 Axis 1.x 系列演化过来,而 Apache CXF 则是由 Celtix 和 XFire 项目整合而生,并且刚刚发布了 2.0.2 的最新版本,不过仍是 Apache 的一个孵化项目。

    从最基本的WebService的使用上来看:

    1.Apache CXF 是根据Spring哲学来进行编写的,即可以无缝地与Spring进行整合

    2.Axis2 支持多种语言,它有 C/C++ 版本。

    3.Axis2 支持更多的 data bindings

    4.Apache CXF 对JAX-WS规范有完整实现。

    5.Axis2更像是一种是WS容器,它要求应用程序以aar包的形式部署到自己里面,当然也可以跟现有的项目进行集成。

    从两个项目的实验用力上来看:

      1.两个项目都能与Spring进行集成。

      2.需要发布服务时都需要在xml文件中进行配置,axis2需要在service.xml中配置,CXF需要在spring中进行配置。

      3.CXF支持客户端的xml配置,可以基于相同的接口进行访问。

    综合建议:由于CXF跟Spring结合更好,而且不需要单独的配置文件,建议使用CXF。

      4.SOAP跟RESTful服务的问题

           REST(英文:Representational State Transfer,简称REST)是Roy Fielding博士在2000年他的博士论文中提出来的一种软件架构风格。      REST是设计风格而不是标准。

       参考:http://zh.wikipedia.org/wiki/REST

    个人理解:

    个人理解,RESTful风格更适合互联网企业中对资源的访问和控制,但是对企业应用中的以各种动作来作为服务的时候,不太合适,建议还是采用SOAP的方式。

  • 相关阅读:
    CodeForces 459D Pashmak and Parmida's problem
    cf 459c Pashmak and Buses
    hdu 1006 Tick and Tick 有技巧的暴力
    hdu 1005 Number Sequence
    hdu 1004 Let the Balloon Rise
    c++ 单引号和双引号
    c++一些总结
    剑指offer23 从上往下打印二叉树
    E: Unable to locate package
    vector
  • 原文地址:https://www.cnblogs.com/sdjnzqr/p/3956347.html
Copyright © 2011-2022 走看看