Helyi függvények létrehozása és futtatása a Standard workflows for Azure Logic Apps

A következőkre vonatkozik: Azure Logic Apps (Standard)

Ha az integrációs munkafolyamatodnak logikára van szüksége a beépített műveleteken és előre összeszerelt csatlakozókon túl, hozz létre egy helyi függvényt , ahol a kód a logikai alkalmazás megoldásához specifikus marad. Ez a helyi függvény egyedi .NET kód, amelyet ugyanabban az Azure Logic Apps Standard projektben írsz, futtatsz, debugálsz és telepítel, mint a hívói munkafolyamatok. Ha a funkciót helyben tartjuk, fejlesztheted, biztonságossá teheted, telepítheted, skálázhatod és üzemeltetheted a munkafolyamatot és annak egyedi kódját egyetlen alkalmazásként.

A helyi függvények segítik a munkafolyamatokat olyan feladatok elvégzésében, mint például:

  • Egyedi üzleti logikát és számításokat valósíts meg.
  • Elemezze a saját vagy összetett bejövő üzeneteket.
  • Validálni, gazdagítani vagy egyszerű átalakításokat végezni az adatokon.
  • Formázza a kimenő üzeneteket API-hoz, csatlakozóhoz vagy partnerrendszerhez.
  • Használjuk újra a megfelelő .NET segítő logikát meglévő integrációs megoldásokból, beleértve a BizTalk Server migrációs helyzeteket is.

Helyi rendezvényekkel a következő célokat érheted el:

Goal Képesség
Fejlessz és hibakeress egy megoldást Hozd létre a munkafolyamatot és a helyi függvényt ugyanabban a Visual Studio Code-munkatérben, és egyetlen hibakeresési munkamenetben lépj végig mindkettőn.
Együtt telepítsük Építse és telepítse a helyi funkciót a hívó munkafolyamatai mellett anélkül, hogy külön szolgáltatási tervet biztosítana.
Csökkentsék a szolgáltatási határokat Kerüld el a külön Function alkalmazást, HTTP végpontot, hitelesítési folyamatot és hálózati ugrást a munkafolyamat-specifikus kódhoz.
Kombináld az alacsony kódos és a pro-kód eszközöket Használj csatlakozókat és munkafolyamat-orkrábrációt az integrációs folyamathoz. Helyi függvényeket használj speciális .NET logikához.

Egy helyi függvény eltér egy külön funkcióalkalmazásban található Azure Functions-ban található függvénytől. Az Azure Functions akkor működik a legjobban, ha a kódodnak független végpontot kell kitárnia, alkalmazások között kell megosztani, saját telepítési és verziókezelési életciklusát követnie, vagy függetlenül skáláznia kell. Ha a kódodnak egy adott Azure Logic Apps Standard megoldáson belül kell működnie, és meg kell osztania az alkalmazás életciklusát a hívó munkafolyamataival, használj egy helyi funkciót.

Ez az útmutató bemutatja, hogyan lehet létrehozni, építeni, hívni, hibakeresést és telepíteni helyi .NET funkciókat Standard munkafolyamatokhoz a Visual Studio Code használatával.

Megjegyzés

A helyi függvények nem alkalmasak az alábbi helyzetekre:

  • Olyan folyamatokat futtat, amelyek túlléphetik a 10 percet.
  • BizTalk Server pipeline komponenseinek alkalmazása, amelyek streaminget valósítanak meg.

További információ: Korlátozások.

Előfeltételek

  • Egy Azure fiók és előfizetés. Ingyenes Azure fiók létrehozása.

  • A legújabb Visual Studio Code az Azure Logic Apps (Standard) bővítménnyel.

    Az előfeltételekről lásd a Standard munkafolyamatok létrehozása egybérlős Azure Logic Apps alkalmazásban a Visual Studio Code részben.

    A bővítmény a következő képességeket és előnyöket biztosítja:

    • Saját kód megírásához olyan függvényeket hozhat létre, amelyek rugalmasságával és vezérlésével megoldhatja a legnagyobb kihívást jelentő integrációs problémákat.
    • A Visual Studio Code-ban helyileg hajtsa végre a hibakeresést. Haladjon végig a kódon és a munkafolyamatokon ugyanabban a hibakeresési munkamenetben.
    • A kódot telepítse a munkafolyamatok mellett. Nincs szükség más szolgáltatási csomagokra.
    • Az BizTalk Server migrálási forgatókönyvek támogatása az egyéni .NET beruházások helyszíni környezetből a felhőbe való áthelyezéséhez.
  • A kódprojekthez használandó helyi mappa.

