Web Services基础

Web Services 是一种用于构建分布式应用程序的技术,它允许不同的应用程序通过网络相互通信和交互。

Web Services

  • Web Services
    • 定义
      • 分布式应用程序组件
      • 使用开放协议通信
      • 独立并自我描述
      • 通过UDDI发现
      • 可被其他应用程序使用
      • 基于XML
    • 核心组件
      • SOAP
      • UDDI
      • WSDL
    • 工作原理
      • 使用XML + HTTP
      • 通过标准协议通信
      • 独立性和自我描述性
      • 使用UDDI进行发现
      • 提供标准接口给其他应用程序使用
    • 优势
      • 跨平台和跨语言
      • 可扩展性
      • 灵活性和互操作性
      • 分布式系统集成
      • 提供了一种标准的接口

特点:

  1. 应用程序组件: Web Services 是应用程序的组成部分,它们可以被其他应用程序调用和使用,就像调用本地库或模块一样。

  2. 使用开放协议: Web Services 使用开放的标准协议进行通信,例如SOAP(Simple Object Access Protocol)和HTTP(Hypertext Transfer Protocol),这使得它们能够在不同的平台和系统之间进行通信。

  3. 独立并自我描述: Web Services 是独立的,它们可以被描述和发现。这意味着它们具有自我描述的能力,其他应用程序可以查找和了解它们的功能和接口,而无需人工介入。

  4. 通过UDDI发现: UDDI(Universal Description, Discovery, and Integration)是一种用于发现 Web Services 的目录服务。它允许企业在互联网上注册和搜索 Web Services,从而使其能够被其他应用程序发现和使用。

  5. 可被其他应用程序使用: Web Services 提供了一种标准的接口,使其他应用程序可以轻松地调用它们的功能。这使得不同的应用程序可以相互合作和共享数据,从而实现更强大和灵活的功能。

  6. XML是基础: XML(可扩展标记语言)是 Web Services 的基础,它提供了一种通用的数据格式,用于在不同的系统和平台之间交换数据。XML允许数据以结构化的方式进行表示和传输,从而实现了跨平台和跨语言的互操作性。

Web Services 平台的核心组件包括SOAP、UDDI和WSDL,它们分别用于定义通信协议、服务发现和服务描述。通过这些组件,Web Services 提供了一种灵活、可扩展和跨平台的解决方案,使得不同的应用程序可以轻松地进行集成和交互。

优势

  1. 平台无关性:Web Services可以在不同的平台和操作系统上运行,并且可以使用不同的编程语言进行开发,因此可以实现跨平台和跨语言的交互。

  2. 可重用性:Web Services允许开发人员将常用的功能或服务封装为可重用的组件,其他应用程序可以轻松地调用这些服务,无需重复开发相同的功能。

  3. 解耦合:通过Web Services,不同的应用程序可以通过标准化的接口进行通信,使它们之间的耦合度降低。这意味着可以独立地对其中一个应用程序进行修改,而不会影响其他应用程序。

  4. 扩展性:Web Services提供了一种灵活的架构,可以根据需要添加新的功能或服务,而不需要对现有系统进行大规模的修改。

  5. 开放性:Web Services使用开放的标准和协议,如XML、SOAP和HTTP,这使得它们可以与各种不同的系统和平台进行集成和交互。

三个核心组件:

  1. SOAP(简易对象访问协议):SOAP是一种用于在网络上交换结构化信息的协议,它基于XML,并用于在不同的应用程序之间进行通信。SOAP消息由XML组成,它定义了一种格式,用于在Web服务之间传递信息。SOAP消息可以在HTTP、SMTP等不同的传输协议上进行传输。

  2. UDDI(通用描述、发现和集成):UDDI是一种用于描述和发现Web服务的规范。它提供了一个分布式的目录服务,允许企业注册其提供的Web服务,并允许其他企业通过查询这个目录来发现并使用这些服务。UDDI使用XML格式来描述Web服务的信息,并提供了一组API,用于在Web服务之间进行搜索和查询。

  3. WSDL(Web服务描述语言):WSDL是一种用于描述Web服务的语言,它定义了Web服务的接口和操作。WSDL文件包含了Web服务的详细信息,包括它支持的操作、输入和输出参数、消息格式、传输协议等等。WSDL文件通常用于生成客户端代码,以便应用程序可以与Web服务进行交互。

PHP Web Service

  1. SOAP 扩展:PHP 提供了 SOAP 扩展,用于创建和调用 SOAP Web 服务。SOAP 扩展允许 PHP 脚本充当 Web 服务的服务器端或客户端,并通过 SOAP 协议进行通信。
  2. Web Service 服务器端:PHP 可以通过创建 SOAP 服务器来提供 Web 服务。服务器端的 PHP 脚本负责接收客户端请求、处理请求并发送响应。
  3. Web Service 客户端:PHP 也可以通过创建 SOAP 客户端来调用外部的 Web 服务。客户端的 PHP 脚本负责构造 SOAP 请求、发送请求并处理响应。
  4. WSDL 模式:在创建 Web 服务时,可以选择使用 WSDL 模式或非 WSDL 模式。WSDL 模式允许根据 WSDL 文件来自动生成 Web 服务的接口和操作,而非 WSDL 模式则需要手动指定每个操作的输入和输出参数。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
<?php
// 创建一个 PHP 类,用于处理请求
class Calculator
{
// 添加两个数并返回结果
public function add($num1, $num2)
{
return $num1 + $num2;
}

// 减去第二个数并返回结果
public function subtract($num1, $num2)
{
return $num1 - $num2;
}
}

// 创建 SoapServer 对象
$server = new SoapServer(null, array('uri' => "http://localhost/"));

// 导出 Calculator 类中的全部函数
$server->setClass("Calculator");

// 处理 SOAP 请求,并发送回响应
$server->handle();
?>

上述代码创建了一个简单的 PHP Web 服务,它实现了一个 Calculator 类,其中包含两个函数:addsubtract,用于执行加法和减法操作。然后,它将此服务发布为一个 SOAP 服务,以便其他应用程序可以通过 SOAP 协议调用这些函数。

在此基础上,我们可以编写客户端代码来调用这些函数。以下是一个简单的客户端代码示例:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<?php
try {
// 创建 SoapClient 对象
$soap = new SoapClient(null, array(
'location' => "http://localhost/server.php",
'uri' => "http://localhost/"
));

// 调用 Calculator 类中的 add 函数
$result1 = $soap->add(5, 3);
// 调用 Calculator 类中的 subtract 函数
$result2 = $soap->subtract(10, 4);

echo "加法结果:".$result1."<br/>";
echo "减法结果:".$result2;
} catch(SoapFault $e) {
echo "SOAP 错误:" . $e->getMessage();
} catch(Exception $e) {
echo "错误:" . $e->getMessage();
}
?>

此客户端代码创建了一个 SoapClient 对象,并通过 SOAP 协议调用了服务器端的 addsubtract 函数。然后,它将返回的结果显示在页面上。如果发生了任何 SOAP 错误或异常,它将捕获并显示错误消息。