WedX - журнал о программировании и компьютерных науках

Можно ли использовать System.Data.Odbc асинхронно с ASP.NET Core?

Для приложения, над которым я работаю, я вынужден использовать соединение ODBC для доступа к базе данных. Одна проблема, с которой я сталкиваюсь, заключается в том, что я не уверен, как и даже возможно ли использовать это асинхронно. Кто-нибудь знает о возможном обходном пути, если это действительно невозможно?

19.12.2019


Ответы:


1

Многозадачность и веб-серверы — странная пара.

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

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

Если есть какая-либо многозадачность, она должна быть выполнена на стороне клиента. Обычно с использованием некоторого JavaScript. В частности АЯКС. Затем клиент может даже обращаться к специальному веб-сервису только для этой цели (поэтому веб-сервер остается свободным для «реальных» запросов.

19.12.2019
  • Это неправда, и ссылка ведет на документ пятилетней давности. Также на самом деле ничего не отвечает об асинхронности или ODBC. 20.12.2019
  • @SamiKuhmonen Изменился ли жизненный цикл страницы ASP.Net? Потому что я видел этот же шаблон и в необработанном PHP. | Это также отвечает на вопрос, указывая на то, что отправная точка была неправильной. Вы не делаете асинхронность на сервере. Вы просто позволяете клиенту делать это самому. 20.12.2019
  • Вы определенно делаете асинхронность на сервере, когда это необходимо. Полная асинхронность — это важно, особенно здесь, поскольку сервер может освобождать потоки для обслуживания других запросов во время ожидания. Конечно, это требует, чтобы задача не была связана с процессором. Как клиент будет выполнять асинхронный запрос к базе данных? Это невозможно. 20.12.2019
  • обычно 1 поток на соединение - автоматически. - вау. Извините, но не. Это неправильный и очень плохой совет. Один поток на соединение не превышает нескольких сотен одновременных подключений — все высокопроизводительные или масштабируемые веб-приложения должны будут использовать неблокирующий ввод-вывод. В современных приложениях это означает использование async/await, но до этого нам приходилось использовать Overlapped IO в Win32 и epoll/select в Linux, и эта практика насчитывает десятилетия. (Каждый поток стоит как минимум несколько сотен КБ, попробуйте сделать это в конце 1990-х, когда у вас было только 64 МБ ОЗУ для игры). 18.12.2020
  • Новые материалы

    Объяснение документов 02: BERT
    BERT представил двухступенчатую структуру обучения: предварительное обучение и тонкая настройка. Во время предварительного обучения модель обучается на неразмеченных данных с помощью..

    Как проанализировать работу вашего классификатора?
    Не всегда просто знать, какие показатели использовать С развитием глубокого обучения все больше и больше людей учатся обучать свой первый классификатор. Но как только вы закончите..

    Работа с цепями Маркова, часть 4 (Машинное обучение)
    Нелинейные цепи Маркова с агрегатором и их приложения (arXiv) Автор : Бар Лайт Аннотация: Изучаются свойства подкласса случайных процессов, называемых дискретными нелинейными цепями Маркова..

    Crazy Laravel Livewire упростил мне создание электронной коммерции (панель администратора и API) [Часть 3]
    Как вы сегодня, ребята? В этой части мы создадим CRUD для данных о продукте. Думаю, в этой части я не буду слишком много делиться теорией, но чаще буду делиться своим кодом. Потому что..

    Использование машинного обучения и Python для классификации 1000 сезонов новичков MLB Hitter
    Чему может научиться машина, глядя на сезоны новичков 1000 игроков MLB? Это то, что исследует это приложение. В этом процессе мы будем использовать неконтролируемое обучение, чтобы..

    Учебные заметки: создание моего первого пакета Node.js
    Это мои обучающие заметки, когда я научился создавать свой самый первый пакет Node.js, распространяемый через npm. Оглавление Глоссарий I. Новый пакет 1.1 советы по инициализации..

    Забудьте о Matplotlib: улучшите визуализацию данных с помощью умопомрачительных функций Seaborn!
    Примечание. Эта запись в блоге предполагает базовое знакомство с Python и концепциями анализа данных. Привет, энтузиасты данных! Добро пожаловать в мой блог, где я расскажу о невероятных..


    Для любых предложений по сайту: [email protected]