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.