Jednoduché rozhraní společné brány - Simple Common Gateway Interface

The Jednoduché rozhraní společné brány (SCGI) je protokol pro rozhraní aplikací s HTTP jako alternativu k serverům CGI protokol. Je to podobné jako FastCGI ale je navržen tak, aby se dal snadněji analyzovat. Na rozdíl od CGI umožňuje dlouhodobému procesu služby pokračovat v poskytování požadavků, čímž se vyhne zpožděním v reakci na požadavky kvůli režii instalace (například připojení k databázi).

SCGI je protokol který definuje sdělení mezi webovým serverem a aplikačním serverem. To je na rozdíl od CGI, což je dřívější aplikace (brána ) rozhraní navržené tak, aby umožňovalo aplikačnímu programátorovi vyhnout se složitosti soketů a dlouhotrvajících servisních procesů, když je přijatelná špatná škálovatelnost a vysoká režie.

Protokol SCGI využívá skutečnost, že klient již analyzoval a ověřil požadavek HTTP, a kanonicky komunikuje požadavek se serverem SCGI a zároveň umožňuje aplikačnímu programátorovi vyhnout se analýze nejasností a okrajových případů protokolu. Tím se vyhnete komplikovaným pravidlům pro analýzu záhlaví a kombinování záhlaví RFC2616, což šetří významnou složitost procesu serveru SCGI.

Dějiny

Neil Schemenauer zveřejnil původní specifikaci protokolu SCGI z října 2001.[1] On vyvinul první implementace SCGI a původně je publikoval v dubnu 2002.[2]

Specifikace

Klient se připojuje k serveru SCGI přes spolehlivý protokol streamu, který umožňuje přenos 8bitových bajtů. Klient začíná zasláním žádosti. Když server SCGI uvidí konec požadavku, odešle zpět odpověď a ukončí připojení. Tento protokol specificky neurčuje formát odpovědi, ačkoli se obecně používají odpovědi HTTP ekvivalentní CGI.[poznámka 1]

Formát žádosti

Požadavek SCGI je zřetězení z síťový řetězec -kódované záhlaví a tělo. Odpověď SCGI je normální odpověď HTTP.

Každá hlavička se skládá z a dvojice název-hodnota, kde jsou jak název, tak hodnota řetězce zakončené nulou (C struny ). Hodnota může být prázdný řetězec, v takovém případě koncová null stále zůstává. Název ani hodnota nesmí obsahovat žádné vložené položky nulové bajty. Tyto úvahy jsou standardní pro řetězce C, ale často jsou matoucí pro programátory používané v jiných standardech pro zpracování řetězců.

Všechny poskytnuté záhlaví jsou zřetězené pak vytvoříte jednobajtovou sekvenci síťový řetězec -kódováno. Surové tělo, pokud existuje, je poté připojeno.

V záhlavích žádosti nejsou povoleny duplicitní názvy; RFC2616 -kompatibilní kombinování hlaviček[poznámka 2] se již muselo uskutečnit. Záhlaví prvního požadavku musí mít název „CONTENT_LENGTH“ a hodnotu, která je délkou těla v desítkové soustavě. Záhlaví požadavku „CONTENT_LENGTH“ musí být vždy k dispozici, i když je jeho hodnota „0“. Rovněž musí vždy existovat záhlaví požadavku se jménem „SCGI“ a hodnotou „1“. Standardní CGI proměnné prostředí by měly být v hlavičkách SCGI poskytovány kvůli kompatibilitě při převodu starších programů CGI na SCGI. Tělo (pokud existuje) uvedené v žádosti následuje za záhlaví; jeho délka je určena hlavičkou požadavku „CONTENT_LENGTH“.

Zatímco protokol SCGI izoluje programátora služby od některých úvah HTTP, různých podrobností (například interpretace oktetů těla zprávy podle záhlaví Transfer-Encoding, přičemž CONTENT_LENGTH je počet oktetů poté, co bylo tělo kódováno pro přenos atd. .) stále vyžadují znalost specifikace protokolu HTTP.

Příklad

Webový server (klient SCGI) otevře připojení a odešle zřetězení následujících řetězců do procesu služby (server SCGI):

       "70:" "CONTENT_LENGTH" <00> "27" <00> "SCGI" <00> "1" <00> "REQUEST_METHOD" <00> "POST" <00> "REQUEST_URI" <00> "/ hluboký nápad" <00> "," "Jaká je odpověď na život?"

Server SCGI odešle následující odpověď zpět na webový server:

       „Status: 200 OK“ <0d 0a> „Content-Type: text / plain“ <0d 0a> “„ <0d 0a> „42“

Server SCGI uzavře připojení.

Webové servery, které implementují SCGI

(tento seznam není úplný)

Jazykové vazby pro SCGI API

SCGI lze implementovat v jakémkoli jazyce, který podporuje síťové zásuvky a síťové struny. Následuje částečný seznam jazyků se známými vazbami SCGI:

Viz také

Aplikační / Gatway protokoly:

Hostitelé aplikace (specifické pro jazyk):

Poznámky

1.^ Specifikační dokument zveřejnil Neil Schemenauer dne 12. ledna 2006 jako veřejné dílo.
2.^ Kombinování hlaviček HTTP viz RFC2616 oddíl 4.2.

Reference

  1. ^ Schemenauer, Neil (30. října 2001). „SCGI: Jednoduchá alternativa rozhraní společné brány“. Archivovány od originál dne 3. 4. 2002.
  2. ^ "scgi-0.1.tar.gz". Rejstřík / software / soubory / scgi. MNX: MEMS a výměna nanotechnologií. 12. dubna 2002. Archivovány od originál dne 2002-10-20.

externí odkazy