Beego框架起始于2012年由中国程序员谢孟军(asta谢)开发,使用Go语言开发一个高效率的Web应用开发框架。
Beego是一个快速开发Go应用的HTTP框架,可用于快速开发Web、API、后端服务等各种应用。其设计灵感来自于Python和Rails等框架,借鉴了Python的Tornado和Flask框架,以及Ruby的Sinatra框架。又结合Go语言本身的一些特性,比如interface接口、struct结构体继承等,而设计的一个框架。
设计思路
- 模块化
- 分离
- 组合
- 少即是多
- 设计和引擎分离
Beego的原版来自Python的Tornado,Tornado支持异步性能较好。对于请求的设计采用一个路径请求到一个处理器(handle),比如对于GET、POST请求对应处理器中的get()
方法和post()
方法。以此来应对RESTful。简单类似或,一旦请求进入则会通过路由进行解析,并动态注册为结构体,结构体根据不同的方法调用不同的HTTP方法。当方法调用完毕之后就开始渲染并生成。
Beego设计参照了UNIX的思想,首先是模块化,其次是分离。通过接口和实现分离来实现扩展。
模块化:Write simple parts connected by clean interfaces
分离:Separate policy from mechanism; Separate interfaces from eneines.
组合:Design programs to be cnnected other program
少即是多 Less is More
总体架构
Beego的设计理念主要参考UNIX的设计理念:模块化、分离、组合,简单来说就是乐高的概念。
https://blog.csdn.net/arvin_kai/article/details/52883253
整体设计架构模块化编程是Beego架构的设计核心之一,Beego是基于八大独立的模块之上高度解耦的框架,各个模块彼此松散关系。
Beego八大基础模块
基础模块 | 描述 |
---|---|
log | 日志 |
ORM | 对象关系模型 |
context | 上下文 |
cache | 缓存 |
httplib | HTTP类库 |
session | 会话处理 |
toolbox | 工具箱 |
Beego框架设计之初采取功能的模块化,即使用户不适用Beego自身的HTTP逻辑,也依旧可以使用内置的独立模块。
执行逻辑
Beego使用了典型的MVC架构,基本八大内置的基础模块,模块之间的执行逻辑如下:
运行逻辑目录结构
应用目录结构目录 | 描述 |
---|---|
conf | 默认配置文件目录 |
controllers | 控制器层 |
models | 数据模型 |
routers | 路由规则 |
static | 静态资源 |
tests | 测试 |
views | 视图模板 |
网友评论