Szolgáltatásalkalmazás programozási architektúrája
Feljegyzés
Ez a cikk nem vonatkozik a .NET-ben üzemeltetett szolgáltatásokra. A Windows-szolgáltatások és Microsoft.Extensions.Hosting.BackgroundService a Worker Service-sablon legújabb tartalmaiért tekintse meg a következőt:
A Windows Service-alkalmazások az osztálytól System.ServiceProcess.ServiceBase öröklő osztályon alapulnak. Felülbírálhatja az osztály metódusait, és funkciókat határozhat meg számukra a szolgáltatás működésének meghatározásához.
A szolgáltatáslétrehozás fő osztályai a következők:
System.ServiceProcess.ServiceBase — A szolgáltatás létrehozásakor felülbírálhatja az ServiceBase osztály metódusait, és a kódot úgy határozhatja meg, hogy a szolgáltatás hogyan működik ebben az örökölt osztályban.
System.ServiceProcess.ServiceProcessInstaller és System.ServiceProcess.ServiceInstaller – Ezekkel az osztályokkal telepítheti és távolíthatja el a szolgáltatást.
Emellett egy elnevezett ServiceController osztály is használható a szolgáltatás módosítására. Ez az osztály nem vesz részt egy szolgáltatás létrehozásában, de használható a szolgáltatás elindítására és leállítására, parancsok átadására és enumerálások sorozatának visszaadására.
A szolgáltatás viselkedésének meghatározása
A szolgáltatásosztályban felülbírálhatja az alaposztályfüggvényeket, amelyek meghatározzák, hogy mi történik, ha a szolgáltatás állapota megváltozik a Services Control Managerben. Az ServiceBase osztály a következő metódusokat teszi elérhetővé, amelyeket felülbírálhat az egyéni viselkedés hozzáadásához.
Metódus | Felülbírálás a |
---|---|
OnStart | Adja meg, hogy milyen műveleteket kell végrehajtania, amikor a szolgáltatás elindul. Ebben az eljárásban kódot kell írnia ahhoz, hogy a szolgáltatás hasznos munkát végezzen. |
OnPause | Jelezze, mi történjen a szolgáltatás szüneteltetésekor. |
OnStop | Jelezze, mi történjen, ha a szolgáltatás leáll. |
OnContinue | Jelezze, hogy mi történjen, ha a szolgáltatás a szüneteltetés után újra működik. |
OnShutdown | Jelezze, hogy mi történjen a rendszer leállása előtt, ha a szolgáltatás akkor fut. |
OnCustomCommand | Jelezze, mi történjen, ha a szolgáltatás egyéni parancsot kap. További információ az egyéni parancsokról: MSDN online. |
OnPowerEvent | Adja meg, hogyan reagáljon a szolgáltatás az energiagazdálkodási esemény érkezésekor, például alacsony akkumulátor- vagy felfüggesztett működés esetén. |
Feljegyzés
Ezek a módszerek azt jelzik, hogy a szolgáltatás az élettartama során halad át; a szolgáltatás egyik állapotról a másikra vált. Például soha nem fogja megkapni a szolgáltatást, hogy válaszoljon egy OnContinue parancsra, mielőtt OnStart meghívták volna.
Számos más tulajdonság és módszer is érdekes. Ezek közé tartoznak:
Az Run osztály metódusa ServiceBase . Ez a szolgáltatás fő belépési pontja. Amikor windowsos szolgáltatássablon használatával hoz létre szolgáltatást, a rendszer kódot szúr be az alkalmazás metódusában
Main
a szolgáltatás futtatásához. A kód a következőképpen néz ki:ServiceBase[] ServicesToRun; ServicesToRun = new ServiceBase[] { new Service1() }; Run(ServicesToRun);
Dim ServicesToRun() As System.ServiceProcess.ServiceBase ServicesToRun = New System.ServiceProcess.ServiceBase() {New Service1()} System.ServiceProcess.ServiceBase.Run(ServicesToRun)
Feljegyzés
Ezek a példák olyan típusú ServiceBasetömböt használnak, amelybe az alkalmazás által tartalmazott összes szolgáltatás hozzáadható, majd az összes szolgáltatás együtt futtatható. Ha azonban csak egyetlen szolgáltatást hoz létre, akkor dönthet úgy, hogy nem használja a tömböt, és egyszerűen deklarál egy új, öröklő ServiceBase objektumot, majd futtatja azt. Példa: How to: Write Services Programmatically.
Az osztály tulajdonságainak sorozata ServiceBase . Ezek határozzák meg, hogy milyen metódusok hívhatók meg a szolgáltatásban. Ha például a CanStop tulajdonság értéke
true
, a OnStop szolgáltatás metódusa meghívható. CanPauseAndContinue A tulajdonság beállításakortrue
a metódusok és OnContinue a OnPause metódusok meghívhatók. Ha ezen tulajdonságok egyikét állítja be, felül kell bírálniatrue
és meg kell határoznia a kapcsolódó metódusok feldolgozását.
A meglévő szolgáltatás viselkedésének kommunikálásához és szabályozásához használhatja a "the" ServiceController nevű összetevőt is.
Lásd még
Visszajelzés
https://aka.ms/ContentUserFeedback.
Hamarosan elérhető: 2024-ben fokozatosan kivezetjük a GitHub-problémákat a tartalom visszajelzési mechanizmusaként, és lecseréljük egy új visszajelzési rendszerre. További információ:Visszajelzés küldése és megtekintése a következőhöz: