Creazione di una funzione di Azure

Completato

L'utilizzo dell'interoperabilità .NET nella versione SaaS di Business Central non è possibile. Usando Funzioni di Azure, si ha una possibile soluzione se si deve ancora connettersi alle librerie .NET. È possibile eseguire lo sviluppo direttamente in C# usando l'editor di codice del portale di Azure, ma si può anche sviluppare le librerie DLL .NET personali e usarle nell'app per le funzioni di Azure.

L'esempio di codice seguente mostra la creazione di una piccola libreria di classi .NET. Nella libreria di classi, si può trovare una classe, BlackAndWhiteConverter, che applicherà la scala di grigi a un'immagine. L'immagine verrà passata come parametro usando HttpRequestMessage. Pertanto, si usa una libreria esterna ImageProcessor.

L'esempio seguente mostra anche l'implementazione di C#.

using ImageProcessor;
using ImageProcessor.Imaging.Filters.Photo;
using System.IO;
using System.Net.Http;

namespace BlackAndWhitePicture
{
    public class BlackAndWhiteConverter
    {
        public HttpResponseMessage Convert(HttpRequestMessage request)
        {
            var stream = request.Content.ReadAsStreamAsync().Result;
            byte[] outArray;
            using (var outStream = new MemoryStream())
            {
                using (var imageFactory = new ImageFactory())
                {
                    imageFactory.Load(stream)
                        .Filter(MatrixFilters.GreyScale)
                        .Save(outStream);
                }
                outArray = outStream.ToArray();
            }

            var result = new HttpResponseMessage(HttpStatusCode.OK);
            result.Content = new ByteArrayContent(outArray);
            result.Content.Headers.ContentType = 
                   new MediaTypeHeaderValue("image/jpg");
            return result;
        }
    }
}

Il risultato di una libreria di classi .NET è un file .DLL che è possibile caricare in Azure e usare in una funzione di Azure. Per caricare una libreria .NET, è necessario aprire (https://<yourfunctionapp>.scm.azurewebsites.net), quindi inserire .scm prima del nome di dominio azurewebsites.net. Dopo aver effettuato l'accesso, si può aprire un prompt dei comandi nel menu Console di debug, dove è possibile sfogliare la cartella dell'app e creare una sottocartella chiamata bin. Si possono trascinare i file DLL .NET in questa cartella bin.

Screenshot della pagina dell'ambiente dell'app Kudu.

Quando i file .NET vengono caricati, si possono usare nella funzione di Azure. Pertanto, è necessario usare la sintassi speciale #r. Questa sintassi viene usata per fare riferimento ad assembly esterni. Nell'esempio seguente, la funzione di Azure usa la libreria .NET dell'esempio precedente.

#r "D:\home\site\wwwroot\ImageConverter\bin\BlackAndWhitePicture.dll"
#r "D:\home\site\wwwroot\ImageConverter\bin\ImageProcessor.dll"

using System.Net;
using System.Net.Http.Headers;
using System.Drawing;
using BlackAndWhitePicture;

public static async Task<HttpResponseMessage> Run(HttpRequestMessage req, TraceWriter log)
{
    var converter = new BlackAndWhiteConverter();
    return converter.Convert(req);
}