TGViewer
C# Geeks (.NET) C# Geeks (.NET) @csharpgeeks · 550 subscribers
Post #398 171
🌐 چگونه با NET. یک کوتاه‌کنندهٔ لینک بسازیم؟

یک کوتاه‌کنندهٔ URL ابزاری ساده اما قدرتمند است که لینک‌های طولانی را به نسخه‌های کوتاه‌تر و قابل‌مدیریت‌تری تبدیل می‌کند. این ابزار به‌ویژه در پلتفرم‌هایی که محدودیت کاراکتر دارند یا برای بهبود تجربهٔ کاربری و کاهش شلوغی لینک‌ها بسیار مفید است. دو نمونهٔ محبوب از کوتاه‌کننده‌های لینک عبارت‌اند از Bitly و TinyURL. طراحی چنین سیستمی چالشی جالب است که مسائلی سرگرم‌کننده برای حل کردن دارد.
اما چطور می‌توان یک کوتاه‌کنندهٔ URL را با NET. ساخت؟

⚙️ عملکردهای اصلی در یک URL Shortener

یک کوتاه‌کنندهٔ لینک معمولاً دو قابلیت اصلی دارد:

1️⃣ تولید یک کد منحصربه‌فرد برای هر URL
2️⃣ هدایت (Redirect) کاربر به آدرس اصلی هنگام دسترسی به لینک کوتاه‌شده

🧩 طراحی سیستم کوتاه‌کنندهٔ لینک (URL Shortener System Design)

در سطح بالا، سیستم ما شامل دو endpoint است:

• یکی برای کوتاه کردن URLهای بلند
• دیگری برای Redirect کاربران بر اساس لینک کوتاه‌شده

در این مثال، لینک‌های کوتاه‌شده در یک پایگاه داده PostgreSQL ذخیره می‌شوند.
برای بهبود عملکرد خواندن (Read Performance)، می‌توان از کش توزیع‌شده‌ای مانند Redis نیز در سیستم استفاده کرد. ⚡️

🔢 تولید کد منحصربه‌فرد برای لینک‌ها

ابتدا باید اطمینان حاصل کنیم که سیستم قادر به تولید تعداد زیادی لینک کوتاه است.
برای این منظور، به هر URL بلند یک کد منحصربه‌فرد اختصاص می‌دهیم و از آن برای ساخت لینک کوتاه استفاده می‌کنیم.
طول این کد و مجموعهٔ کاراکترهایی که از آن استفاده می‌کنیم، تعیین‌کنندهٔ تعداد لینک‌های کوتاهی است که سیستم می‌تواند تولید کند.

🎲 استراتژی تولید کد تصادفی

ما از استراتژی تولید کد تصادفی (Random Code Generation) استفاده خواهیم کرد.
این روش پیاده‌سازی ساده‌ای دارد و نرخ برخورد (Collision) آن قابل‌قبول است.
البته در ازای این سادگی، افزایش اندک در زمان تأخیر (Latency) را به‌عنوان معاوضه خواهیم داشت.
بااین‌حال، در ادامه گزینه‌های دیگری را نیز برای بهینه‌سازی بررسی خواهیم کرد. 🔍
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 →