Настройка сервера Blazor для размещения WebAPI

#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();
        ...
    });
}