Web Service

目录

  • 1、概览
  • 2、SOA架构
    • 2.1 Web Service的基础协议
    • 2.2 Web Service协议栈
  • 3 Web Service的分类
    • 3.1 应用领域
    • 3.2 服务器类型
  • 4 厂商支持
    • 4.1 Java EE
    • 4.2 .NET
    • 4.3 WebSphere
  • 5 其他
    • 5.1 微服务与 Web Service
      • 5.1.1 微服务与 Web 服务之间的区别
      • 5.1.2 微服务、 Web 服务的最佳实践
    • 5.2 SOA与微服务
    • 5.3 Web Service与EJB

1、概览

Web Service(Web服务)是近几年兴起的一种新的分布式计算模型。使用Web Service, 能使得运行在不同机器上的不同应用无须借助附加的、专门的第三方软件或硬件, 就可相互交换数据或集成,无论它们所使用的语言、 平台或内部协议是什么。
Web Service 是一系列标准的集合,包括 SOAP, UDDI,WSDL,WSFL/BPEL 等,Web Service 利用这些标准,提供了一个松散耦合的分布式计算环境。在 Web Service 模型中,厂商将其服务封装成一个个相对独立的 Web Service,每个服务提供某类功能;客户(或其它厂商)可以通过 SOAP 协议来访问这些服务。Web Service 的主要特征是将可调用的功能发布到Web上以供程序访问。
目前Web Service还不存在一个通用的且被广泛接受的定义。但是,通常认为Web Service是一种面向服务(SOA)的体系结构,它允许创建服务的抽象定义、提供服务的具体实现、发布和查找服务、选择服务实例以及互操作服务的使用。

2、SOA架构

面向服务架构 (Service Oriented Architecture, SOA)的基本结构:
在这里插入图片描述其中,

  • Service Provider(服务提供者)将所提供的服务,发布到Service Registry(服务注册器)上(即 Publish 操作);
  • Service Requestor(服务请求者)首先到Service Registry(服务注册器)上搜索服务,得到如何调用该服务的信息(即 Find 操作);
  • 根据得到的信息,Service Requestor(服务请求者)调用Service Provider(服务提供者)提供的服务(即Bind/Invoke 操作)。

2.1 Web Service的基础协议

Web Service平台需要一套协议来实现分布式应用程序的创建。任何平台都有它的数据表示方法和类型系统。要实现互操作性,Web Service平台必须提供一套标准的类型系统,用于沟通不同平台、编程语言和组件模型中的不同类型系统。这些协议有:

    1. XML
      XML是一种用于标记电子文件使其具有结构性的标记语言 ,是Web Service平台中表示数据的基本格式。除了易于建立和易于分析外,XML主要的优点在于它既与平台无关,又与厂商无关。XML形式与内容分离,具有良好的自描述性,同时易于扩展,拥有丰富的第三方开发库。用于在不同架构的系统之间进行信息传输使用
    1. SOAP
      SOAP即简单对象访问协议(Simple Object Access Protocol),它是用于交换XML(标准通用标记语言下的一个子集)编码信息的轻量级协议,能够在不同信息系统之间交换结构化数据,是Web Service的一种主流实现形式 。用来执行Web服务的调用
    1. WSDL
      Web Service描述语言( Web Service Description Language)WSDL就是用机器能阅读的方式提供的一个正式描述文档而基于XML(标准通用标记语言下的一个子集)的语言,用于描述Web Service及其函数、参数和返回值。因为是基于XML的,所以WSDL既是机器可阅读的,又是人可阅读的。用来描述Web服务
    1. UDDI
      UDDI (Universal Description, Discovery and Integration)的目的是为电子商务建立标准;UDDI是一套基于Web的、分布式的、为Web Service提供的、信息注册中心的实现标准规范,同时也包含一组使企业能将自身提供的Web Service注册,以使别的企业能够发现的访问协议的实现标准。用来发布、查找服务
    1. WSFL/BPEL
      用于将分散的、功能单一的Web服务,组织成一个复杂的有机应用。

这些协议中,WSDL用来描述如何访问具体的接口、SOAP用来描述传递信息的格式、UDDI用来管理分发查询Web Service。

2.2 Web Service协议栈

