一、C/S架构的本质

C/S(Client/Server)架构的核心思想是功能解耦: 

1. 客户端:面向用户,负责交互逻辑(如界面渲染、输入校验)。 

2. 服务器:面向数据,负责核心业务处理(如数据库操作、复杂计算)。 

类比点:就像餐馆里服务员(Client)和厨房(Server)的分工,服务员接收顾客需求,厨房专注烹饪。

 

二、C/S的工作流程(以数据库为例)

1. 请求阶段 

    用户在客户端(如MySQL Workbench)输入SQL语句(如`SELECT * FROM products`)。 

    客户端通过网络协议(如TCP/IP)将请求封装并发送到服务器。 

 

2. 处理阶段

    服务器(如MySQL Server)解析SQL,执行查询/更新操作,直接访问数据文件。 

    关键点:只有服务器能触碰数据文件,客户端无直接访问权限。 

 

3. 响应阶段 

    服务器将结果集(如按字母排序的产品表)返回客户端。 

    客户端渲染结果(如表格展示)。 

 

为什么减少网络流量? → 服务器只返回最终结果,而非原始数据(如传输排序后的10条记录而非全部1000条)。

 

     三、C/S的部署灵活性

物理分离:典型场景是客户端和服务器位于不同主机(如浏览器访问淘宝服务器)。 

本地共存:开发时可在同一台机器运行(如本机安装MySQL Server和Workbench)。 

特殊变体:现代架构中可能出现多层服务器(如Web服务器+数据库服务器)。

 

四、MySQL的C/S实践

1. 服务器端 

    需运行`mysqld`服务进程,监听默认端口3306。 

    实际数据存储在`/var/lib/mysql`(Linux)或安装目录的`data`文件夹中。 

 

2. 客户端多样性 

    图形化工具:Workbench、Navicat(适合交互式操作)。 

    编程接口:JDBC(Java)、pymysql(Python)等(适合代码集成)。 

    命令行:`mysql -u root -p`(最轻量级)。 

 

开发建议:用本地测试服务器+远程生产服务器,通过连接字符串切换(如`jdbc:mysql://localhost:3306` vs `jdbc:mysql://cloud-server:3306`)。

 

五、透明性的体现

用户无需关心: 

      数据实际存储位置(可能在云服务器SSD上)。 

      请求如何路由(经负载均衡?)。 

      底层协议细节(TCP握手?SQL封装格式?)。 

 

这就是分层架构的魅力 → 客户端只需关注API调用(如执行`conn.execute(sql)`)。

 


点赞(1)

C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:

一点编程也不会写的:零基础C语言学练课程

解决困扰你多年的C语言疑难杂症特性的C语言进阶课程

从零到写出一个爬虫的Python编程课程

只会语法写不出代码?手把手带你写100个编程真题的编程百练课程

信息学奥赛或C++选手的 必学C++课程

蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程

手把手讲解近五年真题的蓝桥杯辅导课程

Dotcpp在线编译      (登录可减少运行等待时间)