Zależności i ich cykl życia
Kompendium zawodu — pojęcia i zwroty
Pojęcia w pracy
- Dependency injection
- Przekazywanie obiektowi potrzebnych zależności przez ustaloną konfigurację.
- Scope
- Zakres, w którym określone zależności współdzielą cykl życia.
- Worker
- Usługa wykonująca pracę bez oczekiwania użytkownika na otwarte żądanie.
- CancellationToken
- Mechanizm przekazywania sygnału przerwania operacji.
- Idempotencja
- Własność pozwalająca powtórzyć operację bez powielenia jej skutku.
Zwroty w typowych sytuacjach
- „Każdy przebieg w tle potrzebuje własnego zakresu zależności.”
- Pilnujesz czasu życia usług.
- „Użytkownik otrzyma identyfikator, a stan raportu odczyta oddzielnie.”
- Rozdzielasz przyjęcie zlecenia od wykonania.
- „Przy zatrzymaniu dokończymy bezpieczny etap albo zostawimy sprawę do ponowienia.”
- Chronisz spójność pracy.
Rozróżnij zależności współdzielone oraz związane z zakresem pracy. Unikaj przechowywania obiektu zakresowego w usłudze długotrwałej. Dla zadania utwórz odpowiedni zakres.
- Rozpoznaj zależność
- Wyznacz zakres
- Zakończ przebieg
Przykład z pracy
Worker otwiera zakres danych na czas obsługi konkretnej sprawy.
Ćwiczenie praktyczne
Narysuj cykl pracy zależności dla dwóch kolejnych zleceń.
Restart następuje w połowie tworzenia raportu
Worker zapisał część danych. Po restarcie zlecenie jest nadal w kolejce, a użytkownik oczekuje jednego spójnego wyniku.
Pokaż przykładową reakcję
Odczytuję trwały stan, stosuję uzgodnione ponowienie i potwierdzam kompletność. Przywracasz pracę bez podwójnego efektu i pozostawiasz spójny wynik.
Sprawdź się — opcjonalne pytanie
Co ogranicza współdzielenie stanu między zadaniami?
- Zachowanie jednego kontekstu dla wszystkich użytkowników
- Wydłużenie nazwy serwisu
- Osobny zakres potrzebnych zależności dla każdego przebiegu
Pokaż odpowiedź i wyjaśnienie
Osobny zakres potrzebnych zależności dla każdego przebiegu. Zakres porządkuje czas życia i zapobiega niechcianemu współdzieleniu.
Źródła do nauki Microsoft Learn — usługi i zadania w tle w ASP.NET Core