معماری پیازی شکلی از معماری نرمافزاریه که میگه وابستگیها باید به مرکز باشن، نه به بیرون.
مرکز معماری پیازی، هستهی دامنه (Domain Core) هست:
این شامل مدلهای دامنه (Entities) و منطق کسبوکار (Domain Services) است.
هر چیزی مثل پایگاه داده، UI، API، فایل سیستم و... باید به این مرکز وابسته باشن، نه برعکس.
لایهها، مثل لایههای یک پیاز، دور این هسته چیده شدهاند.
خیلی شبیه به معماری پیازیه! ایده اصلی اینه که:
وابستگیها همیشه باید به سمت داخل باشن.
مرکز شامل Use Caseها و Entities هست.
UI، دیتابیس و سرویسهای خارجی در بیرون قرار دارن و با لایههای داخلی ارتباط برقرار میکنن بدون اینکه بهشون وابستگی ایجاد کنن.
یک مدل کلاسیکتر:
Presentation Layer (لایه نمایش / UI)
Business Logic Layer (BLL) (لایه منطق کسبوکار)
Data Access Layer (DAL) (لایه دسترسی به داده)
این معماری سادهتره و بیشتر برای اپلیکیشنهای کوچیک یا سنتی استفاده شده.
DAnT یک مدل مرجع در معماری ESB هست که میگه در یک معماری Service Bus باید سه نوع لایه داشته باشیم:
D (Data Layer): مدیریت دادهها (مدل داده، انتقال داده، مپینگ و ...)
A (Application Layer): منطق برنامهها (اجرای سرویسها، فرآیندهای کاری، اورکستریشن)
T (Transport Layer): انتقال اطلاعات (Messaging, Protocols, Routing)
Data Layer (D) = لایهی نزدیک به منابع داده، ولی در پیاز بیرونیه (چون فقط داده رو جابجا میکنه).
Application Layer (A) = وسط پیاز قرار میگیره، چون منطق کسبوکار رو اجرا میکنه.
Transport Layer (T) = کاملاً بیرونی، فقط پیامرسانیه.
تو معماری پیازی یا تمیز، ما میخوایم:
هستهی دامنه (Domain Core) = Use Cases و Entities در مرکز باشن.
Application Services = در لایهی میانی باشن.
Adapters (مثل Transport و Data Access) = در بیرونترین لایه باشن.