Korlátozások

  • Helyi függvényeket csak a Visual Studio Code-ban lehet létrehozni, amely Windows-on fut. Ez a képesség támogatja a .NET Framework-et és a .NET 8-at a Standard munkamunka-csatornákhoz, amelyeket a Workflow Service Plan, App Service Environment v3 (ASE v3) vagy Hybrid rendszeren üzemeltetnek.

  • Az Azure Portálon nem használhat egyéni függvények készítését. Ha azonban egyéni függvények kimeneteivel szeretne dolgozni a munkafolyamatban, kövesse az alábbi lépéseket:

    1. Miután üzembe helyezte a függvényeket az Azure-on, kövesse a Kód meghívása egy munkafolyamatból lépéseit az Azure portálon.

    2. Adja hozzá a logikai alkalmazás Helyi függvény meghívása nevű beépített műveletét a munkafolyamathoz. Válassza ki a kívánt üzembe helyezett egyéni függvényeket, és futtassa a kódot.

    3. A következő munkafolyamat-műveletek használatával hivatkozhat az egyéni függvény kimenetére, ahogyan bármely más munkafolyamatban is. Megtekintheti a beépített művelet futtatási előzményeit, bemeneteit és kimeneteit.

Általános korlátozásokért tekintse meg a Limits és az Azure Logic Apps konfigurációs referenciáját.

1: Kódprojekt létrehozása

A Visual Studio Code Azure Logic Apps (Standard) bővítménye tartalmaz egy kódprojektsablont, amely leegyszerűsíti a saját kód írását, hibakeresését és üzembe helyezését a munkafolyamatokkal. Ez a projektsablon létrehoz egy munkaterületfájlt és két mintaprojektet: egy projektet a kód megírásához és egy másik projektet a munkafolyamatok létrehozásához.

Megjegyzés

Nem használhatja ugyanazt a projektmappát a kódhoz és a munkafolyamatokhoz.

