VCLforWeb(IntraWeb)でStandAloneモードとISAPIモードを切り替える方法
|
6 |
IntraWebChangeStdAlone-ISAPI |
動作確認 |
Delphi2007 |
更新日 |
2007/11/19(月) |
IntraWeb (2007版からは VCL for Web と名称変更) には
Webアプリケーションを作成する
[StandAlone Application]、[ISAPI Extension]、
[Service Application]というモードがあります。
[StandAlone Application]は、
Windowsアプリケーションが起動して、
このプログラムがHTTPでソケット通信をすることでWebサーバープログラムになり
それがWebアプリケーションになるモードです。
[ISAPI Extension]は
MicrosoftのIISというWEBアプリケーションサーバーで動作する
ISAPI用DLLを作成するモードです。
ライセンスの面で複雑なことになっているのですが
BDS2006のPro版の場合
[StandAlone Application]
ローカルPCからだけアクセス可能なWEBアプリケーション
つまりテスト動作にしか使えない。
[ISAPI Extension]
MicrosoftのIISサーバーで動作するISAPIのDLL形式の
WEBアプリケーション、Release版にすることが可能。
[Service Application]
Pro版では使えない。
D2007 for Win32の場合
[StandAlone Application]
5接続だけ許容できる、WEBアプリケーション。
社内運用とかだけに使えるかもしれない。
[ISAPI Extension]
Pro版では使えない。
[Service Application]
Pro版では使えない。
2007/11/19(月)現在
上記のようになっています。
残念ながら、D2007ではPro版ではVCL for WEBでの
Webアプリケーション開発は、制限が大きすぎてやりにくくなってしまっていますが
BDS2006の場合では
[StandAlone Application]と[ISAPI Extension]を切り替えて使用することができます。
わざわざ切り替えて使うメリットが何かあるかというと
[StandAlone Application]を作成すると
アプリケーションが起動して
ツールバー左の地球のボタンを押すとブラウザが起動してWEBアプリケーションが動作します。
これがWEBアプリケーションのインストールを不要にして
動作確認を行う際には非常に使い勝手のよい便利なモードなのですが
上で記述したとおり、BDS2006Proに付属のIntraWebには
『自分のPCからしかアクセスできない。』という
非常に致命的な制限があります。
このため、[StandAlone Application]はWEBアプリケーションの動作テストに使い、
リリースには[ISAPI Extension]を使うと、アクセス制限がなく
便利に使えるわけです。
通常は新規作成の[Intraweb Application Wizard]で指定して作るので
二つのモードは、切り替えはできないように見えます。
そこで、最も簡単なWebアプリケーションを作成して
IntraWebアプリケーションのソースを比較してみました。
IntraWebでは初期ページを1ページ作成すると、次のファイルができます。
これは[StandAlone Application]でも[ISAPI Extension]でも同じです。
Project1.dpr
ServerController.dfm
ServerController.pas
Unit1.dfm
Unit1.pas
UserSessionUnit.dfm
UserSessionUnit.pas
この二つのソースコードを比較すると異なるのは
Project1.dpr
プロジェクトソースファイルだけです。
ということで、この二つを別々に用意しておけば
切り替えて使える。ということです。
このファイルの違いを記述しておきます。
────────────────────
//[StandAlone Application]のProject1.dpr
program Project1;
uses
Forms,
IWMain,
Unit1 in 'Unit1.pas' {IWForm11: TIWAppForm},
ServerController in 'ServerController.pas' {IWServerController: TIWServerControllerBase},
UserSessionUnit in 'UserSessionUnit.pas' {IWUserSession: TIWUserSessionBase};
{$R *.res}
begin
Application.Initialize;
Application.CreateForm(TformIWMain, formIWMain);
Application.Run;
end.
────────────────────
//[ISAPI Extension]のProject1.dpr
library Project1;
uses
ISAPIApp,
IWInitISAPI,
Unit1 in 'Unit1.pas' {IWForm11: TIWAppForm},
ServerController in 'ServerController.pas' {IWServerController: TIWServerControllerBase},
UserSessionUnit in 'UserSessionUnit.pas' {IWUserSession: TIWUserSessionBase};
{$R *.RES}
exports
GetExtensionVersion,
HttpExtensionProc,
TerminateExtension;
begin
IWRun;
end.
────────────────────
このファイルを別名で用意しておくこと、つまり
[StandAlone Application]としては、testProject1.dprを用意して
[ISAPI Extension]としては、Project1.dprを用意して
各々コンパイルをすると
作成した内容は同じで、作成されるファイルが
testProject.exe か Project.dll を区別することで
テスト用とリリース用のWEBアプリケーションを
作り分けすることができます。
BDS2006の場合には、便利に使ってください。
D2007でもエンタープライズ版などでは
このテクニックが利用できます。
|