TGViewer
C# Geeks (.NET) C# Geeks (.NET) @csharpgeeks · 550 subscribers
Post #565 320
🧩 5️⃣ CQRS (Command Query Responsibility Segregation)(بخش پنجم)

الگوی CQRS یک الگوی طراحی است که عملیات خواندن (Query) را از عملیات نوشتن (Command) جدا می‌کند 🔀.
در این الگو، برای هرکدام مدل جداگانه‌ای استفاده می‌شود:

📝 مدل نوشتن (Write Model): مسئول منطق کسب‌وکار و تغییر داده‌ها

📊 مدل خواندن (Read Model): بهینه‌شده برای خواندن، جستجو و گزارش‌گیری

⚙️ نحوه‌ی کار (How it works)

✏️ ءCommand‌ها نمایانگر عملیاتی هستند که وضعیت سیستم را تغییر می‌دهند و از طریق مدل نوشتن پردازش می‌شوند

🧠 مدل نوشتن قوانین کسب‌وکار را اعمال می‌کند، داده‌ها را اعتبارسنجی می‌کند و تغییرات را در پایگاه‌داده ذخیره می‌کند

🔍 ءQuery‌ها داده را از طریق مدل خواندن بازیابی می‌کنند، بدون اینکه تغییری در وضعیت سیستم ایجاد شود

🗄 مدل خواندن معمولاً یک دیتابیس یا ساختار داده‌ی جداگانه است که برای عملکرد بهتر در Query بهینه شده

🔄 تغییراتی که در مدل نوشتن ایجاد می‌شوند، معمولاً به‌صورت asynchronous و اغلب از طریق event‌ها به مدل خواندن منتقل می‌شوند

✅ مزایا (Benefits)

🚀 امکان بهینه‌سازی مستقل مدل‌های خواندن و نوشتن بر اساس نیازهای عملکردی هرکدام

📈 قابلیت مقیاس‌پذیری جداگانه‌ی عملیات خواندن و نوشتن، متناسب با الگوی مصرف واقعی

🧩 ساده‌تر شدن دامنه‌های پیچیده با جدا کردن منطق اعتبارسنجی Command از منطق Query

⚠️ معایب (Drawbacks)

⏳ ایجاد eventual consistency بین مدل نوشتن و مدل خواندن

🏗 افزایش پیچیدگی سیستم به دلیل وجود چندین مدل و مکانیزم همگام‌سازی

🔧 نیاز به زیرساخت اضافه برای همگام نگه داشتن مدل‌های خواندن و نوشتن

🎯 موارد استفاده (Use cases)

🖥 اپلیکیشن‌هایی با بار خواندن و نوشتن بسیار متفاوت که نیاز به مقیاس‌پذیری مستقل دارند

🧠 دامنه‌های پیچیده که منطق کسب‌وکار در عملیات نوشتن تفاوت زیادی با نیازهای گزارش‌گیری دارد

📊 سیستم‌هایی با نسبت Read به Write بالا که عملکرد Query در آن‌ها حیاتی است
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 →