- Notifications
You must be signed in to change notification settings - Fork149
sumeetchhetri/ffead-cpp
Folders and files
| Name | Name | Last commit message | Last commit date | |
|---|---|---|---|---|
Repository files navigation
According to the latest tfb results, ffead-cpp [embedded+v-picov] is currently the 20th fastest web/http/sql framework in the worldLatest Techempower benchmarks
ffead-cpp is a web-framework, application framework, utilities all bundled into one.It also provides an embedded HTTP/Web-Socket compliant high-performance server core.It is a collection of modules all geared towards performing individual roles which together form the cohesive back-bone of ffead-cpp.
It provides a very simple to use and maintain web-framework library with advanced features like Reflection, Dependency Injection (IOC),Inbuilt REST/SOAP support, Security/Authentication features. Moreover implementation for interfacing to caching tools likeMemcached/Redis are provided in-built.Database integration/ORM framework (SDORM) solves all major issues with respect to interfacing with SQL/No-SQL database alike.
Multi-level serialization or template level serialization is a high point of ffead-cpp core serialization run-time. Any C++ POCO classcan be marked as serializable and the run-time will take care of marshalling/un-marshalling the object to its intended serializable formand back(JSON/XML/BINARY).
ffead-cpp can be easily driven by XML configuration, Services/Controllers/Filters/Interfaces/API(s) are all simple POCO classes withoutany need for them to extend any classes.The differentiating feature in ffead-cpp is the usage/implementation/support for markers (Annotations in java). Simple#pragmadirectives can now be used to drive the entire configuration in ffead-cpp, so you can just forget XML configuration.
All in all ffead-cpp is the gap in the world of C++ web application or enterprise application development which I have tried to fillwith my humble/honest effort.
cmake,autoconf,meson,xmake,scons,shellb,bazel andbuck2 builds are supported
Detailed OS specific instructions, instructions for installing the available server backends and docker/docker-compose scripts are located atdocker
Build validated for the following Operating systems/Toolchains
- Multiple server backends (HTTP 1.1/HTTP 2/HTTP 3)
embedded (HTTP1.1) nghttp2 (HTTP2) quiche (HTTP3) seastar apache cinatra (c++) lithium (c++) drogon (c++) libreactor (c) h2o (c) vweb (vlang) picov (vlang) actix (rust) hyper (rust) thruster (rust) h2o.cr (crystal) crystal-http (crystal) fasthttp (golang) gnet (golang) firenio (java) rapidoid (java) wizzardo-http (java) hunt (d) swift-nio (swift) http.jl (julia) uv-cpp (c++) CppServer (c++) nginx nodejs (javascript) openlitespeed (WIP) - Support for multiple I/O event notification engines,
- io_uring - Linux kernel >= 5.6
- epoll - Linux
- kqueue - BSD/MacOS
- event_ports/devpoll - Solaris
- wepoll - Windows (IOCP based epoll library)
- poll/select - On all platforms that support these API's
- Embedded HTTP Server with single process and thread-pool backends
- SSL/TLS support
- Web Socket Support
- Advanced ORM - SDORM (sql/monogo)
- Raw database access (postgresql/mongodb/scylladb)
- PostgreSQL wire database access
- Cache API (memcached/redis)
- Improved Thread/ThreadPool API(s)
- Marker based configuration (java style annotations)
- Reflection support
- Serialization support
- Date/Time Ultility functions
- Dependency Injection
- Serverside dynamic C++ Pages and template engine (HTML/C++ pages)
- Sample app for Webrtc Signalling (websocket + api) (horizontally scalable peerjs compatible signalling server)
- Embedded HTTP2.0 Server support (experimental)
Examples (as per feedback from HN)
- REST API example -https://github.com/sumeetchhetri/ffead-cpp/blob/master/web/te-benchmark/include/TeBkRestController.h
- Template example -https://github.com/sumeetchhetri/ffead-cpp/blob/master/web/markers/tpe/mark.tpe &https://github.com/sumeetchhetri/ffead-cpp/blob/master/web/default/src/DefTemp.cpp
- Websocket example -https://github.com/sumeetchhetri/ffead-cpp/blob/master/web/default/src/DefaultWebSocketHandler.cpp
- Webfilter example -https://github.com/sumeetchhetri/ffead-cpp/blob/master/web/default/src/DefaultIOFilter.cpp
- Webcontroller example -https://github.com/sumeetchhetri/ffead-cpp/blob/master/web/default/src/DefaultController.cpp
- Dynamic C++ page example -https://github.com/sumeetchhetri/ffead-cpp/blob/master/web/default/dcp/test.dcp
- Action based view example -https://github.com/sumeetchhetri/ffead-cpp/blob/master/web/default/fviews/test.html &https://github.com/sumeetchhetri/ffead-cpp/blob/master/web/default/src/TestFormController.cpp
- XML driven configuration example -https://github.com/sumeetchhetri/ffead-cpp/blob/master/web/default/config/application.xml
- Annotation (#pragma) driven example -https://github.com/sumeetchhetri/ffead-cpp/tree/master/web/markers/include
- ORM example -https://github.com/sumeetchhetri/ffead-cpp/blob/master/web/default/config/sdorm-mysql.xml
- Caching example -https://github.com/sumeetchhetri/ffead-cpp/blob/master/web/default/config/cache.xml
- Script execution example -https://github.com/sumeetchhetri/ffead-cpp/tree/master/web/default/scripts
- Programming language integration examples -https://github.com/sumeetchhetri/ffead-cpp/tree/master/lang-server-backends
- OS Build scripts -https://github.com/sumeetchhetri/ffead-cpp/tree/master/docker/os-based
- Cross compiling (android, mingw54, dockcross) -https://github.com/sumeetchhetri/ffead-cpp/tree/master/docker
- I/O Multiplexing -https://github.com/sumeetchhetri/ffead-cpp/blob/master/src/modules/server-util/SelEpolKqEvPrt.h
- ThreadPool -https://github.com/sumeetchhetri/ffead-cpp/tree/master/src/modules/threads
- Backend Server integration -https://github.com/sumeetchhetri/ffead-cpp/tree/master/src/server
- Server modules (apache/nginx/openlitespeed*) -https://github.com/sumeetchhetri/ffead-cpp/tree/master/modules
- Cron Jobs module -https://github.com/sumeetchhetri/ffead-cpp/tree/master/src/modules/jobs
- SOLR-Zookeeper/Elasticsearch (Search module) -https://github.com/sumeetchhetri/ffead-cpp/tree/master/src/modules/search
- Toy/Useless interpreter -https://github.com/sumeetchhetri/ffead-cpp/tree/master/src/modules/interpreter
- Solaris/BSD vagrant builds -https://github.com/sumeetchhetri/ffead-cpp/tree/master/vagrant
- A Dumb code autogenerator -https://github.com/sumeetchhetri/ffead-cpp/blob/master/ffead_gen.sh
- All github workflows for build validations -https://github.com/sumeetchhetri/ffead-cpp/tree/master/.github/workflows
- Install cmake >= 3.8.2 andprerequisites
- mkdir build && cd build
- cmake -DSRV_EMB=on -DMOD_SDORM_MONGO=on ..
- make install -j4 (Build ffead-cpp along-with the sample applications in web + generate ffead-cpp binary)
- Sip some coffee
- cd ../ffead-cpp-7.0-bin/ (Navigate to the ffead-cpp binary folder)
- chmod +x *.sh
- ./server.sh (Startup ffead-cpp !!)
- Install cmake >= 3.8.2, ninja andprerequisites
- mkdir build && cd build
- cmake -GNinja -DSRV_EMB=on -DMOD_SDORM_MONGO=on ..
- ninja install (Build ffead-cpp along-with the sample applications in web + generate ffead-cpp binary)
- Sip some coffee
- cd ../ffead-cpp-7.0-bin/ (Navigate to the ffead-cpp binary folder)
- chmod +x *.sh
- ./server.sh (Startup ffead-cpp !!)
- Install xmake >= 2.5 andprerequisites
- xmake f --cxflags="-I/usr/local/include -w" --MOD_SDORM_MONGO=true -v -D -c
- xmake && xmake install (Build ffead-cpp along-with the sample applications in web + generate ffead-cpp binary)
- Sip some coffee
- cd ffead-cpp-7.0-bin/ (Navigate to the ffead-cpp binary folder)
- chmod +x *.sh
- ./server.sh (Startup ffead-cpp !!)
- Install meson andprerequisites
- meson setup build_meson && cd build_meson
- ninja install (Build ffead-cpp along-with the sample applications in web + generate ffead-cpp binary)
- Sip some coffee
- cd ../ffead-cpp-7.0-bin/ (Navigate to the ffead-cpp binary folder)
- chmod +x *.sh
- ./server.sh (Startup ffead-cpp !!)
- Install scons
pip3 install scons --break-system-packagesandprerequisites - scons -Q (Build ffead-cpp along-with the sample applications in web + generate ffead-cpp binary)
- Sip some coffee
- cd ../ffead-cpp-7.0-bin/ (Navigate to the ffead-cpp binary folder)
- chmod +x *.sh
- ./server.sh (Startup ffead-cpp !!)
- Install shellb with
wget -q https://github.com/sumeetchhetri/shellb/releases/download/2.0.0/shellb -P . && chmod +x ./shellbandprerequisites, Always check for the latest version or use the one available already in the package - chmod +x ./shellb && ./shellb ffead-cpp-shellb (Build ffead-cpp along-with the sample applications in web + generate ffead-cpp binary)
- Sip some coffee
- cd shellb_out/ffead-cpp-7.0-bin/ (Navigate to the ffead-cpp binary folder)
- chmod +x *.sh
- ./server.sh (Startup ffead-cpp !!)
- Installbazel
- chmod +x ./shellb && ./shellb ffead-cpp-bazel (Build ffead-cpp along-with the sample applications in web + generate ffead-cpp binary)
- The above command will auto-generate BUILD/WORKSPACE/OTHER bazel files for building with bazel
- Sip some coffee
- cd shellb_out/ffead-cpp-7.0-bin/ (Navigate to the ffead-cpp binary folder)
- chmod +x *.sh
- ./server.sh (Startup ffead-cpp !!)
- Installbuck2
- chmod +x ./shellb && ./shellb ffead-cpp-buck2 (Build ffead-cpp along-with the sample applications in web + generate ffead-cpp binary)
- The above command will auto-generate .buckconfig/prelude/BUCK buck files for building with buck2
- Sip some coffee
- cd shellb_out/ffead-cpp-7.0-bin/ (Navigate to the ffead-cpp binary folder)
- chmod +x *.sh
- ./server.sh (Startup ffead-cpp !!)
- Install autoconf, automake and libtoolprerequisites
- ./autogen.sh
- ./configure --enable-srv_emb=yes --enable-mod_sdormmongo=yes
- make install -j4 (Build ffead-cpp along-with the sample applications in web + generate ffead-cpp binary)
- Sip some coffee
- cd ffead-cpp-7.0-bin/ (Navigate to the ffead-cpp binary folder)
- chmod +x *.sh
- ./server.sh (Startup ffead-cpp !!)
For further details checkout thewiki page
About
Framework for Enterprise Application Development in c++, HTTP1/HTTP2/HTTP3 compliant, Supports multiple server backends
Resources
Uh oh!
There was an error while loading.Please reload this page.
Stars
Watchers
Forks
Packages0
Uh oh!
There was an error while loading.Please reload this page.