/ffead-cpp

Framework for Enterprise Application Development, webrtc signalling server, peerjs webrtc, c++ framework, c++ web framework, c++ application framework, c++ rest framework, c++ soap framework, c++ web sites, c++ web applications, c++ driven web development - c++

Primary LanguageC++

The ffead-cpp Framework

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 like Memcached/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 class can be marked as serializable and the run-time will take care of marshalling/un-marshalling the object to its intended serializable form and back(JSON/XML/BINARY).

ffead-cpp can be easily driven by XML configuration, Services/Controllers/Filters/Interfaces/API(s) are all simple POCO classes without any need for them to extend any classes. The differentiating feature in ffead-cpp is the usage/implementation/support for markers (Annotations in java). Simple #pragma directives 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 fill with my humble/honest effort.

Both cmake and autoconf builds are supported

Detailed OS specific instructions, instructions for installing the available server backends and docker/docker-compose scripts are located at docker

Build validated for the following Operating systems/Toolchains

  1. Ubuntu
  2. CentOS
  3. OpenSUSE
  4. Gentoo
  5. ArchLinux
  6. Alpine Linux
  7. MacOS
  8. Windows Cygwin
  9. Windows mingw-w64
  10. ArchLinux (mingw-w64 cross compiler)
  11. Ubuntu (musl cross compiler)
  12. Ubuntu (android cross compiler)

Latest Techempower benchmarks - https://www.techempower.com/benchmarks/#section=test&runid=57b25c85-082a-4013-b572-b0939006eaff&hw=ph&test=json&a=2

Features

  • Multiple server backends
    • embedded
    • nginx
    • apache
    • openlitespeed (experimental)
    • cinatra
    • lithium
    • drogon
    • nghttp2 based HTTP2 Server
    • libreactor (c)
    • h2o (c)
    • vweb (vlang)
    • picov (vlang)
    • actix (rust)
    • hyper (rust)
    • thruster (rust)
    • rocket (rust)
    • h2o.cr (crystal)
    • crystal-http (crystal)
    • fasthttp (golang)
    • gnet (golang)
    • firenio (java)
    • rapidoid (java)
    • wizzardo-http (java)
  • Web Socket Support
  • Advanced ORM - SDORM (sql/monogo)
  • Cache API (memcached/redis)
  • Search Engine API (solr/elasticsearch) -- (experimental)
  • Improved Thread/ThreadPool API(s)
  • Marker based configuration (java style annotations)
  • Reflection support
  • Serialization support
  • Date/Time Ultility functions
  • Better Logging support
  • HTTP2.0 Support (experimental)
  • Dependency Injection
  • Sample app for Webrtc Signalling (websocket + api) (horizontally scalable peerjs compatible signalling server)

Quickstart (Using cmake/make)

  • Install cmake >= 3.8.2 and prerequisites
  • 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-5.0-bin/ (Navigate to the ffead-cpp binary folder)
  • chmod +x *.sh
  • ./server.sh (Startup ffead-cpp Njoy!!)

Quickstart (Using cmake/ninja)

  • Install cmake >= 3.8.2, ninja and prerequisites
  • 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-5.0-bin/ (Navigate to the ffead-cpp binary folder)
  • chmod +x *.sh
  • ./server.sh (Startup ffead-cpp Njoy!!)

Quickstart (Using autoconf)

  • Install autoconf, automake and libtool prerequisites
  • ./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-5.0-bin/ (Navigate to the ffead-cpp binary folder)
  • chmod +x *.sh
  • ./server.sh (Startup ffead-cpp Njoy!!)

Webrtc Example (Uses peerjs)

For further details checkout the wiki page