Я довольно новичок в архитектуре и создаю приложение для моего следующего проекта .NET.Предлагаемый мной дизайн архитектуры выглядит следующим образом:
Это традиционное трехуровневое приложение, которое содержит: DataLayer (LINQ + частичные классы) BusinessLogicLayer (Entities + Validation Logic) (необязательно) UI сервисного уровня (WCF) (веб-сайт иПриложение для Windows)
Уровень данных: уровень данных будет содержать мои классы DataContext (т.е. LINQ) и частичные классы.Эти частичные классы будут иметь базовую логику расчета (например, Calc. VAT) и другую логику проверки на уровне базы данных.
Бизнес-уровень: в нем будут вводы, аналогичные уровню данных, но также они будут содержать логику проверки на уровне пользовательского интерфейса.Например, если пользователь пытается ввести имя пользователя, которого нет в базе данных, он должен сообщить пользователю, что пользователя не существует.(это место, где я борюсь).Объект будет Lazy Loaded всякий раз, когда будут вызываться свойства, а не при создании объекта.
UI: это будет традиционный уровень пользовательского интерфейса, к которому будут вызываться бизнес-объекты.
Причинапочему я освобождаю бизнес-уровень от DataLayer даже при использовании LINQ, потому что если я хочу добавить больше объектов среднего уровня, например, для службы WCF, то я хочу, чтобы он взаимодействовал с бизнес-уровнем, а не с данными.Я верю, что разделение помогает, когда приложение растет. (Я думаю)
Я бы оценил, если бы кто-то мог прокомментировать вышеприведенные строки.Моя настоящая проблема - написание бизнес-классов (очевидно).Например, при отложенной загрузке, когда я пытаюсь загрузить объект, а в базе данных нет данных, я хочу, чтобы мой пользовательский интерфейс показывал пользователю, что пользователь не существует (если я ищу имя пользователя).Каковы ваши рекомендации относительно этого.Любой вклад в это очень ценится.
Большое спасибо, Preyash