FoxProでWeb Contents 環境を作成する。 2001年3月23日オブジェクト指向xBASE言語研究会 勉強会資料

概説
 インターネットサーバにおいてコンテンツ配信プログラムはPerl,PHP,Java等が代表的ですが、
FoxProでもこれらに代わるアプリケーションの実行環境を作成することが可能です。特に前述の
Perl/PHP/Java等はデータベースについては別途用意する必要がありますが、FoxProで作成する
場合は、DBFを利用する限りその必要性が全くありません。
 今回、解説する方法はCGIとISAPIによる方法です。ご存知のようにWeb環境はインターネット上
に接続されたサーバからクライアントの要求に応えHTML形式の文章データを返信することが主体と
なっています。サーバマシンではTCP/IPにより接続されたライン(ポート)を監視し、その要求によ
りHTMLを返信するHTTPDサーバが動いています。クライアントの要求に応じてサーバ側に保存されて
いるデータを適宜取り出すためには、さらにプログラムが動かなければなりませんが、それがCGIやI
SAPIと言われるものです。
CGIはEXE形式のプログラムをHTTPDが起動するようになっています。このため多数の要求に対して
1つ1つEXEを起動するようになるためメモリーやスピードも面でサーバに対する負荷が問題となります。
一方ISAPIはDLLで作成されておりDLLをHTTPDサーバが起動時に1つ読みこむだけで使い回しができます。
スピード面とメモリーの消費量からもこのほうがたいへん有利となっています。

@ PWS/IISをインストールする。
 HTTPDサーバとしてPersonal Web Server[PWS](あるいはIIS)を使用します。他のWindows用のHTTPDでも
ISAPI対応のものでしたら動作するものと思われます。PWSは、デフォルトではインストールされていないので
Windows CD-ROMからインストールします。インストール完了後、マシンの再立ち上げを行なえば自動的にPWSが
起動するようになっています。同時にIEが実行されますので、ここでIE[ツール]−[オプション]−[接続]の
設定を「LANで接続する」に変更します。
 次にタスクトレイにあるPWSのアイコンを右クリック−[プロパティ]から[発行]に「Webの発行は以下から」の
httpを参照しIEのナビゲーションフィールドに書きます。
例: http://コンピュータネットワーク名称/    あるいは
   http://localhost/
で default.asp が実行されたらPWSの設定は成功です。

A FoxCGIを実行する方法。
 Vfpcgi.exeを c:\Inetpub\wwwroot にコピーします。
{ c:\Program files\Microsoft Visual Studio\Vfp98\Tools\Inetwiz\Server\Vfpcgi.exe }
 次に、実験用に住所データ等が保存されたDBFがありましたら、そのデータファイルを c:\Inetpub\wwwroot に
コピーします。
 FoxProを起動し、コマンドウインドウで cd "c:\Inetpub\wwwroot" とタイプします。
コピーしたDBFをEXCLUSIVEでオープンし Modify Structにて検索対象フィールド(たとえばカナ名称フィールド)に
INDEXを設定します。変更を加えたらUSEでデータファイルを閉めます。
プルダウンメニューの[Tools]-[Wizard]-[All]-[WWW Search Page Wizard]を指定します。
Wizardをナビゲーションに沿って設定します。[Finish]で ストアするhtmファイル名称を聞いてきますので
 cgitest.htm にします。このとき小文字で書きましょう。
 HTMLエディターやホームページ作成ツールで c:\Inetpub\wwwroot に index.htm を作成します。
CGIプログラム起動リンクとして以下のように記述します。
<p><a href="cgitest.htm">CGIテストページの起動</a></p>
 タスクトレイのPWSアイコンを右クリック-[プロパティ]-[詳細オプション]で
 [ □既定のドキュメントを使用可能にする ] にチェックを付け、さらに[既定のドキュメント]に
 index.htm と記入します。(default.〜は除去します)
 FoxProのコマンドラインで
cd "c:\Program files\Microsoft Visual Studio\Vfp98\Tools\Inetwiz\Server" とタイプし、
続けて DO Server とタイプします。WWW Data Server Logウインドウが開きますので、
HTTP Server: / Scripts / Path: すべてに c:\Inetpub\wwwroot\ と記入します
(\はバックスラッシュで表現されますがタイプは\で行ないます)。
FoxProのウインドウを最小化にしてWWW DATA SERVERが常駐した状態にしておきます。
 IEを起動します。http://ネットワークコンピュータ名称/ でindex.htmが表示されます。
