При создании проекта ASP.NET Core с использованием Blazor это представляет некоторые интересные архитектурные решения. Есть 3 разных шаблона проекта.
- Blazor
- Blazor (размещено на ASP.NET Core)
- Blazor (на стороне сервера в ASP.NET Core)
Вопрос 1
Я пытаюсь понять цель или преимущество шаблона Blazor (на стороне сервера в ASP.NET Core) или подхода к структурированию проекта. Почему основное приложение .NET обслуживает другое основное ядро .NET? Или я что-то упустил?
Учитывая различные модели хостинга, объясненные здесь.
https://blazor.net/docs/host-and-deploy/hosting-models.html
Разве это не может быть просто один проект, который использует серверный Blazor, а не 2?
Вопрос 2
Если я смотрю на архитектуру, подобную той, что показана на изображении ниже, не должен ли я начать с шаблона «ASP.NET Core Hosted», а затем изменить проект .Client для использования инфраструктуры «на стороне сервера»? Таким образом, у меня все еще есть вызываемый API, к которому можно получить доступ из другого приложения, если это необходимо? Или я полагаю, что я все еще могу использовать шаблон «Серверная сторона», который предварительно настроит все параметры запуска для запуска Клиента с помощью серверной модели хостинга, и объединит это с добавлением моих собственных контроллеров API в .Server. проект, который будет вызываться через библиотеку бизнес-правил согласно схеме.
Вопрос 3
В какой-то момент я мог бы захотеть переключить приложение .Client на использование веб-сборки, когда улучшится поддержка инструментов / отладки. Я не думаю, что архитектура, которую я предлагаю, запрещает это? Я просто изменил бы код запуска в приложении .Server, заменил ссылку на blazor.server.js на blazor.webassembly.js и несколько других вещей, и я должен быть золотым. Я с базы здесь?
Замечания по архитектуре:
- Клиентскому приложению необходим доступ к ресурсу с помощью некоторой операции CRUD, поэтому он выполняет вызов метода в библиотеке классов бизнес-правил
- Библиотека бизнес-правил ссылается на библиотеку классов, которая содержит «тупые» классы POCO, которые представляют различные доменные модели. Делает вызов в API
- Контроллер / действие API затем вызывает библиотеку данных или репозиторий, который управляет Entity Framework DbContext для извлечения / обновления данных в Db
- И библиотека бизнес-правил, и библиотека данных, и API-интерфейс ссылаются на библиотеку «Модели».