From CommonJS Spec Wiki
STATUS: RATIFIED, FURTHER DISCUSSION
Web server to application interface
A well-defined interface for connecting web applications to web servers is a very powerful thing. This approach has enabled applications written with any Java framework, for example, to be deployed behind a Java server ("servlet container"). Additionally, the standard interface allows the creation of "middleware", or software that sits in between the server and the application. There are many useful applications for middleware (automatic application of site wide styling, caching and sessions, security).
- Common Gateway Interface (CGI). The base from most everything later derives. See RFC 3875. Still used widely, not performant.
- FastCGI. A performant minimal and very stable variant of CGI. Allows use of existing CGI code with minimal change. Note FastCGI in IIS support is very important to some folk.
- Java Servlets. One of the first language-specific interfaces.
- Web Server Gateway Interface (Python). Very successful interface, but experience has shown that it's not 100% ideal.
- Ruby Rack. An up and coming standard in Ruby that looks a lot like WSGI 2.0.
- Comparison of current WebServer APIs used by JS engines:
- 0.2: Proposal for JSGI specification: http://jackjs.org/jsgi-spec.html [ratified]
Level 0, Draft 1
- 0.3: Level 0, Draft 2