Слишком много вопросов для одного «Вопроса»
Вопрос: Но дает ли SignalR способ использовать Blazor (размещенное на ASP.NET Core) вместо этого?
Ответ: В другихслова, вы задаетесь вопросом, можно ли использовать SingleR из клиентской части Blazor, верно? Ответ - да ...
Вопрос: Visual Studio говорит, что эта модель хостинга "работает на WebAssembly и размещается наСервер ASP.NET Core ", но я не уверен, что именно это означает. Где работает WebAssembly? Клиент? Сервер? Оба места?
Ответ: Клиентский Blazor выполняется в браузере клиента.Клиентская сторона Blazor выполняется во время выполнения моно, которое компилируется в WebAssembly. WebAssembly не может работать на сервере. Он предназначен для работы в Интернете вместе с JavaScript. Клиентская сторона Blazor размещается на сервере и являетсяПроект Asp.Net Core.
Вопрос: Можно ли использовать SignalR вместе с моделью Blazor (размещенной на ASP.NET Core) для создания конвейера от серверной WebAssembly к tВеб-сборка на стороне клиента, которая устраняет необходимость в HttpHandler?
Ответ: Нет такой веб-сборки на стороне сервера для животных.Вы можете использовать Web Api для обеспечения связи между клиентской частью Blazor и сервером.В этом случае вам придется использовать сервис HttpClient.Примечание: вы также можете использовать SignleR для такой связи в реальном времени.
Что такое HttpHandler?Контроллер веб-API - это HttpHandler ... действие (конечная точка маршрутизации) в таком контроллере - это HttpHandler ... Имена не важны.Вопрос в том, какую проблему вы хотите решить.
Мне кажется, что вам лучше создать свое приложение с помощью серверной версии Blazor, в этом случае вы можете использовать службу HttpClient или, возможно, не использовать HttpClient ввсе, и вместо этого определите службу, которая передает данные в браузер, поскольку, в конце концов, ваш код выполняется на сервере, а данные передаются в браузер через SignleR.
ОБНОВЛЕНИЕ :
Вопрос: @Isaac: Спасибо за решение вопроса (ов) :) Мой основной вопрос заключается в том, способен ли серверный код в веб-приложении (каким-либо образом) обновлять компоненты пользовательского интерфейса напрямую (возможно)через некоторый механизм RPC через SignalR, который устранял бы необходимость выставлять конечную точку маршрутизации клиенту и устранял Ajax.Я думал, что WASM может работать и на стороне сервера.Я имею в виду приложения для интрасети, а не интернет-приложения, с точки зрения количества клиентов (относительно немного).
Ответ: закройте страницу в браузере с помощью ввода [type = text] и кнопки управления "Нажми на меня".Опять же, эта страница работает в браузере.Это может быть Blazor на стороне клиента, но это также может быть Blazor на стороне сервера.Я знаю секрет, и я собираюсь рассказать его вам.Наше дорогое приложение - Blazor на стороне сервера .Теперь введите значение в поле ввода и нажмите кнопку «Нажмите меня».Сразу после того, как вы нажали кнопку, SignleR передаст введенные вами данные, а также все детали, такие как тип события и т. Д. Короче говоря, событие выполняется на сервере.Нет Ajax, с вашей стороны ... Как работает SignleR, здесь неважно.Важно понимать, что ваш код выполняется на сервере, а не на клиенте, как это происходит при использовании Blazor на стороне клиента (WebAssembly).
Как я уже говорил выше, ваш кодвыполняется на сервере, и, таким образом, вам не нужно предоставлять конечные точки маршрутизации клиенту.Вы можете просто определить сервис в своем приложении, добавить его в контейнер DI и использовать его для вызова методов, которые делают что-то интересное ...
НОВОЕ ОБНОВЛЕНИЕ:
Вопрос: Спасибо.Что делать, если щелчок по кнопке пользователя отправляет текст в текстовом поле на сервер, который выполняет запрос к базе данных, используя текстовое значение в качестве поискового термина, а затем серверу необходимо отправить набор данных обратно клиенту для заполнениясетка?Вызывает ли сервер (удаленно) метод на стороне клиента и предоставляет данные в качестве аргумента для метода на стороне клиента?
Из вашего вопроса не ясно, к какому способу исполнения вы относитесь.Однако описанный здесь поток выполнения может относиться как к Blazor на стороне клиента, так и к Blazor на стороне сервера.
Когда пользователь нажимает кнопку, запускается обработчик событий, определенный в клиентском приложении и запущенный в браузере (обратите внимание, что это может быть Blazor на стороне клиента или Blazor на стороне сервера).Этот обработчик может использовать внедренный HttpClient для отправки содержимого текстового поля и ждать, если вам повезет, ответа, содержащего искомые данные.Я думаю, вы знаете, как использовать объект HttpClient, верно?Вы отправляете запрос, а затем получаете ответ.Извлеченные данные могут быть назначены локальной переменной и привязаны, скажем, к элементу таблицы, который может отображать данные в сетке.
Надеюсь, вы понимаете, что http-запрос отправлен на класс контроллера, определенный на сервере;то есть вы используете Web Api.
Этот поток событий, опять же, идентичен как на стороне клиента, так и на стороне сервера.
Но, поскольку ваше приложение выполняется на сервере, когда вы используете серверную версию Blazor, вам не нужно использовать Web Api, и вместо этого вы можете определить службу, которая возвращает необходимые данные.Обратите внимание, что запрос данных, запрос базы данных, возврат данных, выполнение кода, рендеринг html и т. Д. Все происходят на сервере, в конце которого метод SignleR отправляет HTML-различия в клиентский браузер для отображения.
Надеюсь, это поможет ...