Pokud budete psát web aplikace v Delphi (píši web aplikace, jelikož normální stránky nemají zas tak moc cenu), máte několik možností jak výsledek zveřejnit.
V závislosti na použitém frameworku (tj. např. UniGui, Webbroker nebo WebSnap, IntraWeb neboli VCL for the Web, Raudus) máte různé možnosti.
Nejnovější možností je Thinfinity® VirtualUI, kdy přidáním jednoho řádku do VCL projektu je možno překlopit celou aplikaci jako web aplikaci. Zkuste si tam online demo FishFact.
Standalone exe http(s) server
V podstatě všechny nabízejí možnost kompilace jako samostatné exe fungující jako webový server - prostě zákazník dostane exe a ten si spustí. Všechny (vyjma Raudusu) používají jako komunikační knihovnu Indy. Navíc Delphi XE2 nabízejí v rámci úvodního wizardu pro Webbroker i možnost HTTPS, podle mne bude fungovat HTTPS i na Delphi XE (jen bez wizardu).
Ještě poznámka: nic vám nebrání i v rámci normální aplikace integrovat malý http server (podobně to dělá uTorrent, kdy se přes něj dá vzdáleně program ovládat, nebo aspoň zjišťovat stav hlavního programu). Ideální na to je Indy nebo Synapse (součástí zdrojáků je demo http server, https server je na webu).
Do této kategorie spadá i samostatný server v rámci služby - liší se jen hlavním voláním.
CGI a FastCGI
Klasický způsob. V našem případě exe aplikace (ale obecně to bývá např. i perlovský skript), která jistým způsobem dostane předaný požadavek od webového serveru (Apache, IIS nebo cokoliv jiného) a vrátí odpověď. Původně se program vždy při požadavku spustil, provedl a ukončil. FastCGI aplikaci neukončuje, ale po obsloužení požadavku využije stejný proces dále. Aktuálně není FastCGI podporováno, ale bylo (Jean-Marie Babet ve foru)
I believe we dropped our support for FastCGI (pro webbroker) a while ago
(around the same time we dropped support for Apache, I believe).
So, out of the box, there's no support for FastCGI:(
CGI je podporováno velmi dobře. Na druhou stranu pokud se Vaše aplikace připojuje např. k DB, tak máte problém, jelikož při každém požadavku se musí program k DB připojit, což může chvilku trvat. Na druhou stranu takový fossil je cgi ve formě jedné binárky a funguje to perfektně a všude.
Pokud potřebujete tak konfigurace CGI na IIS.
Ve zkratce se jedná o 3 kroky v konzoli IIS, ale nejdříve zkontrolujte zda máte vše potřebné nainstalováno
Zvolte CGI a ISAPI.
Nyní spustíte konfiguraci IIS
Povolení vašeho programu na serveru
Toto je společné i pro ISAPI
Vytvoření virtuálního adresáře
Nyní po kliknutí na mapování
a posledním krokem je nastavení pro virtuální adresář spouštění, přes volbu Upravit oprávnění funkce.
ISAPI
ISAPI je rozšíření IIS. V podstatě nic rychlejšího není. Jedná se o DLL, kterou IIS (připadně Apache s modulem mod_isapi) přímo využívá. Výhodou je, že Váš program není ukončován, ale je držen - tj. např. připojení k DB může být také otevřeno.
Konfigurace je podobná jako CGI. Podrobný návod na konfiguraci ISAPI na IIS.
Jen upozorním na jednu zradu a to je 32bit ISAPI DLL na 64bit IIS. Vyberte Fondy aplikací (neboli Application Pools) a pro DefaultAppPool zvolte Upřesnit nastavení
Závěr
Vyberte si co Vám vyhovuje. První způsob je podle mne kompaktní, ale musíte mít určen konkrétní port. Na druhou stranu nejste vázán na žádný jiný program, ani v případě IIS na licenční podmínky. CGI je často povolena i na hostingu a ISAPI je řešení pro výkoné použití.
Z hlediska ladění je nejvýhodnější první způsob, ale nic Vám nebrání jednoduše podporovat všechny možnosti, přičemž 99% kódu sdíleno.
Z hlediska budoucnosti se rýsují dvě varianty: Atozed mají ve vývoji wrapper pro ISAPI pro využití s ASPX a s příchodem kompilátoru pro Linux (nebo v případě použití Lazaruse) budete moci používat Apache i na Linuxu s tím, že se určitě vrátí podpora pro moduly Apache (myslím, že byla od Delphi 6, ale v D2007 už není).
Update: moduly Apache jsou od cca XE6 zpět.
Pro template je pěkný Delphi Razor.