Kódprojekt létrehozásához kövesse az alábbi lépéseket:

  1. Visual Studio Code jelentkezzen be az Azure fiókjába.

    Ha a bejelentkezés a szokásosnál tovább tart, Visual Studio Code egy eszközkód megadásával kéri, hogy jelentkezzen be egy Microsoft hitelesítési webhelyen keresztül. Ha inkább a kód használatával szeretne bejelentkezni, kövesse az alábbi lépéseket:

    1. Válassza az Eszközkód használata, majd a Másolás és megnyitás lehetőséget.

    2. A Hivatkozás megnyitása gombra kattintva nyisson meg egy új böngészőablakot, és lépjen tovább a hitelesítési webhelyre.

    3. A fióklapra való bejelentkezéskor adja meg a hitelesítési kódot, és válassza a Tovább gombot.

  2. A tevékenységsávon válassza a Azure ikont.

  3. A Azure ablakban nyissa meg a Munkatér szakaszt. Vigye az egérmutatót a címterület fölé, hogy megjelenjen az eszköztár.

  4. A Azure Logic Apps menüben válassza Új logikai alkalmazás munkaterületének létrehozása.

    Képernyőkép, amelyen a Visual Studio Code, az Azure ablak és a Workspace eszköztár menüje látható, és az „Új Logic Apps-munkaterület létrehozása” lehetőség van kiválasztva.

  5. A Mappa kijelölése ablakban tallózással keresse meg a helyi projektmappát, jelölje ki a mappát, majd válassza ki a kívánt mappát.

  6. Az Új logikai alkalmazás munkaterület létrehozása ablakban adja meg a munkaterület nevét , majd nyomja le az Enter billentyűt.

    Ez a példa a munkaterület neveként szolgál weather-app :

    Képernyőkép, ami mutatja a munkaterület név beírásának kérését.

  7. A Select a template for your new project prompt (Sablon kiválasztása az új projekthez) beállításnál válassza az egyéni kódprojekttel rendelkező Logikai alkalmazás lehetőséget.

    Képernyőkép az „Új Logic App-munkaterület létrehozása” párbeszédpanelről, amelyen látható a sablonlista, valamint az „Egyéni kódot tartalmazó Logic App-projekt” lehetőség kiválasztva.

  8. A A cél-keretrendszer kijelölése kérdésnél válassza a .NET Keretrendszer vagy .NET 8 lehetőséget.

  9. A következő utasításokat követve adja meg a következő információkat:

    Haladéktalan Példaérték
    Logikai alkalmazás neve weather-logic-app
    Függvény neve a .NET függvényprojekthez WeatherForecast
    Namespace a .NET függvényprojekthez Contoso.Enterprise
    Válasszon egy sablont a projekt első munkafolyamatához:

    - Állapotalapú munkafolyamat
    - Állapot nélküli munkafolyamat
    - Autonóm ügynök
    - Beszélgetési ügynök
    - Ugrás egyelőre
    Állapotalapú munkafolyamat
    Munkafolyamat neve weather-workflow
  10. A Select how you to open your project prompt (Válassza ki, hogyan szeretné megnyitni a projekt parancssorát ) beállításnál válassza a Megnyitás az aktuális ablakban lehetőséget.

    A lépés befejezése után Visual Studio Code létrehozza a munkaterületet, amely alapértelmezés szerint egy .NET függvényprojektet és egy logikai alkalmazásprojektet is tartalmaz, például:

    Képernyőkép, amely a létrehozott munkaterületet mutatja a logikai app projekttel és a .NET funkciók projektjével.

    Az Explorer ablakban jegyezze fel a munkaterület alábbi mappáit:

    Mappa Leírás
    < munkaterület neve> A .NET függvényprojektet és a logikai alkalmazás munkafolyamat-projektét is tartalmazza.
    < logic-app-name> A logikai alkalmazásprojekt fájljait és egyéb összetevőit tartalmazza. A workflow.json fájl például az a munkafolyamat-definíciós fájl, amelyben létrehozhatja a munkafolyamatot.
    < függvény neve> A .NET függvényprojekt fájljait és egyéb összetevőit tartalmazza. például a <function-name>.cs fájl az a kód fájl, ahol megírhatja a kódját.
  11. Az Azure Logic Apps Enable connectors for <logic-app-name> parancssorában válassza az Azure összekötők használata-t.

  12. A Select előfizetés kérdésnél válassza ki a kívánt Azure előfizetést.

  13. A Select a resource group for new resources prompt (Erőforráscsoport kiválasztása új erőforrásokhoz) kérdésnél válassza ki a kívánt erőforráscsoportot, vagy hozzon létre új erőforráscsoportot.

  14. A Hely kijelölése új erőforrásokhoz kérdésnél válassza ki az üzembe helyezéshez Azure régiót.

  15. A Azure összekötőkhöz válassza ki a hitelesítési módszert, válassza ki a hitelesítési típust a hitelesítést igénylő kapcsolatokhoz.

    Hitelesítési típus Leírás
    Felügyelt identitás Válassza a Felügyeltszolgáltatás-identitás lehetőséget a rendszer által hozzárendelt vagy felhasználó által hozzárendelt identitás használatához a logikai alkalmazás erőforrásán.

    Alapértelmezés szerint a standard logikai alkalmazás erőforrásai már engedélyezve vannak a rendszer által hozzárendelt identitással. Azonban be kell állítania az identitást a célerőforráson szerepkör-alapú hozzáféréssel, valamint teljesítenie kell minden egyéb követelményt.

    További információ: Szerepköralapú hozzáférés hozzárendelése felügyelt identitáshoz.
    Kapcsolati kulcsok A célerőforráshoz való hozzáférés beállítása kapcsolati sztringek és hozzáférési kulcsok használatával.

A lépések elvégzése után folytassa a következő szakaszban, hogy meg tudja adni a kódot.

