ATC:一个GO应用程序开源框架
来源:互联网 发布:vscode 配置c 环境 编辑:程序博客网 时间:2024/06/17 14:56
ATC
ATC 是一个快速开发GO应用程序的开源框架,支持RESTful API 及 Thrift RPC的框架.可根据自身业务逻辑选择性的卸载中间件的功能,均支持平滑退出。
要求GO版本 >= 1.8
当前版本: 0.1.1 (Beta 2017-05-02)
稳定版本: 1.0.0 (2017-05)
More info atc.wiki
老版本GITHUB
安装ATC
go get github.com/adolphlxm/atc
用到的第三方 go package TAG
“`config
// 配置文件加载包,之前写的一个Github账户,后续会迁移过来,方便管理
github.com/lxmgo/config
// 官方websocket包code.google.com/p/go.net/websocket// Thrift go 包git.apache.org/thrift.git/lib/go/thrift// xorm 包github.com/go-sql-driver/mysqlgithub.com/go-xorm/xormgithub.com/go-xorm/core
“`
RESTful API 经典案例
一个经典的ATC例子 atc.go
package mainimport ( "github.com/adolphlxm/atc")type LoginHandler struct { atc.Handler}func (this *LoginHandler) Get(){ // 已登录 if true { loginData := map[string]interface{}{ "username" : "ATC", "regtime":"2017-04-28", } this.Ctx.SetData("data",loginData) this.Ctx.SetData("ID",this.Ctx.Query("id")) this.JSON() return } // 未登录 // 自定义错误提示内容 this.Error406(-1).Message("没有权限查看").JSON() // error.ini错误码匹配的提示内容 // this.Error406(-1).JSON() return }func main(){ // 根据配置文件注入依赖中间件 // 目前支持:HTTP/Websoeckt、Thrift、ORM(xorm、其它待开发) atc.Run()}
路由加载 router.go
// 登录过滤器// 可以通过自定义过滤器来实现登录状态、权限检查等功能func AfterLogin(ctx *context.Context){ // 错误输出 error := atc.NewError(ctx) error.Code(401,10000).JSON()}func init(){ // 分组版本控制 v1 := atc.Route.Group("V1") { // V1版本路由 v1.AddRouter("users",&LoginHandler{}) ... } V2 := atc.Route.Group("V2") { // V2版本过滤器, 根据路由规则加载。 // 支持三种过滤器: // 1. EFORE_ROUTE //匹配路由之前 // 2. BEFORE_HANDLER //匹配到路由后,执行Handler之前 // 3. AFTER //执行完所有逻辑后 v2.AddFilter(atc.BEFORE_ROUTE,"users.*",AfterLogin) // V2版本路由 v2.AddRouter("users",&LoginHandler{}) ... }}
然后在浏览器访问
http://localhost/V1/users/login
- 将会得到一个json返回
http://localhost/V2/users/login
- 先执行
BFORE_ROUTE
过滤器, 未通过则得到一个json返回。 - 通过过滤器后 加载
Get()
, 将会得到一个json返回。
- 先执行
RPC 经典案例
Thrift RPC
关于Thrift RPC 具体可以 度娘、谷爹查看
之前写过一篇Thrift简单使用教程:GO/PHP使用指南
获取Thrfit-官方
官方各种DEMO
协议库IDL文件参考资料
这里就不累赘描述Thrift具体用法了。
Go的Thrift包安装:
go get git.apache.org/thrift.git/lib/go/thrift
注:为了实现Thrift RPC平滑退出,改了Thrift Go源码,安装后需要重新覆盖下源码。
复制 github.com/adolphlxm/atc/rpc/thrift/lib/thrift
目录下的源码到 git.apache.org/thrift.git/lib/go/thrift
即可。
Thrift RPC 路由 router.go
func init() { processor := micro.NewMicroThriftProcessor(&MicroHandler{}) atc.ThriftRPC.RegisterProcessor("user", processor)}
gRPC…
编译并运行
go build atc.go./atc
Flag参数说明:
config
-c string
use -c <config file> (default "conf/app.ini")
-m string
Use -m <config mode> (default "dev")
-v Use -v <current version>
ATC信号控制:
ATC项目结构
├── conf│ ├── app.ini│ └── error.ini├── front│ └── HTML...├── bin├── src│ ├── httprouter│ ├── V1│ └── router.go│ └── thriftrpc│ ├── idl│ ├── gen│ ├── ...(.go)│ └── router.go└── atc.go
特性
- 支持RESTful HTTP通信 及 平滑退出
- 支持Websoeckt通信
- 支持RPC通信 及 平滑退出
- Thrift
更新日志
- 2017.5
- 日志支持file文件写入,通过
app.ini
配置日志类型 - 支持Flag参数(-c 配置文件, -m 配置环境, -v 当前版本号)
- 优雅的关闭进程
- 优化错误码配置文件加载,通过
app.ini
配置错误码文件 - 优化DEBUG模式
- 日志支持file文件写入,通过
即将支持特性(待定稿)
- 自动生成项目
- HTTPS
- POST附件上传/压缩等
- 服务注册与发现模块
文档陆续更新中…
DEMO更新中…
LICENSE
ATC is Licensed under the Apache License, Version 2.0 (the “License”)
(http://www.apache.org/licenses/LICENSE-2.0.html).
GITHUB源码下载
框架:ATC
工具: ATC-tool
DEMO: ATC-demo
- ATC:一个GO应用程序开源框架
- ATC:go logs 使用
- ATC:go Thrift RPC 使用 (连接池)
- ATC, Facebook开源模拟网络环境的工具
- 【框架推荐】FLEX开源应用程序框架
- Go 语言,开源服务端代码自动生成 框架
- 一个典型的Twisted应用程序框架
- 搭建一个应用程序框架-做点什么
- go-mysql,一个易用的mysql接口框架实现
- Go 应用程序构建浅析
- ATC intern
- ATC作业
- 应用程序框架
- GO beego框架研究
- GO -- ORM 框架
- go revel框架搭建
- 一个面向对象的应用程序框架介绍-FVision
- 一个用于J2EE应用程序的异常处理框架
- VS2013 MFC 控件中文名称乱码
- linux定时执行任务
- 单片机C语言中&和&&运算符的差异性验证
- 自定义View (一)
- Ubuntu14.04下OpenCV2.4.10安装
- ATC:一个GO应用程序开源框架
- 日志信息log
- JdbcBaseReview 系列之JdbcDBUtils(四)-----jbdc的jar包
- oj 2968: C语言习题5.20--递归方法实现逆序
- 桌面路径
- jdk安装
- Android shell脚本运用
- 傻傻分不清的 slice,split 和splice
- 阿里云服务器上安装jdk+tomcat+mysql的过程