# 1. Introduction

AWS stand for Ada Web Server. It is an Ada implementation of the HTTP/1.1 protocol as defined in the RFC-2616 from June 1999.

The goal is not to build a full Web server but more to make it possible to use a Web browser (like Internet Explorer, or Netscape Navigator) to control an Ada application. As we’ll see later it is also possible to have two Ada programs exchange informations via the HTTP protocol. This is possible as AWS also implement the client side of the HTTP protocol.

Moreover with this library it is possible to have more than one server in a single application. It is then possible to export different kind of services by using different HTTP ports, or to have different ports for different services priority. Client which must be served with a very high priority can be assigned a specific port for example.

As designed, AWS big difference with a standard CGI server is that there is only one executable. A CGI server has one executable for each request or so, this becomes a pain to build and to distribute when the project gets bigger. We will also see that it is easier with AWS to deal with session data.

AWS support also HTTPS (secure HTTP) using SSL. This is based on either OpenSSL or GNUTLS two Open Source SSL implementations.

Major supported features are:

- HTTP implementation
- HTTPS (Secure HTTP) implementation based on SSLv3
- Template Web pages (separate the code and the design)
- Web Services - SOAP based
- WSDL support (generate stub/skeleton from WSDL documents)
- Basic and Digest authentication
- Transparent session handling (server side)
- HTTP state management (client side cookies)
- File upload
- Server push
- SMTP / POP (client API)
- LDAP (client API)
- Embedded resources (full self dependant Web server)
- Complete client API, including HTTPS
- Web server activity log