drogon/README.md

34 lines
3.3 KiB
Markdown
Raw Normal View History

2018-09-07 10:21:51 +08:00
![](https://github.com/an-tao/drogon/wiki/images/drogon-white.jpg)
2018-08-26 14:12:11 +08:00
2018-11-18 18:26:23 +08:00
[![Build Status](https://travis-ci.com/an-tao/drogon.svg?branch=master)](https://travis-ci.com/an-tao/drogon)
2019-01-18 13:18:33 +08:00
[![Codacy Badge](https://api.codacy.com/project/badge/Grade/45f8a65ca1844788b9109c0044a618f8)](https://app.codacy.com/app/an-tao/drogon?utm_source=github.com&utm_medium=referral&utm_content=an-tao/drogon&utm_campaign=Badge_Grade_Dashboard)
2019-01-21 23:45:51 +08:00
[![Total alerts](https://img.shields.io/lgtm/alerts/g/an-tao/drogon.svg?logo=lgtm&logoWidth=18)](https://lgtm.com/projects/g/an-tao/drogon/alerts/)
2019-03-07 21:12:54 +08:00
[![Language grade: C/C++](https://img.shields.io/lgtm/grade/cpp/g/an-tao/drogon.svg?logo=lgtm&logoWidth=18)](https://lgtm.com/projects/g/an-tao/drogon/context:cpp)
[![Join the chat at https://gitter.im/drogon-web/community](https://badges.gitter.im/drogon-web/community.svg)](https://gitter.im/drogon-web/community?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)
2018-11-18 18:26:23 +08:00
2019-02-02 10:12:57 +08:00
**Drogon** is a C++14/17-based HTTP application framework. Drogon can be used to easily build various types of web application server programs using C++. **Drogon** is the name of a dragon in the American TV series "Game of Thrones" that I really like.
2018-10-02 16:49:59 +08:00
2019-03-03 10:51:44 +08:00
Drogon's main application platform is Linux. It also supports Mac OS and FreeBSD. Currently, it does not support windows. Its main features are as follows:
2018-08-26 14:12:11 +08:00
2019-03-06 16:27:11 +08:00
* Use a NIO network lib based on epoll (kqueue under MacOS/FreeBSD) to provide high-concurrency, high-performance network IO, please visit the [benchmarks](https://github.com/an-tao/drogon/wiki/benchmarks) page for more details;
2019-03-06 15:57:05 +08:00
* Provide a completely asynchronous programming mode;
2018-08-26 14:12:11 +08:00
* Support Http1.0/1.1 (server side and client side);
2019-03-06 15:57:05 +08:00
* Based on template, a simple reflection mechanism is implemented to completely decouple the main program framework, controllers and views.
* Support cookies and built-in sessions;
2018-08-26 14:12:11 +08:00
* Support back-end rendering, the controller generates the data to the view to generate the Html page, the view is described by a "JSP-like" CSP file, the C++ code is embedded into the Html page by the CSP tag, and the drogon command-line tool automatically generates the C++ code file for compilation;
* Support view page dynamic loading (dynamic compilation and loading at runtime);
2019-03-06 15:57:05 +08:00
* Provide a convenient and flexible routing solution from the path to the controller handler;
* Support filter chains to facilitate the execution of unified logic (such as login verification, Http Method constraint verification, etc.) before controllers;
2018-09-17 10:31:28 +08:00
* Support https (based on OpenSSL);
2019-03-03 10:51:44 +08:00
* Support WebSocket (server side);
* Support JSON format request and response, very friendly to the Restful API application development;
2018-08-26 14:12:11 +08:00
* Support file download and upload;
2018-09-03 14:21:41 +08:00
* Support gzip compression transmission;
2019-03-06 15:57:05 +08:00
* Support pipelining;
* Provide a lightweight command line tool, drogon_ctl, to simplify the creation of various classes in Drogon and the generation of view code;
* Support NIO-based asynchronously reading and writing database (PostgreSQL and MySQL(MariaDB) database);
* Support asynchronously reading and writing sqlite3 database based on thread pool;
* Provide a convenient lightweight ORM implementation that supports for regular object-to-database bidirectional mapping;
2018-08-26 14:12:11 +08:00
2019-03-06 15:57:05 +08:00
### For more information, please visit the [wiki](https://github.com/an-tao/drogon/wiki) site