Выбор между вызовом asp. net основных методов Blazor синхронно или асинхронно - PullRequest
1 голос
/ 19 января 2020

У меня есть приложение CRUD в Blazor, которое просто выбирает списки назначений из таблицы и имеет AssignmentReminderService для слоя доступа к данным, который имеет метод (asyn c версия)

    public async Task<AssignmentReminder> AddAssignment(AssignmentReminder assignment)
    {
        _context.assignments.Add(assignment);
        await _context.SaveChangesAsync();
        return assignment;
    }

Я также могу вызовите метод с кодом синхромуса следующим образом:

    public  AssignmentReminder AddAssignment(AssignmentReminder assignment)
    {
        _context.assignments.Add(assignment);
         _context.SaveChanges();
        return assignment;
    }

Теперь это только одна база данных, доступ к которой осуществляется с локального сервера (также может быть размещен в облаке) только с одной таблицей назначения и таблицами аутентификации / авторизации по умолчанию генерируется, когда используется индивидуальная учетная запись пользователя (aspnetusers, aspnetroles et c). Может ли кто-нибудь сообщить мне, какой из двух способов мне следует использовать (между asyn c или syn c) объявлением метода?

Ответы [ 2 ]

2 голосов
/ 20 января 2020

В общем случае вы должны использовать асинхронные API, если они доступны. Это приведет к большей масштабируемости на стороне сервера, поскольку асинхронность позволит использовать поток вызывающих запросов для других запросов во время выполнения асинхронной операции.

Есть определенные c сценарий ios, где это руководство не применяется. Например, если вы вызываете универсальный c асинхронный API (например, Stream.ReadAsync), но вы знаете, что реализация на самом деле является синхронной (например, MemoryStream). Но в целом, если есть асинхронный API, то это тот, который вы должны использовать.

1 голос
/ 21 января 2020

какой из двух способов я должен использовать (между asyn c или syn c) для объявления метода?

Первый.

Недостаточным ресурсом здесь являются темы. Вы хотите сохранить их количество, и первый подход позволяет это, выпуская Thread для выполнения другой работы.

Во втором подходе поток приостанавливается на время операции ввода-вывода. Вам потребуется больше потоков для обработки того же количества запросов.

Таким образом, использование asyn c I / O позволяет одному и тому же оборудованию обрабатывать больше запросов одновременно.

...