Ada Web Server
A complete Web development framework
The latest GPL Edition release can be downloaded here.
AWS repository is also accessible anonymously and read-only. Note that you should only use the AWS Git tree if you know what you are doing and if using a development version (with possible instabilities) does not frighten you. To check it out:
$ git clone --recursive https://github.com/AdaCore/aws.git
It is also possible to get only the templates_parser tree if needed:
$ git clone https://github.com/AdaCore/templates-parser.git
If you would like to contribute, send your patches and we will work with you on integrating them.
Introduction to AWS
What is AWS ?
First of all, AWS stands for Ada Web Server but it is more than just another Web server…
AWS is a complete framework to develop Web based applications. The main part of the framework is the embedded Web server. This small yet powerful Web server can be embedded into your application so your application will be able to talk with a standard Web browser like Microsoft Internet Explorer or Firefox for example. Around this Web server a lot of services have been developed.
The framework includes:
- A Web parameters module. This module takes care of retrieving the forms or URL parameters and to build an associative table for easy access.
- A session server, this is a very important module to be able to keep client’s data from page to page.
- Support SOAP to develop Web Services.
- A tool (based on ASIS) to generate a WSDL document from an Ada spec.
- A tool to generate Web Services stubs/skeletons from a WSDL document.
- A template parser, this module makes it possible to completely separate the Web design from the code. No more scripting into your Web page. This template engine is amazingly fast due to its concurrent cached compiled templates support.
- Support for Secure Sockets (HTTPS/SSL), this is based on OpenSSL library.
- Support for large servers using dispatchers based on URI, request methods, timers.
- Support for virtual hosting (dispatchers based on the host name).
- Support for server push.
- A directory browser ready to be used in any application.
- A status page to get many information about the current AWS server.
- A log module. Log files keep information about all resources requested to the server.
- Hotplug modules which can be loaded/unloaded dynamically to add specific features to a server.
- A light communication API to exchange data between applications using the HTTP protocol.
- A configuration API to tune/change the server parameters without recompilation.
- A client API to retrieve any Web page from a Web site.
- A Web Page service to build a simple static page server.
- Support for SMTP, LDAP and Jabber protocols.
- And more…
A server built with AWS is very easy to deploy. You just need to copy and launch a single executable. There is no Web server installation and configuration steps to do.
Contributions to this library are most appreciated, including bug reports. Please send patches to the firstname.lastname@example.org mailing-list. We will try to integrate them whenever possible. See docs/dev-notes for information about the way patches have to be sent.
AWS now has its mailing-list. Click here to subscribe.
Some units used to develop AWS are GNAT-specific:
- GNAT.Calendar.Time_IO used in the log facility and for the status page.
- GNAT.Regexp used in the AWS.Hotplug filters and some dispatchers.
- GNAT.Sockets used in the AWS.Net.Std unit.
- GNAT.Command_Line used by many AWS tools.
- GNAT.MD5 for digest authentication in POP and Jabber API.
- GNAT.Expect in pipe streams AWS.Resources.Streams.Pipe
- GNAT.Regpat in pipe streams AWS.Resources.Streams.Pipe
- GNAT.Directory_Operations and GNAT.OS_Lib in pipe streams AWS.Resources.Streams.Pipe
External libraries are needed to enable some AWS optional features:
- OpenSSL (optional) – to support HTTPS/SSL connection. AWS has been tested with OpenSSL v0.9.8b.
- XML/Ada (optional) - to support SOAP
- ASIS (optional) – to support WSDL generation from Ada specs
AWS is known to work on many different platforms, it has been heavily tested on the following popular platforms but should work on every native targets supported by GNAT:
- GNU/Linux x86
- SPARC Solaris
- Windows NT/Vista/7
Related Web Sites
The following are some useful related web sites:
Libre software for Ada
This page provides several packages and libraries that can be used with the Ada language, including GtkAda, a graphical toolkit, and GVD, a graphical debugger.
The official W3 web site.
It contains a huge number of Web-related standard. Many documents from this site have been used.
- RFC 1867 – Form-based File Upload in HTML
- RFC 1945 – Hypertext Transfer Protocol — HTTP/1.0
- RFC 2109 – HTTP State Management Mechanism
- RFC-2616 – Hypertext Transfer Protocol — HTTP/1.1
- RFC 2617 – HTTP Authentication: Basic and Digest Access Authentication
- draft 302 – The SSL Protocol Version 3.0
- Simple Object Access Protocol (SOAP) 1.1
This toolkit has principally been written by:
Many thanks to Ted Dennison, Wiljan Derks, Sune Falck, David C. Hoos, Thierry Lelegard, Jean-François Rameau, Olivier Ramonat, Maxim Reznik, Jean-Pierre Rosen, Ariane Sinibardy for your feedback and encouragments.