Бизнес-уровень в трехуровневой архитектуре

Я пошел на собеседование и попросил показать свою архитектуру бизнес-уровня. У меня есть представление о архитектуре с 3 уровнями, но на самом деле нет идеи, чтобы написать перед интервьюером. Поэтому предположим, что мой проект касается сотрудников организации, то что бы я написал там. Будут ли какие-либо диаграммы, которые я должен был бы сделать, или какую-то часть кодирования. Я работал в C # framework 3.5. Я действительно не понимаю, что еще нужно упомянуть в этом вопросе, поэтому, пожалуйста, дайте мне знать, если что-то требуется. Спасибо.

Редактировать Я работал в winforms. Я знаю, что такое бизнес-уровень, но не был уверен, что сказать интервьюеру, поскольку бизнес-уровень имеет коды, и, очевидно, мой проект был немного большим, поэтому было огромное количество кодов. Так что я должен был там написать?

Архитектура 3 уровня состоит из 3 основных слоев

  • PL Presentation Layer
  • BLL Business Logic Layer
  • Уровень доступа к данным DAL

каждый верхний слой только запрашивает нижний слой и никогда не видит ничего поверх него.

Когда они спросят вас о том, как вы будете строить свой BLL , вы можете написать что-то вроде:

 namespace Company.BLL { // let's create an interface so it's easy to create other BLL's if needed public interface ICompanyBLL { public int Save(Order order, UserPermissions user); } public class Orders : ICompanyBLL { // Dependency Injection so you can use any kind of BLL // based in a workflow for example private Company.DAL db; public Orders(Company.DAL dalObject) { this.db = dalObject; } // As this is a Business Layer, here is where you check for user rights // to perform actions before you access the DAL public int Save(Order order, UserPermissions user) { if(user.HasPermissionSaveOrders) return db.Orders.Save(order); else return -1; } } } 

Как живой пример проекта, который я создаю:

введите описание изображения здесь

PL – это все публичные службы, мой DAL обрабатывает весь доступ к базе данных, у меня есть уровень обслуживания, который обрабатывает 2 версии службы, старый ASMX и новую службу WCF, которые они предоставляют через Interface поэтому легко мне выбрать «на лету», какую услугу пользователь будет использовать

 public class MainController : Controller { public IServiceRepository service; protected override void Initialize(System.Web.Routing.RequestContext requestContext) { ... if (thisUser.currentConnection.ws_version == 6) // Use old ASMX Web Service service = new WebServiceRepository6(url, ws_usr, ws_pwd); else if (thisUser.currentConnection.ws_version == 7) // Use the brand new WCF Service service = new WebServiceRepository7(url, ws_usr, ws_pwd); ... } } 

В вышеприведенном коде я просто использую Dependency Injection для разделения знаний другого уровня, как на этом уровне (уровень представления, так как это controller в проекте MVC), он никогда не должен заботиться о том, как вызвать службу, и что пользователь использует ServiceA вместо ServiceB … Что ему нужно знать, так это то, что вызов IService.ListAllProjects() даст правильные результаты.

Вы начинаете разделять предложения, и если в сервисном соединении возникает проблема, вы знаете, что это не связано с уровнем презентации, это уровень сервиса (в моем случае), и он легко фиксируется и может быть легко развернут новый service.dll вместо публикации весь сайт снова …

У меня также есть помощник, который содержит все объекты Business Objects, которые я использую во всех проектах.

Я надеюсь, что это помогает.

Проверьте мой ответ здесь для примера, действительного во многих проектах, даже если пользовательский интерфейс не является asp.net mvc …

MVC3 и Entity Framework

3 Уровень выглядит следующим образом:

  1. Ваша презентация в одном слое.
  2. Логика вашего приложения в другом слое бизнес-уровня.
  3. Классы доступа к данным в третьем слое. – называется слоем данных.

Webforms будет слоем представления. Так что для classа сотрудников, делающего что-либо в коде ASP.Net за файлом, можно считать бизнес-слоем в моем понимании, поскольку вы применяете бизнес-правила, используя if / else и т. Д. Классы доступа к данным в папке App_Code будут Data Layer.

В случае, если дизайн форм приложений для настольных приложений будет уровнем представления, код формы будет бизнес-слоем, и все, что связано с доступом к базе данных, будет уровнем данных.

Уровень бизнес-уровня, отвечающий за всю бизнес-логику. Например, у вас есть Organizarion, поэтому организация и сбор сотрудников. В объекте сотрудника необходимо реализовать какое-то ограничение или некоторые правила. Эти правила будут реализованы на этом уровне.

Бизнес-логика определяется как любая логика приложения, которая связана с поиском, обработкой, преобразованием и управлением данными приложения; применение бизнес-правил и политик; и обеспечения согласованности и достоверности данных. Чтобы максимизировать возможности повторного использования, компоненты бизнес-логики не должны содержать поведение или логику приложения, характерную для случая использования или истории пользователя. Бизнес-логику можно разделить на две следующие категории:

  • Бизнес-процесс . После того как компоненты пользовательского интерфейса собирают требуемые данные от пользователя и передают его на бизнес-уровень, приложение может использовать эти данные для выполнения бизнес-процесса. Многие бизнес-процессы include в себя несколько шагов, которые должны выполняться в правильном порядке и могут взаимодействовать друг с другом посредством оркестровки. Бизнес-документооборот определяет и координирует длительные, многошаговые бизнес-процессы и может быть реализован с использованием инструментов управления бизнес-процессами. Они работают с компонентами бизнес-процессов, которые создают и выполняют операции над компонентами рабочего процесса.
  • Объекты Business Entity Business Entity или более общие бизнес-объекты инкапсулируют бизнес-логику и данные, необходимые для представления элементов реального мира, таких как клиенты или заказы, в вашем приложении. Они хранят значения данных и выставляют их через свойства; содержать и управлять бизнес-данными, используемыми приложением; и обеспечить доступ к программному доступу к бизнес-данным и связанным с ними функциональным возможностям. Бизнес-сущности также проверяют данные, содержащиеся в объекте, и инкапсулируют бизнес-логику для обеспечения согласованности и реализации бизнес-правил и поведения.
Interesting Posts

Почему этот код с ‘1234’ компилируется в C ++?

Выравнивание разделов расширенного формата

java изменить документ в DocumentListener

Генерация ключей RSA в формате PKCS # 1 в Java

Должен ли я использовать «border: none» или «border: 0»?

Как установить язык по умолчанию (источник ввода) для приложения?

BootStrap3 сохраняет раскрывающееся меню после нажатия на элемент

Как очистить кэш HttpWebRequest

Android O – Старая служба переднего плана начала работать?

Производительность bcp / BULK INSERT по сравнению с табличными параметрами

Ошибка: не может соответствовать запрограммированным classам в одном файле dex. Попробуйте указать список main-dex. # методы: 72477> 65536

Получение электронной почты от внешних поставщиков Google и Facebook во время подключения к учетной записи в приложении MVC5 по умолчанию

Как установить связь между компонентом в угловом?

Сбросить настройки уведомлений для приложения

java.lang.IllegalStateException в com.sun.faces.context.FacesContextImpl.assertNotReleased

Давайте будем гением компьютера.