TGViewer
C# Geeks (.NET) C# Geeks (.NET) @csharpgeeks · 550 subscribers
Post #544 182
3️⃣ Publish/Subscribe Pattern 📣📡(بخش سوم)

ءPublish/Subscribe Pattern یک الگوی پیام‌رسانی غیرهمزمان است که در آن Publisher‌ها پیام‌ها یا Eventها را به یک Message Broker یا Event Bus مرکزی ارسال می‌کنند، بدون اینکه بدانند چه کسی مصرف‌کننده آن‌هاست.

در مقابل، Subscriberها علاقه‌مندی خود را به انواع خاصی از پیام‌ها ثبت می‌کنند و به‌صورت خودکار هنگام انتشار آن‌ها را دریافت می‌کنند. این الگو منجر به یک Event-Driven Architecture با Coupling بسیار کم می‌شود.

🔍 تفاوت اصلی Publish/Subscribe با Point To Point Async Integration

ءPublish/Subscribe فرض می‌کند که چندین Subscriber می‌توانند برای یک نوع Event وجود داشته باشند

ءPoint To Point Async Integration فرض می‌کند که فقط یک Subscriber برای هر نوع پیام وجود دارد

🔧 How it works:

🔹️ءPublisherها پیام‌ها یا Eventها را به Topic یا Channel‌های Message Broker ارسال می‌کنند بدون اینکه از Subscriberها اطلاعی داشته باشند

🔸️ءMessage Broker پیام‌ها را دریافت، ذخیره و توزیع می‌کند

🔹️ءSubscriberها علاقه‌مندی خود را به Topic یا Event Type خاص ثبت می‌کنند

🔸️با انتشار یک پیام، Broker نسخه‌ای از آن را به تمام Subscriberهای فعال ارسال می‌کند

🔹️چندین Subscriber می‌توانند هم‌زمان و مستقل یک پیام یکسان را پردازش کنند

🔸️این الگو از ارتباط One-to-Many پشتیبانی می‌کند

🔹️اضافه یا حذف Subscriberها نیازی به تغییر در Publisher ندارد

🔸️امکان Message Filtering وجود دارد تا هر Subscriber فقط پیام‌های مرتبط را دریافت کند

✅ Benefits:

• ءDecoupling کامل بین Publisher و Subscriber

• ءScalability بالا با پردازش موازی پیام‌ها توسط چند Subscriber

• مناسب برای Event-Driven Architecture

• افزودن قابلیت‌های جدید فقط با اضافه کردن Subscriber جدید

• ءResilience بهتر؛ خطای یک Subscriber روی بقیه تأثیر ندارد

❌ Drawbacks:

• ءMessage Broker یک وابستگی مهم است و می‌تواند Single Point of Failure باشد

• ءDebugging و Tracing سخت‌تر به‌دلیل ماهیت غیرهمزمان

• چالش‌های Eventual Consistency

• نیاز به طراحی دقیق برای Ordering پیام‌ها و Duplicate Handling

🎯 Use cases:

🔹️سیستم‌های Event-Driven که چند سرویس باید به یک Event واکنش نشان دهند

🔸️ءReal-time Notification (چت، داشبوردها، مانیتورینگ)

🔹️ءMicroservices برای همگام‌سازی داده‌ها از طریق Integration Events

🔸️سناریوهایی که سرویس‌های جدید باید بدون تغییر Publisher به Eventها گوش دهند

🔹️ءWorkflowهایی که با یک Event چند مرحله در سرویس‌های مختلف فعال می‌شوند
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 →