Az előadás letöltése folymat van. Kérjük, várjon

Az előadás letöltése folymat van. Kérjük, várjon

SB Eszter SB Application Engine Peter Verhás 2002 április 9.

Hasonló előadás


Az előadások a következő témára: "SB Eszter SB Application Engine Peter Verhás 2002 április 9."— Előadás másolata:

1 SB Eszter SB Application Engine Peter Verhás 2002 április 9.

2 SB Tartalom Mi az ESBAP Megvalósítás CGI modul MT modul

3 SB Mi az Eszter SB Application Engine? HTTP szerver, amelyik Tartalmazza a ScriptBasic értelmezőt Külső támogató modulok: –CGI –MT

4 SB Hogyan működik? Beolvassa a konfigurációját Naplózó szálakat indít Munka értelmezőket futtat szálakon Hallgatódzik porton Bejövő kapcsolatra –új szálat indít –Feldolgozza a http kérés első maximum 32K-ját –Értelmezőt indít

5 SB Megvalósítás: HTTPD modul int httpd(int argc, char *argv[], int (*AppInit) (int argc, char *argv[], pHttpdThread pHT, void **AppData), int (*AppStart)(void **AppData), void (*HttpProc)(pHttpdThread pHT, pThreadData ThisThread));

6 SB Paraméter függvények AppInit konfiguráció beolvasás AppStart szálak elindítása HttpProc kezeli a http kéréseket

7 SB Memória struktúra struct _HttpThread{ threads mxFirstFreeThread iState AppData } struct _ThreadData{ ThreadIndex pThreadLocalData... pHT }

8 SB Konkurencia kezelése Az ESBAP minden egyes HTTP kérésre új szálat indít Lehetne még: –Minden egyes HTTP kérésre új process –Meglevő szál elindítása, újraindítása –Socket kezelés közös szálon

9 SB Konkurencia kezelés összehasonlítás Új szál –könnyebb programozni, nem kell szál menedzsmentet írni Régi szál újra felhasználva –esetleg gyorsabb, operációs rendszer függő Egy szálas socket kezelés –a program dönti el, hogy kit szolgál ki, nem az operációs rendszer

10 SB Embed Pointer scriba_SetEmbedPointer –Beállítja az „Embed Pointer”-t –Ez a mutató értelmes a befogadó alkalmazás számára, nem értelmes a BASIC számára, és értelmes a befogadó alkalmazás speciális moduljai számára pProgram->pEmbedder ScriptBasic interpreter

11 SB Eszter SB Engine Embed Pointer struct _ThreadData { –... –msgsock –... cgi.c -ben p = (pModuleObject)besMODULEPOINTER; P->Cgi.Embed = pSt->pEo->pEmbedder input olvasása: ch = pCO->pfStdIn(pCO->pEmbed);

12 SB CGI modul felépítése cginterf.c felület függvények cgi.c http input adat kezelés C- ben –Nem igazi CGI, hanem bármilyen http szerver –Paraméterezhető 3db I/O, ENV függvénnyel és 1db Embed mutatóval

13 SB CGI modul képességei GET, POST (upload) Tetszőleges méretig (memória határolja) Paraméterezhető limitek

14 SB CGI modul inicializálás typedef struct _CgiObject {... long fInterface; // constant defining the interface type... void *pEmbed; // embedder pointer stdin/stdout and env int (*pfStdIn)(void *pEmbed); void (*pfStdOut)(int, void*pEmbed); char *(*pfEnv)(void *,char *,long); //user defined environment function... int (*CharacterInput)(struct _CgiObject *p); void *pInputParameter; // the parameter the input function can use... unsigned long lBufferIncrease; // increase the buffer using this increment unsigned long lBufferMax; // never exceed this size with the buffer unsigned long lContentMax; // maximal content-length we deal with unsigned long lFileMax; // maximal file length we deal with... long fMethods; // allowed methods, each bit set is an allowed method } CgiObject, *pCgiObject;

15 SB MT Modul Multi-thread közös memória kezelése BASIC szinten, nem csak web szerver Session fogalma Session változó Application változó Zárak

16 SB MT Modul Session fogalma Időben egymás utáni, egy klienst kiszolgáló, összetartozó szálak Paraméterek: –SessionID –Start time –Ping time –Time out time

17 SB Session Time Out kezelése Session törlése –kilépésnél (a kilépést kezelő BASIC program törli a session-t) –“time out” esetén (milyen program?) run és restart konfigurációs opciók –lehetne MT modul függvény, ami elindít (ha még nem fut) egy BASIC „worker” programot –lehetne előre definiált „time out” alkalmazás szerver szinten, de így flexibilisebb

18 SB MT Modul Session függvények mt::SetSessionId "session id„ mt::CheckSessionId("sessionid") mt::SessionCount() mt::NewSession(["optional random string"]) mt::DeleteSession ["sessionid"] mt::GetSessionId() mt::SetSessionVariabe "variablename",value mt::GetSessionVariabe("variablename") mt::SessionTimeout [sec] mt::GetSessionTimeout ["sessionid"] mt::GetSessionPingTime ["sessionid"] mt::ListSessions Array,Sm,SM,Pm,PM,Tm,TM

19 SB MT Modul alkalmazási változót kezelő függvények mt::SetVariable "variablename",value mt::GetVariable("variablename") mt::LockWrite "variablename" mt::LockRead "variablename" mt::UnlockWrite "variablename" mt::UnlockRead "variablename"

20 SB Mi hiányzik az MT modulból? Általános erőforrás csoport kezelés Például –Adatbázis kapcsolat újrafelhasználás

21 SB Köszönöm a figyelmet


Letölteni ppt "SB Eszter SB Application Engine Peter Verhás 2002 április 9."

Hasonló előadás


Google Hirdetések