在本系列的前两部分中,设置了一个开发环境,它由 LAMP 风格的运行时和 Eclipse IDE 组成。定义了一个虚构的银行场景以演示重要的 Ajax 概念。然后,完成了场景的一部分,包括创建数据库、中间层 PHP 逻辑和一个简单 XHTML 以提供一个单页面浏览器 GUI,还提供了 CSS 样式代码和几个 XML HTTP Request(XHR)实用程序函数。在本系列的第三篇(也就是最后一篇)中,我们要用 JavaScript 实现 Ajax 客户端逻辑,从而完成这个场景的其余部分。还要用 PHP 构建一个 Representational State Transfer(REST)请求分配器以完成客户的银行任务,比如存款、取款和股票组合价值查询。还要用 PHP 开发一个 SOAP(Simple Object Access Protocol)Web 服务客户机,用它访问一个真实的第三方(免费)Web 服务。您将看到如何把本系列中开发的所有组件(XHTML、CSS、JavaScript、PHP、Web 服务客户机和 MySQL)集成起来。最后,本文解释用 LAMP 风格的运行时部署、测试和调试场景的基本方法。到那时,我们就完成了一个比较复杂的端到端场景示例,它演示了 Ajax 客户机、Apache-PHP-MySQL 运行时和相关的 Eclipse IDE 的强大特性。
简介
在开始学习本文之前,要确保(本系列 第 2 部分 中开发的)Bank 场景工件 Bank DB、Bank Logic 和 Bank Portal 在 Eclipse IDE 中保持原样。这些工件包括创建和填充数据库的 SQL 脚本;提供数据库访问的 PHP 代码;以及单页面浏览器应用程序所需的 XHTML、CSS 和 XHR。用这些工件编写的代码只提供了 图 1 所示的银行场景的一部分功能。还缺少将这些已经开发的工件组合起来的组件。如果预览 XHTML 文件,就会看到它在一个浏览器窗口中显示应用程序特有的各个 UI 屏幕。仍然需要编写适当的客户端 JavaScript 逻辑以集成这些 UI 屏幕,产生单页面浏览器应用程序的效果。在客户端代码中,还需要添加适当的 XHR 异步通信逻辑。如果没有客户端 JavaScript 代码,就无法执行银行出纳员功能。
图 1. 银行场景
您可能会注意到,提供特定银行出纳员功能的所有 HTML 表单都将用户数据发送给一个基于 REST 的中间层服务。我们将在另一个 PHP 模块中实现这个服务,这个模块接受银行出纳员的浏览请求,包括存款、取款和当前股票组合价值查询。这个 PHP 模块作为银行操作的请求分配器,它解析银行出纳员的请求并调用适当的 Bank Logic 函数以处理这个请求。您会看到用 PHP 编写这样的 REST 服务是多么容易。
在开发用于 REST 请求分派的 PHP 服务之后,我们的重点将转到一个可以通过互联网访问的基于 .NET 的 Web 服务。这个免费的 Web 服务提供给定股票的当前价格。我们将在 PHP 中间层中开发一个 Web 服务客户机,这样就可以从基于 PHP 的银行操作请求分配器远程调用这个 Web 服务,从而获得股票的报价。然后,银行操作请求分配器将用当前股票价格调用 Bank Logic PHP 模块,计算出给定帐户持有人的当前股票组合价值。您将学习使用 SOAP 访问 Web 服务的技术,还要学习 XML 和 JavaScript Object Notation(JSON)这两种流行的数据交换格式。