2: A kód írása

  1. Az Explorer ablakban bontsa ki a függvényprojekt mappát, és nyissa meg a <függvénynév>.cs fájlt.

    Ez a fájl mintakódot és konkrét kódelemeket tartalmaz a korábban megadott értékekkel.

    Ebben a példában a WeatherForecast.cs függvényfájl az alábbi kódelemeket tartalmazza példaértékekkel:

    Kód elem Érték
    Névtér neve Contoso.Enterprise
    Osztály neve WeatherForecast
    Függvénynév WeatherForecast
    Függvényparaméterek zipCode, temperatureScale
    Visszatérési típus Task<Weather>
    Összetett típus Weather

    Az alábbi példa a teljes mintakódot mutatja be:

    //------------------------------------------------------------
    // Copyright (c) Microsoft Corporation. All rights reserved.
    //------------------------------------------------------------
    
    namespace Contoso.Enterprise
    {
        using System;
        using System.Collections.Generic;
        using System.Threading.Tasks;
        using Microsoft.Azure.Functions.Extensions.Workflows;
        using Microsoft.Azure.WebJobs;
        using Microsoft.Extensions.Logging;
    
        /// <summary>
        /// Represents the WeatherForecast flow invoked function.
        /// </summary>
        public class WeatherForecast
        {
    
            private readonly ILogger<WeatherForecast> logger;
    
            public WeatherForecast(ILoggerFactory loggerFactory)
            {
                logger = loggerFactory.CreateLogger<WeatherForecast>();
            }
    
            /// <summary>
            /// Executes the logic app workflow.
            /// </summary>
            /// <param name="zipCode">The zip code.</param>
            /// <param name="temperatureScale">The temperature scale (e.g., Celsius or Fahrenheit).</param>
            [FunctionName("WeatherForecast")]
            public Task<Weather> Run([WorkflowActionTrigger] int zipCode, string temperatureScale)
            {
    
                this.logger.LogInformation("Starting WeatherForecast with Zip Code: " + zipCode + " and Scale: " + temperatureScale);
    
                // Generate random temperature within a range based on the temperature scale
                Random rnd = new Random();
                var currentTemp = temperatureScale == "Celsius" ? rnd.Next(1, 30) : rnd.Next(40, 90);
                var lowTemp = currentTemp - 10;
                var highTemp = currentTemp + 10;
    
                // Create a Weather object with the temperature information
                var weather = new Weather()
                {
                    ZipCode = zipCode,
                    CurrentWeather = $"The current weather is {currentTemp} {temperatureScale}",
                    DayLow = $"The low for the day is {lowTemp} {temperatureScale}",
                    DayHigh = $"The high for the day is {highTemp} {temperatureScale}"
                };
    
                return Task.FromResult(weather);
            }
    
            /// <summary>
            /// Represents the weather information for WeatherForecast.
            /// </summary>
            public class Weather
            {
                /// <summary>
                /// Gets or sets the zip code.
                /// </summary>
                public int ZipCode { get; set; }
    
                /// <summary>
                /// Gets or sets the current weather.
                /// </summary>
                public string CurrentWeather { get; set; }
    
                /// <summary>
                /// Gets or sets the low temperature for the day.
                /// </summary>
                public string DayLow { get; set; }
    
                /// <summary>
                /// Gets or sets the high temperature for the day.
                /// </summary>
                public string DayHigh { get; set; }
            }
        }
    }
    

    A függvénydefiníció egy alapértelmezett Run metódust tartalmaz, amelyet az első lépésekhez használhat. Ez a minta Run metódus bemutatja az egyéni függvények funkcióval elérhető néhány képességet, például különböző bemenetek és kimenetek átadását, beleértve az összetett .NET típusokat.

    A <függvénynév>.cs fájl tartalmazza azt a felületet is, amely támogatja az ILogger Események naplózását egy Application Insights-erőforrásba. Nyomkövetési információkat küldhet az Application Insightsnak, és ezeket az információkat a munkafolyamatok nyomkövetési információival együtt tárolhatja, például:

    private readonly ILogger<WeatherForecast> logger;
    
    public WeatherForecast(ILoggerFactory loggerFactory)
    {
        logger = loggerFactory.CreateLogger<WeatherForecast>();
    }
    
    [FunctionName("WeatherForecast")]
    public Task<Weather> Run([WorkflowActionTrigger] int zipCode, string temperatureScale)
    {
    
        this.logger.LogInformation("Starting WeatherForecast with Zip Code: " + zipCode + " and Scale: " + temperatureScale);
    
        <...>
    
    }
    
  2. Cserélje le a mintafüggvénykódot a sajátra, és szerkessze az adott forgatókönyvek alapértelmezett Run metódusát. Másolhatja a függvényt, beleértve a [FunctionName("<function-name>")] deklarációt is, majd átnevezheti a függvényt egyedi névvel. Ezután szerkesztheti az átnevezett függvényt az igényeinek megfelelően.

Ez a példa az eredeti mintakóddal folytatódik, ha nincs változás.

3: A kód fordítása és létrehozása

Miután befejezted a kód megírását, fordítsd le, hogy megbizonyosodj arról, hogy nincs fordítási hiba. A .NET functions projekted automatikusan tartalmaz olyan építési feladatokat, amelyek lefordítják és hozzáadják a kódodat a logikaalkalmazási projekt lib\custom mappájába. A munkafolyamatok egyedi funkciókat keresnek ebben a mappában. A .NET verziójától függően ezek a feladatok a szerelvényeket a lib\custom\net472 vagy lib\custom\net8 mappába helyezik.

