CGI

La specifica CGI (Common Gateway Interface) è stata introdotta per abilitare e standardizzare l'interfaccia tra server Web e programmi esterni. Il CGI è un'interfaccia relativamente semplice, piattaforma e linguaggio indipendente, l'interfaccia standard per lo sviluppo delle applicazioni Web. I programmi che implementano lo standard CGI sono comunemente chiamati programmi CGI.

Lo scopo di CGI è quello di estendere le capacità di un server HTTP fornendo un quadro in cui un server HTTP può interfacciarsi con un programma specificato su URL. Il formato di URL consente di passare dei parametri al programma CGI. Sul lato server, l'interfaccia descrive come il programma viene avviato dal server HTTP e come i parametri del programma vengono passati utilizzando una combinazione di input standard e variabili d'ambiente. Descrive anche come le informazioni di output (come gli elementi HTML) vengono ritrasmesse al server HTTP usando lo standard output. Così, nella sua forma più semplice, un programma CGI può essere definito come un programma che:

  1. Può essere chiamato come programma eseguibile ed eseguito come processo figlio del server HTTP.
  2. È in grado di leggere dall'input standard.
  3. È in grado di accedere alle variabili di ambiente.
  4. È in grado di scrivere all'output standard.
  5. È in grado di accedere agli argomenti della riga di comando passati al programma.

L'amministratore controlla quali programmi CGI il sistema può eseguire utilizzando le direttive del server. Il server riconosce un URL che contiene una richiesta per un programma CGI, comunemente chiamato script CGI. (in tutta la documentazione utilizziamo i termini CGI programma e script CGI per significare la stessa cosa.) A seconda delle direttive del server, il server richiama quel programma per conto del client.

Il server supporta programmi CGI scritti in C++, REXX, ILE C, ILE RPG e ILE COBOL. Supporta anche più programmi CGI capaci di thread in tutte le lingue che supportano più thread.

I programmi CGI creati compilando il codice sorgente vengono eseguiti più velocemente rispetto ai programmi scritti in linguaggi interpretati come Net.Data® e i linguaggi di script PHP. Tuttavia, i programmi scritti nelle lingue di scripting tendono ad essere più facili da scrivere, mantenere e effettuare il debug.

Il supporto per CGI da parte di IBM HTTP Server for i include il supporto per IBM i - caratteristiche uniche che migliorano il modello di programmazione CGI nelle aree delle prestazioni, dell'alta disponibilità e del supporto delle transazioni. Le seguenti sezioni discutono le varie funzioni.

HTTP Server processi CGI

Una maggiore preoccupazione per le prestazioni CGI su altre piattaforme è il fatto che un programma CGI viene avviato su ogni richiesta del client Web. Questo include l'attività aggiuntiva del disco e del sistema operativo per creare il nuovo processo (lavoro). Abbastanza spesso l'inizializzazione del programma CGI, come la connessione ad un sistema di gestione del database, richiede anche un po' di tempo che aggiunge al tempo di risposta l'esperienza degli utenti con tali applicazioni.

Il IBM HTTP Server for i adotta un approccio diverso. HTTP Server mantiene un pool di processi figlio del server HTTP che viene utilizzato per eseguire i programmi CGI. I processi child non vengono terminati dopo che un programma CGI viene eseguito all'interno del processo. Inoltre, i processi child sono associati a un profilo utente e verranno eseguite in fase di esecuzione solo le richieste di programmi CGI che si eseguono sotto lo stesso profilo utente associato a un processo child esistente.

Alcune delle funzioni aggiuntive relative ai processi CGI includono:

  • La possibilità di specificare quanti processi child, e sotto quale profilo utente, deve essere pre - avviato quando il server Web inizia in modo che i client Web non incorrano la performance hit di avviare un nuovo processo di bambino CGI.
  • La possibilità di eseguire una richiesta CGI in un processo CGI pre - avviato, consentendo il caricamento del programma CGI e inizializzato alla startup del server. Questo supporto è vantaggioso per i programmi in esecuzione nei gruppi di attivazione denominati. Un programma CGI in esecuzione in un gruppo di attivazione denominato viene caricato e inizializzato una volta all'interno di un processo CGI.

Programmi CGI persistenti

Persistente CGI è un'estensione all'interfaccia CGI che consente a un programma CGI di mantenere una sessione con un client browser attraverso più richieste del browser. Questo consente di lasciare aperti i file, lo stato da mantenere e di eseguire lunghe transazioni di database da impegnare o roll-back in base alle azioni di fine utente.

Programmi CGI di alta disponibilità

I programmi CGI di alta disponibilità utilizzano le API per preservare le informazioni di stato. Le informazioni sullo stato possono accedere da diversi server IBM i che stanno partecipando come nodi cluster in un ambiente clustered, anche dopo un guasto o una commutazione del server HTTP Server o IBM i .

Nota: Pur mantenendo le informazioni sullo stato del programma CGI su più richieste è un concetto utilizzato sia da programmi CGI persistenti che da programmi CGI ad alta disponibilità, i meccanismi utilizzati dai due tipi di programmi sono diversi e un programma CGI di alta disponibilità non deve essere confuso con un programma CGI persistente.

Esecuzione di programmi AIX CGI

Il IBM HTTP Server for i è in grado di eseguire programmi AIX® CGI eseguendo il programma CGI nel IBM Portable Application Solutions Environment for i.

Oltre a eseguire programmi CGI AIX, IBM HTTP Server for i è in grado di eseguire programmi AIX che implementano il protocollo FastCGI. FastCGI è un'interfaccia tra server Web e applicazioni che combina alcune delle caratteristiche di prestazione dei moduli nativi del server Web con l'indipendenza dal server Web dell'interfaccia di programmazione CGI. Come i programmi CGI AIX, le applicazioni AIX FastCGI vengono eseguite nell'ambiente PASE for i.