Warstwa Biznesowa w architekturze 3 warstwowej

Poszedłem na wywiad i poproszono mnie o pokazanie mojej architektury warstwy biznesowej. Mam pewien pomysł na architekturę 3 tier, ale naprawdę nie mam pojęcia, co napisać przed rozmówcą. Przypuśćmy więc, że mój projekt dotyczy pracowników organizacji, to co bym tam napisał. Czy to będzie jakiś rodzaj diagramów, które powinienem zrobić lub część kodowania. Pracowałem w C # framework 3.5. Naprawdę nie rozumiem, co jeszcze wspomnieć w tym pytaniu, więc proszę dać mi znać, jeśli coś jest wymagane.Dzięki.

Edytuj Pracowałem w winforms. Wiem, co to jest warstwa biznesowa, ale nie byłem pewien, co powiedzieć rozmówcy, ponieważ warstwa biznesowa ma kody i oczywiście mój projekt był trochę duży, więc było ogromna liczba kodów. Co powinienem tam napisać??

Author: Sandy, 2011-09-22

5 answers

Architektura trójwarstwowa składa się z 3 głównych warstw

  • PL warstwa prezentacji
  • BLL warstwa logiki biznesowej
  • DAL Warstwa dostępu do danych

Każda górna warstwa pyta tylko dolną warstwę i nigdy nie widzi nic na niej.

Kiedy zapytają Cię o Jak zbudujesz swój BLL , Możesz napisać coś w stylu:

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;
    }
  }
}

Jako żywy przykład projektu jestem tworzenie:

Tutaj wpisz opis obrazka

PL ' S są wszystkie publiczne usługi narażone, mój DAL obsługuje cały dostęp do bazy danych, mam warstwa usług , która obsługuje 2 wersje usługi, Stary ASMX i nowa usługa WCF, są one narażone przez Interface więc łatwo mi wybrać w locie, jakiej usługi użytkownik będzie używać

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);

        ...

    }
}

W powyższym kodzie po prostu używam Dependency Injection, aby oddzielić knowladge drugiej warstwy, jak w tym warstwa (warstwa prezentacji, ponieważ jest to kontroler w projekcie MVC) nigdy nie powinno dbać o to, jak wywołać usługę i że użytkownik używa ServiceA zamiast ServiceB... Trzeba wiedzieć, że wywołanie IService.ListAllProjects() da prawidłowe wyniki.

Zaczynasz dzielić propozycje i Jeśli pojawi się problem w połączeniu z usługą, wiesz, że nie ma to nic wspólnego z warstwą prezentacji ,jest to warstwa usługowa (w moim przypadku) i łatwo ją naprawić i można łatwo wdrożyć nowy service.dll zamiast tego ponownie opublikować całą stronę internetową...

Mam również helpera, który przechowuje wszystkie obiekty biznesowe , których używam we wszystkich projektach.

Mam nadzieję, że to pomoże.
 18
Author: balexandre,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-09-22 07:05:40

Sprawdź moją odpowiedź tutaj, aby znaleźć przykład ważny w wielu projektach, nawet jeśli interfejs nie jest asp.net mvc...

MVC3 i Entity Framework

 3
Author: Davide Piras,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 11:54:04

3 poziom jest następujący,

  1. Twoja prezentacja w jednej warstwie.
  2. twoja logika aplikacji w innej warstwie -- zwanej warstwą biznesową.
  3. twoje klasy dostępu do danych w trzeciej warstwie. -- tzw. Warstwa danych.

Webforms będzie warstwą prezentacji Więc dla klasy pracowniczej robiącej cokolwiek w ASP.Net kod znajdujący się za plikiem może być uważany za warstwę biznesową zgodnie z moim zrozumieniem, ponieważ stosujesz reguły biznesowe za pomocą if / else i tak dalej. Klasy dostępu do danych w App_Code folder będzie warstwą danych.

W przypadku aplikacji desktopowych projekty formularzy będą warstwą prezentacji, kod formularza będzie warstwą biznesową, a wszystko związane z dostępem do bazy danych będzie warstwą danych.

 1
Author: Adnan Bhatti,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-09-22 06:59:00

Warstwa biznesowa, która odpowiada za całą logikę biznesową. Na przykład masz Organizarion tak organizacji i zbierania pracowników. W obiekcie pracownika trzeba wdrożyć pewne ograniczenia lub pewne zasady. Reguły te zostaną zaimplementowane w tej warstwie.

 0
Author: Gregory Nozik,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-09-22 06:29:08

logika biznesowa jest definiowana jako każda logika aplikacji, która dotyczy pobierania, przetwarzania, przekształcania i zarządzania danymi aplikacji; stosowanie reguł i polityk biznesowych; oraz zapewnienie spójności i ważności danych. Aby zmaksymalizować możliwości ponownego użycia, komponenty logiki biznesowej nie powinny zawierać żadnych zachowań ani logiki aplikacji, które są specyficzne dla przypadku użycia lub historii użytkownika. Logikę biznesową można dalej podzielić na następujące dwa Kategorie:

  • Business Workflow . Po tym, jak komponenty interfejsu użytkownika zbierają wymagane dane od użytkownika i przekazują je do warstwy biznesowej, aplikacja może wykorzystać te dane do przeprowadzenia procesu biznesowego. Wiele procesów biznesowych obejmuje wiele kroków, które muszą być wykonywane w odpowiedniej kolejności i mogą współdziałać ze sobą poprzez orkiestrację. Business workflow Definiuj i koordynuj długotrwałe, wieloetapowe procesy biznesowe i mogą być wdrażane za pomocą business narzędzia do zarządzania procesami. Współpracują z komponentami procesów biznesowych, które tworzą instancje i wykonują operacje na komponentach przepływu pracy.
  • Business Entity Business Entity entity, lub-bardziej ogólnie-obiekty biznesowe, zawierają logikę biznesową i dane niezbędne do reprezentowania elementów świata rzeczywistego, takich jak klienci lub zamówienia, w aplikacji. Przechowują wartości danych i udostępniają je za pomocą właściwości; zawierają i zarządzają danymi biznesowymi wykorzystywanymi przez aplikację; oraz zapewniają stateful programmatic access to the business data and related functionality. Podmioty gospodarcze weryfikują również dane zawarte w jednostce i zawierają logikę biznesową w celu zapewnienia spójności oraz wdrożenia reguł i zachowań biznesowych.
 0
Author: tahahanif,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-11-16 10:11:21