2019-06-19 09:09:13 +08:00
# GoFrame
2018-11-30 20:38:53 +08:00
2020-02-22 14:26:36 +08:00
[![Go Doc](https://godoc.org/github.com/gogf/gf?status.svg)](https://godoc.org/github.com/gogf/gf)
2019-06-19 09:09:13 +08:00
[![Build Status](https://travis-ci.org/gogf/gf.svg?branch=master)](https://travis-ci.org/gogf/gf)
2019-06-22 22:06:13 +08:00
[![Go Report](https://goreportcard.com/badge/github.com/gogf/gf?v=1)](https://goreportcard.com/report/github.com/gogf/gf)
2019-03-08 09:03:32 +08:00
[![Code Coverage](https://codecov.io/gh/gogf/gf/branch/master/graph/badge.svg)](https://codecov.io/gh/gogf/gf/branch/master)
2019-04-07 22:03:04 +08:00
[![Production Ready](https://img.shields.io/badge/production-ready-blue.svg)](https://github.com/gogf/gf)
[![License](https://img.shields.io/github/license/gogf/gf.svg?style=flat)](https://github.com/gogf/gf)
2018-12-17 20:44:38 +08:00
2019-08-30 22:15:54 +08:00
English | [简体中文](README_ZH.MD)
2019-05-18 13:52:18 +08:00
2020-04-29 00:14:29 +08:00
`GF(GoFrame)` is a modular, powerful, high-performance and production-ready application development framework
2020-04-03 09:32:04 +08:00
of golang. Providing a series of core components and dozens of practical modules, such as:
cache, logging, containers, timer, resource, validator, database orm, etc.
Supporting web server integrated with router, cookie, session, middleware, logger, configure,
template, https, hooks, rewrites and many more features.
2018-08-06 12:59:08 +08:00
2020-04-29 19:33:14 +08:00
> If you're a newbie to `Go`, you may consider `GoFrame` easy and great as `Laravel` in `PHP`, `SpringBoot` in `Java` or `Django` in `Python`.
2020-02-22 17:06:58 +08:00
2019-06-25 23:17:14 +08:00
# Installation
```
2019-10-13 23:05:48 +08:00
go get -u -v github.com/gogf/gf
2018-08-06 23:05:07 +08:00
```
2019-08-30 22:15:54 +08:00
suggested using `go.mod`:
2018-12-22 21:50:47 +08:00
```
2019-02-02 16:18:25 +08:00
require github.com/gogf/gf latest
2018-12-22 21:50:47 +08:00
```
2019-06-25 23:17:14 +08:00
# Limitation
2018-11-30 20:37:28 +08:00
```
2020-04-23 21:06:42 +08:00
golang version >= 1.11
2019-06-25 23:17:14 +08:00
```
2020-05-17 15:11:07 +08:00
# Packages
2020-05-17 15:16:13 +08:00
1. **Primary**
2020-05-17 15:11:07 +08:00
The `gf` repository maintains some basic and most commonly used packages, keeping it as lightweight and simple as possible.
2020-05-17 15:16:13 +08:00
1. **Community**
2020-05-17 15:11:07 +08:00
2020-05-17 15:16:13 +08:00
The community packages are contrinuted and maintained by community members, which are reposited in `gogf` organization. Some of the community packages are seperated from th `gf` repository, which are not of common usage or are with heavy dependecies.
2020-05-17 15:11:07 +08:00
2019-06-25 23:17:14 +08:00
# Architecture
2018-11-20 23:26:58 +08:00
<div align=center>
2020-01-23 15:04:12 +08:00
<img src="https://goframe.org/images/arch.png?v=11"/>
2018-11-20 23:26:58 +08:00
</div>
2020-04-23 17:14:11 +08:00
# Performance
2020-04-23 19:41:34 +08:00
Here's the most popular Golang frameworks and libraries performance testing result in `WEB Server`. Performance testing cases source codes are hosted at: https://github.com/gogf/gf-performance
2020-04-23 17:14:11 +08:00
2020-04-23 19:51:08 +08:00
## Environment
2020-04-23 17:18:15 +08:00
OS : Ubuntu 18.04 amd64
CPU : AMD A8-6600K x 4
MEM : 32GB
GO : v1.13.4
2020-04-23 19:51:08 +08:00
## Testing Tool
2020-04-23 17:18:15 +08:00
`ab`: Apache HTTP server benchmarking tool.
Command:
```
ab -t 10 -c 100 http://127.0.0.1:3000/hello
ab -t 10 -c 100 http://127.0.0.1:3000/query?id=10000
ab -t 10 -c 100 http://127.0.0.1:3000/json
```
The concurrency starts from `100` to `10000`.
> Run `5` times for each case of each project and pick up the best testing result.
2020-04-23 17:14:11 +08:00
## 1. Hello World
<table>
<tr>
<th>Throughputs</th>
<th>Mean Latency</th>
<th>P99 Latency</th>
</tr>
<tr>
<td width="30%"><img src="http://gfcdn.johng.cn/images/performance/throughputs1.jpeg"></td>
<td width="30%"><img src="http://gfcdn.johng.cn/images/performance/meanlatency1.jpeg"></td>
<td width="30%"><img src="http://gfcdn.johng.cn/images/performance/p99latency1.jpeg"></td>
</tr>
</table>
2020-04-23 17:25:11 +08:00
## 2. Json Response
2020-04-23 17:14:11 +08:00
<table>
<tr>
<th>Throughputs</th>
<th>Mean Latency</th>
<th>P99 Latency</th>
</tr>
<tr>
<td width="30%"><img src="http://gfcdn.johng.cn/images/performance/throughputs3.jpeg"></td>
<td width="30%"><img src="http://gfcdn.johng.cn/images/performance/meanlatency3.jpeg"></td>
<td width="30%"><img src="http://gfcdn.johng.cn/images/performance/p99latency3.jpeg"></td>
</tr>
</table>
2019-06-25 23:17:14 +08:00
2020-04-23 17:23:57 +08:00
# Documentation
* 中文官网: https://goframe.org
* GoDoc API: https://godoc.org/github.com/gogf/gf
# Discussion
- QQ Group: [116707870](//shang.qq.com/wpa/qunwpa?idkey=195f91eceeb5d7fa76009b7cd5a4641f70bf4897b7f5a520635eb26ff17adfe7)
- WX Group: Add friend`389961817` in WeChat, commenting `GF`
- Issues: https://github.com/gogf/gf/issues
> It's recommended learning `GoFrame` through its awesome source codes and API reference.
2019-06-25 23:17:14 +08:00
# License
`GF` is licensed under the [MIT License](LICENSE), 100% free and open-source, forever.
2020-01-18 22:21:37 +08:00
# Contributors
This project exists thanks to all the people who contribute. [[Contributors](https://github.com/gogf/gf/graphs/contributors)].
<a href="https://github.com/gogf/gf/graphs/contributors"><img src="https://opencollective.com/goframe/contributors.svg?width=890&button=false" /></a>
2020-05-08 19:16:52 +08:00
<!--
2019-06-25 23:17:14 +08:00
# Donators
We currently accept donation by Alipay/WechatPay, please note your github/gitee account in your payment bill. If you like `GF`, why not [buy developer a cup of coffee](DONATOR.MD)?
2020-02-22 17:06:58 +08:00
# Sponsors
We appreciate any kind of sponsorship for `GF` development. If you've got some interesting, please contact WeChat `389961817` / Email `john@goframe.org`.
2020-05-08 19:16:52 +08:00
-->
2020-02-22 17:06:58 +08:00
2019-06-25 23:17:14 +08:00
# Thanks
<a href="https://www.jetbrains.com/?from=GoFrame"><img src="https://goframe.org/images/jetbrains.png" width="100" alt="JetBrains"/></a>
2018-12-27 09:49:50 +08:00
2020-02-22 17:06:58 +08:00
2019-05-18 14:55:15 +08:00