Данное руководство устарело. Актуальное руководство: Руководство по ASP.NET Core
Последнее обновление: 31.10.2015
В этой теме и ряде последующих материалов мы рассмотрим трехуровневую архитектуру приложения ASP.NET MVC и ее возможную реализацию.
Вообще существует множество различных видов и типов архитектур, которые успешно применяются. Одной их наиболее используемых является классическая трехуровневая система, которая подразумевает разделение приложения на три уровня.
Тут сразу надо сказать, что многоуровневой архитектурой часто обозначают два не совсем связанных понятия: n-layer и n-tier. И layer, и tier, как правило, обозначаются словом «уровень», иногда по отношению к «layer» еще употребляется слово «слой». Однако в обоих случаях уровни будут разного порядка.
Tier представляет физический уровень. То есть если мы говорим о трехуровневой архитектуре, то n-tier приложение могло быть разделено на такие уровни: сервер базы данных, веб-приложение на веб-сервере и браузер пользователя. То есть каждый уровень представлял бы особый отдельный физический процесс, даже если бы и сервер баз данных, и веб-сервер, и браузер пользователя находились бы на одном компьютере. Если бы в качестве клиента альтернативно использовалось мобильное приложение, то это был бы еще один физический уровень.
Никита Соболев «Паттерны и бизнес-логика для вашего Vue приложения»
Layer представляет логический уровень. То есть у нас может быть уровень доступа к данным, уровень бизнес-логики, уровень представления, уровень сервисов и так далее. При этом логические уровни не совпадают с физическими. Так, обычно уровень предоставления в приложении ASP.NET содержит и контроллеры, которые обрабатывают ввод, и представления, которые отображаются в веб-браузере, то есть разделяется на два физических уровня.
В данном случае мы будем говорить именно о логических уровнях, то есть о n-layer архитектуре.
Классическая трехуровневая система состоит из следующих уровней:
Presentation layer (уровень представления): это тот уровень, с которым непосредственно взаимодействует пользователь. Этот уровень включает компоненты пользовательского интерфейса, механизм получения ввода от пользователя. Применительно к asp.net mvc на данном уровне расположены представления и все те компоненты, который составляют пользовательский интерфейс (стили, статичные страницы html, javascript), а также модели представлений, контроллеры, объекты контекста запроса.
Business layer (уровень бизнес-логики): содержит набор компонентов, которые отвечают за обработку полученных от уровня представлений данных, реализует всю необходимую логику приложения, все вычисления, взаимодействует с базой данных и передает уровню представления результат обработки.
Data Access layer (уровень доступа к данным): хранит модели, описывающие используемые сущности, также здесь размещаются специфичные классы для работы с разными технологиями доступа к данным, например, класс контекста данных Entity Framework. Здесь также хранятся репозитории, через которые уровень бизнес-логики взаимодействует с базой данных.
Почему nft столько стоят #shorts
При этом надо отметить, что крайние уровни не могут взаимодействовать между собой, то есть уровень представления (применительно к ASP.NET MVC, контроллеры) не могут напрямую обращаться к базе данных и даже к уровню доступа к данным, а только через уровень бизнес-логики.
Уровень доступа к данным не зависит от других уровней, уровень бизнес-логики зависит от уровня доступа к данным, а уровень представления — от уровня бизнес-логики.
Компоненты, как правило, должны быть слабосвязанными (loose coupling), поэтому неотъемлемым звеном многоуровневых приложений является внедрение зависимостей.
При чем об ASP.NET MVC мы говорим прежде всего применительно к уровню представления, остальные же уровни могут быть реализованы независимо и могут использоваться в приложениях на других технологиях, как Windows Forms, WPF и т.д. И, как правило, все приложение в целом будет представлять решение (solution) в Visual Studio, а отдельные уровни — проекты. В то же время неверно полагать, что если уровень обязательно должен соответствовать отдельному проекту. При необходимости мы можем раздробить один уровень на несколько проектов, главное, чтобы его функционал представлял единое логическое звено.
И теперь создадим веб-приложение, которое будет разделено на три уровня.
Источник: metanit.com
Какая разница между уровнем прикладного уровня и бизнес-логики?
В чем разница между уровнем прикладного уровня и бизнес-логики? Я понимаю, что бизнес-уровень предоставляет бизнес-услуги и бизнес-сервисы бизнес-приложений и предоставляет услуги конечному пользователю (веб-служба, пользовательский интерфейс и т.д.). Я прав?
ОТВЕТЫ
Ответ 1
прикладной уровень объединяет разрыв между бизнес-уровнем и граничной технологией.
Ответ 2
- Уровень приложения состоит из тех элементов, которые относятся к данному приложению. Таким образом, это будет включать пользовательский интерфейс, внешнюю обработку для пользовательского интерфейса и любые привязки между приложением и уровнем вашей бизнес-логики. В идеальном мире этот уровень не будет содержать никакой логики бизнес-домена.
- Уровень бизнес-логики (BLL) содержит логику, специфичную для бизнес-домена. Кроме того, если вы собираетесь создать отдельный BLL, этот слой должен содержать логику, которая может использоваться другими приложениями, а также эта. Например, набор веб-сервисов, предоставляющих четко определенный API. Это отменит BLL от вашего приложения и позволяет вам гибко создавать другие приложения поверх него в будущем.
Ответ 3
Как я понимаю, бизнес-уровень отвечает за бизнес-решения AKA логикой, включающей протоколы клиента.
Уровень приложения — это необработанные процессы, которые не имеют ничего общего с бизнес-решениями.
Ответ 4
в классическом слое в бизнес-слое мы имеем:
-Бизнес-правила -Безопасность -Пользовательская активность -Transaction Management.
Функциональное требование + Нефункциональное требование = Бизнес-код
в функциональном требовании DDD Как бизнес-правила и бизнес-логика Оставайтесь на уровне домена и Нефункциональное требование, как безопасность и регистрация активности пользователя. Оставайтесь на уровне приложений.
Ответ 5
Я думаю об этом как о инфраструктуре. В зависимости от приложения он может содержать сантехнику для настройки, отчетности, оболочки пользовательского интерфейса и т.д.
Ответ 6
В DDD есть 4 уровня: презентация, приложение, домен и инфраструктура. Все, что зависит от логики прецедентов (сущности приложения, компоненты рабочего процесса приложения, например DTO, службы приложений), переходит на прикладной уровень (логика приложения). Вся инвариантная к логике прецедентов (бизнес-сущности, компоненты бизнес-процессов, например, модель домена, доменные службы) переходит на уровень домена (логика домена). На уровне инфраструктуры могут быть IoC, Cache, Repositories.
Ответ 7
В моей голове, логика бизнеса и приложений такова: бизнес-логика управляет данными, логика приложений управляет пользователями
Источник: utyatnishna.ru
9. Физическая структура распределенных приложений
А сейчас обратимся к физическим уровням распределенных приложений.
Топология распределенной системы подразумевает разделение на:
- несколько серверов баз данных,
- несколько серверов обработки данных
- совокупность локальных и удаленных клиентов.
10. Распределение бизнес-логики по уровням распределенного приложения
Дадим подробное описание уровней распределенной системы. Предварительно рассмотрим распределении функциональности приложения по уровням. Бизнес-логика может быть реализована на любом из уровней трехуровневой архитектуры.
Серверы БД могут не только сохранять данные в базах данных, но и содержать часть бизнес-логики приложения в хранимых процедурах, триггерах и т. д. Клиентские приложения также могут реализовывать правила обработки данных. Если набор правил минимален и сводится в основном к процедурам проверки корректности ввода данных, мы имеем дело с «тонким» клиентом. «Толстый» клиент, наоборот, содержит большую долю функциональности приложения.
Уровень обработки данных собственно и предназначен для реализации бизнес-логики приложения, и здесь сконцентрированы все основные правила обработки данных. Таким образом, в общем случае функциональность приложения оказывается «размазанной» по всему приложению.
Все разнообразие распределения бизнес-логики по уровням приложений можно представить в виде плавной кривой, показывающей долю правил обработки данных, сконцентрированной в конкретном месте. Кривые на рис. 3 носят качественный характер, но тем не менее позволяют увидеть, как изменения в структуре приложения могут повлиять на распределение правил. Рис.
3. Распределение бизнес-логики по уровням распределенного приложения И практика подтверждает это заключение. Ведь всегда найдется парочка правил, которые нужно реализовать именно в хранимых процедурах сервера БД, и очень часто бывает удобно перенести некоторые первоначальные операции с данными на сторону клиента — хотя бы для того, чтобы предотвратить обработку некорректных запросов.
11. Уровень представления данных
- клиенты, использующие возможности ГИП (например, Windows),
- и Web-клиенты.
- получение данных;
- представление данных для просмотра пользователем;
- редактирование данных;
- проверка корректности введенных данных;
- сохранение сделанных изменений;
- обработка исключительных ситуаций и отображение информации об ошибках для пользователя.
Источник: studfile.net