Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Framework for Enterprise Application Development in c++, HTTP1/HTTP2/HTTP3 compliant, Supports multiple server backends

NotificationsYou must be signed in to change notification settings

sumeetchhetri/ffead-cpp

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

CodeQL

AlmalinuxAlpineArchlinuxGentooMacOSOpensuseUbuntuWindows CygwinWindows Mingw-w64

Musl Cross CompilationDockcross uclibc-wrt CompilationAndroid Cross CompilationMingw-w64 Cross Compilation

Bazel buildBuck2 buildMeson buildScons buildShellb buildXmake build

Nodejs and Emscripten

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

UbuntuAlmalinuxOpenSUSE
GentooArchLinuxAlpine Linux
MacOSWindows CygwinWindows mingw-w64
ArchLinux (mingw-w64 cross compiler)Ubuntu (musl cross compiler)Ubuntu (android cross compiler)
SolarisFreeBSDEmscripten
Dockcross armv5-uclibc

Features

  • Multiple server backends (HTTP 1.1/HTTP 2/HTTP 3)
    embedded (HTTP1.1)nghttp2 (HTTP2)quiche (HTTP3)seastar
    apachecinatra (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++)nginxnodejs (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)

Quickstart (Using cmake/make)

  • 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 !!)

Quickstart (Using cmake/ninja)

  • 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 !!)

Quickstart (Using xmake)

  • 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 !!)

Quickstart (Using meson)

  • 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 !!)

Quickstart (Using scons)

  • Install sconspip3 install scons --break-system-packages andprerequisites
  • 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 !!)

Quickstart (Using shellb)

  • Install shellb withwget -q https://github.com/sumeetchhetri/shellb/releases/download/2.0.0/shellb -P . && chmod +x ./shellb andprerequisites, 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 !!)

Quickstart (Using bazel)

  • 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 !!)

Quickstart (Using buck2)

  • 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 !!)

Quickstart (Using autoconf)

  • 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

Stars

Watchers

Forks

Packages

No packages published

[8]ページ先頭

©2009-2025 Movatter.jp