.NET kód létrehozása és futtatása standard munkafolyamatokból Azure Logic Apps Visual Studio Code használatával

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

Ha az integrációs forgatókönyvnek a Azure Logic Apps beépített műveletein és összekötőin kívül egyéni feladatokra vagy logikára van szüksége, hozzon létre és futtasson .NET kódot custom függvényként a Standard munkafolyamatokban. A munkafolyamat ezután végrehajthat olyan feladatokat, mint az egyéni elemzés, az ellenőrzés vagy akár az üzleti szabályok alkalmazása. Ezzel a funkcióval olyan forgatókönyveket valósíthat meg, mint például a következő feladatok:

  • Üzleti logika implementálásának testreszabása.
  • Testre szabhatja az elemzést, hogy adatokat nyerjen ki egy bejövő üzenetből.
  • Adatérvényesítés és egyszerű átalakítások végrehajtása.
  • Számítások végrehajtása.
  • Alakítsa ki a másik rendszernek, például egy API-nak küldött kimenő üzeneteket.

Ez az útmutató bemutatja, hogyan írhat és futtathat saját .NET kódot közvetlenül Standard munkafolyamatokban Visual Studio Code használatával. Megtudhatja, hogyan hozhat létre, hibakeresést és üzembe helyezhet helyi függvényeket a Visual Studio Code használatával, hogy az egyéni kód- és munkafolyamat-vezénylést együtt tarthassa, egy munkamenetben hibakeresést végezhet, és egyetlen megoldásként üzembe helyezheti őket.

Megjegyzés

Az egyéni beágyazott .NET kód nem alkalmas a következő helyzetekre:

  • Olyan folyamatokat futtat, amelyek túlléphetik a 10 percet.
  • Nagy üzenet- és adatátalakítások megkísérlése.
  • Összetett kötegelési és szétválasztási forgatókönyvek végrehajtása.
  • A BizTalk kiszolgálófolyamat-összetevőinek használata, amelyek streamelést implementálnak.

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

  • Az egyéni függvények képessége csak a Windows rendszeren futó Visual Studio Code-ban használható. Ez a képesség támogatja a .NET-keretrendszer és a .NET 8 használatát a standard logikai alkalmazás munkafolyamataihoz, amelyeket Azure telepítettek és ü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.

    A képernyőfotó megjeleníti a Visual Studio Code-ot az Azure ablakkal, a Munkaterület szakasz eszköztárával és a logikai alkalmazás-munkaterület létrehozásához kiválasztott opcióval.

  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 a munkaterület nevének megadására vonatkozó üzenetről.

    Ez a példa a munkaterület neveként szolgál weather-project .

  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 egy projektsablon kiválasztására vonatkozó üzenetről.

  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:

    A képernyőkép a létrehozott munkaterületet jeleníti meg a logikai alkalmazás projekttel és a .NET Functions projekttel.

    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
    Ö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 befejezte a kód írását, fordítsa le, hogy meggyőződjön arról, hogy nincsenek buildelési hibák. A .NET függvényprojekt automatikusan tartalmazza a buildelési feladatokat, amelyek lefordítják és hozzáadják a kódot a lib\custom mappához a logikai alkalmazásprojektben, ahol a munkafolyamatok egyéni függvényeket keresnek. 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.

    Képernyőkép a Functions-projekt helyi menüjéről a Függvények buildelési projekthez kijelölt beállítással.

    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. Ellenőrizze, hogy a net472 vagy net8 nevű almappá tartalmazza-e a kód futtatásához szükséges szerelvényfájlokat (DLL-fájlokat), beleértve a <.dllnevű>fájlt is.

    • A munkaterületen bontsa ki a következő mappákat: <a logikai alkalmazás>>lib\custom><függvény-neve>. Győződjön meg arról, hogy a <függvény-név> almappában található egy function.json fájl, amely tartalmazza az Ön által í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:

    Screenshot a logikai alkalmazás munkaterületét jeleníti meg .NET függvényekkel és logikai alkalmazásprojektekkel. Az újonnan létrehozott szerelvények és egyéb szükséges fájlok láthatóak.

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 az alapértelmezett munkafolyamatról, annak eseményindítójáról és a munkafolyamat-tervezőben megnyitott műveletekről.

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

      A képernyőkép a Visual Studio Code tevékenységsávját mutatja, ahol a Futtatás és Hibakeresés van kiválasztva.

    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 a Futtatás és hibakeresés listáról a Run/Debug logikai alkalmazás helyi függvényt tartalmazó kijelölési lehetőségével.

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

      • Megnyílik a terminálablak , és megjeleníti az elindított hibakeresési folyamatot.
      • Megnyílik a Hibakeresési konzol ablak, és megjeleníti a hibakeresés állapotát.
      • 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 a nyitott függvénykódfájlról egy kódsor töréspontkészletével.

  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.

      A képernyőkép a Visual Studio Code és a munkafolyamat megnyitott Áttekintés lapjá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 kódot mutat és egy befejezett munkafolyamat-futtatást.

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. Függetlenül attól, hogy Visual Studio Code-ból telepít, vagy CI/CD DevOps-folyamatot használ, az üzembe helyezés előtt győződjön meg arról, hogy a kódot létrehozza. Az üzembe helyezés előtt győződjön meg arról is, hogy az összes függő szerelvény megtalálható a logikai alkalmazás projektmappájában:

  • .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éginjektálással a következőt teheti:

  • 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. Ha azonban az egyéni kód a következő követelményekkel rendelkezik, előfordulhat, hogy függőséginjektálást kell használnia:

  • 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 IConfigureStartup felület Microsoft.Extensions.DependencyInjection van definiálva. További információ: 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.

Hozd magaddal a NuGet-csomagjaidat

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]

Buildelési hibák

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