wwwサーバ上に、SQLのデータベースが置かれているとしましょう。
wwwのユーザが、このデータベース上のデータを利用しようと思っても、
データベース側はSQL言語しか理解しませんし、wwwクライアント側はHTML言語
しか理解しません。この二つを仲立ちするプログラム、例えば、SQLでの
検索結果をHTML言語で書き換えて、ユーザがNetscapeで読めるようにする
プログラムが必要です。
このように、wwwのユーザが読めないデータを、HTMLのように、wwwのユーザが読める
データに変換するプログラムのことを Gateway と呼んでいます。
「ユーザが読めないデータ」と言いましたが、それは何かのファイルやデータ
といった実体のあるものである必要はありません。何もないところからでも
HTMLのドキュメントを生成するプログラムも、Gateway と呼んでいます。
このあたりから、もとの Gateway という言葉の意味は失われてゆきます。
最終的には、何はともあれ、wwwのviewerが解釈できるドキュメントを
生成するプログラムは、全て Gateway であるということになります。
Media type に基づくexternal viewer起動のメカニズムは、クライアントが、 外部のプログラムを呼び出す時に利用されますが、これとの比較で言うと、 CGIは、wwwサーバが、外部のプログラムを呼び出すときに利用されます。 サーバから呼び出されるプログラムを Gateway と呼んでいます。 別の言い方をすれば、CGIは、wwwサーバが、wwwサーバが解釈できるデータを 出力するGatewayプログラムを呼び出す、共通の仕様を定めたものです。