Бизнес-слой в архитектуре 3 уровня
Я пошел на интервью, и меня попросили показать мою архитектуру бизнес-уровня. Я имею некоторое представление об архитектуре 3 уровня, но действительно не знаю, что писать перед интервьюером. Итак, предположим, мой проект имеет дело с сотрудниками организации, тогда что бы я там написал. Будут ли это какие-то диаграммы, которые я должен был сделать, или какая-то часть кодирования. Я работал в C# framework 3.5. Я действительно не понимаю, что еще упомянуть в этом вопросе, поэтому, пожалуйста, дайте мне знать, если что-то требуется.Спасибо.
редактировать Я работал в winforms. Я знаю, что такое бизнес-уровень, но не был уверен, что сказать интервьюеру, поскольку бизнес-уровень имеет коды, и, очевидно, мой проект был немного большим, поэтому было огромное количество кодов. Так что я должен был там написать??
5 ответов
архитектура 3 уровня состоит из 3 основных слоев
- PL Внешний Вид
- BLL Слой Бизнес-Логики
- даль Уровень Доступа К Данным
каждый верхний слой запрашивает только нижний слой и никогда ничего не видит поверх него.
когда они спрашивают вас о как вы будете строить свой 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все государственные открытые услуги, мой даль обрабатывает весь доступ к базе данных, у меня есть Слой Сервиса который обрабатывает 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);
...
}
}
в приведенном выше коде я просто использую инъекцию зависимостей для разделения knowladge другого слоя, так как на этом слое (слой представления, поскольку это контроллер в проекте MVC) он никогда не должен заботиться о том, как вызвать службу и что пользователь использует ServiceA
вместо ServiceB
... Что ему нужно знать, так это то, что вызов IService.ListAllProjects()
даст правильные результаты.
вы начинаете делить предложения, и если проблема появляется в подключении к службе, вы знаете, что это не имеет никакого отношения к уровню презентации, это уровень сервиса (в моем случае), и он легко фиксируется и может быть легко развернут новый service.dll
вместо публикации всего веб-сайта снова...
у меня тоже есть помощник, который держит все Бизнес-Объекты что я использую во всех проектах.
надеюсь, это поможет.
проверьте мой ответ здесь для примера, действительного во многих проектах, даже если пользовательский интерфейс не asp.net mvc...
3 уровня следующим образом:
- ваша презентация в одном слое.
- ваша логика приложения в другом слое-называется бизнес-слоем.
- ваши классы доступа к данным в третьем слое. -- называется слой данных.
Webforms будет уровнем представления Так что для класса employee делать что-нибудь в ASP.Net код за файлом можно считать бизнес-слоем в моем понимании, поскольку вы применяете бизнес-правила, используя if / else и т. д. Классы доступа к данным в папке App_Code будут слоем данных.
в случае настольных приложений дизайн формы будет слой презентации, код формы будет бизнес-слой и все, что связано с доступом к базе данных будет слой данных.
слой бизнес-слоя, который отвечает за всю бизнес-логику. Например у вас есть Organizarion так организация и сбор сотрудников. В объекте employee необходимо реализовать некоторое ограничение или некоторые правила. Эти правила будут реализованы в этом слое.
бизнес-логики определяется как любая логика приложения, которая связана с поиском, обработкой, преобразованием и управлением данными приложения; применением бизнес-правил и политик; и обеспечением согласованности и достоверности данных. Чтобы максимизировать возможности повторного использования, компоненты бизнес-логики не должны содержать поведение или логику приложения, характерные для прецедента или истории пользователей. Бизнес-логику можно далее подразделить на следующие два категории:
- Бизнес-Процесс. После того как компоненты пользовательского интерфейса соберут необходимые данные пользователя и передадут их бизнес-слою, приложение сможет использовать эти данные для выполнения бизнес-процесса. Многие бизнес-процессы включают несколько шагов, которые должны выполняться в правильном порядке и могут взаимодействовать друг с другом посредством оркестровки. Бизнес-рабочий процесс определяет и координирует длительные, многоступенчатые бизнес-процессы и может быть реализован использование инструментов управления бизнес-процессами. Они работают с компонентами бизнес-процесса, которые создают экземпляры и выполняют операции над компонентами рабочего процесса.
- Предприятие сущности бизнес-объектов или-в более общем смысле-бизнес-объекты инкапсулируют бизнес-логику и данные, необходимые для представления элементов реального мира, таких как клиенты или заказы, в приложении. Они хранят значения данных и предоставляют их через свойства; содержат бизнес-данные, используемые приложение; и обеспечить программный доступ с сохранением состояния к бизнес-данным и связанным функциям. Бизнес-сущности также проверяют данные, содержащиеся в сущности, и инкапсулируют бизнес-логику для обеспечения согласованности и реализации бизнес-правил и поведения.