Common Gateway Interface

Common Gateway Interface (CGI) er en protokoll for å koble ekstern programvare med en tjenermaskin, vanligvis kalt en nett-tjener. Dette lar tjeneren sende forespørsler fra en klients nettleser til det eksterne programmet. Nett-tjeneren kan deretter sende svaret fra programmet til nettleseren.

CGI-systemet er et resultat av diskusjoner på epostlister mellom Rob McCool, John Franks, Ari Luotonen, George Phillips og Tony Sanders i 1993. De tidlige spesifikasjonene, og en referanseimplementasjon, ble laget av Rob McCool, da han arbeidet på NCSA. Implementasjonen ble gjort på en NCSA HTTPd nettjener ved å bruke variabler til å lagre parametre som ble sendt fra nettjenerens programkjøringsdel, og gitt til CGI-systemet som et uavhengig program.

Wikiene er eksempler på CGI-program. Nettleseren spør etter informasjon, tjeneren vil gi informasjon (hvis den har), gjøre denne informasjonen om til html-kode og sende resultatet tilbake til nettleseren – eller sende en side som ber brukeren om å lage resultatet. Alle wiki-operasjoner styres av dette ene programmet.

Fra nettjenerens synspunkt virker CGI på den måten at visse adresser (for eksempel http://www.example.com/wiki.cgi) er definert som adresser CGI-programmet skal lage. Når tjeneren mottar en forespørsel til en passende nettadresse, med data som klienten sendte, blir CGI-programmet kjørt. Tjeneren gir passende hode-del til resultatet, som sendes tilbake til klienten.

Dette er en teknologi som er veldig tung for nettjeneren, fordi det vanligvis bruker en egen, ny kopi av CGI-programmet i hver eneste forespørsel klientene gjør. Dette har inspirert mer effektive teknologier som Perl, ASP, JSP og PHP som lar script-tolkere integreres inni nett-tjenere som moduler. Dermed unngår man å hele tiden måtte laste inn og starte tolkeprogram.

Andre måter å utføre script-tolking

[rediger | rediger kilde]

Dét å måtte kjøre ut en ny prosess for å kompilere programkoden kan endres hvis CGI-koden endres litt. Ett eksempel på en slik endring er FastCGI, andre eksempler inkluderer program-akseleratorer som forhåndskompilerer nettscriptene slik at nye forespørsler om scriptene sendes til den forhåndskompilerte koden istedenfor å kompilere koden på nytt hver gang scriptet kalles. Når sriptene endres blir ofte akselerator-mellomlagrene tømt for å sikre at det endrede scriptet kalles istedenfor det gamle.

En annen tilnærming til scriptspråk er å bygge scriptkompilatoren direkte inn i nett-tjeneren slik at den kan utføres uten å lage en ny prosess. Apache nett-tjenersystemet har mange moduler som gjør dette, for eksempel mod_perl, mod_php, mod_python, mod_ruby, og mod_mono.

Eksterne lenker

[rediger | rediger kilde]