Jeśli korzystasz z asynchronizacji/poczekać na niższym poziomie w swojej architekturze, czy konieczne jest "bąble" wywołań asynchronicznych/oczekujących do samego końca, czy jest to nieefektywne, ponieważ zasadniczo tworzysz nowy wątek dla każdej warstwy (asynchronicznie wywołujący funkcję asynchroniczną dla każdej warstwy, czy to naprawdę nie ma znaczenia i zależy tylko od twoich preferencji?)Architektura asynchronicznego/oczekiwanego
Używam EF 6.0-alpha3, dzięki czemu mogę mieć asynchroniczne metody w . EF
Moje repozytorium jest takie:
public class EntityRepository<E> : IRepository<E> where E : class
{
public async virtual Task Save()
{
await context.SaveChangesAsync();
}
}
Teraz moje warstwy biznesowej jest jako takie:
public abstract class ApplicationBCBase<E> : IEntityBC<E>
{
public async virtual Task Save()
{
await repository.Save();
}
}
A potem oczywiście moja metoda w moim UI będzie mieć ten sam wzór, gdy dzwoni.
to:
- konieczne
- negatywny na wydajność
- tylko kwestia preferencji
Nawet jeśli to nie jest używane w oddzielnych warstwach/Projekty te same pytania dotyczy jeśli wywołuję metody zagnieżdżone w tej samej klasie:
private async Task<string> Dosomething1()
{
//other stuff
...
return await Dosomething2();
}
private async Task<string> Dosomething2()
{
//other stuff
...
return await Dosomething3();
}
private async Task<string> Dosomething3()
{
//other stuff
...
return await Task.Run(() => "");
}
Należy pamiętać, że można również oznaczyć wiadomość taką, jak opisana jako "asynchroniczna", aby dodać obsługę błędów. Jeśli czekasz na zadanie, możesz po prostu łączyć wywołanie w bloku 'try/catch', zamiast dodawać kontynuacje podanego zadania. – Servy
@Servy: Tak, ale w takim przypadku nie spełniałoby to opisu bez dodatkowego przetwarzania. Przydaje się, że jeden * może * to zrobić bez zmiany API, pamiętaj ... –
Tak więc, próbując to zrozumieć, naprawdę potrzebuję tylko async/czekać, jeśli coś, co następuje w tej samej funkcji, wymaga powrotu asynchronicznego metoda? Jeśli to jest ogień i zapomnij lub ostatnie zdanie, to nie ma potrzeby czekania? – valdetero