什么是Web服务? Archi结构,类型,示例

什么是网络服务?

网络服务 是 WWW(万维网)上客户端和服务器应用程序之间进行通信的标准化媒介。Web 服务是旨在执行特定任务集的软件模块。

  • 云计算中的Web服务可以通过网络进行搜索,并进行相应的调用。
  • 当被调用时,Web 服务将能够向调用该 Web 服务的客户端提供功能。

WebServices 如何工作?

WebServices 的工作原理
WebServices 的工作原理

上图非常简单地展示了 Web 服务的实际工作方式。客户端将通过向托管实际 Web 服务的服务器发出请求来调用一系列 Web 服务。

这些请求是通过所谓的远程过程调用发出的。远程过程调用 (RPC) 是对由相关 Web 服务托管的方法的调用。

举个例子, Amazon 提供通过 amazon.com 在线销售的产品价格的 Web 服务。前端或表示层可以是 .Net 或 Java 但任何一种编程语言都能够与网络服务进行通信。

Web 服务设计的主要组成部分是在客户端和服务器之间传输的数据,即 XML。 XML(可扩展标记语言) 是 HTML 的对应语言,是许多编程语言都能理解的易于理解的中间语言。

因此,当应用程序相互通信时,它们实际上是以 XML 进行通信。这为使用各种编程语言开发的应用程序相互通信提供了一个通用平台。

Web 服务使用一种称为 SOAP(简单对象访问协议)的协议在应用程序之间发送 XML 数据。数据通过普通 HTTP 发送。从 Web 服务发送到应用程序的数据称为 SOAP 消息。SOAP 消息只不过是一个 XML 文档。由于文档是用 XML 编写的,因此调用 Web 服务的客户端应用程序可以用任何编程语言编写。

为什么需要 Web 服务?

现代商业应用程序使用各种编程平台来开发基于 Web 的应用程序。有些应用程序可能在 Java有些使用 .Net,还有一些使用 Angular JS、Node.js 等等。

这些异构应用程序之间通常需要进行某种形式的通信。由于它们是使用不同的开发语言构建的,因此很难确保应用程序之间的准确通信。

这正是 Web 服务发挥作用的地方。Web 服务提供了一个通用平台,允许基于各种平台构建多个应用程序。 编程语言 具有相互沟通的能力。

Web服务类型

Web 服务主要有两种类型。

  1. SOAP 网络服务。
  2. RESTful Web 服务.

为了使 Web 服务充分发挥作用,需要安装某些组件。无论使用何种开发语言来编写 Web 服务,这些组件都必须存在。

让我们更详细地了解这些组件。

SOAP(简单对象访问协议)

SOAP 被称为独立于传输的消息传递协议。SOAP 基于将 XML 数据作为 SOAP 消息进行传输。每条消息都包含一个称为 XML 文档的内容。只有 XML 文档的结构遵循特定模式,而内容则不然。Web 服务和 SOAP 的最好之处在于,它们全部通过 HTTP(标准 Web 协议)发送。

SOAP 消息由以下部分组成

  • 每个 SOAP 文档都需要有一个根元素,称为元素。根元素是 XML 文档中的第一个元素。
  • “信封”又分为两部分。第一部分是标题,第二部分是正文。
  • 标头包含路由数据,该路由数据基本上是告诉 XML 文档需要发送到哪个客户端的信息。
  • 正文将包含实际消息。

下图显示了通过 SOAP 进行通信的一个简单示例。

SOAP 协议

SOAP 协议

我们将在本章中详细讨论 SOAP 教程.

WSDL(Web服务描述语言)

如果找不到 Web 服务,则无法使用调用 Web 服务的客户端应该知道 Web 服务实际位于何处。

其次,客户端应用程序需要知道 Web 服务实际上做什么,以便可以调用正确的 Web 服务。这可以通过 WSDL(即 Web 服务描述语言)来实现。WSDL 文件同样是基于 XML 的文件,它基本上告诉客户端应用程序 Web 服务的作用。通过使用 WSDL 文档,客户端应用程序将能够了解 Web 服务的位置以及如何使用它。

Web 服务示例

下面给出了 WSDL 文件的 Web 服务示例。

<definitions>	
   <message name="TutorialRequest">
      <part name="TutorialID" type="xsd:string"/>
   </message>
     
   <message name="TutorialResponse">
      <part name="TutorialName" type="xsd:string"/>
   </message>

   <portType name="Tutorial_PortType">
      <operation name="Tutorial">
         <input message="tns:TutorialRequest"/>
         <output message="tns:TutorialResponse"/>
      </operation>
   </portType>

   <binding name="Tutorial_Binding" type="tns:Tutorial_PortType">
      <soap:binding style="rpc"
         transport="http://schemas.xmlsoap.org/soap/http"/>
      <operation name="Tutorial">
         <soap:operation soapAction="Tutorial"/>
         <input>
            <soap:body
               encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
               namespace="urn:examples:Tutorialservice"
               use="encoded"/>
         </input>
         
		 <output>
            <soap:body
               encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
               namespace="urn:examples:Tutorialservice"
               use="encoded"/>
         </output>
      </operation>
   </binding>
</definitions>

