• Stars
    star
    386
  • Rank 111,213 (Top 3 %)
  • Language
    C++
  • License
    MIT License
  • Created over 6 years ago
  • Updated 9 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

a modern, rapid,cross-platform web development framework developed in c++17

Feather--一个快速开发的web框架

*Read this in other languages: English, 简体中文

如何在archlinux上运行feather

如何在win10上运行feather

如何在mac上运行feather

如何在windows和linux上运行feather

Feather是一个适合快速开发的modern c++ web框架,Feather的目标是让使用者以最小的精力和成本来开发一个web网站。

现在很多web框架都非常庞大,学习成本高,而Feather正是为了解决这些问题的,它就像它的名字feather那样轻盈,所有的一切都是为了让用户非常方便又快速地开发而不是陷入到框架的细节当中。

一个好的框架应该是能让用户轻松实现自己的想法而不是成为框架的奴隶。如果你希望轻松快速地开发一个web框架,而无需花费大量的精力去学习框架细节的话,那么Feather非常适合你!

Feather是什么?

Feather作为一个快速开发框架,它的目标是让web服务器开发变得简单。它主要有下面几个特点:

  1. 简洁易用
  2. 高性能,modern c++(c++17)开发
  3. header only
  4. 跨平台
  5. 支持编译期反射
  6. 支持AOP

Feather框架的核心包括:

  1. 一个易用的http库,支持http1.x, https, websocket
  2. 一个功能强大的html模版引擎
  3. 一个可扩展的ORM库,支持多种数据库(mysql,postgresql,sqlite)
  4. 一个可扩展序列化库,支持多种格式(json, xml)

Feather的架构

下面是Feather的架构图:

Feather的架构图

  1. http组件: cinatra
  2. ORM组件: ormpp
  3. html 模版: render

Feather内部的三个核心组件是松耦合的,Feather只是把它们像搭积木一样搭在一起。

Feather的使用

以一个简单的例子展示如何使用Feather,比如显示文章列表,几乎每个网站都有这个功能。

获取文章列表的功能很简单,它底层数据部分是一个文章表,业务逻辑层是获取这些列表,然后做html渲染。对外接口部分是一个http服务,前端后端交互的数据格式为json。为了简单起见就不考虑缓存之类的。

那么要实现这个文章列表功能用Feather怎么做呢?可以按照这些步骤去开发:

  1. 提供获取文章列表的http接口;
  2. 通过ORM提供数据库访问功能;
  3. 编写业务逻辑,根据用户请求获取文章列表并通过html模版做渲染;

Demo示例

TODO

我们用Feather开发了一个社区网站,地址在这里:http://purecpp.org/

Feather社区: Feather社区

benchmark

ab -c50 -n3000 xxxurl

feather benchmark

致谢

Feather社区网站由我和网友XMH共同开发完成(花了两天的业余时间),XMH也是cinatra的忠实用户,不但贡献了很多代码,还提供了很多宝贵的建议,在此表示衷心的感谢!

XMH是一名热爱编程的程序猿,平时从事c++,web,移动端等开发。从事过游戏后台和APP开发。也是个忠实的mordern c++粉丝,追随着cpp的发展,喜欢通过元编程做一些小工具。热爱开源社区,也是开源项目feather的使用者,希望feather能为更多的开发者所使用,社区发展越来越好。

希望有更多人能加入进来把Feather完善得更好。

联系我们

[email protected]

http://purecpp.org/

https://github.com/qicosmos/feather

More Repositories

1

cinatra

modern c++(c++20), cross-platform, header-only, easy to use http framework
C++
1,834
star
2

rest_rpc

modern C++(C++11), simple, easy to use rpc framework
C++
1,672
star
3

ormpp

modern C++ ORM, C++17, support mysql, postgresql,sqlite
C++
1,114
star
4

cosmos

c++11基础库
C++
944
star
5

iguana

universal serialization engine
C++
931
star
6

Kapok

更好的序列化库,c++14开发,header-only,简洁高效。Now there is a better serialization libray:https://github.com/qicosmos/iguana please replace kapok with iguana.
C++
184
star
7

plugincpp

a modern c++ plugin library
C++
75
star
8

rest_rpc_old

Now this project has been changed to https://github.com/topcpporg/rest_rpc
C++
65
star
9

TaskCppV1.1

c++11任务库
C++
52
star
10

raftcpp

modern c++ raft library
C++
46
star
11

nanolog

header only log inherited from Nanolog
C++
36
star
12

SmartDB1.03

这个项目不再更新,请使用最新的ormpp,支持mysql,sqlite,postgresql多种数据库
C
32
star
13

qimq

a modern c++17 high performance, cross-platform distributed mq
C++
24
star
14

render

a modern c++ html template engine
C++
17
star
15

RayCppWorkerExample

Show how to use c++ worker to develop distribute applications.
C++
12
star
16

sms_client

a async client for sms platform
C
9
star
17

redisclient

A c++17 simple redis client
C++
9
star
18

cnn_net

show how to build a simple cnn/bp net in c++
C++
7
star
19

message_bus

Decouple complex object relationships
C++
6
star
20

timax_http_server

modern, simple, easy to use http server
C++
5
star
21

cppcon2018

the speak for cppcon2018
5
star
22

MMP

Modern Meta-programming
C++
4
star
23

network_test

C++
3
star
24

smartdb

unified, modern, simple easy to use database visiting engine, surpport postgresql, mysql, sqlite3.
C++
2
star
25

cppcon2017

my speach of cppcon2017
2
star
26

cppnow2017-ppt

ppt and some materials
2
star
27

webstar

modern C++ web server
CSS
1
star