بک‌اند و معماری نرم‌افزارschedule1 دقیقه زمان مطالعه•visibility301 بازدید•۱۴۰۵/۰۸/۰۳

پیاده‌سازی Clean Architecture در پروژه‌های Node.js و Prisma

بررسی اصولی معماری پیازی و تمیز در بک‌اند؛ تفکیک لایه‌های Controller، Service، Domain و Repository برای حفظ قابلیت تست و انعطاف‌پذیری دیتابیس.

ادمین اسپاتی‌کد
ادمین اسپاتی‌کدverified
مدیر اسپاتی‌کد
اشتراک‌گذاری:
پیاده‌سازی Clean Architecture در پروژه‌های Node.js و Prisma

#چرا در پروژه‌های بزرگ نیاز به Clean Architecture داریم؟

وقتی یک پروژه بک‌اند از چند مدل ساده فراتر می‌رود، قرار دادن کدهای دیتابیس، قوانین تجاری (Business Logic) و پاسخ‌های HTTP درون یک کنترلر یا روت واحد، به فاجعه نگهداری (Maintenance Nightmare) ختم می‌شود.

معماری تمیز (Clean Architecture) پیشنهاد شده توسط رابرت مارتین (عمو باب) اصل مهمی را یادآور می‌شود: قوانین تجاری هسته اصلی نرم‌افزار هستند و نباید به هیچ فریم‌ورک یا دیتابیسی وابسته باشند.


##ساختار پیشنهادی لایه‌ها:

src/
├── domain/            # تعاریف موجودیت‌ها و قواعد خالص کسب‌وکار
│   └── user.entity.ts
├── repositories/      # لایه انتزاعی ارتباط با دیتابیس (Prisma)
│   └── user.repository.ts
├── services/          # جریان‌های کاری و هماهنگی عملیات
│   └── auth.service.ts
└── controllers/       # کنترلرهای HTTP یا Next.js Route Handlers
    └── auth.route.ts

##نمونه پیاده‌سازی Repository Pattern:

typescript
export interface IUserRepository {
  findById(id: string): Promise<User | null>;
  create(data: CreateUserDto): Promise<User>;
}

export class PrismaUserRepository implements IUserRepository {
  async findById(id: string) {
    return prisma.user.findUnique({ where: { id } });
  }

  async create(data: CreateUserDto) {
    return prisma.user.create({ data });
  }
}

با این الگو، نوشتن تست‌های واحد (Unit Tests) با ماک کردن ریپازیتوری بسیار آسان و سریع خواهد بود.

favoriteآیا این مقاله برای شما مفید بود؟ آن را با دوستان خود به اشتراک بگذارید!
اشتراک‌گذاری:
ادمین اسپاتی‌کد

ادمین اسپاتی‌کد

verified

مدیر فنی اسپاتی‌کد

مدیر ارشد فنی و معمار سیستم‌های ابری در آکادمی اسپاتی‌کد با بیش از ۱۰ سال سابقه در طراحی نرم‌افزارهای توزیع‌شده.