Witajcie
Do późna mi się dzisiaj wzięło na programowanie i tak chyba moment zwątpienia mam, więc chcę tak sobie uporządkować kilka rzeczy:
Aplikacja asp.net core, kontroler wywołuje metodę serwisu o złożonej logice, więc wydzielam sobie w nim porcje kodu, którą umieszczam w osobnej statycznej klasie jako statyczną metodę (np parsowanke pliku). Żadnych globalnych zmiennych, wstrzykiwanych zależności typu kontekst do bazy danych. Jest To poprawne rozwiązanie?
A co w przypadku łączenia tego z asynciem? Dalej jest to poprawne rozwiązanie w asp.net? i tak muszę na wyniki poczekać awaitem by mi request asynca nie zabił gdy takimi statycznymi callami zacznę akcję typu walidacje, wysyłanie maily, czy komunikację z systemem zewnętrznym.
Jeśli te części workflowów w statycznych metodach miałaby jakieś zależności to wtedy powinno być jako instancja co by chociaż do unit testów móc wstrzykiwać zależności, prawda?
I na koniec await dla samego niegenerycznego Taska czyli nie asynchronicznie byłaby to zwykła metoda z voidem. Dzięki await wiem, że zakończenie przetwarzania takiego requesta nie zabije mi asynchronicznego wywołania np wysyłania mailów ale czy jednocześnie request zwróci mi dzięki temu szybciej czy jednak będzie czekał na zakończenie zadania awaita? Np takie wywołanie w requeście
await SmptClient.SendMailAsync(mail);
Czy może takie rzeczy powiniennem robić przez osobnego task runnera np hangfire? Tylko wtedy po co cały ten await?