Azure 関数の作成
SaaS バージョンの Business Central では、.NET 相互運用を使用できません。 Azure Functions を使用すれば、ある方法を利用して .NET ライブラリへの接続が可能になります。 Azure portal のコード エディターを使用し、C# で直接開発を行うと同時に、独自の .NET DLL ライブラリを開発すれば、Azure 関数アプリ内で使用できるようになります。
次のコード例は、小規模な .NET クラス ライブラリを作成する方法を示しています。 クラス ライブラリに含まれる BlackAndWhiteConverter クラスは、画像にグレースケールを適用します。 この画像は、HttpRequestMessage を使用してパラメーターとして渡されます。 そのために、外部ライブラリである ImageProcessor が使用されています。
次の例は、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;
}
}
}
.NET クラス ライブラリの実行結果である .DLL ファイルを Azure にアップロードし、Azure 関数で使用しています。 .NET ライブラリをアップロードするには、まず開いてから (https://<yourfunctionapp>.scm.azurewebsites.net)、.scm を azurewebsites.net ドメイン名の前に挿入します。 ログインした後に、デバッグ コンソール メニューのコマンド プロンプトを開き、アプリのフォルダーに移動して bin という名前のサブフォルダーを作成します。 この在庫置場フォルダーに、.NET DLL ファイルをドラッグアンドドロップすることができます。
.NET ファイルをアップロードすると、Azure 関数で使用できるようになります。 その場合、#r という特別な構文を使用する必要があります。 この構文は、外部アセンブリを参照するために使用します。 次の例では、前の例の .NET ライブラリを Azure 関数で使用しています。
#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);
}