CGIテスト起動リンクをクリックするとtest.htmが表示されますのでTextフィールドに検索したい
データを入れてサーチボタンを押してみてください。

B ISAPIを実行する方法。(Win95/98/Me Personal Web Server)
 Foxisapi.dllを c:\Inetpub\scripts にコピーします。
{ c:\Program Files\Microsoft Visual Studio\MSDN98\98VS\1033\Samples\VFP98\Servers\Foxisapi\FoxIS }
 Foxisapi.iniを c:\Inetpub\scripts にコピーします。
{ c:\Program Files\Microsoft Visual Studio\MSDN98\98VS\1033\Samples\VFP98\Servers\Foxisapi }
 Odebug.prgを FoxProのHome()ディレクトリにコピーします。
{一般的に c:\Program Files\Microsoft Visual Studio\VFP98 }
 FoxProを起動して Foxis.pjx(プロジェクト)を開け Build COM(DLL)でコンパイルします。
{ c:\Program Files\Microsoft Visual Studio\MSDN98\98VS\1033\Samples\VFP98\Servers\Foxisapi\FoxIS }
 Html.htmを c:\Inetpub\wwwroot にコピーし isapitest.htm に名称を変更します。
{ C:\Program Files\Microsoft Visual Studio\MSDN98\98VS\1033\Samples\VFP98\Servers\Foxisapi }
 index.htmをHTMLエディター等で以下のようにISAPI起動ページへのリンク文を追加します。
<p><a href="isapitest.htm">ISAPIのテスト</a></p>
 IEを起動してISAPIの動作を確認しましょう。

C ISAPIを実行する方法。(Win2000 Internet Information Server)
 Foxisapi.dllを c:\Inetpub\scripts にコピーします。
{ c:\Program Files\Microsoft Visual Studio\MSDN98\98VS\1033\Samples\VFP98\Servers\Foxisapi\FoxIS }
 Foxisapi.iniを c:\Inetpub\scripts にコピーします。
{ c:\Program Files\Microsoft Visual Studio\MSDN98\98VS\1033\Samples\VFP98\Servers\Foxisapi }
 Odebug.prgを FoxProのHome()ディレクトリにコピーします。
{一般的に c:\Program Files\Microsoft Visual Studio\VFP98 }
 FoxProを起動して Foxis.pjx(プロジェクト)を開け Build EXE(COM)でコンパイルします。
{ c:\Program Files\Microsoft Visual Studio\MSDN98\98VS\1033\Samples\VFP98\Servers\Foxisapi\FoxIS }
 Html.htmを c:\Inetpub\wwwroot にコピーし isapitest.htm に名称を変更します。
{ C:\Program Files\Microsoft Visual Studio\MSDN98\98VS\1033\Samples\VFP98\Servers\Foxisapi }
 マイコンピュータの管理ツール〜インターネットサービスを起動してルートの
コンピュータのアイコンを右クリックでISAPIのキャッシュをはずします。
 マイコンピュータ〜管理ツール〜パーソナルWEBマネージャの詳細画面にて
/Scriptsをワンクリックし プロパティの編集ボタンを押します。
実行アクセス権で
□スクリプト及び実行可能ファイル にチェックをつけます。
 index.htmをHTMLエディター等で以下のようにISAPI起動ページへのリンク文を追加します。
<p><a href="isapitest.htm">ISAPIのテスト</a></p>
 IEを起動してISAPIの動作を確認しましょう。

D FoxISAPIのバージョンによる問題
 FoxISAPI.DLLはVFP5.0(Ver1.0)版 VFP6.0版(1998年タイムスタンプ Ver1.1) VFP6.0SP3(2000年1月タイムスタンプ)
VFP6.0 VS-SP5(2000年7月タイムスタンプ)が存在しますが、ActiveDocumentsから全角データを生で送信する
場合は、VFP6.0の1998年タイムスタンプのものを使用します。
最新のバージョンはパラメータにダブルバイトを送るとエラーになります。(U.S.Microsoftに報告済み)

戻る