Megosztás a következőn keresztül:


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:

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ásakor truea 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álnia trueés meg kell határoznia a kapcsolódó metódusok feldolgozását.

    Feljegyzés

    A szolgáltatásnak legalább OnStart felül kell bírálnia, és OnStop hasznosnak kell lennie.

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