我理解的webservice是这样的-ag捕鱼王app官网

我理解的webservice是这样的

作者:迹忆 最近更新:2022/11/13 浏览次数:

最近在工作中遇到这样的一个项目(暂且定为项目a),项目a本身是用php开发的,但是其数据是来自于另一个使用java开发的项目(暂且定为项目b),项目a不能操作项目b的数据库,它有其自己的一套数据库,只是有些地方需要用到项目b中的内容。所以在这里就需要一种通信方式,可以使b中的数据可以传到a中。很当然的就选择了webservice,我使用php在项目a中搭建了webservice服务,向b提供了我需要实现的接口,只要b调用相应的接口,按照接口要求的数据格式将数据传输到a中,这就大功告成了。

那webservice究竟是个什么东西呢,刚开始使用的时候我在网上也查了很多的资料,下面就我自己对webservice的理解向大家分享一下。

webservice可以看做不同设备之间通信的一种标准,和具体的某种语言没有关系,如果非要说有关系的话,那就是每种语言都按照这个webservice标准来开发相应的函数以实现此标准。就向我上面说的项目b向项目a传输数据,需要按照这个webservice标准来传输才可以成功。

当然对于上述案例如果说是项目a需要在本地存一份项目b中的部分数据,但是对于业务逻辑是和b没有关系的,那么就需要a来提供webservice服务,由b来调用接口发送数据,接下来就没有b什么事儿了,仅当b中相应数据有更新的时候,再次调用a提供的webservice接口更新a中的数据就可以了。但是如果业务是这样的,项目a不需要存b中的数据,它只是用b中的部分数据做展示,那我们就需要在b中搭建webservice服务,提供相应的接口,由a调用b提供的webservice接口以此取出b中的数据,那这样当b中数据有更新的时候,a调用的数据也是最新的。

上面说了这么多,无非就是一句话

webservice是被定义用来使不同应用之间通过网络传输数据的一种标准,此标准和具体的语言无关,至于哪种语言提供接口,哪种语言来调用要看项目的需要。

既然是一种标准,那就需要有相应的技术来支持这个标准的实现。下面就出现了webservice中的四种技术——xml、wsdl、soap、uddi。在一套完整的webservice服务中,这四种技术各有其自己的实现价值,下面分别来介绍一下各自的用途

1.xml 

xml是用来标记数据的(对于xml标签详细介绍,可以参考w3c),因为上面我们说过,webservice不依赖于某一门特定的编程语言。而不同的系统可能是使用不同的编程语言来开发,(如上:项目a使用php开发,项目b使用java开发)所以说就需要一种方式来交换数据,这种方式同样不依赖于某种编程语言,大多数软件都集成了xml标签,因此使用xml格式的数据来实现数据的交换。

2.soap 

soap是一种特殊的协议,用来传输数据。当调用方一旦发现提供webservice接口的地址,它将会使用soap协议和提供webservice的系统进行连接。

3.wsdl

wsdl用来描述客户端可以调用的接口的规则,所有这些规则定义在wsdl文件中,当有客户端发起调用的时候,webservice提供方会参考这个wsdl规则来验证数据请求的合法性。

4.uddi

uddi列出了那些服务是可以被访问的。当一个系统需要数据的时候,首先它会先查找uddi,找出从除了自己之外的那些可以获取到自己需要的数据的服务,然后进行链接获取数据。这一点有点类似于dns的功能。

以上分别介绍了这四项技术在整个webservice架构中的角色,下面我们将这四项连起来,看一下整个webservice的架构是如何实现的。

首先,webservice的提供方会在wsdl文件中新建一些接口的规则,然后将wsdl文件发送给uddi进行报道注册。服务请求方(也就是调用webservice接口的一方)会先连接uddi来查询哪一个提供方有自己需要的数据,找到以后然后连接这个服务提供方,此时和提供方使用soap协议进行交互。当服务方收到请求以后,首先会对这个请求进行验证,验证的依据就是先前新建的wsdl规则。验证通过以后服务方会向请求方发送xml格式的数据,此时同样是使用soap协议进行交互。当请求方收到xml数据以后,请求方会使用xsd来验证此xml数据的合法性。验证通过以后再进行数据的处理。

整个过程可以用下图反映

 

迹忆博客——webservice架构原理图

 

以上就是整个webservice的实现过程。看此过程总感觉和web应用的流程有些类似,首先需要将域名和ip地址绑定,在dns中报道注册。当用户访问的时候,首先会带着域名去访问dns服务器,dns会解析域名到对应的ip地址,并将此信息返回给用户,用户得到ip以后,会根据ip去访问对应的网站服务,此时用户和web服务之间使用的是http协议。

以上就是我对webservice的理解,至于webservice在什么情况下使用合适,我也不好说,我只能说这个得根据实际情况来定。我做的项目有限,虽说在网上看到过webservice的使用场景,但是有些情况我并没有接触过,使用webservice的益处和弊端也不好下结论。如果以后有幸接触到使用webservice的其他的项目,我会再进行补充,更新此文章。当然如果大家有什么好的建议,欢迎在下面留言,大家共同探讨,共同进步。

转载请发邮件至 1244347461@qq.com 进行申请,经作者同意之后,转载请以链接形式注明出处

本文地址:

相关文章

powershell 通过网络复制文件

发布时间:2024/02/05 浏览次数:221 分类:编程语言

本教程将教你使用 powershell 通过网络共享复制文件。powershell 是一个强大的工具,可让你从其命令行界面执行不同的文件和文件夹操作。

在批处理脚本中映射网络驱动器

发布时间:2023/08/14 浏览次数:607 分类:操作系统

本文将讨论如何在批处理脚本中映射网络驱动器。在批处理脚本中映射网络驱动器 为此,我们将看到同一命令的三种格式。 但是,命令的一般格式是:

java 调用 webservice

发布时间:2023/07/17 浏览次数:107 分类:java

本文将教我们如何从 java 类进行 soap webservice 调用。soap 网络服务 soap 代表简单对象访问协议。 可以通过这个基于 xml 的接口来访问 webservice。

使用 docker 网络主机命令

发布时间:2023/04/18 浏览次数:140 分类:docker

在本文中,我们将学习如何使用 --network 命令将容器添加到主机网络。 如果我们不使用此命令指定网络,我们还将了解如何将容器添加到默认网络。

在 docker compose 中添加网络模式

发布时间:2023/04/17 浏览次数:899 分类:docker

默认情况下,单个网络由 docker compose 在我们的应用程序中创建,并将每个容器作为服务添加到那里。 网络上的每个容器都可以被单个网络上的容器访问和找到。

flask 网络套接字

发布时间:2023/03/27 浏览次数:171 分类:python

通过这个解释,我们将了解 websocket 是什么以及它是如何在客户端和服务器之间工作的。我们还将学习如何借助 flask 中的 flask_socketio 模块制作一个实时聊天应用程序。

扫一扫阅读全部技术教程

社交账号
  • https://www.github.com/onmpw
  • qq:1244347461

最新推荐

教程更新

热门标签

扫码一下
查看教程更方便
网站地图