.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:

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:

  1. 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.
  2. A projekt migrálása után tesztelje az alkalmazást helyileg az Azure Functions Core Tools 4.x-es verziójával.
  3. 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:

  1. Állítsa be a következő értékét PropertyGroup: .TargetFramework to net8.0.

  2. Állítsa be a következő értékét PropertyGroup: .AzureFunctionsVersion to v4.

  3. Adja hozzá a következő OutputType elemet a PropertyGroupkövetkezőhöz:

    <OutputType>Exe</OutputType>
    
  4. ItemGroupA .PackageReference listában cserélje le a csomaghivatkozást Microsoft.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.

  5. 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 Replace
Microsoft.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ása
Microsoft.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.Extensionsa 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.csHostBuilder saját . A munkával Program.cskapcsolatos 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.csEmellett 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.csszű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 HostBuilderprogram 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:

  1. A függvényosztályban adjon hozzá egy tulajdonságot private readonly ILogger<MyFunction> _logger; a függvényosztály nevére cserélve MyFunction .

  2. 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.

  3. 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: .

  4. 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:

  1. Távolítsa el az utasításokat using Microsoft.Azure.WebJobs; .

  2. Adjon hozzá egy utasítást using Microsoft.Azure.Functions.Worker; .

  3. 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 lesz CosmosDBInput.
    • 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 lesz QueueOutput.
  4. 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 a Access 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")].

  5. 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.

  6. 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.

  7. 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.

  8. 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.cssajá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:

  1. 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ával dotnet-isolated. Győződjön meg arról, hogy az üzembe helyezés automatizálása hasonlóan frissült.
  2. 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.

Következő lépések