Skip to content

Hexagonal Architecture

Hexagonal Architecture (yoki Ports and Adapters) — bu Alistair Cockburn tomonidan taklif qilingan arxitektura bo’lib, uning maqsadi dasturiy ta’minotning yadrosini (biznes logikani) tashqi texnologiyalardan (database, web framework, external API) ajratishdir.

Bu arxitektura Clean Architecture bilan juda o’xshash, lekin u asosiy e’tiborni Portlar va Adapterlarga qaratadi.

Eng o’rtada biznes logika joylashgan. U tashqi dunyo haqida hech narsa bilmaydi.

Biznes logika bilan muloqot qilish uchun “kirish” va “chiqish” eshiklari. Bular odatda Interfacelardir.

  • Driving Ports (Inbound): Dasturga buyruq berish uchun (masalan, UserServiceInterface).
  • Driven Ports (Outbound): Dastur tashqi dunyodan nimanidir so’rashi uchun (masalan, UserRepositoryInterface).

Portlarni konkret texnologiyalar bilan bog’lovchi qism.

  • Driving Adapters: Web Controller, CLI, Test cases. (Ular UserServiceni chaqiradi).
  • Driven Adapters: PostgreSQL, Redis, MailService. (Ular UserRepositoryni implement qiladi).
graph TD
subgraph "Hexagon (Core)"
Logic[Business Logic]
PortIn((Driving Port))
PortOut((Driven Port))
end
Web[Web Controller] --> PortIn
PortIn --> Logic
Logic --> PortOut
PortOut -.-> DB[Database Adapter]