Sprawdź zawód
Lekcje kursu · Trudniejsze sytuacje

Programista .NET / C# — Trudniejsze sytuacje

Restart następuje w połowie tworzenia raportu

Trudniejsze sytuacje · Lekcja 5 z 6

Ponowienie bez podwójnego wyniku

Przypisz pracy stabilny identyfikator. Przed zapisem sprawdź, jaki skutek już istnieje i jakie warunki chronią przed równoczesnym wykonaniem. Oddziel powtarzalne niepowodzenie od chwilowego błędu.

Tok pracy w tej lekcji
  1. Co zrobić najpierwRozpoznaj zlecenie
  2. Co zrobić dalejSprawdź skutek
  3. Jak zakończyćPotwierdź wynik

Przykład z pracy

Po chwilowej niedostępności zlecenie wraca do obsługi bez powielenia pliku.

Ćwiczenie praktyczne

Ułóż reakcje na pierwszy przebieg, ponowienie i zapis zakończony.

Sprawdź się — opcjonalne pytanie

Co zabezpiecza przed podwójnym wynikiem?

  • Wygenerowanie nowego losowego identyfikatora dla tego samego zlecenia
  • Ukrycie pliku przed użytkownikiem
  • Powiązanie skutku z identyfikatorem oraz spójny zapis decyzji
Pokaż odpowiedź i wyjaśnienie

Powiązanie skutku z identyfikatorem oraz spójny zapis decyzji. Stała tożsamość pracy pozwala rozpoznać poprzednie wykonanie.

Trudniejsze sytuacje · Lekcja 6 z 6

Obserwowanie i odbiór wydania

Obserwuj kolejkę, czas, błędy i skutek widoczny użytkownikowi. Przed wdrożeniem sprawdź przerwanie oraz ponowienie. W logach zachowaj kontekst bez zapisu zbędnych danych.

Tok pracy w tej lekcji
  1. Co zrobić najpierwOdtwórz warunki
  2. Co zrobić dalejSprawdź przebieg
  3. Jak zakończyćZapisz dowód

Przykład z pracy

Worker przechodzi odbiór po przerwaniu pracy i dokończeniu tego samego raportu.

Ćwiczenie praktyczne

Przygotuj kryteria odbioru dla aplikacji i zespołu utrzymania.

Restart następuje w połowie tworzenia raportu

Wyjaśnij decyzję

W trzech zdaniach przekaż wynik sprawy „Restart następuje w połowie tworzenia raportu”. Podaj, co potwierdziłeś, jakie działanie wybierasz i kiedy lub pod jakim warunkiem odbiorca powinien wykonać następny krok.

Omówienie decyzji i dopytanie

Przykładowe działanie. Odczytuję trwały stan, stosuję uzgodnione ponowienie i potwierdzam kompletność

Przywracasz pracę bez podwójnego efektu i pozostawiasz spójny wynik.

Pytanie z rozmowy o tym zawodzie. Jak potwierdzasz, że ponowienie jest bezpieczne?

Sprawdzam zapis stanu i czy przetworzenie tej samej pracy powtórnie nie dubluje wyniku ani efektów.

Poproś rozmówcę, żeby powtórzył, co już potwierdzono i od jakiej informacji zależy następny krok.

Sprawdź się — opcjonalne pytanie

Który dowód potwierdza bezpieczny restart?

  • Jedno kompletne zakończenie tej samej sprawy po wznowieniu
  • Samo uruchomienie procesu
  • Zwiększenie liczby wpisów w logu
Pokaż odpowiedź i wyjaśnienie

Jedno kompletne zakończenie tej samej sprawy po wznowieniu. Odbiór łączy zachowanie techniczne z wynikiem użytkownika.

Zadanie końcowe

Wykorzystaj sposób pracy z przypadku „Restart następuje w połowie tworzenia raportu” w zadaniu rekrutacyjnym.

Raport trwa dłużej niż połączenie z użytkownikiem. Przeprojektuj przyjęcie zlecenia, stan pracy w tle i reakcję na restart usługi w połowie przetwarzania.

Plan pracy nad zadaniem
  1. Przyjmij żądanie
  2. Przetwórz zadanie
  3. Udostępnij stan
Pokaż kryteria wykonania
  • Oddzielasz przyjęcie od wykonania.
  • Rozpoznajesz potrzebę trwałego śladu i kontrolowanego ponowienia.
  • Opisujesz anulowanie oraz sposób odzyskania wyniku.
Jak sprawdzić odpowiedź na głos?

Po co workerowi nowy zakres zależności?

Jeśli używa usług zakresowych, np. kontekstu danych, tworzę zakres odpowiadający zadaniu i zwalniam go po pracy.