Kövesse az alábbi lépéseket:

  1. A Visual Studio Code tevékenységsávján válassza a Explorer lehetőséget.

  2. Az Explorer ablakban nyissa meg a Functions-projekt mappa helyi menüjét, és válassza a Függvények létrehozása projektet.

    A függvényprojekt helyi menüjét bemutató képernyőkép, amelyen a „Függvényprojekt összeállítása” lehetőség van kiválasztva.

    A build feladat fut a függvényprojekthez. Ha a build sikeres, a terminálablakban megjelenik egy sikeres buildelési üzenet.

  3. Győződjön meg arról, hogy a következő elemek szerepelnek a logikai alkalmazás projektjében:

    • A munkaterületen bontsa ki a következő mappákat: <your-logic-app>>lib\custom>net472 vagy net8, .NET verzió alapján. Győződjön meg róla, hogy a net472 vagy net8 almappa tartalmazza a kód futtatásához szükséges assembly (DLL) fájlokat, beleértve egy function-name><.dllnevű fájlt is.

    • A munkaterületen bontsa ki a következő mappákat: <a logikai alkalmazás>>lib\custom><függvény-neve>. Erősítse meg, hogy a<függvénynév> almappában van egyfunction.json fájl, amely tartalmazza a megírt függvénykód metaadatait. A munkafolyamat-tervező ezzel a fájllal határozza meg a kód meghívásakor szükséges bemeneteket és kimeneteket.

    Az alábbi példa a logikai alkalmazás projektjében létrehozott mintaszerelvényeket és más fájlokat mutatja be:

    Képernyőkép, amely a logikai alkalmazás munkaterületét mutatja .NET funkciókkal és logikai alkalmazásprojektekkel. Az újonnan generált összeállítások és egyéb szükséges fájlok láthatók.

4: Kód meghívása munkafolyamatból

Miután meggyőződett arról, hogy a kód lefordítva van, és a logikai alkalmazás projektje tartalmazza a kód futtatásához szükséges fájlokat, állítsa be a munkafolyamatot a kód meghívására.

  1. Az Explorer ablakban bontsa ki < a munkaterület nevét>, <a logikai alkalmazás nevét>, majd a <munkafolyamat nevét>.

  2. Nyissa meg a workflow.json helyi menüjét, és válassza a Tervező megnyitása lehetőséget.

    A munkafolyamat-tervező megnyitja és megjeleníti az alapértelmezett munkafolyamatot az alábbi eseményindítóval és műveletekkel:

    Operation Leírás
    Kiváltó A HTTP-kérés fogadásakor elnevezett beépített kérelem-eseményindító.
    Action A logikai alkalmazás Helyi függvény meghívása nevű beépített művelete.
    Action A Válasz nevű beépített válaszművelet, amellyel csak a Kérés eseményindító használatakor válaszolhat a hívónak.
  3. A tervezőn válassza a Helyi függvény meghívása nevű műveletet ebben a logikai alkalmazásban.

    Megnyílik a művelet információs panelje, hogy beállíthassa az egyéni függvényhívást, például:

    Képernyőkép, amely az alapértelmezett munkafolyamatot, annak triggerjét és a munkafolyamattervezőben megnyitott műveleteket mutatja.

  4. Ellenőrizze és ellenőrizze, hogy a függvénynév paraméter értéke a futtatni kívánt függvényre van-e beállítva. Tekintse át vagy módosítsa a függvény által használt egyéb paraméterértékeket.