W3C在2001年的 Web Service 专题研讨会上提出了 Web Service 协议栈,该协议栈定义了 Web Service 使用的技术标准与发展方向:
在这里插入图片描述Web Service 追求的第一目标是简单性:

  • 首先 Web Service 使用的协议本身是简单的;
  • 另外,一个可以使用的 Web Service 可以按照需要选择若干层次的功能,而无需所有的特性。例如,一个简单应用可能只要使用 WSDL/SOAP 就可以架构一个符合规范的 Web Service;
  • 最后,Web Service 所有的机制都基于现有的技术,并没有创造一个完整的新体系,而是继承“原有的被广泛接受的技术”。

3 Web Service的分类

Web Service 目前最主要的应用方向为集成企业应用系统。集成企业原有系统利用 Web Service 的高度可集成特性,将企业运作的各个环节有效的联系起来,组成一个协同工作的整体,从而使得企业的所有业务都真正"自动化"起来。

3.1 应用领域

根据应用领域,Web Service可分为以下几类:

    1. 面向商业应用的 Web Service(Business-Oriented Web Service):将企业内部的大型系统如ERP、CRM系统等,封装成 Web Service 的形式在网络中(Internet or Intranet )提供,基于 Web Service 的高度可互操作性,这使得企业内部的应用更容易集成、企业间的众多合作伙伴的系统对接更加容易。这是 Web Service目前最主要的应用方向之一。
    1. 面向最终用户的 Web Service(Customer-Oriented Web Service):指 Web Service 在电子商务领域的应用,主要指针对原有B2C网站的改造,Web Service 技术为B2C网站增加了 Web Service 的应用界面,使得桌面工具可以提供跨越多个B2C服务的桌面服务,如将机票预定、炒股等服务集成到一个个人理财桌面系统中,这令用户更加方便地使用Internet,能够获得更加便捷的服务。
    1. 面向特定设备的 Web Service(Device-Oriented Web Service):指面向手持设备、日用家电等特定接入设备的 Web Service,将原有的如天气预报、E-mail服务、股票信息等网络服务封装成 Web Service,支持除PC以外的各种终端。
    1. 系统级 Web Service(System-Oriented Web Service):这类 Web Service 相当于之前讨论的公共服务,指将Web应用中诸如用户权限认证、系统监控等通用功能封装成 Web Service,发布到Internet或者企业内部的Intranet上,其作用范围将从单个系统或局部网络、拓展到整个企业网络或整个Internet上。比如,一个跨国企业的所有在线服务,可以使用同一个用户权限认证服务。

3.2 服务器类型

根据服务器类型,Web Service可分为以下几类:

    1. SOAP Web服务:SOAP(Simple Object Access Protocol)是一种基于XML的协议,用于在网络上进行应用程序之间的通信,SOAP Web服务使用SOAP消息格式作为数据交换的基础,通常通过HTTP协议进行传输,SOAP Web服务提供了基于操作的接口定义并使用WSDL来描述服务的功能和接口
    1. RESTful Web服务:REST(Representational State Transfer)是一种基于Web的架构风格,用于构建分布式系统,RESTful Web服务使用HTTP协议的各种方法(例如:GET、POST、PUT、DELETE)来进行资源的增删改查操作,RESTful Web服务通常使用JSON或XML作为数据格式并使用URL来标识和访问资源
    1. XML-RPC:XML-RPC是一种远程过程调用(RPC)协议,用于在不同的计算机之间进行通信,XML-RPC使用XML格式进行数据交换并通过HTTP协议进行传输,它提供了一种简单的方式来调用远程方法并将参数和结果封装在XML消息中
    1. JSON-RPC:JSON-RPC是一种轻量级的远程过程调用协议,用于在网络上进行通信,JSON-RPC使用JSON格式作为数据交换的基础并通过HTTP协议进行传输,它提供了一种简单的方式来调用远程方法并将参数和结果封装在JSON消息中
    1. Web Socket:Web Socket是一种在Web浏览器和服务器之间进行全双工通信的协议,它允许在单个持久连接上进行双向通信,而无需为每个请求创建新的连接,Web Socket使用标准HTTP协议进行握手并在建立连接后使用自定义的协议进行数据交换

4 厂商支持

Web Service这项技术只有通过日益广泛的应用才能体现出其价值,比较流行的实现方法是使用.NET 和 Java两种技术,并且两种实现方法可以互相操作。

4.1 Java EE

J2EE在1.4之后实现了对Web Service的显式支持。有关Java EE对Web Service的相关描述可参考官网文档。Java EE定义的Web Service典型架构如下:
在这里插入图片描述
Java EE 平台的新增功能包括依赖于 Web 和 EJB 容器提供的容器功能的端口组件,以及 SOAP/HTTP 传输。并不对容器提供者构造容器和流程提出任何要求。

