#c# #blazor #blazor-server-side #webapi
#c# #blazor #blazor-на стороне сервера #webapi
Вопрос:
Я планирую создать ASP.NET Размещенное на ядре приложение Blazor WASM, но из-за ограниченного опыта отладки и более медленной разработки я выбираю серверное приложение Blazor, в котором размещается WebAPI, вместо этого, чтобы имитировать архитектуру указанного типа проекта, чтобы упростить переключение после выпуска .NET 5. Проблема в том, что я не знаю, как настроить Startup
класс для использования WebAPI. К сожалению, я не могу найти никаких ссылок, которые демонстрируют использование WebAPI на сервере Blazor.
Предполагая, что у меня уже есть контроллеры, добавленные в проект, что я должен изменить в ConfigureServices()
и Configure()
методах Startup
, чтобы использовать контроллеры?
Комментарии:
1. Могу ли я спросить, предназначен ли WebAPI для использования приложением Blazor или он предназначен для использования чем-то другим? Если это нужно только для предоставления данных Blazor, вам это не нужно для сервера Blazor — код Blazor уже выполняется на сервере.
2. @Quango Это для предоставления данных для Blazor, но я подумал, что создание серверного приложения, подобного WASM-app, облегчит переход на WASM, поэтому мне не придется ничего менять
3. да, это правда. Лучший подход — инкапсулировать доступ к данным в интерфейсе, например IDataAccess — для WASM создайте код доступа к WebAPI, для сервера вы можете просто получить данные. Если это имеет смысл. Вы можете создать WebAPI позже, когда вам это понадобится. У меня есть демонстрационное приложение (немного устаревшее, но концепция та же: github.com/conficient/BlazorServicePattern
4. Отлично! Я только недавно думал об этом, но я не могу найти ссылку на это. Спасибо за образец!
5. @Quango Кстати, я только что понял, что контроллеры для WebAPI (
ControllerBase
класс, посколькуController
предназначен для представлений MVC) возвращают ActionResult<Модель>. У вас когда-нибудь был опыт работы с этим случаем?
Ответ №1:
В любом случае, наконец-то разобрался. Использовать контроллеры на сервере Blazor и в любом ASP.NET Основное приложение для API, просто сопоставьте контроллеры в Configure()
.
public void Configure(IAppplicationBuilder app, IWebHostEnvironment env)
{
...
app.UseEndpoints(endpoints =>
{
endpoints.MapControllers();
...
});
}