Crear una función de Azure
El uso de interop con .NET en la versión SaaS de Business Central no es posible. Si usa Azure Functions, tiene a su disposición una posible solución si sigue necesitando conectarse a bibliotecas .NET. Puede desarrollar directamente en C# mediante el editor de código de Azure Portal, aunque también puede desarrollar sus propias bibliotecas DLL de .NET y usarlas dentro de su aplicación de funciones de Azure.
El siguiente ejemplo de código muestra cómo se crea una pequeña biblioteca de clases .NET. En la biblioteca de clases, puede encontrar una clase, BlackAndWhiteConverter, que aplicará una escala de grises en una imagen. La imagen se pasará como parámetro mediante HttpRequestMessage. Por lo tanto, se usará una biblioteca externa ImageProcessor.
El siguiente ejemplo también muestra la implementación de 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;
}
}
}
El resultado de una biblioteca de clases .NET es un archivo .DLL que puede cargar en Azure y usar en una función de Azure. Para cargar una biblioteca .NET, debe abrir (https://<yourfunctionapp>.scm.azurewebsites.net) y luego poner .scm delante del nombre de dominio azurewebsites.net. Después de iniciar sesión, puede abrir un símbolo del sistema en el menú Consola de depuración, donde puede examinar la carpeta de su aplicación y crear una subcarpeta denominada ubicación. Puede arrastrar y soltar sus archivos DLL .NET a la carpeta ubicación.
Cuando los archivos .NET se carguen, puede usarlos en su función de Azure. Por lo tanto, necesita usar la sintaxis #r especial. Esta sintaxis se utiliza para hacer referencia a ensamblados externos. En el siguiente ejemplo, la función Azure usa la biblioteca .NET del ejemplo anterior.
#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);
}