Clone this wiki locally
Table of Contents
Provide a framework to easily build web application with Eiffel, with the following requirements
- portable web server framework: this means, platform independant, and web server independant solution, and even protocol independant (support for fcgi, cgi, ...)
- up-to-date with Eiffel: standard syntax, and void-safety by default
- framework to help the user to build quickly a web application (RESTful service, CMS web interface, XML-RPC ...)
- be adopted by the Eiffel community, and let it grow with quality and rich set of features
Currently there are a few web solutions in Eiffel
- EiffelWeb: which is quite poor and not usable for non trivial site
- Goanna: which provides FastCGI, CGI and standalone, but based on EPOSIX which does not seems that portable (many C external works only on Linux/Unix), and it is not Void-safe.
- Xebra: experimental solution which works for Apache2 and maybe IIS, but it is embedded in a auto-re-compilation system which make it not that flexible for any context. Then it is not portable easily on any web server.
The REST libraries were built mainly to demonstrate the flexibility of the framework. Once we have a solid, reliable base for the httpd library, we'll add more utilities classes, better MIME functionality, new authentication, and hopefully we'll try to port existing solutions on top of EiffelWebReloaded.
- the EiffelWebReloaded is composed of many libraries, which could be categorized into server, client, and utility, and it is far from being complete, but it can already be used.
Server libraries under "library/server" folder
- httpd: the common interfaces to build a httpd application, this is protocol independant. It will rely on httpd_connector implementations
httpd_connector: this bring the protocol "implementation" of the httpd interfaces. Currently it contains the following support/connectors for
- cgi: support to build web application based on CGI protocol, this has performance limitation, since the server is executed for each request, however this provides an easy integration to most of the web hosting service
- fcgi: support to build web application based on libfcgi. It is similar to CGI, except that the FCGI server is run once and handle severals requests (According to the associated web server configuration). See below fcgi
- nino: support for the EiffelWebNino httpd server. See below nino
- note: we could also try to adapt Goanna connector to be used with this framework
- fcgi: wrapper for the libfcgi SDK. It contains a modified version of the libfcgi to be compilable on win64, and it adds a new function to ease integration on Windows.
- nino: a httpd server implemented with Eiffel. Either single-thread or multi-threaded. It is a basic and simple server, very useful to develop, debug, and test web application without the need to configure Apache or IIS, ..
- rest: an implementation to provide RESTful service, based on httpd library . It includes an auto-generated API documentation.
- XML-RPC, ... will come later
- note: we could also try to adapt Goanna web library (servlet, ...) to be used on top of the httpd framework.
- note: fcgi and nino can be used by them self without integration to the httpd framework, but using the httpd framework provide portability over connectors
Client libraries under "library/client" folder
- rest: an implementation to consume RESTful services. Obviously this works fine with the server rest library. But this can also be used with popular services such as twitter (except that currently there is no OAuth implementation).
- XML-RPC, ... will come later
Utility libraries under "library" folder
- error: very basic component to handle errors
- logger: very basic component to log message (currently to file, or console)
- text/encoder: it currently supports base64, url-encoded, and xml encoding and unencoding implementation.
- text/json: JSON parser library
- json, nino are external contribution from Javier Velilla (with inputs from Paul Cohen, and Jocelyn Fiat)
- the rest of the libraries were developped for EiffelWebReloaded.
- currently all the code from EiffelWebReloaded is void-safe, tested using EiffelStudio 6.8
- The current interfaces are not fixed, and might change before we get a first release. The 25th of June, there is a Design Feast at Zurich focused on Web Development, and it is likely to impact on the current project. There is also the netc workshop for the community which might impact this project as well.