.NET-alkalmazások migrálása a folyamatban lévő modellből az izolált feldolgozói modellbe
Fontos
A folyamaton belüli modell támogatása 2026. november 10-én megszűnik. Javasoljuk, hogy az alkalmazásokat a jelen cikkben ismertetett utasítások követésével migrálja az izolált feldolgozói modellbe.
Ez a cikk végigvezeti a .NET-függvényalkalmazás biztonságos migrálásának folyamatán a folyamatban lévő modellről az izolált feldolgozói modellre. A modellek közötti magas szintű különbségek megismeréséhez tekintse meg a végrehajtási mód összehasonlítását.
Ez az útmutató feltételezi, hogy az alkalmazás a Functions-futtatókörnyezet 4.x verzióján fut. Ha nem, akkor a gazdagép verziójának frissítéséhez kövesse az útmutatókat:
- Alkalmazások migrálása az Azure Functions 2.x és 3.x verziójáról a 4.x verzióra
- Alkalmazások migrálása az Azure Functions 1.x verziójából a 4.x verzióba
Ezek a gazdagépverzió-migrálási útmutatók segítenek az izolált feldolgozói modellbe való migrálásban is, miközben rajtuk dolgozik.
A migrálandó függvényalkalmazások azonosítása
Az alábbi Azure PowerShell-szkripttel létrehozhatja az előfizetésében azokat a függvényalkalmazásokat, amelyek jelenleg a folyamatban lévő modellt használják.
A szkript az Azure PowerShell használatára konfigurált előfizetést használja. Az előfizetés módosításához először futtassa Set-AzContext -Subscription '<YOUR SUBSCRIPTION ID>'
és cserélje le <YOUR SUBSCRIPTION ID>
a kiértékelni kívánt előfizetés azonosítóját.
$FunctionApps = Get-AzFunctionApp
$AppInfo = @{}
foreach ($App in $FunctionApps)
{
if ($App.Runtime -eq 'dotnet')
{
$AppInfo.Add($App.Name, $App.Runtime)
}
}
$AppInfo
Válassza ki a cél .NET-verziót
A Functions-futtatókörnyezet 4.x verziójában a .NET-függvényalkalmazás a .NET 6-ot célozza meg a folyamatban lévő modell használatakor.
A függvényalkalmazás migrálásakor lehetősége van kiválasztani a .NET célverzióját. A C#-projektet a .NET alábbi verzióinak egyikére frissítheti, amelyeket a Functions 4.x verziója támogat:
.NET-verzió | .NET Hivatalos támogatási szabályzat kiadási típusa | Functions-folyamatmodell1,3 |
---|---|---|
.NET 82 | LTS | Izolált feldolgozói modell |
.NET 7 | STS (támogatás megszűnése 2024. május 14.) | Izolált feldolgozói modell |
.NET 6 | LTS (támogatás megszűnése 2024. november 12.) | Izolált feldolgozói modell, Folyamatközi modell3 |
.NET-keretrendszer 4.8 | Szabályzat megtekintése | Izolált feldolgozói modell |
1 Az izolált feldolgozói modell támogatja a .NET hosszú távú támogatási (LTS) és standard távú támogatási (STS) verzióit, valamint .NET-keretrendszer. A folyamatban lévő modell csak a .NET LTS-kiadásait támogatja. A két modell teljes funkció- és funkció-összehasonlítását lásd : Különbségek a folyamatban lévő és a feldolgozói folyamat elkülönítése .NET Azure Functions között.
A 2 .NET 8 még nem támogatott a folyamatban lévő modellben, bár az izolált feldolgozói modellen érhető el. A .NET 8-csomagokról, beleértve a folyamatban lévő modell jövőbeli lehetőségeit is, tekintse meg az Azure Functions ütemtervfrissítési bejegyzését.
3 A folyamaton belüli modell támogatása 2026. november 10-én megszűnik. További információkért tekintse meg ezt a támogatási közleményt. A folyamatos teljes támogatás érdekében az alkalmazásokat át kell telepítenie az izolált feldolgozói modellbe.
Tipp.
Javasoljuk, hogy frissítsen a .NET 8-ra az izolált feldolgozói modellen. Ez gyors áttelepítési útvonalat biztosít a teljes kiadású verzióhoz a .NET leghosszabb támogatási ablakával.
Ez az útmutató nem mutat be konkrét példákat a .NET 7-hez vagy a .NET 6-hoz. Ha meg kell céloznia ezeket a verziókat, a .NET 8-példákat is módosíthatja.
Előkészületek a migráláshoz
Ha még nem tette meg, az Azure PowerShell használatával azonosítsa az aktuális Azure-előfizetésben áttelepítendő alkalmazások listáját.
Mielőtt migrál egy alkalmazást az izolált feldolgozói modellbe, alaposan át kell tekintenie az útmutató tartalmát, és ismernie kell az izolált feldolgozómodell funkcióit és a két modell közötti különbségeket.
Az alkalmazás migrálásához a következőt fogja tenni:
- Végezze el a helyi projekt migrálásával kapcsolatos lépéseket a helyi projekt izolált feldolgozói modellbe való migrálásához.
- A projekt migrálása után tesztelje az alkalmazást helyileg az Azure Functions Core Tools 4.x-es verziójával.
- Frissítse függvényalkalmazását az Azure-ban az izolált modellre.
A helyi projekt migrálása
A szakasz ismerteti azokat a módosításokat, amelyeket a helyi projektben el kell végeznie ahhoz, hogy áthelyezhesse az izolált feldolgozói modellbe. Néhány lépés a .NET célverziója alapján változik. A fülekkel kiválaszthatja a kívánt verziónak megfelelő utasításokat. Ezek a lépések egy helyi C#-projektet feltételeznek, és ha az alkalmazás ehelyett C# szkriptet (.csx
fájlokat) használ, a folytatás előtt át kell alakítania a projektmodellt .
Tipp.
Ha a .NET LTS- vagy STS-verziójára vált, a .NET frissítési segéd használatával automatikusan elvégezheti a következő szakaszokban említett módosítások nagy részét.
Először átalakítja a projektfájlt, és frissíti a függőségeket. Ahogy most is, a projekt buildelési hibái is megjelennek. A következő lépésekben a megfelelő módosításokat hajtja végre a hibák eltávolításához.
Projektfájl
Az alábbi példa egy .csproj
.NET 6-ot használó projektfájl a 4.x verzión:
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>net6.0</TargetFramework>
<AzureFunctionsVersion>v4</AzureFunctionsVersion>
<RootNamespace>My.Namespace</RootNamespace>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Microsoft.NET.Sdk.Functions" Version="4.1.1" />
</ItemGroup>
<ItemGroup>
<None Update="host.json">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
<None Update="local.settings.json">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
<CopyToPublishDirectory>Never</CopyToPublishDirectory>
</None>
</ItemGroup>
</Project>
Az alábbi eljárások egyikével frissítheti ezt az XML-fájlt az izolált feldolgozói modellben való futtatáshoz:
Ezek a lépések egy helyi C#-projektet feltételeznek, és ha az alkalmazás ehelyett C# szkriptet (.csx
fájlokat) használ, a folytatás előtt át kell alakítania a projektmodellt .
Az XML-projektfájlban a .csproj
következő módosítások szükségesek:
Állítsa be a következő értékét
PropertyGroup
: .TargetFramework
tonet8.0
.Állítsa be a következő értékét
PropertyGroup
: .AzureFunctionsVersion
tov4
.Adja hozzá a következő
OutputType
elemet aPropertyGroup
következőhöz:<OutputType>Exe</OutputType>
ItemGroup
A .PackageReference
listában cserélje le a csomaghivatkozástMicrosoft.NET.Sdk.Functions
a következő hivatkozásokra:<FrameworkReference Include="Microsoft.AspNetCore.App" /> <PackageReference Include="Microsoft.Azure.Functions.Worker" Version="1.21.0" /> <PackageReference Include="Microsoft.Azure.Functions.Worker.Sdk" Version="1.17.2" /> <PackageReference Include="Microsoft.Azure.Functions.Worker.Extensions.Http.AspNetCore" Version="1.2.1" /> <PackageReference Include="Microsoft.ApplicationInsights.WorkerService" Version="2.22.0" /> <PackageReference Include="Microsoft.Azure.Functions.Worker.ApplicationInsights" Version="1.2.0" />
Jegyezze fel a névterek más
Microsoft.Azure.WebJobs.*
csomagjaira mutató hivatkozásokat. Ezeket a csomagokat egy későbbi lépésben fogja lecserélni.Adja hozzá a következő újat
ItemGroup
:<ItemGroup> <Using Include="System.Threading.ExecutionContext" Alias="ExecutionContext"/> </ItemGroup>
A módosítások elvégzése után a frissített projektnek a következő példához hasonlóan kell kinéznie:
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>net8.0</TargetFramework>
<AzureFunctionsVersion>v4</AzureFunctionsVersion>
<RootNamespace>My.Namespace</RootNamespace>
<OutputType>Exe</OutputType>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
</PropertyGroup>
<ItemGroup>
<FrameworkReference Include="Microsoft.AspNetCore.App" />
<PackageReference Include="Microsoft.Azure.Functions.Worker" Version="1.21.0" />
<PackageReference Include="Microsoft.Azure.Functions.Worker.Sdk" Version="1.17.2" />
<PackageReference Include="Microsoft.Azure.Functions.Worker.Extensions.Http.AspNetCore" Version="1.2.1" />
<PackageReference Include="Microsoft.ApplicationInsights.WorkerService" Version="2.22.0" />
<PackageReference Include="Microsoft.Azure.Functions.Worker.ApplicationInsights" Version="1.2.0" />
<!-- Other packages may also be in this list -->
</ItemGroup>
<ItemGroup>
<None Update="host.json">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
<None Update="local.settings.json">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
<CopyToPublishDirectory>Never</CopyToPublishDirectory>
</None>
</ItemGroup>
<ItemGroup>
<Using Include="System.Threading.ExecutionContext" Alias="ExecutionContext"/>
</ItemGroup>
</Project>
Csomaghivatkozások
Az izolált feldolgozói modellre való migráláskor módosítania kell az alkalmazás hivatkozásait.
Ha még nem tette meg, frissítse a projektet, hogy a következő stabil verziókra hivatkozzon:
Az alkalmazás által használt eseményindítóktól és kötésektől függően előfordulhat, hogy az alkalmazásnak más csomagokra kell hivatkoznia. Az alábbi táblázat a leggyakrabban használt bővítmények cseréjét mutatja be:
Eset | Csomaghivatkozások módosítása |
---|---|
Időzítő-eseményindító | Hozzáadás Microsoft.Azure.Functions.Worker.Extensions.Timer |
Tárkötések | ReplaceMicrosoft.Azure.WebJobs.Extensions.Storage nevű és Microsoft.Azure.Functions.Worker.Extensions.Storage.Blobs, Microsoft.Azure.Functions.Worker.Extensions.Storage.Queues és Microsoft.Azure.Functions.Worker.Extensions.Tables |
Blobkötések | Hivatkozás cseréje erre:Microsoft.Azure.WebJobs.Extensions.Storage.Blobs a legújabb verzióval Microsoft.Azure.Functions.Worker.Extensions.Storage.Blobs |
Üzenetsorkötések | Hivatkozás cseréje erre:Microsoft.Azure.WebJobs.Extensions.Storage.Queues a legújabb verzióval Microsoft.Azure.Functions.Worker.Extensions.Storage.Queues |
Táblakötések | Hivatkozás cseréje erre:Microsoft.Azure.WebJobs.Extensions.Tables a legújabb verzióval Microsoft.Azure.Functions.Worker.Extensions.Tables |
Cosmos DB-kötések | Hivatkozás cseréje erre:Microsoft.Azure.WebJobs.Extensions.CosmosDB Illetve Microsoft.Azure.WebJobs.Extensions.DocumentDB a legújabb verzióval Microsoft.Azure.Functions.Worker.Extensions.CosmosDB |
Szolgáltatásbusz-kötések | Hivatkozás cseréje erre:Microsoft.Azure.WebJobs.Extensions.ServiceBus a legújabb verzióval Microsoft.Azure.Functions.Worker.Extensions.ServiceBus |
Event Hubs-kötések | Hivatkozás cseréje erre:Microsoft.Azure.WebJobs.Extensions.EventHubs a legújabb verzióval Microsoft.Azure.Functions.Worker.Extensions.EventHubs |
Event Grid-kötések | Hivatkozás cseréje erre:Microsoft.Azure.WebJobs.Extensions.EventGrid a legújabb verzióval Microsoft.Azure.Functions.Worker.Extensions.EventGrid |
SignalR Service-kötések | Hivatkozás cseréje erre:Microsoft.Azure.WebJobs.Extensions.SignalRService a legújabb verzióval Microsoft.Azure.Functions.Worker.Extensions.SignalRService |
Tartós függvények | Hivatkozás cseréje erre:Microsoft.Azure.WebJobs.Extensions.DurableTask a legújabb verzióval Microsoft.Azure.Functions.Worker.Extensions.DurableTask |
Tartós függvények (SQL Storage-szolgáltató) |
Hivatkozás cseréje erre:Microsoft.DurableTask.SqlServer.AzureFunctions a legújabb verzióval Microsoft.Azure.Functions.Worker.Extensions.DurableTask.SqlServer |
Tartós függvények (Netherite storage provider) |
Hivatkozás cseréje erre:Microsoft.Azure.DurableTask.Netherite.AzureFunctions a legújabb verzióval Microsoft.Azure.Functions.Worker.Extensions.DurableTask.Netherite |
SendGrid-kötések | Hivatkozás cseréje erre:Microsoft.Azure.WebJobs.Extensions.SendGrid a legújabb verzióval Microsoft.Azure.Functions.Worker.Extensions.SendGrid |
Kafka-kötések | Hivatkozás cseréje erre:Microsoft.Azure.WebJobs.Extensions.Kafka a legújabb verzióval Microsoft.Azure.Functions.Worker.Extensions.Kafka |
RabbitMQ-kötések | Hivatkozás cseréje erre:Microsoft.Azure.WebJobs.Extensions.RabbitMQ a legújabb verzióval Microsoft.Azure.Functions.Worker.Extensions.RabbitMQ |
Függőséginjektálás és indítási konfiguráció |
Hivatkozás eltávolításaMicrosoft.Azure.Functions.Extensions (Az izolált feldolgozói modell alapértelmezés szerint ezt a funkciót biztosítja.) |
A megfontolandó bővítmények teljes listájáért tekintse meg a támogatott kötéseket , és tekintse meg az egyes bővítmények dokumentációját az izolált folyamatmodellre vonatkozó teljes telepítési utasításokért. Mindenképpen telepítse a megcélzott csomagok legújabb stabil verzióját.
Tipp.
Előfordulhat, hogy a folyamat során a bővítményverziók módosításai szükségessé teszik a fájl frissítését host.json
is. Mindenképpen olvassa el a használt bővítmények dokumentációját.
A Service Bus-bővítmény például a 4.x és az 5.x verzió közötti struktúrában kompatibilitástörő változásokat mutat. További információ: Azure Service Bus-kötések az Azure Functionshez.
Az izolált feldolgozómodell-alkalmazás nem hivatkozhat a névterekben vagy Microsoft.Azure.Functions.Extensions
a Microsoft.Azure.WebJobs.*
. Ha további hivatkozásokkal rendelkezik ezekre, azokat el kell távolítani.
Tipp.
Az alkalmazás az Azure SDK-típusoktól is függhet, akár az eseményindítók és kötések részeként, akár önálló függőségként. Használja ki ezt a lehetőséget, hogy ezeket is frissítse. A Functions-bővítmények legújabb verziói a .NET-hez készült Azure SDK legújabb verzióival működnek, amelyek szinte minden csomagja az űrlapAzure.*
.
Program.cs fájl
Izolált feldolgozói folyamatba való migráláskor hozzá kell adnia egy Program.cs
fájlt a projekthez a következő tartalommal:
using Microsoft.Azure.Functions.Worker;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;
var host = new HostBuilder()
.ConfigureFunctionsWebApplication()
.ConfigureServices(services => {
services.AddApplicationInsightsTelemetryWorkerService();
services.ConfigureFunctionsApplicationInsights();
})
.Build();
host.Run();
Ez a példa ASP.NET Core-integrációt is tartalmaz, amely javítja a teljesítményt, és ismerős programozási modellt biztosít, amikor az alkalmazás HTTP-eseményindítókat használ. Ha nem kíván HTTP-eseményindítókat használni, a hívás ConfigureFunctionsWebApplication
lecserélhető a következő hívásra ConfigureFunctionsWorkerDefaults
: . Ha így tesz, eltávolíthatja a hivatkozásokat Microsoft.Azure.Functions.Worker.Extensions.Http.AspNetCore
a projektfájlból. A legjobb teljesítmény érdekében azonban még a más triggertípusokkal rendelkező függvények esetében is meg kell tartania a FrameworkReference
ASP.NET Core-t.
A Program.cs
fájl lecserél minden olyan fájlt, amely rendelkezik az FunctionsStartup
attribútummal, amely általában egy Startup.cs
fájl. Azokban a helyeken, ahol a FunctionsStartup
kód hivatkoznaIFunctionsHostBuilder.Services
, ehelyett hozzáadhat utasításokat a .ConfigureServices()
metóduson belül a Program.cs
HostBuilder
saját . A munkával Program.cs
kapcsolatos további információkért tekintse meg az elkülönített feldolgozói modell útmutatójának indítási és konfigurációs útmutatóját.
A fenti alapértelmezett Program.cs
példák közé tartozik az alkalmazás Elemzések integrálása az izolált feldolgozómodellhez. Program.cs
Emellett konfigurálnia kell minden olyan naplószűrést is, amely a projekt kódjából származó naplókra vonatkozik. Az izolált feldolgozómodellben a fájl csak a host.json
Functions-gazdagép futtatókörnyezete által kibocsátott eseményeket szabályozza. Ha nem konfigurálja a Program.cs
szűrési szabályokat, akkor a telemetria különböző kategóriáihoz tartozó naplószintek különbségei jelenhetnek meg.
Bár az egyéni konfigurációs forrásokat a HostBuilder
program részeként regisztrálhatja, vegye figyelembe, hogy ezek hasonlóan csak a projekt kódjára vonatkoznak. A platformnak trigger- és kötéskonfigurációra is szüksége van, amelyet az alkalmazásbeállítások, a Key Vault-hivatkozások vagy az alkalmazáskonfigurációs referenciák funkcióinak segítségével kell megadni.
Miután áthelyezett mindent a meglévőből FunctionsStartup
a Program.cs
fájlba, törölheti az FunctionsStartup
attribútumot és az osztályt, amelyre alkalmazták.
Függvény aláírásának változásai
Egyes kulcstípusok a folyamaton belüli modell és az izolált feldolgozói modell között változnak. Ezek közül sok a függvény-aláírást alkotó attribútumokhoz, paraméterekhez és visszatérési típusokhoz kapcsolódik. Az egyes függvények esetében az alábbiakat kell módosítania:
- A függvényattribútum (amely a függvény nevét is beállítja)
- Hogyan szerez be a függvény egy
ILogger
/ILogger<T>
- Trigger- és kötési attribútumok és paraméterek
A szakasz többi része végigvezeti ezen lépések mindegyikén.
Függvényattribútumok
Az FunctionName
attribútum helyébe az Function
izolált feldolgozói modell attribútuma lép. Az új attribútumnak ugyanaz az aláírása, és az egyetlen különbség a névben van. Ezért csak sztringcserét hajthat végre a projekten belül.
Naplózás
A folyamatban lévő modellben hozzáadhat egy további ILogger
paramétert a függvényhez, vagy függőséginjektálást használhat egy ILogger<T>
. Ha már függőséginjektálást használt, ugyanazok a mechanizmusok működnek az izolált feldolgozói modellben.
A metódusparaméterre ILogger
támaszkodó függvények esetében azonban módosítást kell végeznie. Ajánlott függőséginjektálást használni egy ILogger<T>
. A függvény naplózási mechanizmusának áttelepítéséhez kövesse az alábbi lépéseket:
A függvényosztályban adjon hozzá egy tulajdonságot
private readonly ILogger<MyFunction> _logger;
a függvényosztály nevére cserélveMyFunction
.Hozzon létre egy konstruktort a függvényosztályhoz, amely paraméterként veszi fel a
ILogger<T>
következőt:public MyFunction(ILogger<MyFunction> logger) { _logger = logger; }
Cserélje le a fenti kódrészlet mindkét példányát
MyFunction
a függvényosztály nevére.A függvénykód naplózási műveleteihez cserélje le a paraméterre mutató hivatkozásokat a
ILogger
következőre_logger
: .Távolítsa el a paramétert
ILogger
a függvény-aláírásból.
További információ: Naplózás az izolált feldolgozói modellben.
Változások aktiválása és kötése
Amikor az előző lépésben módosította a csomaghivatkozásokat, hiba lépett fel az eseményindítók és kötések esetében, amelyeket most javítani fog:
Távolítsa el az utasításokat
using Microsoft.Azure.WebJobs;
.Adjon hozzá egy utasítást
using Microsoft.Azure.Functions.Worker;
.Minden kötési attribútum esetében módosítsa az attribútum nevét a referenciadokumentációban megadott módon, amelyet a Támogatott kötések indexben talál. Az attribútumnevek általában a következőképpen változnak:
- Az eseményindítók neve általában változatlan marad. Például
QueueTrigger
a két modell attribútumneve. - A bemeneti kötésekhez általában hozzá kell adni a "Bemenet" kifejezést a nevükhöz. Ha például a
CosmosDB
bemeneti kötés attribútumot használja a folyamatban lévő modellben, akkor ez most az leszCosmosDBInput
. - A kimeneti kötésekhez általában hozzá kell adni a "Kimenet" szót a nevükhöz. Ha például a
Queue
kimeneti kötés attribútumot használja a folyamaton belüli modellben, akkor ez most az leszQueueOutput
.
- Az eseményindítók neve általában változatlan marad. Például
Frissítse az attribútumparamétereket a kötés referenciadokumentációjában megadott izolált feldolgozómodell-verziónak megfelelően.
A folyamaton belüli modellben például a blob kimeneti kötését egy
[Blob(...)]
tulajdonságot tartalmazóAccess
attribútum jelöli. Az izolált feldolgozói modellben a blob kimeneti attribútuma a következő lenne[BlobOutput(...)]
: . A kötéshez már nincs szükség aAccess
tulajdonságra, így a paraméter eltávolítható. Így[Blob("sample-images-sm/{fileName}", FileAccess.Write, Connection = "MyStorageConnection")]
válhatna[BlobOutput("sample-images-sm/{fileName}", Connection = "MyStorageConnection")]
.A kimeneti kötések áthelyezése a függvényparaméterek listájából. Ha csak egy kimeneti kötése van, ezt alkalmazhatja a függvény visszatérési típusára. Ha több kimenettel rendelkezik, hozzon létre egy új osztályt az egyes kimenetek tulajdonságaival, és alkalmazza az attribútumokat ezekre a tulajdonságokra. További információ: Több kimeneti kötés.
Tekintse meg az egyes kötések referenciadokumentációját azokra a típusokra vonatkozóan, amelyekhez lehetővé teszi a kötést. Bizonyos esetekben előfordulhat, hogy módosítania kell a típust. Kimeneti kötések esetén, ha a folyamaton belüli modell verziója használt egy
IAsyncCollector<T>
, akkor ezt a céltípus egy tömbjének kötésére cserélheti:T[]
. Azt is megfontolhatja, hogy a kimeneti kötést lecserélje egy ügyfélobjektumra az általa képviselt szolgáltatáshoz, akár egy bemeneti kötés kötéstípusaként, ha elérhető, akár úgy, hogy saját maga injektál egy ügyfelet.Ha a függvény tartalmaz egy paramétert
IBinder
, távolítsa el. Cserélje le a funkciót egy ügyfélobjektumra az általa képviselt szolgáltatáshoz, akár a bemeneti kötés kötéstípusaként, akár saját maga injektálva.Frissítse a függvénykódot, hogy bármilyen új típussal működjön.
local.settings.json fájl
A local.settings.json fájl csak helyi futtatáskor használható. További információt a Helyi beállítások fájlban talál.
Amikor a folyamaton belüli futtatásról az elkülönített feldolgozói folyamatba migrál, az FUNCTIONS_WORKER_RUNTIME
értéket "dotnet-izolált" értékre kell módosítania. Győződjön meg arról, hogy a local.settings.json fájl legalább a következő elemeket tartalmazza:
{
"IsEncrypted": false,
"Values": {
"AzureWebJobsStorage": "UseDevelopmentStorage=true",
"FUNCTIONS_WORKER_RUNTIME": "dotnet-isolated"
}
}
Az "AzureWebJobsStorage"-hoz konfigurált érték eltérő lehet. A migrálás részeként nem kell módosítania az értékét.
host.json fájl
A fájlban nincs szükség módosításokra host.json
. Ha azonban az alkalmazás Elemzések konfigurációt ebben a fájlban a folyamatban lévő modellprojektből, érdemes lehet további módosításokat végeznie a Program.cs
fájlban. A host.json
fájl csak a Functions-gazdagép futtatókörnyezetéből való naplózást szabályozza, és az izolált feldolgozói modellben ezek a naplók egy része közvetlenül az alkalmazásból származik, így több vezérlést biztosít. A naplók szűrésének részleteiért tekintse meg az izolált feldolgozói modell naplószintjeinek kezelését ismertető cikket.
Egyéb kódmódosítások
Ez a szakasz a migrálás során megfontolandó egyéb kódmódosításokat emeli ki. Ezekre a módosításokra nem minden alkalmazásnak van szüksége, de érdemes kiértékelni, hogy vannak-e relevánsak a forgatókönyvek szempontjából.
JSON-szerializálás
Alapértelmezés szerint az izolált feldolgozói modell JSON-szerializálást használ System.Text.Json
. A szerializáló beállításainak testreszabásához vagy a JSON.NET (Newtonsoft.Json
) váltáshoz tekintse meg ezeket az utasításokat.
Alkalmazás Elemzések naplószintjei és szűrése
A naplók a Functions-gazdagép futtatókörnyezetéből és a projekt kódjából is elküldhetők az Alkalmazás Elemzések. Ez host.json
lehetővé teszi a gazdagépnaplózás szabályainak konfigurálását, de a kódból származó naplók szabályozásához a szűrési szabályokat a Program.cs
saját részeként kell konfigurálnia. A naplók szűrésének részleteiért tekintse meg az izolált feldolgozói modell naplószintjeinek kezelését ismertető cikket.
Példa függvény migrálására
PÉLDA HTTP-eseményindítóra
A folyamaton belüli modell HTTP-eseményindítója az alábbi példához hasonlóan nézhet ki:
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Azure.WebJobs;
using Microsoft.Azure.WebJobs.Extensions.Http;
using Microsoft.Extensions.Logging;
namespace Company.Function
{
public static class HttpTriggerCSharp
{
[FunctionName("HttpTriggerCSharp")]
public static IActionResult Run(
[HttpTrigger(AuthorizationLevel.Function, "get", Route = null)] HttpRequest req,
ILogger log)
{
log.LogInformation("C# HTTP trigger function processed a request.");
return new OkObjectResult($"Welcome to Azure Functions, {req.Query["name"]}!");
}
}
}
A migrált verzió HTTP-eseményindítója a következő példához hasonló lehet:
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Azure.Functions.Worker;
using Microsoft.Extensions.Logging;
namespace Company.Function
{
public class HttpTriggerCSharp
{
private readonly ILogger<HttpTriggerCSharp> _logger;
public HttpTriggerCSharp(ILogger<HttpTriggerCSharp> logger)
{
_logger = logger;
}
[Function("HttpTriggerCSharp")]
public IActionResult Run(
[HttpTrigger(AuthorizationLevel.Function, "get")] HttpRequest req)
{
_logger.LogInformation("C# HTTP trigger function processed a request.");
return new OkObjectResult($"Welcome to Azure Functions, {req.Query["name"]}!");
}
}
}
A függvényalkalmazás frissítése az Azure-ban
A függvényalkalmazás frissítése az izolált modellre két lépésből áll:
- Módosítsa a függvényalkalmazás konfigurációját az izolált modell használatára az
FUNCTIONS_WORKER_RUNTIME
alkalmazásbeállítás beállításávaldotnet-isolated
. Győződjön meg arról, hogy az üzembe helyezés automatizálása hasonlóan frissült. - Tegye közzé a migrált projektet a frissített függvényalkalmazásban.
Ha a Visual Studio használatával tesz közzé egy izolált feldolgozómodell-projektet egy meglévő függvényalkalmazásban, amely a folyamatban lévő modellt használja, a rendszer kérni fogja, hogy a Visual Studio frissítse a függvényalkalmazást az üzembe helyezés során. Ez mindkét lépést egyszerre hajtja végre.
Ha minimalizálnia kell az állásidőt, fontolja meg egy átmeneti pont használatát a migrált kód teszteléséhez és ellenőrzéséhez a frissített Azure-konfigurációval. Ezután egy felcserélési művelettel üzembe helyezheti a teljesen migrált alkalmazást az éles ponton.
Miután elvégezte ezeket a lépéseket, az alkalmazás teljesen át lett migrálva az izolált modellbe. Gratulálunk! Ismételje meg az útmutató lépéseit a migrálást igénylő egyéb alkalmazások esetében.