وب‌سرویس مجید

پروژه macwire

softwaremill/macwire

این یک کتابخانهٔ تزریق وابستگی (Dependency Injection) برای زبان اسکالا است که به صورت کامپایل-تایم و بدون هیچ هزینهٔ اجرا (zero-cost) کار می‌کند.

کاربرد:

این کتابخانه به تو اجازه می‌دهد تا وابستگی‌های کلاس‌ها و اجزای برنامه‌ات رو به صورت خودکار و بدون نیاز به فریم‌ورک‌های سنگین مثل Spring یا Guice، مدیریت کنی.

در چه شرایطی بهتره استفاده شود؟

وقتی می‌خوای یک برنامهٔ اسکالا با ساختار تمیز و تست‌پذیر داشته باشی، اما نمی‌خوای تحت تأثیر هزینه‌های اجرایی یا پیچیدگی فریم‌ورک‌های بزرگ قرار بگیری. MacWire عالی برای پروژه‌هایی با معماری Functional یا Modular است.

چند مثال از موارد استفاده:

ساخت خودکار اینستنس‌های سرویس، کنترلر و ریپازیتوری در یک وب‌اپلیکیشن

مدیریت وابستگی‌ها در میکروسرویس‌های اسکالا با Akka یا http4s

کاهش کد تکراری در بخش wiring (اتصال کامپوننت‌ها)

  • ##DependencyInjection
  • ##Scala
  • ##MacWire
  • ##CompileTime
  • ##ZeroCost
  • ##TypeSafe
  • ##Akka
  • ##http4s
  • ##FunctionalProgramming
  • ##ModularArchitecture