Embedded HTTP server

This is an old revision of this page, as edited by 173.48.37.196 (talk) at 17:56, 3 September 2011 (Known implementations: edited link for RomPager). The present address (URL) is a permanent link to this revision, which may differ significantly from the current revision.

An embedded HTTP server is a component of a software system that implements the HTTP protocol. Examples of usage within an application might be:

  • To provide a thin-client interface for a traditional application..
  • To provide indexing, reporting, and debugging tools during the development stage.
  • To implement a protocol for the distribution and acquisition of information to be displayed in the regular interface — possibly a web service, and possibly using XML as the data format.
  • To develop a web application

There are a few advantages to using HTTP to perform the above:

  • HTTP is a well studied cross-platform protocol and there are mature implementations freely available.
  • HTTP is seldom blocked by firewalls and intranet routers.
  • HTTP clients (e.g. web browsers) are readily available with all modern computers.
  • There is a growing tendency of using embedded HTTP servers in applications that parallels the rising trends of home-networking and ubiquitous computing.

Typical requirements

Natural limitations of the platforms where an embedded HTTP server runs contribute to the list of the functional requirements of the embedded, or more precise, embeddable HTTP server. Some of these requirements:

  • "Small" RAM and ROM footprint. The exact size depends on the system, but in many cases anything over several megabytes is not embeddable.
  • Minimal CPU utilization.
  • Cross compilation support for multiple CPU and operating system combinations.
  • Easy integration with an existing application, including static linking with the operating system and application.
  • Serving pages from application memory if there is no file system.
  • Modularity.
  • Single thread and multi-thread support.

For every specific project requirements can vary significantly. For example, ROM and RAM footprints can be very serious constraint and limit the choices of the system designer. C++ or JVM availability for the system can be another constraint. Frequently performance is an issue, because typical embedded systems run multiple simultaneous tasks and an HTTP server is only one of them and may be configured as a low priority task.

Known implementations

  • Barracuda Embeddable Application Server by Real Time Logic is provided as a "C" source code library. Applications are designed in the Lua scripting language.
  • Inproc WebServer by DComLab. Single dll COM object, exposes ole-automation and IDispatch interfaces. Gives ability even to scripting languages to handle web requests with almost no effort.
  • C# Webserver [1]. Webserver coded in C#, works with all .Net 2.0 applications.
  • Mongoose: Embeddable web server written in C.
  • EmbWeb package for Lazarus, RAD IDE for Free Pascal Compiler (deprecated, use fppkg version instead).
  • fcl-web package from standard distribution of Free Pascal, has HTTP server class.
  • lnet package for Lazarus and/or Free Pascal, has HTTP server component for visual development, also available to be used from code as standard Object Pascal class.
  • Java Mini Web Server is a very small standalone web server written in Java. It is packaged in a jar file with size of 4KB and may also be used within your own Java programs.
  • QNX Slinger Embedded Web Server from QNX The slinger utility is an HTTP server for resource-constrained environments. Slinger is compliant with the CGI 1.1 and HTTP 1.1 standards, and provides support for dynamic HTML via Server Side Includes (SSI).
  • RomPager Embedded Web Server by Allegro Software is designed for limited resource environments and is available as an ANSI-C source code library.
  • AWS or Ada Web Server. AWS is a complete framework to develop Web based applications. The main part of the framework is a small yet powerful embedded Web server; around this Web server a lot of services have been developed : SOAP, WSDL, Ajax, HotPlug modules, SSL, virtual hosting, etc. to name a few. AWS is written in Ada, and it is published under the GPL License.

See also