Skip to content

Building Blocks

U-LPT00135\sumeetc edited this page Dec 6, 2015 · 1 revision

Building Blocks of ffead-cpp

Modules

A module in ffead-cpp provides core functionality to the framework’s upper layers or Handlers/Plugins/Services. A module may provide common functionality like data type conversion, string utilities, compression, crypto utilities etc, may provide a framework like server-util framework which can be used to build a high performance server, it may provide a client library for connecting to HTTP/Binary protocol servers, may provide authentication capabilities, may provide SSL capabilities, thread features, ORM features, Caching interface features etc. Modules are the basic building blocks of ffead-cpp.

Handlers

Handlers derive core functionality from the Modules to provide a higher layer functionality. They handle everything right from configuration to URL-Class level mapping to Security. A Service/Server uses the handlers to create a service framework. ffead-cpp provides the HTTP Service by default but other Services can be easily added using ffead-cpp core.

Service

A Service provides a server run-time for a given protocol. ffead-cpp provides a default HTTP server/service which makes it a complete web application server. It implements all the HTTP1.1/HTTP2/Web-socket specifications. The ffead-cpp http server is built on top of the core server-util module. It provides a high performance event based loop which uses the best event mechanism depending on the target OS. The server is based on a single thread service model which uses a worker thread pool to process requests and a single thread for reading and writing request/response. The server supports chunked transfer encoding and gzip/deflate algorithms. It is also fully SSL compliant

Plugins

Plugins are interfaces to other programming languages made available by ffead-cpp. ffead-cpp is written in c++. But other PL(s) can also talk to the ffead-server with the same framework level concepts as in ffead-cpp. The idea here is to enable any programming language that has reflection support to be able to be driven by the ffead-cpp framework/server. The core concepts or fundamentals of ffead-cpp controllers, filters, form, REST/SOAP can also be leveraged by any PL out there be it PHP, Python, Ruby, objective c, C#, java, etc.