实现 Ajax 客户机和服务器层

  Ajax(Asynchronous JavaScript + XML)正在迅速地成为时髦的技术,它可以为在浏览器中运行的 Web 应用程序提供具有桌面质量的软件特性……
         本文将开发银行场景的一些部分。具体地说,将使用 MySQL 数据库创建一个后端数据库。我们将研究几个 MySQL 命令行工具,并使用这些工具连接数据库、在数据库中创建、定义和填充与银行相关的数据。然后,开发一个中间层 PHP 模块来提供银行的业务逻辑,这个模块使用 ODBC 连接 MySQL 数据库。最后,开发一个银行门户,用户可以通过这个简单的浏览器用户界面与这个端到端应用程序进行交互,这个应用程序不久之后就可以在 Zend Core 上运行。

  简介

  本文这个银行场景主要提供银行出纳员执行的基本服务。客户数据是这个场景的重要部分。在此之后,可以通过 Zend Core 提供的 ODBC MySQL 驱动程序获取和更新存储的客户数据。处理了客户数据之后,重点转移到提供银行出纳功能所需的核心银行逻辑。我们开发一个 PHP 代码模块来提供核心银行逻辑,并使用 ODBC 进行必要的数据库访问。使用 Zend Core 和 PHP 实现银行逻辑的主要优点是,可以利用内置的 MySQL 支持。

  在建立数据库并开发 PHP 模块之后,为银行出纳员提供执行四个核心功能的用户界面。我们通过一个瘦客户机访问 PHP 模块中封装的核心银行逻辑。具体地说,这个基于 Web 的瘦客户机是按照 Ajax 风格生成的:XHTML、Cascading Style Sheet(CSS)、JavaScript 和 XMLHttpRequest(XHR)。它为银行出纳员提供执行核心银行功能的简单用户界面。这个浏览器用户界面还演示浏览器客户机逻辑与服务器端 PHP 逻辑进行网络通信的方法。

  到本文结束时,我们会建立数据库、一个提供核心银行逻辑的 PHP 模块以及一个单页面浏览器用户界面,这些都是银行场景的组成部分。

  MySQL 数据库

  MySQL 是一种开放源码数据库。在我们的场景中,使用社区服务器版本,这是一个紧凑的数据库服务器,具有许多有用的特性。因为这个银行场景的实现基于开放源码产品,所以 MySQL 和 Zend Core PHP 是合适的组合。Zend Core 本身支持 MySQL,还有各种支持 MySQL 管理和编程的工具。在我们的场景中,只使用 MySQL 命令行客户机执行 MySQL 的管理。我们将用 MySQL 数据库为这个场景建立银行帐户数据库。

  创建并填充银行数据库

  在这个场景中,将为给定的客户存储以下帐户信息:

  •   AccountHolderName
  •   AccountNumber
  •   CheckingBalance
  •   StockName
  •   StockQuantity
  •   StockValue

  给定客户的帐户信息包括帐户持有人的姓名、帐户号、当前的资产余额、客户拥有的一只股票的编号、拥有的股票总数以及股票投资组合的当前市值。下面几节详细介绍如何创建数据库表,然后用一些虚构的银行客户的帐户信息填充这个表。我们开始吧!

  按照以下步骤创建数据库,然后用应用程序相关数据填充这个表:

  •   如果 Eclipse 还未运行的话,就启动它(c:\eclipse\eclipse.exe)。
  •   确保在 Eclipse 中启用了 PHP 透视图:
    •   选择 Window->Open Perspective->Other->PHP 并单击 OK。
  •   在 Eclipse 中,选择 File->New->Project。
  •   选择 General->Project 并单击 Next。
  •   在 project name 字段中输入 BankDB。
  •   单击 Finish。
  •   右击 BankDB project 并选择 New->Other。
  •   选择 General-> File 并单击 Next。
  •   在 File name 字段中,输入 BankDB.sql 并单击 Finish。
  •   输入或粘贴 清单 1 中的代码作为 BankDB.sql 的内容。
  •   保存并关闭这个文件。
  •   为了启动 MySQL 命令行客户机,单击 Windows Start Menu->All Programs->MySQL->MySQL Server->MySQL Command Line Client。
  •   在 MySQL 命令行窗口中,输入密码 webtech 并按 Enter。
  •   在 mysql> 提示下,输入 source c:\eclipse\workspace\BankDB\BankDB.sql 并按 Enter。
  •   检查 BankDB 数据库是否存在,以此确认前面的命令已经正确地执行了。检查所用的命令如下:
    •   show databases;
    •   use bankdb;
    •   show tables;
    •   describe account;
  •   在 MySQL 命令行客户机中,输入 exit 关闭它。

  清单 1. BankDB.sql 文件的内容

-- This file is part of the End-to-End Ajax development article in
-- the IBM developerWorks. This file contains a simple DB script to
-- create a database and populate it with the data.
--
-- Last Modified: May/10/2007
--
-- To execute the following statements in MySQL, do the following steps.
-- 1) Start MySQL command line client.
-- 2) Enter your MySQL admin password.
-- 3) Type the following line by substituting <YOUR_SQL_FILE_DIR> with the
--    directory name where the file is stored.
--    source <YOUR_SQL_FILE_DIR>\bankdb.sql

--
-- Table structure for table 'BankDB'
--

DROP DATABASE BankDB;

CREATE DATABASE BankDB;

USE BankDB;

CREATE TABLE account (
   AccountHolderName VARCHAR(20) NOT NULL,
   AccountNumber INTEGER NOT NULL,
   CheckingBalance DOUBLE NOT NULL,
   StockName VARCHAR(6),
   StockQuantity INTEGER,
   StockValue DOUBLE,
   PRIMARY KEY(AccountHolderName, AccountNumber)
);

--
-- Populating data for table 'account'
--

insert into ACCOUNT values ('Frodo', 435245, 2344.45, 'GOOG', 100, 3453.32);
insert into ACCOUNT values ('Sam', 928462, 7583.32, 'CSCO', 200, 5323.43);
insert into ACCOUNT values ('Pippin', 234233, 3444.62, 'INTC', 300, 4213.76);
insert into ACCOUNT values ('Merry', 642445, 1005.32, 'MSFT', 250, 1353.32);
insert into ACCOUNT values ('Aragorn', 972321, 6424.24, 'HPQ', 525, 12043.94);
insert into ACCOUNT values ('Gandalf', 432134, 5392.23, 'IBM', 400, 10043.78);
insert into ACCOUNT values ('Legolas', 590134, 4313.82, 'DELL', 325, 5926.62);

  使用 PHP 访问 MySQL 数据库

  PHP 最受人喜爱的特性之一是,它为访问不同厂商的数据库中的数据提供了简单且出色的支持,包括 MySQL。它提供了一种集成业务逻辑和数据库的简便有效的方法。在过去几年中,PHP 社区完成了几项改进,比如 PHP Data Objects(PDO),PDO 提供一个抽象层,无论使用哪种数据库服务器,这个抽象层都公开同样的 API 函数。有两种风格的 PHP 数据库 API 函数:过程式的和面向对象的。在这个场景中,我们使用针对 MySQL 的直接数据库 API 来获得一个基本的了解。PHP 提供两种访问 MySQL 的方法:

  •   MySQL
  •   MySQL Improved

……

你可能感兴趣的:(Ajax)