4.2 .NET

微软的.NET技术应该算是时下最为流行的Web Service 开发技术。首先因为其公司在以前相应的产品就占有相当大的市场份额,以至使新推出的.NET得以有比较稳定的用户群;其次也是更重要的是 .NET平台不仅延续了微软一贯的编程风格,而且还增加了许多支持Web 服务的关键性技术,使得.NET在操作的简单性和执行的稳定性,高效性上达到了一个非常好的结合。

4.3 WebSphere

IBM公司是业界第一家能够提供全面支持Web服务的电子商务基础设施中间件的公司。通过多年来与W3C(The World Wide Web Consortium)的共同努力,包括DB2、Lotus、Tivoli 和WebSphere在内的所有IBM软件都实现了对SOAP、WSDL、UDDI、Linux、XML(标准通用标记语言下的一个子集)、J2EE等开放技术和标准的全面支持。有关WebSphere的具体描述可参考官网。

5 其他

5.1 微服务与 Web Service

5.1.1 微服务与 Web 服务之间的区别

    1. 架构
      就构建而言,微服务是一种分布式架构,由多项松散耦合的独立服务组成一个应用。Web 服务则基于标准化架构,可以在系统之间实现可互操作的通信。
    1. 范围
      微服务的范围通常较小。每项服务都侧重于特定的业务功能(例如,一项服务侧重于购物车,另一项服务侧重于用户生成的内容)。另一方面,Web 服务的范围可能较大,通常代表较大的功能组件。
    1. 通信协议
      微服务进行通信时会使用各种协议,例如 HTTP、AMQP 和 gRPC。当 Web 服务与其他系统通信时,它们会使用标准化协议,例如 SOAP、REST 和 XML-RPC。
    1. 部署
      开发人员会独立部署微服务,在部署之时,通常使用容器化技术将这些微服务与其他服务隔离开来,并简化部署流程。相比之下,Web 服务通常作为单个单元或者在整体式应用中的一组服务进行部署。
    1. 复杂性
      虽然这两种服务都有一定的复杂性,但由于微服务的分布式特性,其在架构方面通常更为复杂。这凸显了管理其所有相互依赖的部分的必要性。

由于采用标准化方法和集中管理,因此 Web 服务的复杂性通常较低。然而,在遵循特定标准时,它们可能会变得非常复杂。

5.1.2 微服务、 Web 服务的最佳实践

  • 电子商务平台:这是一个庞大而复杂的应用,其各个部分必须可靠,并能良好地配合工作(例如,目录、愿望清单、支付系统、购物车)。微服务将确保每项功能各自稳定,并与其他功能良好交互。
  • 旅行预订应用:您需要一个能够与传统系统通信的架构。借助基于标准化协议的 Web 服务,此架构可以确保您的旅行应用与不同的平台和传统应用进行良好通信。
  • 金融科技服务:由于此应用非常复杂,您需要一个稳定可靠的解决方案来处理频繁的变更。对于这种情况,微服务是一个不错的选择,因为它们可以更轻松地进行更新,并且如果需要的话,还可以进行回滚。

如果应用庞大而复杂、需要频繁更改、具有高可用性需求或为资源密集型应用,优先考虑微服务。
如果应用需要与传统系统集成、需求简单,或资源有限,优先选择 Web Service。

5.2 SOA与微服务

虽然 SOA 和微服务有一些共同的目标,但也有明显的区别。在比较 SOA 与微服务时,基本的体系结构风格可使这两种方法区分开来。SOA 采用自上而下的集中化方法,而微服务则更喜欢采用自下而上的去中心化模型。

功能SOA微服务
体系结构风格粗粒度、集中化细粒度的分布式系统;去中心化的数据管理
服务粒度规模较大、更全面的服务规模较小、有侧重点的服务
独立服务是相互依存的;可以共享数据库进行数据存储服务高度独立;解耦且自主
沟通同步,通常以消息为导向;使用共享数据异步,通常是 RESTful;避免数据共享
数据存储集中化数据管理;服务共享数据库分布式(去中心化)数据管理;每项服务负责自己的数据管理
可扩展性水平扩展;由于资源共享和进行集中通信,因此扩展特定服务可能很复杂水平和垂直扩展;随着服务独立运营,实现更精细和更集中的扩展
部署通常涉及将整个应用作为一个单元进行部署每项服务均独立部署和扩展;促进持续交付
耦合由于资源共享和进行集中通信,因此服务呈现出一定程度的耦合松散耦合,服务之间的依赖性最小

