Előadást letölteni
Az előadás letöltése folymat van. Kérjük, várjon
KiadtaKlára Veresné Megváltozta több, mint 10 éve
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
Hasonló előadás
© 2024 SlidePlayer.hu Inc.
All rights reserved.