Лучшие практики Blazor с моделью Identity

В настоящее время я работаю над веб-приложением, использующим предварительную версию Blazor 3.2 3. Я использую версию WebAssembly и Identity. Мое приложение состоит из 3 частей: клиентской, серверной и общей. (как и в базовом шаблоне).

Мои классы моделей хранятся в разделе Shared. Однако класс модели для пользователей хранится в папке Server.

Я хотел бы использовать в одной из своих моделей (хранящихся в общем проекте):

 public virtual ApplicationUser User { get; set; }

Это невозможно, потому что общий проект не имеет доступа к проекту сервера.

Должен ли я помещать все классы моих моделей на сервер и использовать DTO в общей части?

Вместо этого поместить все мои классы в общую папку (включая ApplicationUsers)?

Какая лучшая практика?


person Erakx    schedule 05.04.2020    source источник


Ответы (1)


Это невозможно, потому что общий проект не имеет доступа к проекту сервера.

В этом нет необходимости: вы можете переместить ApplicationUser в Shared и добавить пакет nuget Microsoft.Extensions.Identity.Stores в Shared. Вот где определяется IdentityUser. Однако это не лучшая практика. Помимо других проблем, это значительно увеличит размер вашего клиентского приложения.

Должен ли я помещать все классы моих моделей на сервер и использовать DTO в общей части?

Это предпочтительный образец, безусловно, для более крупного проекта. Для чего-то небольшого различия между классами модели и DTO иногда становятся размытыми. Но поскольку IdentityUser привносит некоторые зависимости и содержит поля, которые вам не нужны или не нужны на клиенте, создание ApplicationUserDto всегда будет платным.

person Henk Holterman    schedule 05.04.2020
comment
Спасибо за четкий ответ, я очень признателен. - person Erakx; 06.04.2020