上QQ阅读APP看书,第一时间看更新
2.2 网站结构
为了确保完成业务目标,同时为用户提供良好的体验,需要在实际编写代码之前,明确构建网站的方式,这种方式有时候又称为网站架构。在了解了业务需求的基础上,本节将以层级的方式设计网站的不同组件。
2.2.1 分层设计
在软件工程中,客户端—服务器体系结构通常用于展示界面,应用逻辑和数据在物理上分开,这种结构称为多层体系结构。分层模式提供了一种模型,让软件开发人员可以创建灵活且可重用的应用程序,因为软件开发人员可以选择修改或添加特定层,而不用重新处理整个应用程序。
分层设计中最常见的是3层体系,它通常由接入层、逻辑层和存储层组成。在Web开发领域(见图2.2),这3层通常如下。
图2.2 经典的3层结构
- 接入层:提供静态内容的前端Web服务器,可能还有一些缓存的动态内容。
- 逻辑层:生成动态内容的应用服务器。Django就在这一层。
- 存储层:提供数据存储的服务器。
在较复杂的业务场景下,可能还需要缓存层和异步处理层,我们会在后面的章节中谈到。
2.2.2 技术选型
如果读者参与过开源软件或者Web开发,一定听过LAMP技术栈。这四个英文字母分别代表了一种开源技术或产品,使用这些技术,可以很方便地开发一个网站。
- L:Linux操作系统,一个免费分发的开源操作系统。
- A:Apache Web服务器,开源的Web服务器。
- M:MySQL,开源的关系型数据库,依赖于SQL来处理数据库中的数据。
- P:PHP,一种开源的服务器端HTML嵌入式脚本语言,用于创建动态Web页面。
使用LAMP技术栈有很多的好处:
- 灵活。无论在技术上还是许可上,此技术栈都没有限制。
- 可定制。此技术栈允许对组件做定制化的修改以适应业务需要。
- 易于开发。AMP分别对应了2.2.1节所讲的接入层、逻辑层和存储层。
- 易于部署。
- 安全。此技术栈已经流行了很多年,有很多的用户和活跃的社区,非常稳定。
- 免费。使用此技术栈无须向商业技术公司支付任何费用。
随着技术的发展,LAMP中的各个组件都有了替代产品。在本书中,我们将Apache用Nginx(流行的Web服务器)替换,将PHP用Python替换,如图2.3所示。
图2.3 类LAMP技术选型
下面我们将在这个框架下编写业务代码。