Бизнес-слой в архитектуре 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;
    }
  }
}

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

enter image description here

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...

MVC3 и Entity Framework


3 уровня следующим образом:

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

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

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


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


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

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