软件的组成
这节课我们来介绍一下软件的组成。
了解软件的组成呢,后续我们在做开发的时候,心里就会有一个大致的框架,知道我们做一个软件需要做哪些工作。
软件的四个组成部分
软件主要由客户端、服务端、数据库和网络这几个部分组成。
当然也有一些纯客户端的软件,比如我们手机上的计算器。此类程序呢我们暂时先不考虑。我们希望最终带大家完成的,是一个包含网络的完整的软件系统。
以微信小程序为例,我们接触到的大部分软件呢,应该都是这个结构。
什么是客户端和服务端
客户端
客户端其实就是运行在用户机器上的程序。比如我们开发了一个微信小程序,假如说有1万个人在使用,那么就说明我们的这个客户端代码,在这1万个用户的手机上各自在运行着。
服务端
服务端呢,就是运行在服务器上的程序,通常是服务端的程序加数据库,并且只需要部署一份。
也就是说,无论有多少个用户访问,大家使用的客户端,都会通过网络连接到这一份服务端程序。
网络
网络很好理解,其实单机软件不需要网络,所以我们这里讲的是需要网络才能正常使用的软件。通常我们通过域名访问,域名会解析到一个IP,这个IP地址对应软件所在的服务器,然后我们就可以通过这个网络精确找到我们要访问的服务。
数据库
严格来讲,软件并不一定需要数据库,比如很多工具型软件,都没有数据库。但是几乎大部分商业软件,都是集成了数据库的。数据库用来存储数据,是软件中非常重要的一个组成,一个软件系统运行一段时间,数据库中的数据通常都非常重要,如果数据丢失,可能会导致非常严重的商业问题,所以我们将其也列了出来。
餐厅类比:理解软件运作
我们来举个简单的例子,假如我们把软件的组成类比为一家餐厅:
每个服务员他服务于一名客户。假如有客户进来要点餐,那么为他服务的这个服务员呢就是客户端。
用户点餐后,服务员带着这个点餐的信息走向厨房。这个过程我们就可以理解为是:客户端将用户操作的数据通过网络发送到服务器。
厨房接收到用户的点餐信息之后开始做菜,并且会把每一道菜它的状态,也就是说这个菜是否已经做好、有没有被取消掉,记录到菜单中。这个就是服务器将数据存储到数据库的一个过程。
最后还需要查询这些数据,去给用户做结账。
💡 服务拥挤的真实原因
我们有的时候呢,会看到一些软件提示服务拥挤、请稍后再试。这个场景呢,我们就可以理解为点菜的客人太多了,厨房处理不过来。客户端和服务端呢,大致也是这样的一个对应关系。
软件架构图示

从这个图里面呢,我们应该也可以看出来,如果我们想开发一款小程序的话,通常就需要:
- 开发一个客户端的代码
- 开发一个服务端的代码
- 将数据库集成到服务端中
- 申请一个域名
- 搭建客户端到服务端的网络
这样,我们就可以完成一个完整的软件功能,并且给用户提供服务了。
重要理解
客户端代码在每个用户的设备上运行,而服务端代码只需要部署一份。这就是为什么服务器性能很重要——它要同时为所有用户提供服务。
下一步
理解了软件的组成,接下来我们深入了解数据库:
有疑问?
这些概念刚开始可能有点抽象,不用担心!随着课程深入,你会越来越清楚。

