Možnosti publikování web aplikací z Delphi

vložil Radek Červinka 13. října 2012 00:18

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

nastavení

Zvolte CGI a ISAPI.

Nyní spustíte konfiguraci IIS

limit

Povolení vašeho programu na serveru

povolit

Toto je společné i pro ISAPI

Virtuální adresář

Vytvoření virtuálního adresáře

Nyní po kliknutí na mapování

Mapování

a posledním krokem je nastavení pro virtuální adresář spouštění, přes volbu Upravit oprávnění funkce.

Spouštění

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í

32bit ISAPI DLL na 64bit IIS

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.

Tagy: , , , , ,

Návody

Komentáře

22.10.2012 15:24:06 #

Peter Wolf

Pre zaujemcov pouzitia WebSnap davam do pozornosti bug reporty, ktore som nedavno nahlasil:
http://qc.embarcadero.com/wc/qcmain.aspx?d=109268
http://qc.embarcadero.com/wc/qcmain.aspx?d=109473
http://qc.embarcadero.com/wc/qcmain.aspx?d=109475

Obzvlast zakerny je QC 109473 a pre pouzivatelov D7 (alebo inych verzii delphi, kde TBookmark = Pointer) ani QC 109475 nie je dobra sprava.

Peter Wolf

Komentování ukončeno

Naše nabídka

MVP
Ing. Radek Červinka - Embarcadero MVP
profil na linkedin, Twitter:@delphicz

Nabízím placené poradenství a konzultace v oblasti programování a vývoje SW.
Dále nabízíme i vývoj speciálního software na zakázku.

Neváhejte nás kontaktovat (i ohledně reklamy).

love Delphi

O Delphi.cz

Delphi je moderní RAD nástroj podporující tvorbu nativních aplikací pro platformu Win32, Win64, Mac OSX, Linux a na iPhone a Android.

Delphi.cz je nezávislý portál pro uživatele Delphi. Portál není koncipován pro úplné začátečníky, i když i ti se zde nebudou nudit, ale spíše na programátory, kteří již něco znají a chtějí své znalosti dále rozvíjet a sledovat novinky.

Poslední komentáře

Comment RSS

Dle měsíců