zoukankan      html  css  js  c++  java
  • WebService 学习笔记(一、概念及定义)

    定义

    WebService是一种服务导向架构(SOA service-oriented architecture)的技术,通过标准的Web协议提供服务,目的是保证不同平台的应用服务可以互操作。

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

    WebService脚本平台需支持XML+HTTP。(基于SOAP)

    SOA

    SOA 面向服务的体系结构(service-oriented architecture)并不特指一种技术,而是一种分布式运算的软件设计方法。软件的部分组件(调用者),可以透过网上的通用协议(如:HTTP)调用另一个应用软件组件运行、运作,让调用者获得服务。

    SOA中的一项服务应有以下四个特性:

    1. 针对某特定要求的输出,该服务就是运作一项商业逻辑
    2. 具有完备的特性(self-contained)
    3. 消费者并不需要了解此服务的运作过程
    4. 可能由底层其他服务组成

    优势

    1. 跨平台调用(WebService不局限于操作系统,你可以在Windows上调用linux上的WebService服务,反之亦然,其他系统同理);
    2. 跨语言调用(WebService不局限于编程语言,你可以在Java语言中调用C#语言提供的WebService服务,反之亦然,其他语言同理);
    3. 可远程调用(通过使用WebService,您的应用程序可以向全世界发布信息,或提供某项功能,只要有Internet)。

    WebService 平台的元素:

    • SOAP (简易对象访问协议)
    • UDDI (通用描述、发现及整合;PS:并不常用)
    • WSDL (WebService描述语言)

    其他相关概念:

    SEI

    SEI (Service Endpoint Interface) 在Webservice中被称为 port ,在Java中称为接口(Endpoint),WebService服务器端用来处理请求的接口。

    Endpoint

    服务端点(Endpoint),简单的来说它就是WebService 暴露出来的一个URL。通过这个URL,client应用或者说调用端就可以访问到其对应的服务。

    WebService中一个基于SOAP的service可以通过单独的一个Java类来实现。一个endpoint interface,即SEI,是WebService公开时在JavaEE中使用的术语。 它使用@WebService进行注释,表明这是一个组件接口,它声明了向客户端公开的所有抽象方法。

    SOAPRESTful

    SOAP是一种数据交换协议规范,是一种轻量的、简单的、基于XML的协议的规范。其主要核心是面向活动。

    RESTful是一种架构设计风格,提供了设计原则和约束条件,而不是架构。而满足这些约束条件和原则的应用程序或设计就是 RESTful架构或服务。其主要核心是面向资源。

    REST可以看着是http协议的一种直接应用,默认基于json作为传输格式,使用简单,学习成本低效率高;而SOAP可以看着是一个重量级的协议,基于xml,SOAP在安全方面是通过使用XML-Security和XML-Signature两个规范组成了WS-Security来实现安全控制的。简单数据操作,无事务处理,开发和调用简单这些是使用REST架构风格的优势。而对于较为复杂的面向活动的服务,如果我们还是使用REST,很多时候都是仍然是传统的面向活动的思想通过转换工具再转换得到REST服务,这种使用方式是没有意义的。

  • 相关阅读:
    PTA 乙级 1064 朋友数 (20分) C++
    关于Symbol.iterator 学习笔记
    JS函数传递参数是是按值传递
    使用Nginx做反向代理的配置
    动态修改svg的颜色,svg做背景色时候修改颜色
    macos停止MySQL服务
    git-flow-avh的使用过程
    appium+rf APP自动化问题七----点击图片下方的文字无法实现页面跳转
    appium+rf 问题六--appium setting和unlock在设备上重复安装
    python3报错---Error in sitecustomize; set PYTHONVERBOSE for traceback: NameError: name 'reload' is not defined
  • 原文地址:https://www.cnblogs.com/yucfeng/p/9969318.html
Copyright © 2011-2022 走看看