软件架构
软件架构(software architecture)是一个系统的草图,其描述的对象是直接构成系统的抽象组件。各个组件之间的连接明确和相对细致地描述组件之间的通讯。设计软件架构就是把系统分解为一些部件,描述这些部件的职责及它们之间的协作行为,并达成目标:可靠性/安全性/可扩展/客户体验等。
软件框架
软件框架(software framework)是面向领域的、可复用的“半成品”软件,它实现了该领域的共性部分,并提供了一些定义良好的可变点以保证灵活性和可扩展性。也就是说软件框架是领域分析结果的软件化,是领域内最终应用的模板,是特定语言和技术的架构应用解决方案。
MVC框架
是一种软件设计模式,但位于GoF总结的23个设计模式之外,其是多种设计模式的组合,其产生的理念为分工,核心思想为解耦。
在不同的开发背景下MVC三者的交互模式及具体职责会有不同(核心思想不变),应用在web后端开发中为web MVC框架,其交互模式如下图所示:
M:model,负责与数据库进行交互,应用程序调用,业务逻辑判断,选择V;
C:controller,负责接收请求并处理,选择合适的模型,与M,V进行交互,传递请求与结果;
V:view,负责渲染HTML页面,不包含业务逻辑,不与M交互;
注意在其他开发环境下,V与M可能要进行同步与交互,与用户交互的可能是V,但三者分工的主体思想不变。
MVC框架与三层架构
三层架构即将整个业务应用分为三层:
表现层:UI,展示给用户的界面;
业务逻辑层,BLL,针对具体问题的操作,对数据的逻辑处理;
数据访问层,DAL,直接操作数据库,针对数据的增删查改;
其与MVC是不同的架构模式,三层架构中,各层是典型的上下关系,但在MVC中是协作关系,其设计思想都是分工解耦,两者并不冲突,一般设计时会同时运用两者的思想,若将MVC框架使用三层架构来区分,则相当于V、C和一部分M共同构成UI层,剩下的M再分为BLL与DAL层。
MVT框架
是Django特有的框架设计,其交互方式与web MVC类似但不相同,其对比如下表所示:
MVC | MVT |
---|---|
M(model)负责与数据库进行交互,应用程序调用,业务逻辑判断,选择V | M(model)负责与数据库进行交互 |
V(view)负责渲染HTML页面,不包含业务逻辑,不与M交互 | V(view)负责接收用户请求,获取数据,选择T,返回结果 |
C(controller)负责接收请求并处理,选择合适的模型,与M,V进行交互,传递请求与结果 | T(template)负责提供模板 |
在MVT框架中views是核心内容,所有的业务逻辑都是在此中完成。
虚拟环境
是对真实环境的复制,为了解决不同的项目支持不同版本的软件/包和软件/项目兼容性等问题,对原始环境进行了复制,在虚拟环境中即副本中进行修改。虚拟环境不影响真实环境,可以同时存在多个。
虚拟环境的创建流程如下:
mkdir myproject
cd myproject
python3 -m venv venv
source 虚拟环境名/bin/activate # 激活虚拟环境
deactivate # 退出虚拟环境