5.3 Web Service与EJB

Webservice主要关注于解决异构系统、不同语言系统通信,其关注的是分布式服务开发、着手点要高、站的角度高;而EJB可以看做是分布式编程平台,通过容器和组件,简化了程序开发、调试和部署等它关注的是分布式组件开发,粒度小,而且EJB只属于J2EE规范的一部分。

相关参考:https://baike.baidu.com/item/Web%20Service/1215039?fr=ge_ala’
相关参考:https://blog.csdn.net/myRealization/article/details/122645432
相关参考:https://www.atlassian.com/zh/microservices/microservices-architecture/soa-vs-microservices
相关参考:https://blog.csdn.net/lishehe/article/details/46654499
相关参考:https://blog.csdn.net/liuao107329/article/details/71439535

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/454623.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

laravel 查询数据库

数据库准备 插入 三行 不同的数据 自行搭建 laravel 工程 参考 工程创建点击此处 laravel 配置 数据库信息 DB_CONNECTIONmysql #连接什么数据库 DB_HOST127.0.0.1 # 连接 哪个电脑的 ip (决定 电脑 本机) DB_PORT3306 # 端口 DB_DATABASEyanyu…

FloodFill 算法(DFS)

文章目录 FloodFill 算法(DFS)图像渲染岛屿数量岛屿的最大面积被围绕的区域太平洋大西洋水流问题扫雷游戏衣橱整理 FloodFill 算法(DFS) 漫水填充(Flood Fi)算法是一种图像处理算法,在计算机图形学和计算机视觉中被广泛…

超详细的 Stable Diffusion Webui入门教程(二)基础操作

前言 工欲善其事,必先利其器!今天我们聊聊 Stable Diffusion WebUI 的基础操作以及各个参数都代表了什么。 所有的AI设计工具,安装包、模型和插件,都已经整理好了,👇获取~ 一、大模型的切换 在 Stable D…

【从零开始的LeetCode-算法】3185. 构成整天的下标对数目 II

给你一个整数数组 hours&#xff0c;表示以 小时 为单位的时间&#xff0c;返回一个整数&#xff0c;表示满足 i < j 且 hours[i] hours[j] 构成 整天 的下标对 i, j 的数目。 整天 定义为时间持续时间是 24 小时的 整数倍 。 例如&#xff0c;1 天是 24 小时&#xff0c…

[Vue3核心语法] ref、reactive响应式数据

定义: ref用来定义&#xff1a;基本类型数据、对象类型数据&#xff1b; reactive用来定义&#xff1a;对象类型数据。 使用原则: 若需要一个基本类型的响应式数据&#xff0c;必须使用ref。 若需要一个响应式对象&#xff0c;层级不深&#xff0c;ref、reactive都可以。 …

项目管理这些问题,你是不是忍了很久?

项目管理中常见的问题&#xff0c;你是不是早就感到无奈了&#xff1f;项目进度滞后、成本超支、团队协作不畅、任务分配模糊、资源分配不合理……这些问题常常让人感到力不从心。 无论是关键节点的拖延&#xff0c;还是多部门间的沟通障碍&#xff0c;最终都会拖慢项目进展&a…

京东大模型革命电商搜推技术:挑战、实践与未来趋势

大模型对搜推技术产生了深远的影响&#xff0c;极大地推动了搜推技术的演进趋势&#xff0c;使得搜推更加的智能化和个性化&#xff0c;然而在搜推中引入大模型时同样面临一系列的挑战&#xff0c;例如商品知识的幻觉&#xff0c;复杂查询的理解&#xff0c;个性化商品推荐&…

酒店预订订房小程序源码系统 多酒店入驻+打造类似美团的酒店模式 带完整的安装代码包以及搭建部署教程

系统概述 随着移动互联网的普及&#xff0c;小程序因其轻量级、无需下载安装、即用即走的特点&#xff0c;迅速成为各行业的标配。对于酒店预订行业而言&#xff0c;小程序不仅能够有效提升用户体验&#xff0c;还能降低运营成本&#xff0c;提高转化率。本源码系统正是基于这…

js实现数组中数据有则删除无则添加-[‘12123‘,‘432233‘...]

可以使用indexOf方法来判断数组中是否存在某个元素&#xff0c;如果存在则使用splice方法删除该元素&#xff0c;如果不存在则使用push方法添加该元素。 下面是具体的代码实现&#xff1a; function addOrRemove(arr, item) {const index arr.indexOf(item);if (index -1) {…

Dockerfile和docker-compose详解

