共计 1889 个字符,预计需要花费 5 分钟才能阅读完成。
一、软件体系架构 (B/S、C/S)
1、B/S Browser/Server 浏览器与服务器
B 是英文单词“Browser”的首字母,即浏览器的意思;S 是英文单词“Server”的首字母,即服务器的意思。B/ S 就是“Browser/Server”的缩写,即”浏览器 / 服务器”模式
B/ S 结构是随着互联网的发展,web 出现后兴起的一种网络结构模式。这种模式统一了客户端,让核心的业务处理在服务端完成。你只需要在自己电脑或手机上安装一个浏览器,就可以通过 web Server 与数据库进行数据交互
图解
2、C/S Client/Server 客户端与服务器端
C 是英文单词“Client”的首字母,即客户端的意思,C/ S 就是“Client/Server”的缩写,即“客户端 / 服务器”模式
C/ S 结构是一种软件系统体系结构,也是生活中很常见的。这种结构是将需要处理的业务合理地分配到客户端和服务器端,这样可以大大降低通信成本,但是升级维护相对困难。比如我们手机中安装的微信、qq、王者荣耀等应用程序就是 C / S 结构
图解
3、B/ S 结构和 C / S 结构的区别
- 硬件环境不同,C/ S 通常是建立在专用的网络上,小范围的网络环境。而 B / S 是建立在广域网上的,适应范围强,通常有操作系统和浏览器就行
- C/ S 结构比 B / S 结构更安全,因为用户群相对固定,对信息的保护更强
- B/ S 结构维护升级比较简单,而 C / S 结构维护升级相对困难
二、Django 简介
1、概述
Django 发布于 2005 年,是当前 Python 世界里最负盛名且成熟的网络框架,最初用来制作在线新闻的 Web 站点
Django 是一个用 Python 编写的开放源代码的 Web 应用框架(源代码是开源的,遵守 BSD 版权),采用了 MVC 的框架模式,也有很多人把它称为 MVT(MTV)模式
官方网站:https://www.djangoproject.com/
2、优缺点
优点
功能完善、要素齐全
自带大量常用工具和框架(比如分页,auth,权限管理 ), 适合快速开发企业级网站
完善的文档
经过十多年的发展和完善,Django 有广泛的实践案例和完善的在线文档。开发者遇到问题时可以搜索在线文档寻求解决方案
强大的数据库访问组件
Django 的 Model 层自带数据库 ORM 组件,使得开发者无须学习 SQL 语言即可对数据库进行操作
Django 先进的 App 设计理念:
App 是可插拔的,是不可多得的思想。不需要了,可以直接删除,对系统整体影响不大
自带台管理系统 admin
只需要通过简单的几行配置和代码就可以实现一个完整的后台数据管理控制平台
Django debug 信息详尽
很容易找出代码错误所在
缺点
大包大揽
对于一些轻量级应用不需要的功能模块 Django 也包括了,不如 Flask 轻便
过度封装
很多类和方法都封装了,直接使用比较简单,但改动起来就比较困难
性能劣势
与 C, C++ 性能上相比,Django 性能偏低,当然这是 python 的锅,其它 python 框架在流量上来后会有同样问题
模板问题
django 的模板实现了代码和样式完全分离,不允许模板里出现 python 代码,灵活度对某些程序员来说可能不够
三、MVC 设计模式
1、概述:
一种软件设计典范,用一种业务逻辑,使数据,界面显示分离的方法组织代码,将业务逻辑聚集到一个部件里面,在改进和个性化定制界面与用户交互的同时,不需要重新编写业务逻辑
MVC 被独特的发展起来用于映射传统的输入,处理和输出功能在一个逻辑的图形化界面结构中
核心思想:解耦
优点:降低个模块之间的耦合性,方便变更,更容易重构代码,最大程度实现了代码的重用
图解:
2、MVC 编程模式(Model,View,Controller)
Model
用于封装与应用程序的业务逻辑相关的数据及对数据的处理方法,是 Web 应用程序中用于处理应用程序的数据逻辑部分,Model 通常只提供功能性的接口,通过这些接口可以获取 Model 的所有功能
View
负责数据的显示和呈现,View 是对用户的直接输出
controller
负责从用户端收集用户的输入,可以看成提供 View 的反向功能,主要处理用户交互
四、MVT 编程模式
1、概述
与 MVC 没什么差别,也是各组件之间为了保持松耦合关系,只是定义上有些许不同
2、结构
Model
负责业务对象与数据库(ORM)的对象
View
负责业务逻辑,并在适当的时候调用 Model 和 Template
Template
负责把页面展示给用户
注意 :Django 中还有一个 url 分发器(也可以叫做路由),主要用来将一个个 URL 页面的请求分发给不同的 View 进行处理,View 再调用相应的 Model 和 Template