5: A kód és a munkafolyamat hibakeresése

  1. Az alábbi Azure Storage szolgáltatások mindegyikéhez indítsa el az Azurite Storage Emulatort:

    • Azure Blob Service
    • Azure üzenetsor-szolgáltatás
    • Microsoft Azure Táblaszolgáltatás
    1. A Visual Studio Code View menüben válassza a aCommand Palette lehetőséget.

    2. A megjelenő parancssorban válassza az Azurite: Blob Service indítása lehetőséget a listából.

    3. A megjelenő munkakönyvtár-listából válassza ki a logikai alkalmazást.

    4. Ismételje meg az alábbi lépéseket az Azurite: Sor Szolgáltatás indítása és Azurite: Táblaszolgáltatás indítása.

    Ha sikeres, a képernyő alján található Visual Studio Code tálcán a három tárolószolgáltatás fut.

  2. Csatolja a hibakeresőt a logikai alkalmazás projektjéhez és .NET függvényprojektjéhez az alábbi lépések végrehajtásával:

    1. A Visual Studio Code tevékenységsávján válassza a Futtatás és hibakeresés (billentyűzet: Ctrl+Shift+D).

      Olyan képernyőkép, amelyen a Visual Studio Code Tevékenységsávja látható, a Futtatás és hibakeresés lehetőség kiválasztásával.

    2. A Futtatás és hibakeresés listában válassza a Helyi függvényt (<a logikai alkalmazást>) tartalmazó Futtatás/hibakeresés logikai alkalmazás lehetőséget, majd válassza a Lejátszás (zöld nyíl) lehetőséget.

      Képernyőkép, amely a Run and Debug listát mutatja a Run/Debug logikai alkalmazás választási opcióval helyi funkcióval.

      A következő események történnek:

      • Megnyílik a terminálablak , és megjeleníti az elindított hibakeresési folyamatot.
      • A Debug Console ablak megnyílik, és megmutatja a hibakeresési státuszt.
      • A Visual Studio Code alján a tevékenységsáv narancssárgára változik, ami azt jelzi, hogy a .NET hibakereső be van töltve.
  3. Töréspontok beállításához a függvénydefinícióban (<függvénynév>.cs) vagy munkafolyamat-definícióban (workflow.json) keresse meg a törésponthoz tartozó sorszámot, és válassza ki a szomszédos oszlopot, például:

    Képernyőkép, ami a nyitott függvénykód fájlt mutatja, amelynek megszakítási pontja van beállítva egy sorhoz a kódban.

  4. Ha manuálisan szeretné futtatni a Kérelem eseményindítót a munkafolyamatban, nyissa meg a munkafolyamat Áttekintés lapját:

    1. A logikai alkalmazás projektjében nyissa meg a workflow.json fájl helyi menüjét, majd válassza az Áttekintés lehetőséget.

      A munkafolyamat Áttekintés lapján a Futtatás eseményindító gomb érhető el, ha manuálisan szeretné elindítani a munkafolyamatot. A Munkafolyamat tulajdonságai alatt a visszahívási URL értéke az a meghívható végpont URL-címe, amelyet a munkafolyamat Kérés triggere hozott létre. Erre az URL-címre küldhet kéréseket a munkafolyamat más alkalmazásokból való aktiválásához, beleértve az egyéb logikai alkalmazások munkafolyamatait is.

    2. Az Áttekintés lap eszköztárán válassza a Futtatás eseményindítót.

      Képernyőkép, amely a Visual Studio Code-ot és a munkafolyamat megnyitott Áttekintés oldalát mutatja.

      A munkafolyamat futtatása után a hibakereső aktiválja az első töréspontot.

    3. A Futtatás menüben vagy a hibakereső eszköztáron válasszon egy hibakeresési műveletet.

    A munkafolyamat lefutását követően az Áttekintés lapon látható a befejezett futtatás és annak alapvető adatai.

  5. A munkafolyamat futtatásával kapcsolatos további információk áttekintéséhez válassza ki a befejezett futtatás lehetőséget. Vagy az Időtartam oszlop melletti listából válassza a Futtatás megjelenítése lehetőséget.

    Képernyőkép, amely a Visual Studio Code-ot és a kész munkafolyamatot mutatja.

6: A kód üzembe helyezése

Az egyéni függvények üzembe helyezése ugyanúgy történik, mint a logikai alkalmazásprojekt üzembe helyezése. Akár Visual Studio Code-ból telepítesz, akár CI/CD DevOps folyamatot használsz, győződj meg róla, hogy a kódodat telepítés előtt készíted. Továbbá győződj meg róla, hogy minden függő összeállítás a következő logikai alkalmazás projektmappákban található, mielőtt telepíted:

  • .NET 4.7.2: lib/custom/net472 mappa

  • .NET 8: lib/custom/net8 mappa

További információ: A standard munkafolyamatok üzembe helyezése Visual Studio Code és Azure.

Függőséginjektálás

A .NET 8 kiválasztásakor a Standard munkafolyamatokban az egyéni .NET kód támogatja a függőség- injektálás (DI)-t. Ez a funkció lehetővé teszi a szolgáltatások egyszeri regisztrálását, ami automatikusan elérhetővé teszi őket az egyéni kódfüggvények számára futásidőben, ahelyett, hogy függőségeket hozna létre az egyes függvényeken belül.

Megjegyzés

Csak a .NET 8 egyéni kódprojektek támogatják a függőséginjektálást a Visual Studio Code-ban.

Függőséginjektálás nélkül az egyéni kódfüggvények gyakran:

  • Szolgáltatáspéldányok létrehozása közvetlenül a függvényben.
  • Ismétlődő logika több függvény vagy munkafolyamat között.
  • Keverje össze az üzleti logikát a beállítási és konfigurációs kóddal.

A munkafolyamatok növekedésének következtében az egyéni kód tesztelése, újrafelhasználása és karbantartása nehezebbé válik. Függőségi injekció alkalmazásával a következőket teheted:

  • Különítse el az üzleti logikát a munkafolyamat-végrehajtástól.
  • Több egyéni kódfüggvény megosztott szolgáltatásainak újrafelhasználása.
  • Egyéni kód igazítása szabványos .NET fejlesztési mintákkal.

Az egyéni kód kezelhetőbbé válik az éles munkafolyamatokban, különösen akkor, ha több munkafolyamat is ugyanarra a logikára támaszkodik.

Mikor érdemes függőséginjektálást használni?

