Go Web Framework

Go Web Frameworks

  • Web框架分类
    1
    2
    3
    4
    5
    6
    # 运行性能:
    > 追求性能的框架很简洁,包含东西很少,一个路由一个MVC, 比如Gin


    # 开发效率:
    > 封装很好,集成很多功能, 比如Beego
  • Web框架选型
    1
    2
    3
    1. 对于中小型项目,开发效率往往是业务的第一需求, 任何领域做到第一名的产品基本上都有一个共性: 开发、迭代速度快
    2. 好的框架要能区分清楚业务团队和架构团队的边界,什么应该是业务负责,什么应该是架构负责,
    3. 架构是为加速业务发展而生,需要兼顾业务的开发效率和底层的性能效率

Go 语言特性

  • Goroutine
    1
    Goroutine设计,提供“一个请求一个协程”的请求模型.对比PHP的“一个请求一个进程”的模型,提升后端资源占用和调度负载。
  • Runtime
    1
    Go的Runtime机制让运行程序不再依赖各种环境和库
  • compile
    1
    Go提供交叉编译、数据结构、channel等语言级别提醒,让处理Web请求变得简单

First Step:

  • net, net/http
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    # Web Server
    > Web Server的本质,实际上就是接收、解析HTTP请求传输的文本字符,理解这些文本字符的指令,然后计算、在将返回值组织成HTTP响应的文本字符,通过TCP网络输出回去
    > 是一个通过HTTP协议处理Web请求的计算机系统
    - HTTP协议: 超文本传输协议
    - HTTP Head: 描述一般是和业务无关与传输相关的信息(请求地址、编码格式、缓存时长)
    - HTTP Body: 描述的是与业务相关的信息
    # net 库
    > 对应OSI的TCP层

    # net/http库
    > 对应OSI的HTTP层, 解析HTTP消息体

    # net/http 标准库源代码
    > 阅读代码库的技巧: 库函数(function) > 结构定义(struct/class) > 结构函数(method)
    - 库函数: 这个库要提供的功能
    - 结构定义: 这个库分为几个核心模块
    - 结构函数: 每个核心模块应该提供的能力
  • context
  • router
  • middleware
  • encapsulation
  • restart

Second Step:

  • 面向接口编程
  • 设计目录结构
  • 命令行交互
  • 定时任务
  • 配置和环境
  • 多输出日志

Third Step:

  • 一体化、自动化
  • 调试模式
  • 进程、接口管理
  • GORM
  • 缓存服务
  • 发布与维护

Fourth Step:

  • 设计需求分析
  • 技术方案设计
  • 网站统计服务
  • 一站式前后台

毒鸡汤

1
> 了解一个东西最好的办法就是去实现它

参考资料