Azure Functions
Hər hansı bir kodu və ya application-ı yazdıqda sonradan onu çalışdırmaq üçün web server-ə ehtiyac duyuruq.(IIS, Kestrel, nginx, tomcat və s). Ancaq Azure ilə yazdığımız kodları çalışdırmaq üçün lazım olan resurslar bizi maraqlandırmır. Yəni kodu yazırıq və Azure Cloud üzərində çalışır. Sadəcə nə vaxt çalışmasını təyin edən triggerlər olmalıdır. Azure function serverless arxitekturaya əsaslanır. Azure function-ların üstünlüyü kimi hər hansı bir servisə ehtiyac duymaması, çoxlu dil dəstəyi, bütün azure servislərə asanlıqla inteqrasiya ola bilmısi, nuget paketlərini istifadə edə bilməsini göstərmək olar.
Azure functions mütləq şəkildə hər hansı bir azure storage ilə istifadə olunmalıdır. Azure functions içərisindəki funksiyaların məlumatları bu storage-da saxlanacaq. Hər bir Azure Function Application üçün bir Azure storage accounta ehtiyac var. Əslində çoxlu sayda Azure functions bir storage-ə bağlana bilər amma best practice-də bir Azure functions App-bir storage məntiqi əsas götürülür. Azure Function-lar Application insightsa bağlanaraq rahat şəkildə izləmə aparıla bilər.
Visual studioda yeni Azure Functions yarada bilərik. Bu şəkildə default kodlarla açılacaq.
Əgər run etdikdə console-da bu ekran çıxırsa uğurlu şəkildə run olur deməkdir.
Qeyd edilən linkə tıklayaraq nəticəni görə bilərsiz. Əgər uğurlu şəkildə run olmasa Azure Functions Coree Tools-u qurmaq lazımdır.
Yuxarıdakı kod http trigger ilə hərəkətə keçən Azure Functions nümunəsidir. Bundan başqa bir çox trigger növlər var.
- Http trigger — Yaratdığı endpointə qarşı hər hansı bir http istəyi olanda çalışır.
- Timer trigger — Müəyyən vaxtda və ya zaman aralığında çalışan azure functions. Joblara bənzər şəkildə.
- Queue trigger — Azure Queue Storage ilə çalışır. Storage-ə hər mesaj əlavə edildiyində çalışır.
- Blob trigger — Bənzər şəkildə blob storage-lə çalışır və hər blob əlavə ediləndə işləyir.
- Cosmos trigger — Cosmos db-yə hər entity əlavə ediləndə çalışır.
- Event Grid trigger
- Service Bus Queue trigger
- Service Bus Topic trigger
- Event Hub trigger
Azure Function App içinə istədiyimiz qədər Azure functionlar əlavə edə bilərik. Run ediləndə hər biri ayrı çalışacaq. Visual studio-da Add new -> azure functions seçərək əlavə edə bilərik. host.json faylında runtime məlumatları saxlanılır və publish ediləndə clouda buradakı məlumatlar göndərilir. local.settings.json faylı asp.net core-dakı appsettings.json faylı elə eynidir. Lokalda istifadə edəcəyi məlumatlar saxlanılır.
Http trigger Azure functionlar route, query string və request body-dən ibarətdir.
[FunctionName(“MyFunction”)] Attributi ilə endpointimizin adını verə bilirik. Yuxarıda nümunədə parameter olaraq query string ötürə bilirik. Route vasitəsilə də parameterlər əlavə edə bilərik.
public static async Task<IActionResult> Run(
[HttpTrigger(AuthorizationLevel.Function, “get”, “post”, Route = “Function1/{nameparam}”)] HttpRequest req,
ILogger log,string nameparam)
Azure Functions üzərində dependency injection da istifadə edə bilərik. Bunun üçün Microsoft.Azure.Functions.Extensions paketini yükləmək lazımdır. Bunun üçün startup.cs classı yarada bilərik və namespace səviyyəsində FunctionsStartup attributundan istifadə etməliyik.
using Microsoft.Azure.Functions.Extensions.DependencyInjection;
using Microsoft.Extensions.DependencyInjection;
[assembly: FunctionsStartup(typeof(ExampleFunction.Startup))]
namespace ExampleFunction
{
public class Startup : FunctionsStartup
{
public override void Configure(IFunctionsHostBuilder builder)
{
builder.Services.AddSingleton<IMyService, MyService>();
}
}
}
Daha sonra bu şəkildə dependency injection istifadə edə bilərik.