Sobes.tech
Junior — Middle

Hadisələrə əsaslanan yanaşmanın işləmə prinsipini və proqramlaşdırmada necə istifadə olunduğunu izah edə bilərsinizmi?

sobes.tech Süni İntellekt

AI-dan cavab

Hadisə yönümlü yanaşma (event-driven), proqramın müəyyən hadisələrə — vəziyyət dəyişiklikləri, istifadəçi fəaliyyətləri, mesajlar və s. — cavab verdiyini nəzərdə tutur. Kodun ardıcıl icrası yerinə, məntiq bu hadisələrin emalına çevrilir.

Proqramlaşdırmada bu, hadisələrin (emit) yaradılması və onlara abunəlik (subscribe/listen) vasitəsilə həyata keçirilir. Hadisə baş verdikdə, müvafiq idarəedicilər çağırılır.

Go dilində, bu yanaşma tez-tez kanallar (channels) və goroutine-lər vasitəsilə həyata keçirilir. Məsələn, bir goroutine hadisələri kanala göndərə bilər, başqa biri isə bu kanalı dinləyib hadisələrə reaksiya verə bilər.

Nümunə:

package main

import (
    "fmt"
    "time"
)

func eventProducer(events chan<- string) {
    for i := 1; i <= 5; i++ {
        events <- fmt.Sprintf("Hadisə %d", i)
        time.Sleep(time.Second)
    }
    close(events)
}

func eventConsumer(events <-chan string) {
    for event := range events {
        fmt.Println("İşləmə", event)
    }
}

func main() {
    events := make(chan string)
    go eventProducer(events)
    eventConsumer(events)
}

Bu yanaşma, xüsusən, asinxron məlumat emalı sistemlərində tətbiqlərin elastikliyini və miqyaslanabilirliyini artırır.