关于上述 Web 服务的 WSDL 声明示例,需要注意的重要方面如下:

  1. – WSDL 定义中的消息参数用于定义 Web 服务执行的每个操作的不同数据元素。因此,在上面的 Web 服务示例中,我们有 2 条可在 Web 服务和客户端应用程序之间交换的消息,一条是“TutorialRequest”,另一条是“TutorialResponse”操作。TutorialRequest 包含一个名为“TutorialID”的元素,该元素属于字符串类型。同样,TutorialResponse 操作包含一个名为“TutorialName”的元素,该元素也是字符串类型。
  2. – 这实际上描述了 Web 服务可以执行的操作,在我们的例子中称为 Tutorial。此操作可以接收 2 条消息;一条是输入消息,另一条是输出消息。
  3. – 此元素包含所使用的协议。因此,在我们的示例中,我们将其定义为使用 http (http://schemas.xmlsoap.org/soap/http)。我们还为操作主体指定其他详细信息,例如命名空间以及是否应对消息进行编码。

我们将在本期详细讨论“WDSL” 教程.

普遍 Descript发现和集成 (UDDI)

UDDI 是描述、发布和发现特定服务提供商提供的 Web 服务的标准。它提供了有助于托管 Web 服务信息的规范。

现在我们在上一个主题中讨论了 WSDL 以及它如何包含有关 Web 服务实际执行的操作的信息。但是客户端应用程序如何找到 WSDL 文件以了解 Web 服务提供的各种操作?因此,UDDI 就是这个问题的答案,它提供了一个可以托管 WSDL 文件的存储库。因此,客户端应用程序将完全访问 UDDI,它充当包含所有 WSDL 文件的数据库。

就像电话簿中有某个人的姓名、地址和电话号码一样,UDDI 注册中心也会有 Web 服务的相关信息. 这样客户端应用程序就知道在哪里可以找到它。

Web 服务优势

我们已经了解了 Web 服务出现的原因,即提供一个可以让不同应用程序相互通信的平台。

但是让我们看一下 Web 服务优势列表,以了解为什么使用 Web 服务很重要。

  1. 在网络上公开业务功能 – Web 服务是托管代码单元,它为客户端应用程序或最终用户提供某种功能。此功能可以通过 HTTP 协议调用,这意味着它也可以通过互联网调用。如今,所有应用程序都在互联网上,这使得 Web 服务的用途更加有用。这意味着 Web 服务可以位于互联网上的任何地方,并根据需要提供必要的功能。
  2. 应用程序之间的互操作性 – Web 服务允许各种应用程序相互通信并共享数据和服务。所有类型的应用程序都可以相互通信。因此,您现在可以编写所有应用程序都可以理解的通用代码,而不必编写只有特定应用程序才能理解的特定代码
  3. 每个人都理解的标准化协议 – Web 服务使用标准化的行业协议进行通信。所有四层(服务传输、XML 消息传递、服务 Descript服务发现层(Service Discovery Layers)使用 Web 服务协议栈中定义明确的协议。
  4. 降低沟通成本 – Web 服务使用 SOAP over HTTP 协议,因此您可以使用现有的低成本互联网来实现 Web 服务。

Web服务 Archi质地

每个框架都需要某种架构来确保整个框架按预期工作,在 Web 服务中也是如此。 Web服务 Archi质地 由以下三个不同的角色组成:

  1. Provider – 提供商创建 Web 服务并将其提供给想要使用它的客户端应用程序。
  2. 请求者 – 请求者就是需要联系 Web 服务的客户端应用程序。客户端应用程序可以是 .Net、 Java或任何其他通过 Web 服务寻求某种功能的基于语言的应用程序。
  3. 经纪人 – 代理只不过是提供对 UDDI 的访问的应用程序。如前文所述,UDDI 使客户端应用程序能够定位 Web 服务。

下图展示了服务提供者、服务请求者和服务注册中心如何相互作用。

Web服务 Archi质地

Web服务 Archi质地
  1. 发布 – 提供商使用代理的发布接口将 Web 服务的存在告知代理(服务注册表),以便客户端可以访问该服务
  2. 找到最适合您的地方 – 请求者咨询代理以找到已发布的 Web 服务
  3. 捆绑 – 利用从代理(服务注册表)获得的有关 Web 服务的信息,请求者能够绑定或调用 Web 服务。

网络服务特点

Web 服务具有以下特殊的行为特征:

  1. 它们是基于 XML 的 – Web 服务使用 XML 在表示层和数据传输层表示数据。使用 XML 可消除任何网络、操作系统或平台依赖性,因为 XML 是所有人都能理解的通用语言。
  2. 松耦合 – 松耦合意味着客户端和 Web 服务彼此不绑定,这意味着即使 Web 服务随着时间的推移而发生变化,也不应该改变客户端调用 Web 服务的方式。采用松耦合的架构往往会使软件系统更易于管理,并允许不同系统之间更简单地集成。
  3. Sync同步或异步功能 – Sync同步性是指客户端与服务执行的绑定。在同步操作中,客户端实际上会等待 Web 服务完成操作。一个例子可能是正在执行数据库读写操作的场景。如果从一个数据库读取数据,然后将其写入另一个数据库,则必须按顺序执行操作。异步操作允许客户端调用服务,然后并行执行其他功能。这是确保在执行特定操作时不会停止其他服务的常见且可能是最受欢迎的技术之一。
  4. 能够支持远程过程调用 (RPC) – Web 服务使客户端能够使用基于 XML 的协议调用远程对象上的过程、函数和方法。远程过程公开 Web 服务必须支持的输入和输出参数。
  5. 支持文档交换 – XML 的主要优势之一是它不仅能以通用方式表示数据,还能表示复杂文档。这些文档可以简单到表示当前地址,也可以复杂到表示整本书。