Здравствуйте, Артём, Вы писали:
Аё>Я не специалист в wasm ни разу
.
Аё>Хз. Возможно, придётся вручную отделить код многопоточки в отдельные скрипты (или отдельные wasm). Для браузера WebWorker- это как отдельное приложение без доступа к DOM, близкая аналогия- как если приложение крутит другое, консольное, в фоне и обменивается собщениями через cin-cout.
Аё>У WebWorker вначале подписываешься на сообщения от хоста. Хост подписывается на сообщения от web worker. Я делал обёртку на хосте, которая регистрировала что на что отвечает. Естественно, что любой обсчёт на хосте должен успеть между 2 кадрамм- поэтому ни в коем случае ничего с циклами не считать. Просто заворачиваешь посылку отправляешь в web worker- как если бы отправлял на бек.
Аё>Собирать wasm мне не довелось
Там, где opencv забыла пометить метод в экспорт в wasm- скопипастил код из исходника C++ в код Typescript, благо метод небольшой, на производительности не сказалось.
Что многопоточный wasm сам по себе, а однопоточный dom тоже сам по себе — это я в курсе. Значит, с .NET в контексте blazor ты не сталкивался.
Сейчас у меня две печали по этому вопросу. Может быть, кто-то сталкивался.
Во-первых, после обфускатора Obfuscar в веб-браузере не грузится клиентский код. Возможно, что дело в самом обфускаторе. Вчера попадались ссылки, где для этого используют другие обфускаторы. И вроде как может заработать.
Во-вторых, даже без AOT мое веб-клиентское приложение раздувается до мегабайт 70. С AOT — где-то до 100 мегабайт. Да я так замучаюсь платить хостеру за трафик! Причем, в чистом виде инсталятор десктопной версии с WPF у меня весит всего-то мегабайт 11, а это у меня самая навороченная и производительная версия.
Круто, конечно, когда программу не нужно устанавливать, что она может сразу загрузиться и запуститься. Однако возникает большой вопрос в целесообразности идти этим путем