Dockerfile和docker-compose详解 文章目录 Dockerfile和docker-compose详解一、Dockerfile1. Dockerfile简介2. 构建镜像3. Dockerfile命令&#xff08;1&#xff09;FROM&#xff08;2&#xff09;WORKDIR&#xff08;3&#xff09;RUN&#xff08;4&#xff09;COPY&#xff…

MATLAB智能算法 - Immunity Algorithm免疫算法

Immunity Algorithm免疫算法 智能算法是路线规划、深度学习等等一系列领域所使用的优化算法&#xff0c;是算法进阶之路的必备之路。 前言&#xff1a;本文主要围绕解决TSP旅行商问题展开&#xff0c;对于机器人的路线规划以及非线性方程求解的问题等解决方案 对于一些其他智能…

Rust的泛型基础与实践

什么是泛型&#xff1f; 想象一下&#xff0c;我们想定义一个函数&#xff0c;它可以用来计算任意类型数据的最大值。如果我们只考虑整数&#xff0c;我们可以这样写&#xff1a; fn max(a: i32, b: i32) -> i32 {if a > b {a} else {b} }但是&#xff0c;如果我们还想…

【每日刷题】Day142

【每日刷题】Day142 &#x1f955;个人主页&#xff1a;开敲&#x1f349; &#x1f525;所属专栏&#xff1a;每日刷题&#x1f34d; &#x1f33c;文章目录&#x1f33c; 1. 1219. 黄金矿工 - 力扣&#xff08;LeetCode&#xff09; 2. 980. 不同路径 III - 力扣&#xff0…

C++20中头文件ranges的使用

<ranges>是C20中新增加的头文件&#xff0c;提供了一组与范围(ranges)相关的功能&#xff0c;此头文件是ranges库的一部分。包括&#xff1a; 1.concepts: (1).std::ranges::range:指定类型为range&#xff0c;即它提供开始迭代器和结束标记(it provides a begin iterato…

MP9928模块分析

MP9928 是一款高性能的同步降压 DC/DC 转换器控制器 IC&#xff0c;具有宽输入范围。以下是其操作和关键特性的总结&#xff1a; 概述 电流模式控制&#xff1a;MP9928 使用电流模式、可编程开关频率控制架构&#xff0c;通过外部 N 沟道 MOSFET 开关来调节输出电压。 反馈和…

PRCV2024:可信AI向善发展与智能文档加速构建

目录 0 写在前面1 GAI时代的挑战&#xff1a;图像内容安全1.1 图像篡改与对抗攻击1.2 生成式图像鉴别1.3 人脸鉴伪模型体验1.4 助力可信AI向善发展 2 GAI时代的机遇&#xff1a;大模型加速器2.1 TextIn大模型加速器2.2 通用文档解析2.3 文本向量模型 3 总结 0 写在前面 中国模…

认识一下:__asm { int 80h; LINUX - sys_fork }

这行代码 __asm { int 80h; LINUX - sys_fork } 使用了汇编语言的语法来直接调用 Linux 系统调用 fork。下面是对这行代码的详细解析&#xff1a; 代码解析 __asm: 这是一个用于嵌入汇编代码的指令&#xff0c;通常在 C 或 C 代码中使用&#xff0c;允许开发者直接插入汇编语言…

信息安全系统设计第七周

文章目录 密码系统设计学习内容AI 对学习内容的总结&#xff08;1分&#xff09;要求总结 第10章&#xff1a;身份认证和PKI理论基础第11章&#xff1a;实战PKI对 AI 总结的反思与补充&#xff08;2分&#xff09;要求反思与补充 学习思维导图&#xff08;2分&#xff09;要求思…

Pytorch 实现图片分类

CNN 网络适用于图片识别&#xff0c;卷积神经网络主要用于图片的处理识别。卷积神经网络&#xff0c;包括一下几部分&#xff0c;输入层、卷积层、池化层、全链接层和输出层。 使用 CIFAR-10 进行训练&#xff0c; CIFAR-10 中图片尺寸为 32 * 32。卷积层通过卷积核移动进行计…

告别微信封号!学会这5招,让你的账号坚不可摧

在这个信息爆炸的时代&#xff0c;无论是工作沟通、社交互动还是获取信息&#xff0c;微信都扮演着极其重要的角色。但是&#xff0c;随着微信平台规则的日益严格&#xff0c;账号被封的风险也随之增加。今天&#xff0c;我们就来聊聊如何有效防止 微信被封&#xff0c;让你的账…