Бизнес уровень в 3-х уровневой архитектуре - PullRequest
8 голосов
/ 22 сентября 2011

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

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

Ответы [ 6 ]

19 голосов
/ 22 сентября 2011

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

  • PL Уровень представления
  • BLL Уровень бизнес-логики
  • 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;
    }
  }
}

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

enter image description here

PL - все общедоступные службы, мой DAL обрабатывает весь доступ к базе данных, у меня есть Service Layer , который обрабатывает 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, чтобы отделить знания от другого уровня, как на этом уровне (уровень представления какявляется контроллером в проекте MVC) он никогда не должен заботиться о том, как вызвать Сервис, и что пользователь использует ServiceA вместо ServiceB ... Что нужно знать, так это то, что вызов IService.ListAllProjects() даст правильныйрезультаты.

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

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

Надеюсь, это поможет.

3 голосов
/ 22 сентября 2011

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

MVC3 и Entity Framework

1 голос
/ 16 ноября 2017

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

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

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

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

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

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

0 голосов
/ 27 декабря 2018

3-уровневая архитектура - это тип программной архитектуры, которая состоит из трех «уровней» или «уровней» логических вычислений.Они часто используются в приложениях как особый тип клиент-серверной системы.3-уровневые архитектуры предоставляют множество преимуществ для сред производства и разработки за счет модульности пользовательского интерфейса, бизнес-логики и уровней хранения данных.

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

Уровень бизнес-логики (BLL), который служит посредником для обмена данными между уровнем представления и DAL.В реальном приложении BLL должен быть реализован как отдельный проект библиотеки классов в папке App_Code , чтобы упростить структуру проекта.ниже показаны архитектурные отношения между уровнем представления, BLL и DAL.

BLL отделяет уровень представления от уровня доступа к данным и устанавливает бизнес-правила BLL

0 голосов
/ 22 сентября 2011

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

...