Ha egyszerű vagy egyszeri egyéni kódfüggvényekkel rendelkezik, valószínűleg nincs szüksége függőséginjektálásra. Azonban, ha az egyedi kódod az alábbi követelményeket tartalmazza, fontold meg a dependency injection használatát:

  • Több munkafolyamat is ugyanazokat az egyéni kódfüggvényeket használja vagy osztja meg.
  • Az egyéni kódfüggvények olyan üzleti vagy útválasztási logikát tartalmaznak, amely idővel változik.
  • Jobb tesztelhetőséget vagy hosszú távú karbantarthatóságot igényel.

Hogyan befolyásolja a függőséginjektálás az egyéni .NET függvényeket?

A függőséginjektálás nem változtatja meg sem a saját .NET függvények hívását, sem a munkafolyamat viselkedését. Ez a képesség csak a mögöttes egyéni kódstruktúrát módosítja, de ugyanazt az eredményt eredményezi. A következő lépések ezt a folyamatot írják le:

  1. Azure Logic Apps betölti az egyéni kódprojektet.
  2. Azure Logic Apps példányosítja, regisztrálja és injektálja a szükséges szolgáltatásokat a függvénybe.
  3. A függvény az injektált függőségek használatával fut.

Függőséginjektálás engedélyezése

Ha függőséginjektálást szeretne használni az egyéni .NET kóddal, végezze el a következő követelményeket:

  1. Az egyéni kódprojekt létrehozásakor válassza a .NET 8 lehetőséget.

    Csak .NET 8 egyéni kódprojekt támogatja a függőséginjektálást.

  2. A projektben adjon hozzá egy osztályt StartupConfiguration a függőségek listájának meghatározásához. Valósítsa meg a IConfigureStartup felületet, és regisztrálja függőségeit a IServiceCollection használatával, például:

    using Microsoft.Azure.Functions.Extensions.Workflows;
    using Microsoft.Extensions.DependencyInjection;
    
    public class StartupConfiguration : IConfigureStartup
    {
        /// <summary>
        /// Configures services for the custom code function to use.
        /// </summary>
        /// <param name="services">The service collection to configure.</param>
        public void Configure(IServiceCollection services)
        {
            // Register the routing service with dependency injection
            services.AddSingleton<IRoutingService, OrderRoutingService>();
            services.AddSingleton<IDiscountService, DiscountService>();
        }
    }
    

    A(z) IConfigureStartup interfész a(z) Microsoft.Azure.Functions.Extensions.Workflows fájlban van definiálva, míg a(z) IServiceCollection a(z) Microsoft.Extensions.DependencyInjection fájlban. További információért lásd: StartupConfiguration.cs.

  3. Az egyéni kódfüggvényosztály konstruktorában inicializálja a regisztrált szolgáltatásokat úgy, hogy konstruktorparaméterekként definiálja őket, nem pedig a függvényen belül hozza létre őket, például:

    public class MySampleFunction
    {
        private readonly ILogger<MySampleFunction> logger;
        private readonly IRoutingService routingService;
        private readonly IDiscountService discountService;
    
        public MySampleFunction(ILoggerFactory loggerFactory, IRoutingService routingService, IDiscountService discountService)
        {
            this.logger = loggerFactory.CreateLogger<MySampleFunction>();
            this.routingService = routingService;
            this.discountService = discountService;
        }
    
        // Add your function logic here
    
    } 
    

Az egyéni kódprojekt elkészítésén és üzembe helyezésén túl nem kell további lépéseket tennie, nem szükséges szerkesztenie a munkafolyamatot, vagy más beállítási módosításokat végrehajtania az Azure Logic Apps-ben a függőséginjektálás engedélyezéséhez.

A további információkért nézze meg a egyéni kód függőség injektálási mintát.

Hozz saját NuGet csomagaidat egyedi kódprojektekhez

A .NET 8-at használó NuGet-alapú egyéni kódprojektek esetében saját NuGet-csomagokat is felvehet és kezelhet anélkül, hogy fel kellene oldania a nyelvi feldolgozó gazdagép által használt függőségekkel való ütközéseket. Közvetlenül adja hozzá az összeállítási függőségeket a projekten belül különálló összeállítási helyhez. A következő kivételektől eltekintve bármilyen .NET 8-kompatibilis szerelvényverziót hozhat, amelyekre a projektnek szüksége van:

  • Microsoft.Extensions.Logging.Abstractions
  • Microsoft.Extensions.DependencyInjection.Abstractions
  • Microsoft.Azure.Functions.Extensions.Workflows.Abstractions

Problémák elhárítása

Műveletinformációs ablaktábla hibája

A munkafolyamat-tervezőben, amikor kiválasztja a helyi függvény meghívása nevű beépített műveletet ebben a logikai alkalmazásban, a művelet információs paneljén a következő üzenet jelenik meg:

