TGViewer
C# Geeks (.NET) C# Geeks (.NET) @csharpgeeks · 549 subscribers
Post #213 147
معماری فریادزن (Screaming Architecture) 📢


اگر به ساختار پوشه‌های سیستم خود نگاهی بیندازید، آیا می‌توانید بگویید که سیستم در مورد چیست؟ و یک سوال جالب‌تر. آیا یک توسعه‌دهنده جدید در تیم شما می‌تواند به راحتی بر اساس ساختار پوشه‌ها بفهمد که سیستم چه کاری انجام می‌دهد؟

معماری شما باید بیانگر مشکلاتی باشد که حل می‌کند. سازماندهی سیستم شما حول موارد استفاده (use cases)، به ساختاری منجر می‌شود که با دامنه کسب‌وکار (business domain) هماهنگ است. این رویکرد معماری فریادزن نامیده می‌شود.

معماری فریادزن اصطلاحی است که توسط رابرت مارتین (عمو باب) ابداع شده است. او استدلال می‌کند که ساختار یک سیستم نرم‌افزاری باید بیانگر این باشد که سیستم در مورد چیست. او تشابهی بین نگاه کردن به نقشه یک ساختمان ترسیم می‌کند، که در آن شما می‌توانید هدف ساختمان را بر اساس نقشه تشخیص دهید. 🗺

در این مقاله، می‌خواهم چند مثال عملی نشان دهم و در مورد مزایای معماری فریادزن بحث کنم.

یک رویکرد مبتنی بر مورد استفاده (Use Case Driven) 🎯

یک مورد استفاده، یک تعامل یا وظیفه خاص را نشان می‌دهد که کاربر می‌خواهد در سیستم شما به آن دست یابد. این، منطق بیزینس مورد نیاز برای انجام آن وظیفه را کپسوله می‌کند. یک مورد استفاده، توصیف سطح بالایی از هدف کاربر است. برای مثال، "رزرو یک آپارتمان" یا "خرید یک بلیت". این رویکرد بر روی چه چیزی رفتار سیستم تمرکز دارد، نه چگونه.

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

آیا آن‌ها فریاد می‌زنند: سیستم رزرو آپارتمان یا سیستم بلیت‌فروشی؟

یا فریاد می‌زنند ASP.NET Core؟

در اینجا یک مثال از ساختار پوشه‌ای که حول دغدغه‌های فنی سازماندهی شده، آمده است: 👎

📁 Api/
| 📁 Controllers
|
📁 Entities
| 📁 Repositories
|
📁 Services
| #️⃣ ApartmentService.cs
|
#️⃣ BookingService.cs
| 📁 Models

شما متوجه خواهید شد که انسجام (cohesion) با این ساختار پوشه پایین است.

معماری فریادزن چگونه کمک می‌کند؟
یک رویکرد مبتنی بر مورد استفاده، موارد استفاده سیستم را به عنوان مفهوم سطح بالا قرار می‌دهد. در داخل یک پوشه مورد استفاده، ممکن است مفاهیم فنی مورد نیاز برای پیاده‌سازی آن را پیدا کنیم. معماری برش عمودی نیز از دیدگاه مشابهی به این موضوع نزدیک می‌شود. 👍

📁 Api/
|
📁 Apartments
| 📁 ReserveApartment
|
📁 Bookings
| 📁 CancelBooking
|
📁 Payments
| 📁 Reviews
مزایای معماری فریادزن ✅

• انسجام بهبود یافته چون موارد استفاده مرتبط به هم نزدیک هستند.

• اتصال بالا (High coupling) برای یک مورد استفاده واحد و موارد استفاده مرتبط با آن.

• اتصال سست (Low coupling) بین موارد استفاده نامرتبط.

• ناوبری آسان‌تر در سراسر سولوشن.

Bounded Contextها و برش‌های عمودی 🧩

ما تکنیک‌های زیادی برای کشف ماژول‌های سطح بالا در سیستم خود داریم. برای مثال، می‌توانیم از event storming برای کاوش موارد استفاده سیستم استفاده کنیم.

ایده کلی در اینجا، فکر کردن در مورد انسجام حول عملکردهاست. Bounded contextها، برش‌های عمودی، و معماری فریادزن مفاهیم مکمل یکدیگر هستند.

در اینجا یک مثال از معماری فریادزن برای این سیستم آمده است. بیایید بگوییم ماژول Ticketing به صورت داخلی از معماری تمیز استفاده می‌کند. اما ما هنوز هم می‌توانیم سیستم را حول پوشه‌های ویژگی و موارد استفاده سازماندهی کنیم.

📁 Modules/
|
📁 Ticketing
| 📁 Application
|
📁 Carts
| 📁 AddItemToCart
|
📁 ClearCart
| 📁 Orders
|
📁 SubmitOrder
| 📁 Domain
|
📁 Customers
| 📁 Orders
|
📁 infrastructure
| 📁 Authentication
|
📁 Customers

نکات پایانی 📝

معماری فریادزن فقط یک عبارت جذاب نیست، بلکه رویکردی است که می‌تواند عمیقاً بر نحوه ساخت نرم‌افزار شما تأثیر بگذارد. با سازماندهی سیستم خود حول موارد استفاده، شما پایگاه کد خود را با دامنه اصلی کسب‌وکار هماهنگ می‌کنید.

به یاد داشته باشید، هدف ایجاد سیستمی است که هدف خود را از طریق ساختارش مخابره کند. یک رویکرد مبتنی بر مورد استفاده را در پیش بگیرید، دامنه‌های پیچیده را به bounded contextها تجزیه کنید. سیستمی بسازید که واقعاً در مورد مشکلاتی که حل می‌کند "فریاد" بزند.

🔖 هشتگ‌ها:
#SoftwareArchitecture #ScreamingArchitecture #DomainDrivenDesign #VerticalSliceArchitecture
More from @csharpgeeks
  1. Sep 22, 2026یه مدتی قراره از دنیای NET. فاصله بگیرم، چون وقتشه برم سربازی. راستش نمیدونم این مدت رو چج…
  2. Sep 20, 2026🔥 حالا مشکل اصلی: Alert Storm فرض کن Database از دسترس خارج شده. ۱۰۰ Pod داری. هر Pod می‌…
  3. Sep 20, 2026🚨 طراحی سیستم Monitoring و Alerting در یک سیستم بزرگ فرض کن ساعت ۳ صبح است. سیستم شما با…
  4. Sep 19, 2026#Engineering_Leadership تصمیم نگرفتن هم یک تصمیم است یه چیز عجیب توی تیم‌های مهندسی: گاهی…
  5. Sep 19, 2026☑ چک‌لیست آماده‌سازی تیم، فرایندها و زیرساخت برای توسعه با AI توجه: هیچ چک‌لیستی جهان‌شمول…
  6. Sep 19, 2026📌پایان یک انتظار طولانی: اعتبارسنجی ناهمگام (Async Validation) در NET 11.
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →