工具资源

什么是Web Service?Web服务的优点

Pinterest LinkedIn Tumblr

Web服务是一种标准化的传播通信的媒介,用于在 WWW(全球范围内的互联网)上的客户端和服务器应用程序之间进行交流。 Web Service 是一个软件模块,旨在执行一定的任务。

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

Web服务如何工作?

上面的图表显示了 Web Service 实际上如何工作的非常简单的视图。客户端将通过请求调用一系列 Web Service 调用以调用托管实际 Web Service 的服务器。

这些请求是通过所谓的远程过程调用进行的。远程过程调用(RPC)是对由相关 Web Service 托管的方法进行的调用。

例如,亚马逊提供一种 Web Service,该 Web Service 提供在亚马逊.com 上出售的产品的价格。前端或表示层可以是 .Net 或 Java,但任何一种编程语言都可以与 Web Service 通信。

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

因此,当应用程序彼此交流时,它们实际上是用 XML 交流的。这为使用各种编程语言开发的应用程序之间交流提供了共同的平台。

Web Service 使用称为 SOAP(Simple Object Access Protocol)的东西来发送应用程序之间的 XML 数据。数据通过正常的 HTTP 发送。从 Web Service 发送到应用程序的数据称为 SOAP 消息。 SOAP 消息只是一个 XML 文档。由于文档是用 XML 编写的,因此调用 Web Service 的客户端应用程序可以用任何编程语言编写。

为什么需要 Web Service?

现代业务应用程序使用各种编程平台开发基于 Web 的应用程序。某些应用程序可能是使用 Java 开发的,其他应用程序可能是使用 .Net 开发的,而其他一些应用程序可能是使用 Angular JS、Node.js 等开发的。

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

这就是 Web Service 的作用。Web Service 提供了一个通用平台,允许在各种编程语言上构建的多个应用程序具有彼此通信的能力。

Web Service 的类型

Web Service 主要有两种类型。

  1. SOAP Web Service。
  2. RESTful Web Service。

为了使 Web Service 完全功能,需要在任何用于编程 Web Service 的开发语言中都需要存在某些组件。

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

SOAP(Simple Object Access Protocol)

SOAP 被称为独立于传输的消息协议。SOAP 基于传输 XML 数据作为 SOAP 消息。每个消息都有一个被称为 XML 文档的东西。XML 文档的结构遵循特定的模式,但内容不遵循。 Web Service 和 SOAP 的最大优点是其全部通过标准 Web 协议 HTTP 发送。

以下是 SOAP 消息的组成部分

  • 每个 SOAP 文档都需要具有称为 <Envelope> 元素的根元素。根元素是 XML 文档中的第一个元素。
  • “信封”又分为两个部分。第一个是头,下一个是身体。
  • 头包含路由数据,这基本上是告诉 XML 文档要发送到哪个客户端的信息。
  • 主体将包含实际消息。

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

SOAP 协议

WSDL(Web Services Description Language)

无法找到 Web Service 就无法使用它。调用 Web Service 的客户端应该知道 Web Service 实际上位于哪里。

其次,客户端应用程序需要知道 Web Service 实际上是做什么的,以便它可以调用正确的 Web Service。这是通过 Web Services Description Language(WSDL)的帮助来完成的。 WSDL 文件再次是基于 XML 的文件,它基本上告诉客户端应用程序 Web Service 做什么。通过使用 WSDL 文档,客户端应用程序将能够理解 Web Service 位于何处以及如何使用它。

Web Service 示例

下面是 WSDL 文件的 Web Service 示例。

<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 Service 示例的 WSDL 声明的重要方面如下:

  1. <message> – WSDL 定义中的 message 参数用于定义 Web Service 执行的每个操作的不同数据元素。因此,在上面的 Web Service 示例中,我们有两个可在 Web Service 和客户端应用程序之间交换的消息,一个是“TutorialRequest”,另一个是“TutorialResponse”操作。 TutorialRequest 包含一个名为“TutorialID”的元素,其类型为 string。类似地,TutorialResponse 操作包含一个称为“TutorialName”的元素,其类型也为 string。
  2. <portType> – 这实际上描述了 Web Service 可以执行的操作,我们的情况下称为教程。该操作可以采用 2 个消息;一个是输入消息,另一个是输出消息。
  3. <binding> – 此元素包含所使用的协议。因此,在我们的情况下,我们将其定义为使用 http 。我们还指定了操作主体的其他详细信息,例如命名空间以及消息是否应该被编码。

通用描述,发现和集成(UDDI)

UDDI 是用于描述、发布和发现特定服务提供者提供的 Web Service 的标准。它提供了一种规范,可以帮助托管 Web Service 信息的 Web Service。

现在,我们在之前的话题中讨论了 WSDL 及其包含什么 Web Service 实际上所做的信息。但是,客户端应用程序如何找到 WSDL 文件以了解 Web Service 提供的各种操作?因此,UDDI 就是解决这个问题的方法,并提供可托管 WSDL 文件的存储库。因此,客户端应用程序将完全访问 UDDI,它充当包含所有 WSDL 文件的数据库。

正如电话号码簿具有特定人员的姓名、地址和电话号码一样,UDDI 注册表将具有 Web Service 的相关信息。因此,客户端应用程序知道可以在哪里找到它。

Web服务的优点

我们已经了解了为什么首先出现了Web服务,这是为了提供一个平台,可以让不同的应用程序互相交谈。

但是,让我们看看使用Web服务的优点列表。

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

Web服务架构

每个框架都需要某种体系结构,以确保整个框架按预期工作,同样,在Web服务中。Web服务体系结构由以下三个不同的角色组成:

  1. 提供者–提供者创建Web服务并使其对需要使用它的客户端应用程序可用。
  2. 请求者–请求者仅是需要联系Web服务的客户端应用程序。客户端应用程序可以是基于.NET、Java或任何其他语言的应用程序,它们通过Web服务寻找某种功能。
  3. 代理程序–代理程序只是提供对UDDI访问的应用程序。如前所述,UDDI使客户端应用程序能够找到Web服务。

下图展示了服务提供者、服务请求者和服务注册表如何相互交互。

Web服务体系结构

  1. 发布–提供者使用代理的发布接口向代理(服务注册表)通报Web服务存在的情况,以使服务对客户端可用。
  2. 查找–请求者向代理查询以查找已发布的Web服务。
  3. 绑定–根据从代理(服务注册表)获得的Web服务信息,请求者能够绑定或调用Web服务。

Web服务特点

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

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