Viacvrstvová architektúra: Prezentácia, BLL a DAL
Viacvrstvová softvérová architektúra je jedným z najpopulárnejších dizajnových vzorov, ktorý pomáha organizovať a spravovať zložité aplikácie. Tento článok sa zaoberá základnými princípmi týchto vrstiev, ich úlohami a tým, ako ich efektívne implementovať.
Čo je viacvrstvová architektúra?
Viacvrstvová architektúra rozdeľuje aplikáciu na jednotlivé vrstvy, čím zlepšuje čitateľnosť kódu, umožňuje opätovné použitie komponentov a znižuje závislosti medzi jednotlivými časťami systému. Každá vrstva má špecifickú úlohu:
- Prezentačná vrstva (Presentation Layer): Starostlivosť o interakciu s používateľom.
- Biznis logická vrstva (Business Logic Layer - BLL): Obsahuje pravidlá a logiku aplikácie.
- Vrstva prístupu k dátam (Data Access Layer - DAL): Zabezpečuje komunikáciu s databázou alebo iným zdrojom dát.
Zakladateľ viacvrstvovej architektúry
Koncept viacvrstvovej architektúry vychádza z vrstvového architektonického štýlu, ktorý bol definovaný už v 70. rokoch. Jedným z najvýznamnejších prispievateľov k tomuto konceptu bol Larry Constantine, ktorý spolu s kolegami položil základy modulárneho návrhu a hierarchického dizajnu softvéru.
Prezentácia, BLL a DAL: Ako to spolu funguje?
1. Prezentačná vrstva (Presentation Layer)
Prezentačná vrstva je prvým kontaktným bodom pre používateľa. Zahŕňa UI (User Interface) aplikácie a spracovanie vstupov od používateľa. Táto vrstva neobsahuje žiadnu logiku aplikácie, ale volá metódy z BLL, aby získala alebo spracovala potrebné dáta.
@inject ICustomerService CustomerService
Customer List
@foreach (var customer in Customers)
{
- @customer.Name
}
@code {
private List<CustomerViewModel> Customers;
protected override async Task OnInitializedAsync()
{
Customers = await CustomerService.GetAllCustomersAsync();
}
}
2. Biznis logická vrstva (Business Logic Layer - BLL)
BLL obsahuje hlavné pravidlá a logiku aplikácie. Táto vrstva funguje ako sprostredkovateľ medzi prezentačnou vrstvou a DAL. Zabezpečuje validáciu údajov, spracovanie požiadaviek a implementáciu obchodných pravidiel.
public class CustomerService : ICustomerService
{
private readonly ICustomerRepository _customerRepository;
public CustomerService(ICustomerRepository customerRepository)
{
_customerRepository = customerRepository;
}
public async Task<List<CustomerViewModel>> GetAllCustomersAsync()
{
var customers = await _customerRepository.GetAllAsync();
return customers.Select(c => new CustomerViewModel
{
Id = c.Id,
Name = c.Name
}).ToList();
}
}
3. Vrstva prístupu k dátam (Data Access Layer - DAL)
DAL je zodpovedná za komunikáciu s databázou alebo inými dátovými zdrojmi. Jej úlohou je spracovať dotazy a poskytnúť dáta vyšším vrstvám. Táto vrstva neobsahuje obchodnú logiku.
public class CustomerRepository : ICustomerRepository
{
private readonly DbContext _context;
public CustomerRepository(DbContext context)
{
_context = context;
}
public async Task<List<Customer>> GetAllAsync()
{
return await _context.Customers.ToListAsync();
}
}