TheRedEye Ответов: 0

Структура слоя проекта C# - куда вписываются картографы


Я пытаюсь создать многоуровневую структуру для приложения Blazor-server, но, похоже, постоянно путаюсь в том, где должны находиться классы, чтобы держать зависимости слабо связанными. Во многих примерах я вижу проекты, называемые "ядром" и "услугами", но никогда нет объяснения того, какие классы должны быть в этих проектах.

Структура у меня казалась прекрасной, пока я не понял, что пользовательский интерфейс нуждается в ссылке как на бизнес-уровень (для внедрения сервиса), так и на DAL для отображения модели viewmodel to model. Конечно, это не лучший способ сделать это?
Кроме того, должны ли мои конкретные классы находиться на том же уровне, что и интерфейсы, которые они реализуют?

Любой совет, пожалуйста.

Что я уже пробовал:

So far i have the following structure:

DataAccess (project)
 - DAL (folder) Has classes and interfaces for each entity to wrap entity framework CRUD operations
 - Models (folder) Has model classes and DBsets generated by entity framework

Business(project)
 - Services (folder) Has classes and interfaces that make calls to the DAL project, performs some additional logic and return models. Also has classes that have tasks that are not dependent on the data source.

BlazorUI (project)
 - Pages (folder) Has razor components with injected services from the business project.
 - ViewModels (folder) Poco classes with data annotations.
 - Mappers (folder) Classes to convert a ViewModel to a DataAccess.Model and vice versa.

Gerry Schmitz

Пользовательский интерфейс (то есть "вид") не ссылается на DAL, IMO. Вид - вид модели - Модель - даль. Что-нибудь еще, и вы начинаете получать "циклы". Использовать EF сущностей (везде), прежде чем "пользовательские" покос.

TheRedEye

Спасибо, Джерри. Ваше последнее утверждение звучит противоречиво, если только я не ошибаюсь. Разве сущности EF не являются моделью в V-VM-M-DAL? И разве пользовательские POCOs не являются viewmodels в V-VM-M-DAL?

0 Ответов