1.2 理解Web应用的工作原理

不管是何种语言编写的web应用,有一点是相同的:它们都具有交互性并且多半是数据库驱动的。在互联网中,数据库驱动的Web应用非常普遍。它们通常都包含一个后台数据库和很多的Web页面。这些页面中包含了使用某种编程语言编写的服务器端脚本,问这些脚本则能够根据Web页面与用户的交互从数据库中提取特定的信息。

电子商务是数据库驱动的Web应用最常见的形式之一。

数据库驱动的Web应用通常包含三层:
表示层(Web浏览器或呈现引擎)
逻辑层(如C#、PHP、JSP等编程语言)
存储层(mysql、oracle等数据库)

web浏览器(标志层)向中间层(逻辑层)发送请求,中间层通过查询、更新数据库(存储层)来响应该请求

下面来看一个在线零售商店的例子。该在线商店提供了一个搜索表单,顾客可以按特定的兴趣对商品进行过滤,分类。另外还提供了进一步对商品筛选的选项。

可以使用下列的URL查看商店中所有价格低于$100的商品:
http://www.victim.com/products.php?val=100

下列的PHP脚本说明了如何将用户输入的(val)传递给动态创建的SQL语句。当请求上述的URL时,将会执行下列的PHP代码段:

// 连接到数据库
$conn = mysql_connect("localhoat","username","password");

//使用输入动态创建SQL语句
$query = "select * from products wheren price < '$_GET["val"]]'" . 
"order by productdescription";

//对数据库执行查询
$result = mysql_query($query);

//迭代返回的记录集
while($row = mysql_fetch_array($result,MYSQL_ASSOC))
{
    //将结果显示在浏览器中
    echo "Description:{$row['ProductDescription']} <br>";
         "Product ID:{$row['ProductID']} <br>";
         "Price:{$row['Price']} <br><br>";
    
}


//注:mysql_fetch_array是将结果取出一行作为数字数组或者关联数组
//    数字数组:$row[0],$row[1]
//     关联数组:$row["name"],$row["age"]

接下来的代码示例更清晰的说明了PHP脚本构造并执行的SQL语句。该语句返回数据库中所有价格低于$100的商品,之后在Web浏览器上显示并呈现这些商品以方便顾客在预算范围内继续购物。

一般来说,所有可交互的数据库驱动的web应用均以相同的(至少是类似的)方式运行:

select *
from Products
where price < '100.00'
order by ProductDescription;

1.2.1 一种简单的应用架构

为了更好地理解web应用技术是如何进行交互的,我借助图来描述那个简单的三层架构示例

  • 表示层是应用的最高层,它显示与商品浏览、购买等相关的信息,并通过结果输出到浏览器/客户端和网络上的所有其它层来与应用架构的其它层进行通信
  • 逻辑层是从表示层剥离出来的,作为单独的一层,他通过执行细节处理来控制应用的功能
  • 数据层(存储层)包括数据库服务器,用于对信息进行存储和检索。数据层保证数据独立于应用服务器或业务逻辑。将数据作为单独的一层还可以提高程序的可扩展性和性能。

三层架构中一条最基本的规则是: 表示层不应直接与数据层进行通信。在三层架构中,所有通信都必须经过中间层。
从概念上来看,三层架构是一种线性关系。

在图中,web浏览器(表示层)向中间层(逻辑层)发送请求,中间层通过查询、更新数据库(存储层)响应该请求。
在这里插入图片描述

从图中可以看到,用户激活web浏览器并连接到htpp://www.victim.com。位于逻辑层的web服务器从文件系统中加载脚本并将其加载给脚本引擎,脚本引擎负责解析并执行脚本。脚本使用数据库连接程序打开存储层连接并对数据库执行SQL语句。数据库将数据返回给数据库连接程序,后者将其传递给逻辑层的脚本引擎。逻辑层在将web页面以HTML格式返回给表示层的用户的web浏览器之前,先执行相关的应用或业务逻辑规则。用户的web浏览器呈现HTML并借助代码的图形化表示展现给用户。
所有操作都在数秒完成,并且对用户是透明的

1.2.2 一种较复杂的架构

三层架构并不具有扩展性,所以研究人员在三层架构的基础上创造了一种新概念:n层应用程序开发范式。其中包括一种4层解决方案。该方案在web服务器和数据库之间使用了一层中间件(通常称为应用服务器)。
n层架构中的应用服务器负责将API(应用编程接口)提供给业务逻辑和业务流程供程序使用。可以根据需要引入其他的web服务器

图描绘了一种简单的四层架构
在这里插入图片描述

从图中可以看到,用户激活web浏览器并连接到htpp://www.victim.com。位于逻辑层的web服务器从文件系统中加载脚本并将其加载给脚本引擎,脚本引擎负责解析并执行脚本。脚本调用由位于应用层的应用服务器提供的API,应用层服务器使用数据库连接程序打开存储层连接并对数据库执行SQL语句。数据库将数据返回给数据库连接程序,应用服务器在将数据返回给web服务器之前先执行相关的应用或业务逻辑规则。web服务器在将数据以HTML格式返回给表示层的用户的web浏览器之前先执行最后的有关逻辑。用户的web浏览器呈现HTML并借助代码的图形化表示展现给用户。
所有操作都在数秒完成,并且对用户是透明的

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值