AUS-2 nədir?
sobes.tech Süni İntellekt
AI-dan cavab
AUS-2, yəni Asinxron Dövlət İdarəetməsinin ikinci versiyası, C#-da asinxron tətbiqlərdə vəziyyətin idarə olunması üçün nümunələr və tövsiyələr toplusudur. Bu, çoxsaylı asinxron əməliyyatlar ehtiva edən kodla işləməni sadələşdirməyə və onun proqnozlaşdırıla bilməsini və sabitliyini təmin etməyə yönəlib. AUS-2-nin əsas prinsipləri aşağıdakılardır:
- Məsuliyyətlərin aydın bölünməsi. Tətbiqin vəziyyəti onu dəyişən məntiqdən aydın şəkildə ayrılır.
- Vəziyyət dəyişikliklərinin kapsüllənməsi. Vəziyyət dəyişiklikləri yalnız idarə olunan hərəkətlər və ya əmrlər vasitəsilə baş verir.
- Təbii olaraq asinxron. Bütün vəziyyət dəyişiklikləri və xarici təsirlərin işlənməsi potensial olaraq asinxron sayılır.
- İş parçaları üçün təhlükəsiz məlumat strukturlarından istifadə. Müxtəlif iş parçalarından eyni vaxtda girişə qarşı dayanıqlı məlumat strukturları istifadə olunur.
- Değişməzliyə yönəlik. Mümkün olduqda, dəyişməz vəziyyət obyektləri istifadə olunur, bu da dəyişikliklərin izlənməsini asanlaşdırır və istənməyən yan təsirləri qarşısını alır.
AUS-2 prinsiplərinə uyğun arxitekturanın tipik komponentləri aşağıdakılar ola bilər:
- Vəziyyət (State): Tətbiqin və ya onun bir hissəsinin hazırkı vəziyyətini təmsil edən obyektlər.
- Hərəkət (Action/Command): Vəziyyəti dəyişdirmək niyyətini təsvir edən obyekt.
- İşleyici (Handler/Reducer): Cari vəziyyəti və hərəkəti qəbul edən və yeni vəziyyət qaytaran funksiya və ya obyekt. Bu yerdə bütün vəziyyət dəyişikliklərinin məntiqi baş verir.
AUS-2 istifadə etməyin üstünlükləri:
- Yaxşı test ediləbilənlik. Aydın bölünmə və kapsülləmə sayəsində, vəziyyət dəyişikliklərinin məntiqi asanlıqla test edilə bilər.
- Proqnozlaşdırıla bilmə. Vəziyyət dəyişiklikləri yalnız müəyyən edilmiş mexanizmlər vasitəsilə baş verir, bu da tətbiqin davranışını daha anlaşılan və proqnozlaşdırıla bilən edir.
- Debug etməyi asanlaşdırır. Tətbiqin vəziyyətinin necə və niyə dəyişdiyini izləmək daha asandır.
- Miqyaslana bilmə. Arxitektura, tətbiqin mürəkkəbliyi artdıqca yaxşı miqyaslana bilir.
Prinsipin sadə tətbiqi nümunəsi (tam çərçivə istifadə etmədən):
// Dəyişməz vəziyyət
public record AppState(int Count);
// Hərəkət tipi
public record IncrementAction();
// İşleyici
public static class StateHandler
{
public static AppState Handle(AppState currentState, IncrementAction action)
{
// Mövcud vəziyyəti dəyişdirmək yerinə yeni vəziyyət yaradırıq
return new AppState(currentState.Count + 1);
}
// Digər hərəkət tipləri üçün digər işleyicilər...
}
// İstifadə nümunəsi (sadələşdirilmiş, asinxronluq və iş parçaları təhlükəsizliyi nəzərə alınmadan)
/*
AppState currentState = new AppState(0);
currentState = StateHandler.Handle(currentState, new IncrementAction());
Console.WriteLine(currentState.Count); // 1 göstərəcək
*/
AUS-2 xüsusi kitabxana deyil, daha çox müxtəlif nümunələr (məsələn, Redux-ə bənzər) və .NET ekosistemində istifadə oluna bilən kitabxanalar vasitəsilə həyata keçirilə bilən prinsiplər toplusudur.