Embedded HTTP server: Difference between revisions

Content deleted Content added
Known implementations: edited link for RomPager
m Reverted edits by 109.75.55.192 (talk) (AV)
 
(62 intermediate revisions by 40 users not shown)
Line 1:
{{externalMore linkscitations needed|date=FebruaryAugust 20112022}}
[[File:2453 IP video server.jpg|thumb|148x200px|right|Front and back views of a small IP video server (Sensoray 2453S) with audio and composite video inputs served via [[HTTP server]] and other protocols.]]
{{Unreferenced|date=June 2008}}
An '''embedded HTTP server''' is a component of a software system that implements the [[Hypertext Transfer Protocol|HTTP]] protocol. Examples of usage within an application might be:
 
An '''embedded HTTP server''' is an [[HTTP server]] used in an [[embedded system]].
* 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]]
 
The HTTP server is usually implemented as a [[software component]] of an [[Application software|application]] (embedded) system that controls and/or monitors a machine with mechanical and/or electrical parts.<ref>{{cite journal |title=Edge Computing Using Embedded Webserver with Mobile Device for Diagnosis and Prediction of Metastasis in Histopathological Images |year=2021 |doi=10.1007/s44196-021-00040-x |last1=Johny |first1=Anil |last2=Madhusoodanan |first2=K. N. |journal=International Journal of Computational Intelligence Systems |volume=14 |s2cid=244923748 |doi-access=free }}</ref>
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.
The HTTP server implements the [[Hypertext Transfer Protocol|HTTP]] [[Communications protocol|protocol]] in order to allow communications with one or more local or remote [[User (computing)|users]] using a [[Web browser|browser]]. The aim is to let users to interact with information provided by the embedded system ([[Web user interface|user interface]], data monitoring, [[Data logger|data logging]], data configuration, etc.) via [[Computer network|network]], without using traditional peripherals required for local user interfaces ([[Display device|display]], [[Computer keyboard|keyboard]], etc.).<ref>{{cite web |title=Administering Security for Oracle HTTP server |url=https://docs.oracle.com/en/middleware/fusion-middleware/web-tier/12.2.1.4/secure-ohs/administering-security-oracle-http-server.pdf}}</ref>
* HTTP is seldom blocked by firewalls and intranet routers.
 
* HTTP clients (e.g. [[web browser]]s) are readily available with all modern computers.
In some cases the functionalities provided via HTTP server allow also program-to-program communications, e.g. to retrieve data logged about the monitored machine, etc.
* There is a growing tendency of using embedded HTTP servers in applications that parallels the rising trends of home-networking and [[ubiquitous computing]].
 
== Usages ==
Examples of usage within an embedded application might be (e.g.):{{citation needed|date=December 2021}}
* Toto provide a [[thin- client]] interface for a traditional application..;
* Toto provide [[indexingDatabase index|index]]ing, [[reportingreport]]ing, and [[debugging]] tools during the development stage.;
* Toto 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 [[Serialization|data format.]];
* Toto develop a [[web application]].
 
== Advantages ==
There are a few advantages to using HTTP to perform the above:{{citation needed|date=December 2021}}
* HTTP is a well studied cross-platform protocol and there are mature implementations freely available.;
* HTTP is seldom blocked by [[Firewall (computing)|firewall]]s and [[intranet]] [[Router (computing)|router]]s;
* HTTP clients (e.g. [[web browser]]s) are readily available with all modern computers.;
* Therethere is a growing tendency of using embedded HTTP servers in applications that parallels the rising trends of [[Home network|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: are the following ones.{{citation needed|date=December 2021}}
* "Small" [[Random-access memory|RAM]] and [[Read-only memory|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[[Web page|page]]s from [[Application software|application]] [[Computer memory|memory]] if there is no [[file system]].
* [[Modular programming|Modularity]].
* Single [[Thread (computing)|thread]] and [[Multithreading (software)|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 [[Java Virtual Machine|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 [[Scheduling (computing)|priority]] [[Task (computing)|task]].
 
== Known implementations ==
*[http://barracudaserver.com Barracuda Embeddable Application Server] by [http://realtimelogic.com/ Real Time Logic] is provided as a "C" source code library. Applications are designed in the Lua scripting language.
*Inproc WebServer by [http://www.dcomlab.ru 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 [http://webserver.codeplex.com]. Webserver coded in C#, works with all .Net 2.0 applications.
*[http://code.google.com/p/mongoose/ Mongoose]: Embeddable web server written in C.
*[http://services.cnoc.nl/lazarus/index/fclweb 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.
*[http://lnet.wordpress.com 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.
* [http://www.jibble.org/miniwebserver/ 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.
*[http://www.qnx.com/developers/docs/6.3.0SP3/neutrino/utilities/s/slinger.html QNX Slinger Embedded Web Server] from [http://www.qnx.com/ 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).
*[http://www.allegrosoft.com/rpproduct.html RomPager Embedded Web Server] by [http://www.allegrosoft.com/ Allegro Software] is designed for limited resource environments and is available as an ANSI-C source code library.
* [http://libre.adacore.com/libre/tools/aws/ 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 (programming language)| Ada]], and it is published under the [[GPL | GPL License]].
 
== See also ==
* [[Comparison of web serversserver software]]
* [[Comparison of lightweight webapplication servers]]
* [[Server (computing)]]
* [[HTTP server]]
* [[Web server]]
 
==References==
[[Category:Web server software| ]]
{{Reflist}}
 
== External links ==
{{software-type-stub}}
* [https://www.gnu.org/software/libmicrohttpd/ libmicrohttpd] contains an extensive list of embedded HTTP server libraries towards the bottom of the page
{{network-software-stub}}
* [https://www.keil.com/pack/doc/mw/Network/html/group__net_h_t_t_p___func.html Example: functionalities of an embedded HTTP server component]
 
[[frCategory:Serveur Web embarquéserver software| ]]
[[Category:Embedded systems]]