今晚九点|快速构建WEB应用与BEEGO原理

今晚九点|快速构建WEB应用与BEEGO原理_第1张图片

很多人会问,为什么学 go,go 语言有什么优势?那么我就借用风云博客的一句话来回答一下。

我发现我花了四年时间锤炼自己用 C 语言构建系统的能力,试图找到一个规范,可以更好的编写软件。结果发现只是对 Go 的模仿。缺乏语言层面的支持,只能是一个拙劣的模仿。

国外如 Google、AWS、Cloudflare、CoreOS等,国内如七牛、阿里等都已经开始大规模使用 Golang 开发其云计算相关产品。 跟着世界级巨人的脚步应该不至于走错方向。

主题:快速构建 web 应用与 beego 原理

目录

  • net / http

  • Beego

  • 简单应用

主讲师

今晚九点|快速构建WEB应用与BEEGO原理_第2张图片

萝卜

曾任职百度

多年cpp 和 go语言开发经验

从事自动化运维和基础架构相关工作。对分布式系统和高并发有着丰富的经验。主导过多个大型go语言项目,如部署系统、发布系统、会员账号体系等。亲身见证了团队go语言的发展壮大。

net / http

今晚九点|快速构建WEB应用与BEEGO原理_第3张图片

简介

Server

http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) { w.Write([]byte("hello world"))})http.ListenAndServe(addr, nil)

Client

if rsp, err := http.Get(“http://www.baidu.com/”) ; err != nil { io.Copy(os.Stdout, rsp.Body) rsp.Body.Close()}

常用结构

ResponseWriter: 生成Response的接口Handler: 处理请求和生成返回的接口ServeMux: 路由,后面会说到ServeMux也是一种HandlerConn : 网络连接type Handler interface {    ServeHTTP(ResponseWriter, *Request)  // 具体的逻辑函数}

原理

调用 Http.HandleFunc

  1. 调用了 DefaultServerMux 的 HandleFunc

  2. 调用了 DefaultServerMux 的 Handle

  3. 往 DefaultServeMux 的 map[string]muxEntry 中增加对应的 handler和路由规则

调用 http.ListenAndServe(":12345", nil)

  1. 实例化 Server

  2. 调用 Server 的 ListenAndServe()

  3. 调用 net.Listen("tcp", addr) 监听端口

  4. 启动一个 for 循环,在循环体中 Accept 请求

  5. 对每个请求实例化一个 Conn,开启一个 goroutine 为这个请求进行服务 go c.serve()

  6. 读取每个请求的内容 w, err := c.readRequest()

  7. 判断 header 是否为空,如果没有设置 handler(这个例子就没有设置handler),handler 就设置为 DefaultServeMux

  8. 调用 handler 的 ServeHttp

  9. 在这个例子中,下面就进入到 DefaultServerMux.ServeHttp

  10. 根据 request 选择 handler,并且进入到这个 handler 的ServeHTTPmux.handler(r).ServeHTTP(w, r)

  11. 选择handler:

** A **判断是否有路由能满足这个 request(循环遍历 ServerMux的muxEntry)

** B **如果有路由满足,调用这个路由 handler 的 ServeHttp

** C **如果没有路由满足,调用 NotFoundHandler 的 ServeHttp

简单 beego

今晚九点|快速构建WEB应用与BEEGO原理_第4张图片

简介

  • 高性能 web 框架

  • 开发快捷、组件多、高度解耦

  • 广泛应用

  • RESTful 支持

  • 稳定、更新频繁 、持续维护

  • 文档完善

项目结构

今晚九点|快速构建WEB应用与BEEGO原理_第5张图片

Demo

  1. bee new demo

  2. Bee run

  3. Beego todo 简介

模块化设计

今晚九点|快速构建WEB应用与BEEGO原理_第6张图片

执行逻辑

今晚九点|快速构建WEB应用与BEEGO原理_第7张图片

架构

今晚九点|快速构建WEB应用与BEEGO原理_第8张图片

应用

API 应用

1. bee api app -conn="root:root@tcp(127.0.0.1:3306)/app"

2. bee run -gendoc=true -downdoc=true

web 应用

权限管理系统

今晚九点|快速构建WEB应用与BEEGO原理_第9张图片

分享时间:18年3月9日(周五)

21:00-22:00

分享方式:网络直播

报名方式

今晚九点|快速构建WEB应用与BEEGO原理_第10张图片
扫码添加小助手微信,备注"公开课,来源",进入分享群

你可能感兴趣的:(今晚九点|快速构建WEB应用与BEEGO原理)