Failed to retrieve dynamic inputs. Error details:

Ebben a forgatókönyvben ellenőrizze a logikai alkalmazás projektjében, hogy a LogicApp\lib\custom mappa üres-e. Ha üres, a Terminál menüben válassza a Feladat futtatása>funkciók buildelése lehetőséget.

Jelenleg nem fut folyamat a megadott névvel

Ha ezt a hibaüzenetet kapja a munkafolyamat futtatásakor, valószínűleg a hibakereső folyamatot a logikai alkalmazás helyett .NET Functionshez csatolta.

A probléma megoldásához válassza a Futtatás és hibakeresés listában a Csatolás a logikai alkalmazáshoz (LogicApp) lehetőséget, majd a Lejátszás (zöld háromszög) lehetőséget.

A csomag nincs megfelelően importálva

Ha a Kimenet ablak az alábbi üzenethez hasonló hibaüzenetet jelenít meg, győződjön meg arról, hogy legalább .NET 6.0-s verzió van telepítve. Ha telepítve van ez a verzió, próbálja meg eltávolítani, majd újratelepíteni.

C:\Users\yourUserName\.nuget\packages\microsoft.net.sdk.functions\4.2.0\build\Microsoft.NET.Sdk.Functions.targets(83,5): warning : The ExtensionsMetadataGenerator package was not imported correctly. Are you missing 'C:\Users\yourUserName\.nuget\packages\microsoft.azure.webjobs.script.extensionsmetadatagenerator\4.0.1\build\Microsoft.Azure.WebJobs.Script.ExtensionsMetadataGenerator.targets' or 'C:\Users\yourUserName\.nuget\packages\microsoft.azure.webjobs.script.extensionsmetadatagenerator\4.0.1\build\Microsoft.Azure.WebJobs.Script.ExtensionsMetadataGenerator.props'? [C:\Desktop\...\custom-code-project\MyLogicAppWorkspace\Function\WeatherForecast.csproj] WeatherForecast -> C:\Desktop\...\custom-code-project\MyLogicAppWorkspace\Function\\bin\Debug\net472\WeatherForecast.dll C:\Users\yourUserName\.nuget\packages\microsoft.net.sdk.functions\4.2.0\build\Microsoft.NET.Sdk.Functions.Build.targets(32,5): error : It was not possible to find any compatible framework version [C:\Desktop\...\custom-code-project\MyLogicAppWorkspace\Function\WeatherForecast.csproj] C:\Users\yourUserName\.nuget\packages\microsoft.net.sdk.functions\4.2.0\build\Microsoft.NET.Sdk.Functions.Build.targets(32,5): error : The specified framework 'Microsoft.NETCore.App', version '6.0.0' was not found. [C:\Desktop\...\custom-code-project\MyLogicAppWorkspace\Function\WeatherForecast.csproj] C:\Users\yourUserName\.nuget\packages\microsoft.net.sdk.functions\4.2.0\build\Microsoft.NET.Sdk.Functions.Build.targets(32,5): error : - Check application dependencies and target a framework version installed at: [C:\Desktop\...\custom-code-project\MyLogicAppWorkspace\Function\WeatherForecast.csproj]

Sikertelen build CS1031- és CS1001-hibával

Ha a függvény nem tartalmaz változókat, és létrehozza a kódot, a Kimenet ablakban a következő hibaüzenetek jelenhetnek meg:

C:\Users\yourUserName\...\custom-code-project\Function\func.cs (24,64): error CS1031: Type expected [C:\Users\yourUserName\...\custom-code-project\Function\func.csproj]
C:\Users\yourUserName\...\custom-code-project\Function\func.cs (24,64): error CS1001: Identifier expected [C:\Users\yourUserName\...\custom-code-project\Function\func.csproj]

Build FAILED.

C:\Users\yourUserName\...\custom-code-project\Function\func.cs (24,64): error CS1031: Type expected [C:\Users\yourUserName\...\custom-code-project\Function\func.csproj]
C:\Users\yourUserName\...\custom-code-project\Function\func.cs (24,64): error CS1001: Identifier expected [C:\Users\yourUserName\...\custom-code-project\Function\func.csproj]

0 Warning(s)
2 Error(s)

A probléma megoldásához adja hozzá a következő paramétert a kód metódusához Run :

string parameter1 = null

Az alábbi példa bemutatja, hogyan jelenik meg a Run metódus aláírása:

public static Task<Weather> Run([WorkflowActionTrigger] int zipCode, string temperatureScale, string parameter1 = null)

A Standard logikai alkalmazás munkafolyamatainak létrehozása Visual Studio Code