پرش به مطلب اصلی

Service Pattern

Service محل پیاده‌سازی business logic است، نه جایگزین controller یا repository.

مسئولیت Service

  • اجرای use case
  • enforce کردن business rule
  • هماهنگ کردن چند repository یا model
  • اجرای transaction در عملیات چندنوشتنی
  • پرتاب exception معنی‌دار domain

موارد ممنوع

  • دسترسی مستقیم به request() داخل service
  • ساخت response داخل service
  • وابستگی به session یا frontend
  • validation خام input
  • مخلوط کردن query پیچیده و orchestration سنگین در یک method

ورودی و خروجی

ورودی service باید explicit باشد:

  • scalarهای validate شده
  • DTO
  • model مشخص
  • value object

خروجی service باید domain result باشد، نه response HTTP.