Lehetőség van az alapértelmezés szerint egy szálon futó webszervizt többszálúvá alakítani.
Amennyiben a szerver main.cfg fájljában a PARAMETERS blokkban be van írva 1 vagy több "webworker", bekacsolódik a DotNet alapú többszálú webszerviz.
PARAMETERS
...
WEBSERVER ON;
WEBWORKER 200;
WEBWORKER 201;
WEBWORKER 202;
END PARAMETERS;
Ez esetben a rendes webszerver csak közvetítőként működik, azaz nem dolgoz fel egyetlen kérést sem, csak továbbítja azokat a workerek felé. (Egy workerrel nincs értelme az egésznek, minimum 2 kell ahhoz, hogy gyorsabb legyen.)
A többszálú webszerviz csak rendszergazda módban indított mainx.exe-vel működik vagy szolgáltatásként futtatva a szervert - ekkor nem kell a rendszergazda mód.
Maguk a workerek ugyanolyan webserver terminálok lesznek, ugyanazzal a felhasználónév/jelszó párossal és menüvel indulnak el, de a figyelő portjuk a paraméterezésben megadott + terminálszám lesz. A fenti példában - ha az alap figyelő port 80-as, akkor 280, 281, 282-es porton fognak figyelni, ezeknek kell szabadnak lenniük. Ugyanakkor ezeket a portokat nem szabad elérhetővé tenni a számítógépen kívülről, hiszen az elsődleges webszerver fogja őket megszólítani.
A workerek Terminal off módban futnak, azaz nem fogyasztanak terminál licenszet (de maga a működés modul-licencelésű).
A konfigurálásban meghatározható, hogy az egyes ágak mely területeket tudjanak kiszolgálni, a lehetséges területek a következők:
- EDigital: Extreme Digital webshop kapcsolat
- BizLink: Bizonylat pdf lekérdezése
- SzamlazzHu: Számlázz.hu kapcsolat
- LG: Ide tartozik az összes LG-be torkolló webshop lekérdezés
- Browser: Böngészős felület (kivéve a bizonylatok nyomtatási képe, mert az BizLink)
- LGWeb: jelenleg nem használt (az LG listák webes lekérdezésének egy régi módja lenne)
- WebShop: a "/PARTNER", a "/ORDER", "/INVOICE"... lekérdezések.
- Sync: Offline bolt és Mirror kommunikáció.
Alap értelmezetten minden worker mindent csinálhat. Szűrési lehetőségek:
- Kategóriáként: meg lehet mondani melyik worker milyen kategóriájú kérést szolgálhat ki.
- Egy HTTP header mező: Ez értelemszerűen csak webshop kommunikációban tud működni, ha a másik oldal is leprogramozza: a header neve: "NMIdentity", az értéke tetszőleges max 40 karakter hosszú szöveg lehet. Ha a workerhez ezt megadjuk, akkor az a worker csak az ennek megfelelő headerrel rendelkező kéréseket fogja kiszolgálni.
- Küldő IP címe: Ha a workerhez megadunk egy IP címet, akkor az a worker csak az erről az IP-ről érkező kéréseket fogja kiszolgálni. (megjegyzendő, hogy némelyik router/internetes biztonsági program kicseréli a küldő IP címét a sajátjára, illetve lehet az is, hogy az IPV6 cím érkezik be a WebServerbe)
Ha egy kérést a szűrések szerint több worker is kiszolgálhat:
1. Ha a kérés kategóriája "Browser", akkor:
- Ha ez a felhasználó bejelentkezése, akkor az a worker kapja meg kérést, amelyiknek kevesebb bejelentkezett felhasználója van. Innentől a felhasználó és a worker össze lesznek rendelve.
- Ha már bejelentkezett felhasználó kérése, akkor az a worker fogja kiszolgálni, amelyikre bejelentkezett.
2. Minden más esetben az a worker kapja meg a feladatot, amelyiknek rövidebb a várakozási sora, azaz kevesebb még kiszolgálatlan kérése van.
Ha egy kérést a szűrések miatt egyetlen worker sem tud kiszolgálni, akkor 400-as BadRequest http hibát kap vissza a küldő.
A több szálon futó webszerviz működéséhez szükséges lehet a .NET (DotNet) Framework ASP megfelelő verziójának megléte. Amennyiben nem indul a Web-alapú Machinátor, ellenőrizzük, hogy be van-e kapcsolva az ASP .NET. A kapcsoló a klasszikus Vezérlőpult Programok és szolgáltatások/Windows-szolgáltatások ki- és bekapcsolása helyet található: