content management
open source source
  ZAPYTAJ O OFERTĘ MAPA SERWISU  polski  english
 WebStyle | Internet i Nowe Technologie - Encyklopedia |
  
content management content management
content management
 DESIGN / BRANDING DESIGN . BRANDING  CONTENT MANAGEMENT CONTENT MANAGEMENT  MULTIMEDIA MULTIMEDIA  CONSULTING CONSULTING
agencja
Wielka Encyklopedia Internetu i Nowych Technologii Online

HomeopenNETOPEDIAsourceWebdevelopingsourceCGI (Common Gateway Interface)

Webdeveloping
 [ - ]  [ + ]
 netopedia  
Webdeveloping
Webdesign
Open Source
eBiznes
eCommerce
eMarketing
Multimedia
WWW
Technologie mobilne
Protokoły i technologie
Sieci komputerowe
Bezpieczeństwo | Hacking
Software
Hardware
Internet w firmie
Społeczeństwo informacyjne
Cyberkultura
Firmy | Organizacje

CGI (Common Gateway Interface)

Standard interfejsu służącego wymianie informacji między »serwerami WWW a zewnętrznymi programami. CGI to najstarszy sposób tworzenia interaktywnych stron WWW i dostępu do baz danych za pomocą przeglądarki WWW.

CGI definiuje komunikację pomiędzy graficznym interfejsem użytkownika (np. stroną WWW), programem CGI uruchomionym na odległym komputerze i zasobami informacyjnymi (np. bazami danych) odległego komputera. Z kolei zaimplementowana w serwerze obsługa standardu CGI pozwala mu nadzorować wszystkie operacje - serwer staje się wówczas bramą (ang. gateway) do danego źródła informacji. Obecnie dostępna wersja standardu CGI opatrzona jest numerem 1.1.

Sposób na dynamiczne strony WWW

CGI pozwala realizować to, czego nie można osiągnąć za pomocą samego tylko języka »HTML i protokołu HTTP. Na podstawie wywołania ze strony WWW serwer uruchamia zewnętrzny program i przekazuje do niego parametry (zmienne środowiskowe) otrzymane z przeglądarki użytkownika. W kolejnym kroku program przetwarza otrzymane parametry i zwraca wynik w postaci strony HTML, która wysyłana jest do klienta. Dzięki takiemu rozwiązaniu możliwa jest interakcyjna wymiana danych na drodze serwer-przeglądarka i tworzenie dynamicznie zmieniających się stron WWW.

Przykłady zastosowań

Witryny wzbogacone o CGI są zdolne pobierać informacje od użytkowników, przetwarzać je, a następnie zwracać rezultaty tych działań. Przykładami zastosowań są generowanie "w locie" odpowiedzi na wypełniane przez użytkownika formularze, interfejsy w postaci stron WWW służące do przeszukiwania baz danych oraz wszelkiego rodzaju liczniki odwiedzin, statystyki stron, księgi gości, wewnętrzne liczniki wyświetleń bannerów, itp. Także usługi dużej części wyszukiwarek opierają się na skryptach CGI.

Wady CGI

Najpoważniejszą wadą programów CGI jest ich niewielka wydajność. Każde wywołanie CGI ze strony WWW zmusza serwer do uruchomienia programu, przekazania parametrów, odczekania na zakończenie programu, pobrania i wysłania wyników jego działania. Czasochłonność wykonania tych wszystkich operacji sprawia, iż programy CGI tworzone są w postaci niewielkich modułów realizujących proste, pojedyncze zadania. W przypadku systemów opierających się na wielu programach CGI dochodzą do tego trudności z synchronizacją pracy poszczególnych modułów. Z tych powodów stosowanie CGI zalecane jest jedynie w przypadku mniejszych projektów.

W czym tworzyć CGI?

CGI nie jest - jak często się sądzi - oddzielnym językiem programowania. Programy lub skrypty CGI tworzy się przy pomocy innych popularnych języków - najczęściej jest to C/C++, Java, Visual Basic, Fortran oraz języki skryptowe »Perl, »TCL i polecenia powłoki uniksowej. Warunkiem jest, aby dane były pobierane i wysyłane z zachowaniem reguł określonych przez standard CGI oraz aby kod wynikowy (w przypadku programów kompilowanych) lub skrypt można uruchomić w systemie, pod kontrolą którego pracuje host.

Do ich testowania programów CGI należy zaopatrzyć się w oprogramowanie serwera WWW (np. darmowego Apache), które umożliwi uruchamiania tego typu programów.

Nieco praktyki

Programy i skrypty CGI przechowywane są w katalogu /cgi-bin, natomiast ich źródła (naturalnie tylko programów podlegających kompilacji) - w katalogu /cgi-src. Oddzielna lokalizacja programów CGI to z jednej strony rodzaj zabezpieczenia przed niepożądanymi "efektami" działania skryptów użytkowników posiadających konta na danej maszynie (do katalogu /cgi-bin dostęp powinien mieć jedynie administrator serwera - i tylko on, na życzenie posiadacza witryny, może umieścić tam program CGI), z drugiej - wskazówka dla serwera WWW, że dany plik należy uruchomić a nie wysłać "taki, jaki jest" do przeglądarki.

Przekazanie danych do programu CGI może odbywać się za pośrednictwem wypełnianego na stronie formularza lub poprzez kliknięcie hiperłącza. W pierwszym przypadku przesyłane są zmienne systemowe, a w drugim - parametry stanowiące rozszerzenie URL-a. Z punktu widzenia autora strony WWW konieczne jest umieszczenie w kodzie HTML adresu programu CGI - np. w części definiującej formularz:

W tym przypadku po wypełnieniu przez użytkownika formularza pobrane z niego dane zostaną wysłane do serwera o adresie www.firma.com. Uruchomi on jako nowy proces skrypt test.pl (rozszerzenie .pl wskazuje na program napisany w języku Perl) przekazując mu jednocześnie dane z formularza. Po przyjęciu informacji program CGI powinien wygenerować i wysłać użytkownikowi stosowną odpowiedź - dokument potwierdzający zaakceptowanie danych, rezultaty wyszukiwania, etc.

Przyszłość CGI

Skrypty i programy CGI można dzisiaj spotkać w wielu witrynach - jest to pierwsza i tym samym dobrze opanowana przez programistów technologia. Jednak pojawienie się nowych, wydajniejszych techniki tworzenia dynamicznych witryn internetowych zepchnęło CGI na dalszy plan. Obecnie coraz częściej wykorzystywane są konkurencyjne ASP i PHP, ColdFusion, »serwlety, natomiast CGI sporadycznie stosuje się jeszcze w mniejszych projektach.

zobacz również: ASP, FastCGI, HTTP, PHP, serwer WWW, CGI (Common Gateway Interface)


CGI (Common Gateway Interface)CGI na stronach W3C

CGI (Common Gateway Interface)The Common Gateway Interface

CGI (Common Gateway Interface)CGI Directory

aktualizacja: 08/12/2003

  top top
© 2000-2008 WebStyle Systems  powered by eZ publish Open Source CMS