Sobes.tech
Principal

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.