Rozhodli jsme se použít sessions, pro ukládání informací a o aktuálně přihlášeném uživateli. Při úspěšném provedení metody LogIn jsou do ,systémem ASP.Net přidělené, session uložena data o přihlášeném uživateli. Při každém dotazu na metodu jinou než LogIn je kontrolována session, zda v ní jsou údaje o přihlášení a pokud tam nejsou, tak operace není provedena. Session je identifikována pomocí cookies, což je standartní mechanismus ASP.Net.
Původně jsme zvažovali možnost autentifikace pomocí hlaviček v HTTP requestu. Nakonec jsme to ale zamítli, protože mechanismus sessions je jednoduchý na používání, nemusejí se při každém požadavku přenášet tzv. credentials a mechanismus přihlášení/odhlášení je více rozšířený.
V systému jsou tři role (admin, manager, user) a každá má přiřazené povolené operace. Na začátku vykonávání každé operace kromě přihlášení a odhlášení se provádí kontrola, zda má aktuální uživatel roli s právem na tu metodu. Pokud nemá, tak se metoda ukončí.
Použili jsme program WCAT, dostupný z http://www.iis.net/community/default.aspx?tabid=34&g=6&i=1466
Měření bylo nakonfigurováno následujícími skripty: stress-config.zip
Měřena odezva obou služeb umístěných na serveru http://taskmanager.borovicka.name a na lokálním počítači (Intel Core Duo 2 GHz, 2 GB RAM, disk 7200 otáček).
| počet transakcí [1/s] | průměrná odezva [ms] | |
|---|---|---|
| server | localhost | |
| 10 | 14 | 9 |
| 40 | 16 | 13 |
| 80 | 20 | 49 |
| 160 | 73 | 179 |
| 320 | 187 | 992 |
| 640 | 463 | * |
| 1280 | 902 | * |
* Došlo k přehlcení systému, nepodařilo se ani vygenerovat potřebné množství požadavků.
| počet transakcí [1/s] | průměrná odezva [ms] | |
|---|---|---|
| server | localhost | |
| 10 | 17 | 13 |
| 40 | 19 | 22 |
| 80 | 24 | 64 |
| 160 | 81 | 205 |
| 320 | 203 | 1212 |
| 640 | 601 | * |
| 1280 | 1745 | * |
* Došlo k přehlcení systému, nepodařilo se ani vygenerovat potřebné množství požadavků.
| počet transakcí [1/s] | průměrná odezva [ms] | |
|---|---|---|
| server | localhost | |
| 10 | 16 | 17 |
| 20 | 28 | 43 |
| 30 | 43 | 64 |
| 40 | 80 | 115 |
| 60 | 152 | 172 |
| 80 | 198 | 293 |
| 100 | 240 | 418 |
Při měření na lokálním stroji jsme narazili na problém přetížení způsobený tím, že zkoumaný server i měřící stanoviště běží na stejném stroji a sdílely systémové prostředky.
Potvrdilo se, že server dobře zvládá zátěž okolo 100 transakcí za sekundu. Lokální stroj s horšími parametry byl zákonitě o něco pomalejší, měl při měření pouze výhodu nižší časové prodlevy datového přenosu po síti. Kdyby ale nebylo problému popsaného v prvním odstavci, nebyly by grafy nikterak výrazně odlišné (měly by pouze odlišný sklon), protože oba stroje mají stejný počet výpočetních jader - škálovatelnost je na obou strojích stejná.