Skip to content
This repository has been archived by the owner on Sep 22, 2020. It is now read-only.
jocelyn edited this page May 31, 2011 · 15 revisions

Table of Contents

Goals

This project is to provide an easy way to build web application with Eiffel

  • portable web seerver framework: this means, platform independant, and web server independant solution, and even protocol independant (support for fcgi, cgi, ...)
  • framework to help the user to build quickly a web application (RESTful service, CMS web interface, XML-RPC ...)
  • to be adopted by the Eiffel community, and let it grow with quality

Current state

  • the EiffelWebReloaded is composed of many libraries, which could be categorized into server, client, and utility
  • Server libraries under "library/server" folder
    • httpd: the common interfaces to build a httpd application, this is protocol independant. It will rely on httpd_support implementations
    • httpd_support: this bring the protocol "implementation" of the httpd interfaces. Currently it contains the following support 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
    • 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.
  • 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).
  • 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
Notes:
  • 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
Warning:
  • 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.
To summarize currently (2011-05-31), any one can build easily an Eiffel Web application using EiffelWebReloaded. That is to say for instance a Web site, a CMS, or even RESTful services. And this works on Windows, Linux, using either FCGI, CGI or EiffelWebNino. Using CGI and FastCGI, this allows to use any popular web server such as apache2, lighttpd, nginx, ...

So now, what about Getting Started ?

Idea for the future

  • integrate eMIME provided by Javier Velilla
  • add more encoder supports, including MD5,SHA1, ....
  • It would help to have an Eiffel implementation of FartCGI. Maybe porting Goanna to use only EiffelThread, and EiffelNet ?
  • added authentication components, for now we have basic HTTP authorization, but we need better system including openID, OAuth, google connect, facebook connect, ... and whatever could be useful.
  • collaboration to build an Eiffel CMS framework (similar to drupal), so that we can build ever faster a Web site. We would need to think about about to add module.
  • Port some of the Xebra facilities to EiffelWebReloaded (for instance the ASP like features)
  • Involve more Eiffel users from the community for feedback, and eventually specific contribution on existing code.
  • Talk about this solution, so that people can also associate Eiffel, with Web development. Including all the good point from Eiffel.
  • provide more communication functionalities, in order to integrate other services (twitter, xmpp, ... and any services we can think of). This could lead to nice mashups.
  • provide any lib that could be useful such as template engine, Wiki parser, diagram builder, and so on ...

Idea to extend this "server" framework

  • Javascript generation from either Eiffel code, or specific framework. We could design a vision2 subset used to build desktop application and/or generate the counter-part javascript web interface.
  • Tools to help developping RESTful services, and so on ...
  • ... there are so many things we could do ... So for now, let's try to have solid base.
At any time, you can check the Todo-list for idea.
Clone this wiki locally