WebJobs fejlesztése és üzembe helyezése a Visual Studióval
Ez a cikk bemutatja, hogyan helyezhet üzembe egy konzolalkalmazás-projektet a Visual Studióval egy webalkalmazásban Azure App ServiceAzure WebJob-feladatként. A WebJobs Azure Portal használatával történő üzembe helyezésével kapcsolatos további információkért lásd: Háttérfeladatok futtatása a WebJobs használatával Azure App Service.
Létrehozhat egy .NET Core-alkalmazásként vagy .NET-keretrendszer alkalmazásként futó WebJob-feladatot. Az Azure WebJobs SDK 3.x-es verziója lehetővé teszi a .NET Core-alkalmazásokként vagy .NET-keretrendszer alkalmazásokként futó WebJobs fejlesztését, míg a 2.x verzió csak a .NET-keretrendszer támogatja. A WebJobs-projektek üzembe helyezésének módja eltér a .NET Core-projekteknél, mint .NET-keretrendszer projekteknél.
Egyetlen webalkalmazásban több WebJobs-feladatot is közzétehet, feltéve, hogy egy webalkalmazás minden WebJob-feladatának egyedi neve van.
WebJobs .NET Core-konzolalkalmazásként
Az Azure WebJobs SDK 3.x verziójával .NET Core-konzolalkalmazásokként hozhat létre és tehet közzé WebJobs-fájlokat. A .NET Core-konzolalkalmazások WebJobként való létrehozásához és az Azure-ban való közzétételéhez részletes útmutatásért lásd: Az Azure WebJobs SDK használatának első lépései az eseményvezérelt háttérfeldolgozáshoz.
Megjegyzés
A .NET Core Web Apps és/vagy a .NET Core WebJobs nem kapcsolható össze webes projektekkel. Ha webalkalmazással kell üzembe helyeznie a WebJobot, hozza létre a WebJobs-feladatokat .NET-keretrendszer konzolalkalmazásként.
Üzembe helyezés az Azure App Service-ben
A .NET Core WebJob Visual Studióból Azure App Service való közzététele ugyanazt az eszközt használja, mint egy ASP.NET Core-alkalmazás közzététele.
A Megoldáskezelőben kattintson a jobb gombbal a projektre, és válassza a Publish (Közzététel) lehetőséget.
A Közzététel párbeszédpanelen válassza az Azure for Target elemet, majd válassza a Tovább gombot.
Válassza az Azure WebJobslehetőséget az Adott célhoz, majd válassza a Tovább gombot.
A fenti App Service példányok közül válassza a plusz (+) gombot az új Azure WebJob létrehozásához.
A App Service (Windows) párbeszédpanelen használja az alábbi táblázatban található üzemeltetési beállításokat.
Beállítás Ajánlott érték Leírás Név Globálisan egyedi név Az új függvényalkalmazást azonosító egyedi név. Előfizetés Válassza ki az előfizetését A használandó előfizetés. Erőforráscsoport myResourceGroup Az erőforráscsoport neve, amelyben létrehozza a függvényalkalmazást. Válassza az Új elemet egy új erőforráscsoport létrehozásához. Üzemeltetési csomag App Service-csomag Az alkalmazást tároló webkiszolgálófarm helyét, méretét és funkcióit egy App Service-csomag határozza meg. Költségeket takaríthat meg, ha beállítja, hogy a webalkalmazások egyetlen közös App Service-csomag használatával több alkalmazást tároljanak. App Service csomagok határozzák meg a régiót, a példányméretet, a skálázási számot és a termékváltozatot (ingyenes, megosztott, alapszintű, standard vagy prémium). Új App Service csomag létrehozásához válassza az Új lehetőséget. Az ingyenes és az alapszintű szintek nem támogatják az Always On lehetőséget a webhely folyamatos futtatásához. Válassza a Létrehozás lehetőséget, ha webfeladatot és kapcsolódó erőforrásokat szeretne létrehozni az Azure-ban ezekkel a beállításokkal, és üzembe szeretné helyezni a projektkódot.
A Közzététel lapra való visszatéréshez válassza a Befejezés lehetőséget.
WebJobs .NET-keretrendszer konzolalkalmazásként
Ha a Visual Studióval helyez üzembe egy WebJobs-kompatibilis .NET-keretrendszer-konzolalkalmazás-projektet, akkor a futtatókörnyezeti fájlokat a webalkalmazás megfelelő mappájába másolja (App_Data/feladatok/folyamatos a folyamatos WebJobs-feladatokhoz és App_Data/feladatokhoz/aktiválva ütemezett vagy igény szerinti WebJobs esetén).
A Visual Studio a következő elemeket adja hozzá egy WebJobs-kompatibilis projekthez:
- A Microsoft.Web.WebJobs.Publish NuGet csomag.
- Egy webjob-publish-settings.json fájl, amely az üzembe helyezési és ütemezőbeállításokat tartalmazza.
Ezeket az elemeket hozzáadhatja egy meglévő konzolalkalmazás-projekthez, vagy sablon használatával létrehozhat egy új WebJobs-kompatibilis konzolalkalmazás-projektet.
Egy projektet önállóan helyezhet üzembe WebJob-feladatként, vagy csatolhatja egy webes projekthez, hogy automatikusan üzembe helyezhesse a webes projekt telepítésekor. A projektek összekapcsolásához a Visual Studio a webprojekt webjobs-list.json fájljában tartalmazza a WebJobs-kompatibilis projekt nevét.
Előfeltételek
Telepítse a Visual Studio 2022-t az Azure fejlesztési számítási feladatával.
A WebJobs üzembe helyezésének engedélyezése meglévő konzolalkalmazás-projekthez
Erre két lehetősége van:
Az automatikus üzembe helyezés engedélyezése webes projekttel.
Konfiguráljon egy meglévő konzolalkalmazás-projektet úgy, hogy az automatikusan WebJobként legyen üzembe helyezve egy webes projekt üzembe helyezésekor. Ezt a lehetőséget akkor használja, ha a WebJob-feladatot ugyanabban a webalkalmazásban szeretné futtatni, amelyben a kapcsolódó webalkalmazást futtatja.
Az üzembe helyezés engedélyezése webes projekt nélkül.
Konfiguráljon egy meglévő konzolalkalmazás-projektet úgy, hogy önmagában WebJob-feladatként legyen üzembe helyezve, webes projektre mutató hivatkozás nélkül. Ezt a lehetőséget akkor használhatja, ha egy webalkalmazásban önmagában szeretne webfeladatot futtatni, és nem fut webalkalmazás a webalkalmazásban. Érdemes lehet a WebJob-erőforrásokat a webalkalmazás erőforrásaitól függetlenül skálázni.
A WebJobs automatikus üzembe helyezésének engedélyezése webes projekttel
Kattintson a jobb gombbal a webes projektre Megoldáskezelő, majd válassza a Meglévő projekt hozzáadása>Azure WebJobként lehetőséget.
Megjelenik az Azure WebJob hozzáadása párbeszédpanel.
A Projekt neve legördülő listában válassza ki azt a konzolalkalmazás-projektet, amely WebJob-feladatként van hozzáadva.
Töltse ki az Azure WebJob hozzáadása párbeszédpanelt, majd kattintson az OK gombra.
WebJobs üzembe helyezésének engedélyezése webes projekt nélkül
Kattintson a jobb gombbal a konzolalkalmazás-projektre a Megoldáskezelő, majd válassza a Közzététel Azure WebJobként lehetőséget.
Megjelenik az Azure WebJob hozzáadása párbeszédpanel, amelyen a projekt ki van jelölve a Projekt neve mezőben.
Töltse ki az Azure WebJob hozzáadása párbeszédpanelt, majd kattintson az OK gombra.
Megjelenik a Webes közzététel varázsló. Ha nem szeretne azonnal közzétenni, zárja be a varázslót. A megadott beállítások a projekt üzembe helyezésekor lesznek mentve.
Új WebJobs-kompatibilis projekt létrehozása
Új WebJobs-kompatibilis projekt létrehozásához használja a konzolalkalmazás projektsablonját, és engedélyezze a WebJobs üzembe helyezését az előző szakaszban leírtak szerint. Alternatív megoldásként használhatja a WebJobs new-project sablont:
A WebJobs new-project sablon használata független WebJob-feladathoz
Hozzon létre egy projektet, és konfigurálja úgy, hogy önmagában webjobként legyen üzembe helyezve, webes projektre mutató hivatkozás nélkül. Ezt a lehetőséget akkor használhatja, ha egy webalkalmazásban önmagában szeretne webfeladatot futtatni, és nem fut webalkalmazás a webalkalmazásban. Érdemes lehet a WebJob-erőforrásokat a webalkalmazás erőforrásaitól függetlenül skálázni.
WebProjekthez csatolt WebJobs new-project sablon használata
Hozzon létre egy olyan projektet, amely úgy van konfigurálva, hogy automatikusan üzembe legyen helyezve WebJobként, amikor egy webprojektet ugyanabban a megoldásban helyez üzembe. Ezt a lehetőséget akkor használja, ha a WebJob-feladatot ugyanabban a webalkalmazásban szeretné futtatni, amelyben a kapcsolódó webalkalmazást futtatja.
Megjegyzés
A WebJobs new-project sablon automatikusan telepíti a NuGet-csomagokat, és kódot tartalmaz a WebJobs SDKProgram.cs fájljában. Ha nem szeretné használni a WebJobs SDK-t, távolítsa el vagy módosítsa az utasítást a host.RunAndBlock
Program.cs fájlban.
A WebJobs new-project sablon használata független WebJob-feladathoz
Válassza azÚj>projektfájlja> lehetőséget. Az Új projekt létrehozása párbeszédpanelen keresse meg és válassza az Azure WebJob (.NET-keretrendszer) lehetőséget a C# számára.
Kövesse az előző utasításokat, hogy a konzolalkalmazás projektje független WebJobs-projekt legyen.
WebProjekthez csatolt WebJobs new-project sablon használata
Kattintson a jobb gombbal a webes projektre a Megoldáskezelő, majd válassza azÚj Azure WebJob-projekthozzáadása> lehetőséget.
Megjelenik az Azure WebJob hozzáadása párbeszédpanel.
Töltse ki az Azure WebJob hozzáadása párbeszédpanelt, majd kattintson az OK gombra.
webjob-publish-settings.json fájl
Amikor konfigurál egy konzolalkalmazást a WebJobs üzembe helyezéséhez, a Visual Studio telepíti a Microsoft.Web.WebJobs.Publish NuGet csomagot, és egy webjob-publish-settings.json fájlban tárolja az ütemezési információkat a WebJobs-projekt Tulajdonságok mappájában. Íme egy példa erre a fájlra:
{
"$schema": "http://schemastore.org/schemas/json/webjob-publish-settings.json",
"webJobName": "WebJob1",
"startTime": "null",
"endTime": "null",
"jobRecurrenceFrequency": "null",
"interval": null,
"runMode": "Continuous"
}
Ezt a fájlt közvetlenül szerkesztheti, és a Visual Studio biztosítja az IntelliSense szolgáltatást. A fájlséma a helyen https://schemastore.org van tárolva, és ott tekinthető meg.
webjobs-list.json fájl
Amikor webprojekthez csatol egy WebJobs-kompatibilis projektet, a Visual Studio a WebJobs-projekt nevét egy webjobs-list.json fájlban tárolja a webes projekt Tulajdonságok mappájában. A lista több WebJobs-projektet is tartalmazhat az alábbi példában látható módon:
{
"$schema": "http://schemastore.org/schemas/json/webjobs-list.json",
"WebJobs": [
{
"filePath": "../ConsoleApplication1/ConsoleApplication1.csproj"
},
{
"filePath": "../WebJob1/WebJob1.csproj"
}
]
}
Ezt a fájlt közvetlenül a Visual Studióban szerkesztheti az IntelliSense használatával. A fájlséma a következő helyen található: https://schemastore.org.
WebJobs-projekt üzembe helyezése
A webprojekthez csatolt WebJobs-projektek automatikusan üzembe helyezhetők a webes projekttel. A webes projektek üzembe helyezésével kapcsolatos információkért lásd: Útmutatók>Az alkalmazás üzembe helyezése a bal oldali navigációs sávon.
Ha önállóan szeretne üzembe helyezni egy WebJobs-projektet, kattintson a jobb gombbal a projektre a Megoldáskezelő, és válassza a Közzététel Azure WebJobként lehetőséget.
Egy független WebJob esetében ugyanaz a Webes közzététel varázsló jelenik meg, amelyet a webes projektekhez használnak, de kevesebb beállítás érhető el a módosításhoz.
Az Azure WebJob hozzáadása párbeszédpanel
Az Azure WebJob hozzáadása párbeszédpanelen megadhatja a WebJob nevét és a WebJob futtatási módját.
A párbeszédpanel egyes mezői a Azure Portal WebJob hozzáadása párbeszédpanel mezőinek felelnek meg. További információ: Háttérfeladatok futtatása WebJobs-feladatokkal Azure App Service.
A WebJob üzembehelyezési adatai:
A parancssori üzembe helyezéssel kapcsolatos információkért lásd: Az Azure WebJobs parancssori vagy folyamatos kézbesítésének engedélyezése.
Ha webfeladatot helyez üzembe, majd úgy dönt, hogy módosítani szeretné a WebJob típusát és újra üzembe helyezést, törölje a webjobs-publish-settings.json fájlt. Ennek hatására a Visual Studio újra megjeleníti a közzétételi beállításokat, így módosíthatja a WebJob típusát.
Ha webfeladatot helyez üzembe, és később folyamatosról nem folyamatosra módosítja a futtatási módot, vagy fordítva, a Visual Studio új WebJob-feladatot hoz létre az Azure-ban az újbóli üzembe helyezéskor. Ha más ütemezési beállításokat módosít, de a futtatási módot változatlanul hagyja, vagy az Ütemezett és az Igény szerinti verzió között vált, a Visual Studio új feladat létrehozása helyett frissíti a meglévő feladatot.
WebJob-típusok
A WebJob típusa aktiválható vagy folyamatos lehet:
Aktivált (alapértelmezett): Az aktivált WebJob egy kötési eseményen, ütemezésen vagy manuálisan (igény szerint) indítható el. Egyetlen példányon fut, amelyen a webalkalmazás fut.
Folyamatos: A folyamatos WebJob azonnal elindul a WebJob létrehozásakor. Alapértelmezés szerint az összes webalkalmazás-skálázott példányon fut, de konfigurálható úgy, hogy egyetlen példányként fusson a settings.job használatával.
Megjegyzés
A webalkalmazások 20 perc inaktivitás után időtúllépést okozhatnak, és csak a tényleges webalkalmazásnak küldött kérések állíthatják alaphelyzetbe az időzítőt. Az alkalmazás konfigurációjának megtekintése az Azure Portal vagy a speciális eszközök webhelyére irányuló kérések (https://<app_name>.scm.azurewebsites.net
) nem állítja vissza az időzítőt. Ha a feladatot üzemeltető webalkalmazást úgy állítja be, hogy folyamatosan fusson, ütemezés szerint fusson, vagy eseményvezérelt eseményindítókat használjon, engedélyezze az Always on beállítást a webalkalmazás Azure Configuration lapján. Az Always on beállítás segít meggyőződni arról, hogy az ilyen típusú WebJobs-feladatok megbízhatóan futnak. Ez a funkció csak az alapszintű, standard és prémium tarifacsomagokban érhető el.
Aktivált WebJobs-feladat ütemezése
Amikor konzolalkalmazást tesz közzé az Azure-ban, a Visual Studio alapértelmezés szerint Aktiválva értékre állítja a WebJob típusát, és hozzáad egy új settings.job fájlt a projekthez. Az aktivált WebJob-típusok esetében ezzel a fájllal végrehajtási ütemezést állíthat be a WebJobhoz.
A settings.job fájllal végrehajtási ütemezést állíthat be a WebJobhoz. A következő példa óránként 9 és 17 óra között fut:
{
"schedule": "0 0 9-17 * * *"
}
Ez a fájl a WebJobs mappa gyökerében található a WebJob szkriptjével, például wwwroot\app_data\jobs\triggered\{job name}
vagy wwwroot\app_data\jobs\continuous\{job name}
. Amikor webfeladatot helyez üzembe a Visual Studióból, jelölje meg a settings.job fájltulajdonságokat a Visual Studióban másolásként, ha újabb.
Ha a Azure Portal hoz létre WebJob-feladatot, a settings.job fájl létrejön Önnek.
CRON-kifejezések
A WebJobs ugyanazokat a CRON-kifejezéseket használja az ütemezéshez, mint az időzítő eseményindítója Azure Functions. A CRON-támogatással kapcsolatos további információkért lásd: Időzítő eseményindító Azure Functions.
Megjegyzés
A CRON-kifejezések futtatásához használt alapértelmezett időzóna a koordinált egyetemes idő (UTC). Ha azt szeretné, hogy a CRON-kifejezés egy másik időzóna alapján fusson, hozzon létre egy alkalmazásbeállítást a WEBSITE_TIME_ZONE nevű függvényalkalmazáshoz. További információ: NCRONTAB időzónák.
settings.job reference
A WebJobs a következő beállításokat támogatja:
Beállítás | Típus | Leírás |
---|---|---|
is_in_place |
Mind | Lehetővé teszi a WebJob futtatását anélkül, hogy először átmásolna egy ideiglenes mappába. További információ: WebJob munkakönyvtár. |
is_singleton |
Folyamatos | A WebJob csak egyetlen példányon futtassa a skálázást. További információ: Folyamatos feladat beállítása önállóként. |
schedule |
Kiváltott | Futtassa a WebJobot CRON-alapú ütemezéssel. További információ: NCRONTAB-kifejezések. |
stopping_wait_time |
Mind | Lehetővé teszi a leállítási viselkedés vezérlését. További információ: Kecses leállítás. |
Folyamatos végrehajtás
Ha engedélyezi az Always on funkciót az Azure-ban, a Visual Studióval módosíthatja a WebJob folyamatos futtatását:
Ha még nem tette meg, tegye közzé a projektet az Azure-ban.
A Megoldáskezelőben kattintson a jobb gombbal a projektre, és válassza a Publish (Közzététel) lehetőséget.
A Beállítások szakaszban válassza az Összes beállítás megjelenítése lehetőséget.
A Profilbeállítások párbeszédpanelen válassza a Folyamatos webfeladattípus lehetőséget, majd kattintson a Mentés gombra.
A Közzététel lapon válassza a Közzététel lehetőséget a WebJob újbóli közzétételéhez a frissített beállításokkal.