Embedded HTTP server
![]() | This article's use of external links may not follow Wikipedia's policies or guidelines. (February 2011) |
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[disambiguation needed], 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 non-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 a 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 a HTTP server is only one of them and may be configured as a low priority task.