
A mellékelt példa kipróbálása előtt el kell végezni bizonyos beállításokat. Ezekről a cikk Bevezető című szakaszában olvashat.
Bevezető
A projekt egy Windows-os szervizalkalmazást tartalmaz, mely elindulva Web szerverként funkcionál. A projekt fordítása előtt a következőket kell tennünk:
- A szervizalkalmazás úgy készült, hogy feltételezzük a C meghajtó létezését a számítógépen. Amennyiben nem létezik, akkor a kódban át kell írni a hivatkozásokat. A hivatkozások megtalálhatók: Server.cs (57. sor), WServer.xml (4. Sor) és Create.js (4.,9.,10.,11. sorok).
- Amennyiben létezik a C meghajtó, akkor a projekt fordítása után le kell futtatni a Create.js állományt. A script létrehoz egy WebServer nevű mappát a meghajtó gyökerében, és átmásolja ezen új mappába a projekt könyvtárában található WServer.exe alkalmazást, a WServer.xml és a Default.html állományokat.
- Utolsó lépésként installálnunk kell a szervizalkalmazást. Ezt a .NET Framework INSTALLUTIL.EXE segédprogramjával végezhetjük el. Indítsunk el egy .NET parancssort, majd gépeljük be a következőket: installutil <létező meghajtó>:\\WebServer\WServer.exe
- Indítsuk el a szervizalkalmazást.
A felsorolt lépések elvégzése után elindíthatunk egy példányt a böngészőnkből, és megadhatjuk a következő URL-t:
Fontos, hogy a port számát feltüntessük, ellenkező esetben – amennyiben van egyéb Web szerver a számítógépen telepítve – az alapértelmezett szerver fogja kiszolgálni a kérésünket. A port megadásával saját szervizünket hívhatjuk meg, mely visszaküldi a szerver alapértelmezett, a WebServer mappában most megtalálható Default.html HTML oldalt a böngészőbe.
A Web szerver jellemzői
A szervizalkalmazás WebServerClass osztálya felelős a kérések fogadásáért, valamit a válasz elküldéséért. Az osztályt a szerviz OnStart metódusában példányosítjuk, átadva paraméterként a konfigurációs XML állomány elérési útvonalát.
new WebServerClass("C:\\WebServer\\WServer.xml");
A XML állomány <sites> tagjában található bejegyzések kiolvasása után indítja el a szerver a dolgozó szálat, mely figyeli a megadott port-ot.
<sites>
<site name='sampleSite' domain='*' port='8080' folder='c:/WebServer' />
</sites>
A <defaults> tagban található bejegyzések tartalmazzák a szerver alapértelmezett oldalainak nevét. Amelyik létezik az adott mappában, az töltődik be a fenti HTTP kérés megadása után.
<defaults>
<default filename="default.html" />
...
</defaults>
A WebServerClass osztály ThreadStart metódusa folyamatosan fut a háttérben, mely figyeli a 8080-as port-ot. A port-on érkező HTTP kéréseket feldolgozza. A nem a HTTP csatornán érkező kéréseket elutasítja, a hibaértesítőt visszaküldi a kliensnek.
Amennyiben a kérés teljesíthető – vagyis a kért erőforrás megtalálható a mappában –, akkor azt visszaküldi a böngészőre a SendResponse metódussal.
A kéréseket egy TcpListener objektum figyeli. A szerver kódja csak alapvető hibadetektálást tartalmaz, inkább a kevés kódolással történő megvalósításra helyeztük a hangsúlyt.