<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en-GB">
	<id>https://wiki.mohamadkaravi.ir/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Mkaravi</id>
	<title>Mohamad Wiki - User contributions [en-gb]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.mohamadkaravi.ir/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Mkaravi"/>
	<link rel="alternate" type="text/html" href="https://wiki.mohamadkaravi.ir/index.php?title=Special:Contributions/Mkaravi"/>
	<updated>2026-10-26T21:20:06Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.46.0</generator>
	<entry>
		<id>https://wiki.mohamadkaravi.ir/index.php?title=%D8%A7%DB%8C%D9%86%D8%AA%D8%B1%D9%86%D8%AA_%DA%86%DB%8C%D8%B3%D8%AA_%D9%88_%DA%86%DA%AF%D9%88%D9%86%D9%87_%DA%A9%D8%A7%D8%B1_%D9%85%DB%8C%DA%A9%D9%86%D8%AF%D8%9F&amp;diff=6</id>
		<title>اینترنت چیست و چگونه کار میکند؟</title>
		<link rel="alternate" type="text/html" href="https://wiki.mohamadkaravi.ir/index.php?title=%D8%A7%DB%8C%D9%86%D8%AA%D8%B1%D9%86%D8%AA_%DA%86%DB%8C%D8%B3%D8%AA_%D9%88_%DA%86%DA%AF%D9%88%D9%86%D9%87_%DA%A9%D8%A7%D8%B1_%D9%85%DB%8C%DA%A9%D9%86%D8%AF%D8%9F&amp;diff=6"/>
		<updated>2026-09-10T18:22:17Z</updated>

		<summary type="html">&lt;p&gt;Mkaravi: اینترنت چیست و چگونه کار میکند&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div dir=&amp;quot;rtl&amp;quot; style=&amp;quot;text-align: right; line-height: 1.8;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
= اینترنت چیست و چگونه کار می‌کند؟ (راهنمای جامع معماری شبکه) =&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;اینترنت&#039;&#039;&#039; (The Internet) شبکهٔ شبکه‌هاست؛ سامانه‌ای جهانی، توزیع‌شده و مستقل از میلیاردها دستگاه محاسباتی که از طریق مجموعه‌ای از پروتکل‌های باز و استاندارد بین‌المللی ارتباط برقرار می‌کنند. هیچ فرد، شرکت، دولت یا نهاد مرکزی واحدی مالک اینترنت نیست یا آن را به تنهایی کنترل نمی‌کند. قدرت اصلی اینترنت در معماری نامتمرکز آن و استفاده از زبان‌های استاندارد مشترکی به نام &#039;&#039;&#039;پروتکل (Protocol)&#039;&#039;&#039; نهفته است.&lt;br /&gt;
&lt;br /&gt;
بین اینترنت و وب تفاوت اساسی وجود دارد:&lt;br /&gt;
* &#039;&#039;&#039;اینترنت (Internet):&#039;&#039;&#039; زیرساخت فیزیکی، سخت‌افزاری و پروتکل‌های لایه‌پایین ارتباطی بین دستگاه‌ها.&lt;br /&gt;
* &#039;&#039;&#039;وب جهان‌گستر (World Wide Web):&#039;&#039;&#039; سامانه‌ای از صفحات چندرسانه‌ای و اسناد متنی به‌هم‌پیوسته که به عنوان یکی از چندین سرویس روی بستر اینترنت فعالیت می‌کند (مشابه ایمیل یا انتقال فایل).&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== ۱. لایهٔ فیزیکی و فیزیک انتقال داده (Wires, Cables &amp;amp; Wi-Fi) ==&lt;br /&gt;
&lt;br /&gt;
اساسی‌ترین واحد اطلاعات در دنیای دیجیتال، &#039;&#039;&#039;بیت (Bit)&#039;&#039;&#039; است که نشان‌دهندهٔ وضعیت دوگانه (صفر یا یک / روشن یا خاموش) است. تمام متن‌ها، عکس‌ها، ویدیوها و دستورات به رشته‌هایی از بیت‌ها تبدیل شده و سپس از طریق رسانه‌های فیزیکی هدایت می‌شوند.&lt;br /&gt;
&lt;br /&gt;
=== روش‌های انتقال فیزیکی بیت‌ها ===&lt;br /&gt;
&lt;br /&gt;
# &#039;&#039;&#039;الکتریسیته (کابل‌های اترنت مسی و کواکسیال):&#039;&#039;&#039;&lt;br /&gt;
#* &#039;&#039;&#039;مکانیسم:&#039;&#039;&#039; با تغییر سطح ولتاژ الکتریکی ارسال می‌شود (مثلاً ولتاژ بالا معادل عدد ۱ و ولتاژ پایین معادل عدد ۰).&lt;br /&gt;
#* &#039;&#039;&#039;مزایا:&#039;&#039;&#039; هزینه پایین، زیرساخت در دسترس و سیم‌کشی آسان درون ساختمان‌ها و شبکه‌های محلی (LAN).&lt;br /&gt;
#* &#039;&#039;&#039;چالش‌ها:&#039;&#039;&#039; دچار افت شدید سیگنال بر اثر مقاومت در مسافت‌های طولانی شده و نسبت به امواج الکترومغناطیسی محیط آسیب‌پذیر است.&lt;br /&gt;
# &#039;&#039;&#039;نور (فیبرهای نوری - Fiber Optic):&#039;&#039;&#039;&lt;br /&gt;
#* &#039;&#039;&#039;مکانیسم:&#039;&#039;&#039; بیت‌ها به پالس‌های نوری فوق‌سریع درون رشته‌های شیشه‌ای بسیار باریک تبدیل می‌شوند و به لطف پدیده «بازتاب کلی داخلی نور» (Total Internal Reflection) درون هسته کابل به جلو حرکت می‌کنند.&lt;br /&gt;
#* &#039;&#039;&#039;مزایا:&#039;&#039;&#039; بالاترین پهنای باند ممکن در فواصل قاره‌ای بدون افت چشمگیر کیفیت؛ زیرساخت اصلی کف اقیانوس‌ها که قاره‌ها را به یکدیگر وصل می‌کند بر پایه فیبر نوری است.&lt;br /&gt;
#* &#039;&#039;&#039;چالش‌ها:&#039;&#039;&#039; فرآیند تولید حساس، آسیب‌پذیری فیزیکی در صورت خم شدن بیش‌ازحد و هزینه‌های بالای جوش فیبر (Splicing).&lt;br /&gt;
# &#039;&#039;&#039;امواج رادیویی (وای‌فای و شبکه‌های تلفن همراه):&#039;&#039;&#039;&lt;br /&gt;
#* &#039;&#039;&#039;مکانیسم:&#039;&#039;&#039; بیت‌ها روی امواج رادیویی با فرکانس مشخص سوار شده و به‌صورت بی‌سیم تابش می‌شوند. در سمت دریافت‌کننده، کارت شبکه مجدداً امواج را به صفر و یک تبدیل می‌کند.&lt;br /&gt;
#* &#039;&#039;&#039;مزایا:&#039;&#039;&#039; تحرک‌پذیری بالا (Mobility) و دسترسی آسان در خانه‌ها، دفاتر و دستگاه‌های قابل حمل.&lt;br /&gt;
#* &#039;&#039;&#039;چالش‌ها:&#039;&#039;&#039; محدوده پوشش جغرافیایی کوتاه، افت سیگنال در اثر عبور از دیوارها، موانع فیزیکی و شرایط جوی.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin: 1em auto; text-align: center;&amp;quot;&lt;br /&gt;
! نوع رسانه !! مکانیزم انتقال !! مسافت پوشش !! پهنای باند و سرعت&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;کابل مسی (LAN)&#039;&#039;&#039; || پالس ولتاژ الکتریکی || کوتاه (کمتر از ۱۰۰ متر) || متوسط تا بالا&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;فیبر نوری&#039;&#039;&#039; || پالس‌های نور لیزری || بسیار طولانی (هزاران کیلومتر) || فوق‌العاده بالا&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;امواج رادیویی (Wi-Fi)&#039;&#039;&#039; || فرکانس‌های رادیویی || کوتاه تا متوسط (چند ده متر) || متوسط (بسته به فاصله)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== ۲. شناسایی و مسیریابی دستگاه‌ها: پروتکل IP و سامانه DNS ==&lt;br /&gt;
&lt;br /&gt;
در شبکه‌ای با میلیاردها گره، هر فرستنده باید دقیقاً بداند پیام خود را به چه مقصدی ارسال می‌کند.&lt;br /&gt;
&lt;br /&gt;
=== پروتکل اینترنت (Internet Protocol - IP) ===&lt;br /&gt;
آدرس IP یک شناسهٔ یکتای عددی برای هر دستگاه متصل به شبکه است.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;استاندارد IPv4:&#039;&#039;&#039;&lt;br /&gt;
** ساختار ۳۲ بیتی متشکل از چهار عدد بین ۰ تا ۲۵۵ که با نقطه از هم جدا می‌شوند:&lt;br /&gt;
** &amp;lt;div dir=&amp;quot;ltr&amp;quot; style=&amp;quot;text-align: left; display: inline-block;&amp;quot;&amp;gt;&amp;lt;code&amp;gt;192.168.1.1&amp;lt;/code&amp;gt; یا &amp;lt;code&amp;gt;172.217.16.206&amp;lt;/code&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
** این فرمت حدود ۴٫۳ میلیارد آدرس ارائه می‌دهد که با رشد اینترنت و دستگاه‌های IoT به اتمام رسیده است.&lt;br /&gt;
* &#039;&#039;&#039;استاندارد IPv6:&#039;&#039;&#039;&lt;br /&gt;
** ساختار ۱۲۸ بیتی با نمادهای هگزادسیمال که توسط دونقطه تفکیک می‌شوند:&lt;br /&gt;
** &amp;lt;div dir=&amp;quot;ltr&amp;quot; style=&amp;quot;text-align: left; display: inline-block;&amp;quot;&amp;gt;&amp;lt;code&amp;gt;2001:0db8:85a3:0000:0000:8a2e:0370:7334&amp;lt;/code&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
** این فضا توانایی تولید &amp;lt;div dir=&amp;quot;ltr&amp;quot; style=&amp;quot;text-align: left; display: inline-block;&amp;quot;&amp;gt;&amp;lt;code&amp;gt;3.4 × 10&amp;lt;sup&amp;gt;38&amp;lt;/sup&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;/div&amp;gt; آدرس یکتا را داراست.&lt;br /&gt;
&lt;br /&gt;
=== سامانه نام دامنه (Domain Name System - DNS) ===&lt;br /&gt;
حفظ کردن آدرس‌های عددی برای انسان ناممکن است. سامانهٔ DNS نقش دفترچه تلفن اینترنت را ایفا کرده و نام‌های انسان‌خوان (مانند &amp;lt;div dir=&amp;quot;ltr&amp;quot; style=&amp;quot;text-align: left; display: inline-block;&amp;quot;&amp;gt;&amp;lt;code&amp;gt;wikipedia.org&amp;lt;/code&amp;gt;&amp;lt;/div&amp;gt;) را به آدرس‌های عددی ماشین‌خوان (مانند &amp;lt;div dir=&amp;quot;ltr&amp;quot; style=&amp;quot;text-align: left; display: inline-block;&amp;quot;&amp;gt;&amp;lt;code&amp;gt;208.80.154.224&amp;lt;/code&amp;gt;&amp;lt;/div&amp;gt;) تبدیل می‌کند.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;مراحل سلسله‌مراتبی حل نام دامنه (DNS Resolution):&#039;&#039;&#039;&lt;br /&gt;
# &#039;&#039;&#039;بررسی حافظه نهان (Local Cache):&#039;&#039;&#039; مرورگر یا سیستم‌عامل ابتدا کش محلی خود را بررسی می‌کند.&lt;br /&gt;
# &#039;&#039;&#039;سرور حل‌کننده محلی (Recursive DNS Resolver):&#039;&#039;&#039; از سوی ISP یا سرویس‌دهندگانی مانند Cloudflare (1.1.1.1) یا Google (8.8.8.8) استعلام می‌شود.&lt;br /&gt;
# &#039;&#039;&#039;سرور ریشه (Root Server):&#039;&#039;&#039; پایگاه‌های اصلی که درخواست را به سرورهای پسوند دامنه هدایت می‌کنند.&lt;br /&gt;
# &#039;&#039;&#039;سرور TLD (Top-Level Domain):&#039;&#039;&#039; مدیریت پسوندهایی نظیر &amp;lt;code&amp;gt;.com&amp;lt;/code&amp;gt;، &amp;lt;code&amp;gt;.org&amp;lt;/code&amp;gt; یا &amp;lt;code&amp;gt;.ir&amp;lt;/code&amp;gt;.&lt;br /&gt;
# &#039;&#039;&#039;سرور نام معتبر (Authoritative Name Server):&#039;&#039;&#039; نگه‌دارنده رکورد نهایی که آدرس IP دقیق دامنه را برمی‌گرداند.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== ۳. بسته‌ها، مسیریابی و قابلیت اطمینان (Packets, Routing &amp;amp; TCP) ==&lt;br /&gt;
&lt;br /&gt;
اطلاعات هرگز به‌صورت یک جریان متصل، یکپارچه و سنگین در اینترنت منتقل نمی‌شوند. اگر فایل حجیمی در مسیر دچار قطعی می‌شد، کل فرآیند باید از ابتدا تکرار می‌شد.&lt;br /&gt;
&lt;br /&gt;
=== ۱. بسته‌بندی داده‌ها (Packet Switching) ===&lt;br /&gt;
قبل از ارسال، داده‌ها به قطعات کوچکی به نام &#039;&#039;&#039;بسته (Packet)&#039;&#039;&#039; تقسیم می‌شوند. هر بسته شامل دو بخش است:&lt;br /&gt;
* &#039;&#039;&#039;سربار (Header):&#039;&#039;&#039; شامل آدرس IP فرستنده، آدرس IP مقصد، اندازه بسته، شماره ردیف و پروتکل.&lt;br /&gt;
* &#039;&#039;&#039;بدنه (Payload):&#039;&#039;&#039; خودِ تکه دیتای اصلی (مانند بخشی از کد یک تصویر یا پیام).&lt;br /&gt;
&lt;br /&gt;
=== ۲. مسیریابی و روترها (Routers) ===&lt;br /&gt;
روترها کامپیوترهای تخصصی مدیریت ترافیک هستند. &lt;br /&gt;
* هیچ بسته الزاماً مسیری یکسان با بسته دیگر را طی نمی‌کند.&lt;br /&gt;
* اگر یک کابل در اقیانوس پاره شود یا روتری دچار بار ترافیکی شدید گردد، روترها مسیر جدیدی از بین گره‌های دیگر به صورت پویا و خودکار انتخاب می‌کنند (Fault Tolerance).&lt;br /&gt;
&lt;br /&gt;
=== ۳. پروتکل تضمین تحویل داده (TCP vs. UDP) ===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;پروتکل TCP (Transmission Control Protocol):&#039;&#039;&#039;&lt;br /&gt;
** تضمین‌کنندهٔ ترتیب و رسیدن صددرصدی بسته‌ها به مقصد.&lt;br /&gt;
** قبل از انتقال با استفاده از مکانیسم دست‌تکانی سه مرحله‌ای (&amp;lt;div dir=&amp;quot;ltr&amp;quot; style=&amp;quot;text-align: left; display: inline-block;&amp;quot;&amp;gt;&amp;lt;code&amp;gt;3-Way Handshake: SYN -&amp;gt; SYN-ACK -&amp;gt; ACK&amp;lt;/code&amp;gt;&amp;lt;/div&amp;gt;) اتصال پایدار برقرار می‌کند.&lt;br /&gt;
** اگر بسته‌ای در میان راه گم شود، TCP متوجه غیبت آن شده و از فرستنده درخواست ارسال مجدد می‌کند. پس از دریافت کامل، بسته‌ها بر اساس شماره ترتیب بازچینی می‌شوند.&lt;br /&gt;
* &#039;&#039;&#039;پروتکل UDP (User Datagram Protocol):&#039;&#039;&#039;&lt;br /&gt;
** پروتکلی سریع و بدون تضمین رسیدن و بدون ایجاد اتصال اولیه. بسته‌ها ارسال می‌شوند بدون این که بررسی شود آیا رسیده‌اند یا خیر.&lt;br /&gt;
** &#039;&#039;کاربرد:&#039;&#039; بازی‌های آنلاین (Online Gaming)، استریم‌های زنده ویدیویی و تماس‌های اینترنتی (VoIP) که سرعت نسبت به از دست رفتن چند فریم اولویت دارد.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== ۴. وب و لایهٔ کاربرد: HTTP و HTML ==&lt;br /&gt;
&lt;br /&gt;
در بالاترین لایه، استانداردهایی برای ارتباط نرم‌افزاری کاربر با سرویس‌ها وجود دارد:&lt;br /&gt;
&lt;br /&gt;
=== پروتکل انتقال ابرمتن (HTTP / HTTPS) ===&lt;br /&gt;
زبان ارتباطی مرورگر (کلاینت) با سرویس‌دهنده وب (وب‌سرور):&lt;br /&gt;
* &#039;&#039;&#039;درخواست‌های کلاینت (HTTP Requests):&#039;&#039;&#039;&lt;br /&gt;
** متد &amp;lt;div dir=&amp;quot;ltr&amp;quot; style=&amp;quot;text-align: left; display: inline-block;&amp;quot;&amp;gt;&amp;lt;code&amp;gt;GET&amp;lt;/code&amp;gt;&amp;lt;/div&amp;gt;: برای مطالبه و دریافت داده‌ها از سرور.&lt;br /&gt;
** متد &amp;lt;div dir=&amp;quot;ltr&amp;quot; style=&amp;quot;text-align: left; display: inline-block;&amp;quot;&amp;gt;&amp;lt;code&amp;gt;POST&amp;lt;/code&amp;gt;&amp;lt;/div&amp;gt;: برای ارسال داده‌ها (مانند رمز عبور یا فایل) به سرور.&lt;br /&gt;
* &#039;&#039;&#039;پاسخ‌های سرور (HTTP Status Codes):&#039;&#039;&#039;&lt;br /&gt;
** &amp;lt;div dir=&amp;quot;ltr&amp;quot; style=&amp;quot;text-align: left; display: inline-block;&amp;quot;&amp;gt;&amp;lt;code&amp;gt;200 OK&amp;lt;/code&amp;gt;&amp;lt;/div&amp;gt;: درخواست با موفقیت پردازش شد.&lt;br /&gt;
** &amp;lt;div dir=&amp;quot;ltr&amp;quot; style=&amp;quot;text-align: left; display: inline-block;&amp;quot;&amp;gt;&amp;lt;code&amp;gt;404 Not Found&amp;lt;/code&amp;gt;&amp;lt;/div&amp;gt;: منبع درخواستی روی سرور وجود ندارد.&lt;br /&gt;
** &amp;lt;div dir=&amp;quot;ltr&amp;quot; style=&amp;quot;text-align: left; display: inline-block;&amp;quot;&amp;gt;&amp;lt;code&amp;gt;500 Internal Server Error&amp;lt;/code&amp;gt;&amp;lt;/div&amp;gt;: سرور دچار خطای داخلی شده است.&lt;br /&gt;
&lt;br /&gt;
=== زبان نشانه‌گذاری HTML ===&lt;br /&gt;
کدهای متنی ساختاریافته با تگ‌ها که اسکلت صفحات وب را می‌سازند. مرورگر متن‌های دریافت شده را به همراه کدهای CSS (استایل ظاهری) و JavaScript (منطق عملکردی) به یک صفحه بصری قابل درک رندر می‌کند.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== ۵. امنیت، رمزنگاری و کلیدهای نامتقارن (Cryptography &amp;amp; SSL/TLS) ==&lt;br /&gt;
&lt;br /&gt;
به‌صورت خام، تمام بسته‌های اینترنتی مانند کارت‌پستال عمومی هستند و هر روتری در مسیر می‌تواند محتوای آنها را بخواند. برای حفظ محرمانگی از رمزنگاری استفاده می‌شود.&lt;br /&gt;
&lt;br /&gt;
=== انواع روش‌های رمزنگاری ===&lt;br /&gt;
&lt;br /&gt;
# &#039;&#039;&#039;رمزنگاری متقارن (Symmetric Encryption):&#039;&#039;&#039; فرستنده و گیرنده از یک کلید مخفی یکسان برای رمزگذاری و رمزگشایی استفاده می‌کنند. اگر کلید حین تبادل لو برود، امنیت کاملاً از دست می‌رود.&lt;br /&gt;
# &#039;&#039;&#039;رمزنگاری نامتقارن / کلید عمومی (Public Key Cryptography):&#039;&#039;&#039;&lt;br /&gt;
#* &#039;&#039;&#039;کلید عمومی (Public Key):&#039;&#039;&#039; در دسترس همه قرار دارد و هر کس می‌تواند با آن پیامی را قفل و رمزگذاری کند.&lt;br /&gt;
#* &#039;&#039;&#039;کلید خصوصی (Private Key):&#039;&#039;&#039; فقط و فقط در اختیار مالک سرور است و تنها این کلید می‌تواند داده‌ای را که با کلید عمومی قفل شده باز کند.&lt;br /&gt;
&lt;br /&gt;
=== پروتکل SSL / TLS و HTTPS ===&lt;br /&gt;
پروتکل &amp;lt;div dir=&amp;quot;ltr&amp;quot; style=&amp;quot;text-align: left; display: inline-block;&amp;quot;&amp;gt;&amp;lt;code&amp;gt;HTTPS&amp;lt;/code&amp;gt;&amp;lt;/div&amp;gt; نسخه‌ای امن از HTTP است که از لایهٔ امنیتی TLS بهره می‌برد:&lt;br /&gt;
# کلاینت به سرور متصل می‌شود و گواهی دیجیتال (SSL Certificate) معتبر سرور را درخواست می‌کند.&lt;br /&gt;
# هویت سرور توسط مراجع صدور گواهی (CA) تایید می‌شود.&lt;br /&gt;
# از طریق رمزنگاری نامتقارن، یک کلید متقارن موقت امن برای آن نشست تبادل می‌شود.&lt;br /&gt;
# تمام تبادلات داده‌ای بعدی با آن کلید موقت، کاملاً غیرقابل خواندن برای شنودگران (Sniffers) می‌شود.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== ۶. امنیت سایبری و تهدیدات متداول (Cybersecurity &amp;amp; Threats) ==&lt;br /&gt;
&lt;br /&gt;
امنیت سایبری به فرآیندها و ابزارهایی گفته می‌شود که از آسیب، دسترسی غیرمجاز یا توقف خدمات جلوگیری می‌کنند.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;margin: 1em auto; width: 95%;&amp;quot;&lt;br /&gt;
! نوع تهدید !! نحوه عملکرد !! پیامد و خطرات !! تدابیر دفاعی&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;بدافزار و ویروس‌ها (Malware)&#039;&#039;&#039; || فایل‌ها یا اسکریپت‌های مخربی که مخفیانه اجرا می‌شوند. || سرقت اطلاعات محلی، تخریب سیستم‌عامل و جاسوسی. || استفاده از آنتی‌ویروس، اجرای نرم‌افزارها در محیط ایزوله و به‌روزرسانی سیستم.&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;فیشینگ (Phishing)&#039;&#039;&#039; || فریب کاربر از طریق ایمیل‌ها و صفحات وب‌سایت کاملاً مشابه نسخه‌های اصلی. || سرقت اطلاعات ورود، حساب‌های بانکی و جعل هویت. || بررسی دقیق URL، استفاده از مدیر رمز عبور و احراز هویت دومرحله‌ای (2FA).&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;حملات منع سرویس توزیع‌شده (DDoS)&#039;&#039;&#039; || ارتشی از دستگاه‌های آلوده (بات‌نت‌ها) ترافیک عظیمی را همزمان به سمت یک سرور سرازیر می‌کنند. || پر شدن پهنای باند سرور و خارج شدن سایت از دسترس عموم. || شبکه توزیع محتوا (CDN)، فایروال‌های لایه وب (WAF) و فیلترینگ ترافیک.&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;حمله مرد میانی (MitM)&#039;&#039;&#039; || هکر در مسیر ارتباطی کلاینت و سرور قرار گرفته و تبادل داده را شنود یا دستکاری می‌کند. || سرقت کوکی‌های ورود، رمزها و اطلاعات هویتی. || استفاده اجباری از پروتکل HTTPS و خودداری از شبکه‌های عمومی ناامن Wi-Fi.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== جمع‌بندی لایه‌های ارتباطی ==&lt;br /&gt;
&lt;br /&gt;
مدل کلی اینترنت را می‌توان به ۴ لایهٔ کاربردی خلاصه کرد:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div dir=&amp;quot;ltr&amp;quot; style=&amp;quot;text-align: left; background: #f8f9fa; border: 1px solid #a2a9b1; padding: 12px; margin: 1em 0; border-radius: 4px; font-family: monospace;&amp;quot;&amp;gt;&lt;br /&gt;
[ 4. Application Layer ] ---&amp;gt; HTTP, HTTPS, DNS, FTP, SMTP&amp;lt;br /&amp;gt;&lt;br /&gt;
[ 3. Transport Layer   ] ---&amp;gt; TCP (Reliable), UDP (Fast)&amp;lt;br /&amp;gt;&lt;br /&gt;
[ 2. Internet Layer    ] ---&amp;gt; IP (Addressing &amp;amp; Routing - IPv4 / IPv6)&amp;lt;br /&amp;gt;&lt;br /&gt;
[ 1. Network Interface ] ---&amp;gt; Ethernet, Wi-Fi, Fiber Optic, Radio Waves&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== پیوندهای مرتبط و منابع ==&lt;br /&gt;
* [https://roadmap.sh/guides/what-is-internet راهنمای اصلی How does the internet work در Roadmap.sh]&lt;br /&gt;
* [https://code.org/curriculum/unplugged مجموعه مستندهای ویدیویی آموزش اینترنت از Code.org]&lt;br /&gt;
* [https://howdns.works آموزش تصویری تعاملی سامانه نام دامنه (How DNS Works)]&lt;br /&gt;
&lt;br /&gt;
[[رده:اینترنت]]&lt;br /&gt;
[[رده:شبکه‌های رایانه‌ای]]&lt;br /&gt;
[[رده:پروتکل‌های اینترنت]]&lt;br /&gt;
[[رده:امنیت شبکه]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>Mkaravi</name></author>
	</entry>
	<entry>
		<id>https://wiki.mohamadkaravi.ir/index.php?title=Modular-Monolith-with-DDD&amp;diff=5</id>
		<title>Modular-Monolith-with-DDD</title>
		<link rel="alternate" type="text/html" href="https://wiki.mohamadkaravi.ir/index.php?title=Modular-Monolith-with-DDD&amp;diff=5"/>
		<updated>2026-09-02T08:50:47Z</updated>

		<summary type="html">&lt;p&gt;Mkaravi: Modular Monolith with DDD&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;================================================================================&lt;br /&gt;
MODULAR MONOLITH WITH DOMAIN-DRIVEN DESIGN (DDD)&lt;br /&gt;
Comprehensive Repository &amp;amp; Architecture Review (kgrzybek/modular-monolith-with-ddd)&lt;br /&gt;
================================================================================&lt;br /&gt;
&lt;br /&gt;
[ENGLISH SECTION - LTR]&lt;br /&gt;
================================================================================&lt;br /&gt;
&lt;br /&gt;
1. INTRODUCTION &amp;amp; PURPOSE OF THE REPOSITORY&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
The repository &amp;quot;kgrzybek/modular-monolith-with-ddd&amp;quot; by Kamil Grzybek is widely &lt;br /&gt;
regarded as one of the definitive architectural references in the software engineering &lt;br /&gt;
community. It bridges the gap between traditional monolithic systems and distributed &lt;br /&gt;
microservice architectures.&lt;br /&gt;
&lt;br /&gt;
Key Objectives:&lt;br /&gt;
* Demonstrating how to design and build a maintainable, extensible enterprise .NET &lt;br /&gt;
  application using a Modular Monolith architecture.&lt;br /&gt;
* Realizing the benefits of microservices (clear bounded contexts, domain autonomy, &lt;br /&gt;
  independent data schemas, team boundaries) without taking on operational &lt;br /&gt;
  complexities (network latency, distributed transaction coordination, eventual consistency &lt;br /&gt;
  headaches, and heavy CI/CD infrastructure).&lt;br /&gt;
* Providing a production-ready, non-trivial application reference rather than a basic &lt;br /&gt;
  proof of concept (PoC).&lt;br /&gt;
* Implementing Domain-Driven Design (DDD) tactical patterns and Testable Design principles.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
2. DOMAIN DESCRIPTION: MEETUP PLATFORM&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
The application models a comprehensive real-world domain: an event/meeting management &lt;br /&gt;
platform similar to Meetup.com.&lt;br /&gt;
&lt;br /&gt;
Domain Concepts &amp;amp; Business Rules:&lt;br /&gt;
* Meeting Groups: Members can propose new meeting groups. Each group proposal requires &lt;br /&gt;
  administrative review and approval before becoming active.&lt;br /&gt;
* Subscriptions: Each Meeting Group must have an Organizer with an active subscription. &lt;br /&gt;
  A single subscription covers up to 3 Meeting Groups.&lt;br /&gt;
* Meetings: Only an Organizer of an active Meeting Group can create meetings. A meeting &lt;br /&gt;
  has attendees, non-attendees (members explicitly declining), and a waitlist.&lt;br /&gt;
* Quotas &amp;amp; Limits: Meetings can enforce attendee limits. When the limit is reached, new &lt;br /&gt;
  sign-ups automatically queue into the waitlist.&lt;br /&gt;
* Roles: Attendees can hold roles (Attendee or Host). Every meeting requires at least &lt;br /&gt;
  one Host who has privileges to modify meeting details and attendee rosters.&lt;br /&gt;
* Event Fees &amp;amp; Guests: Organizers can configure mandatory event fees. Attendees can invite &lt;br /&gt;
  guests if allowed, paying the required fees on behalf of their guests.&lt;br /&gt;
* Comments: Members can write comments, reply to existing comments, and like comments, &lt;br /&gt;
  governed by meeting configuration rules.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
3. ARCHITECTURAL BLUEPRINT &amp;amp; C4 MODEL STRUCTURE&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
The repository employs Simon Brown&#039;s C4 model (System Context, Container, Component, &lt;br /&gt;
and Code) documented via PlantUML (diagrams-as-code).&lt;br /&gt;
&lt;br /&gt;
The architecture consists of the following distinct modules / bounded contexts:&lt;br /&gt;
&lt;br /&gt;
1. API (Host Container):&lt;br /&gt;
   - Ultra-thin ASP.NET Core Web API layer.&lt;br /&gt;
   - Responsibilities: accept HTTP requests, delegate authentication/authorization &lt;br /&gt;
     via the UserAccess module, dispatch commands and queries to internal modules, &lt;br /&gt;
     and return HTTP responses.&lt;br /&gt;
   - Contains ZERO business or application logic.&lt;br /&gt;
&lt;br /&gt;
2. UserAccess Module:&lt;br /&gt;
   - Manages user identity, registration validation, authentication, JWT token issuance, &lt;br /&gt;
     roles, and fine-grained permissions.&lt;br /&gt;
&lt;br /&gt;
3. Registrations Module:&lt;br /&gt;
   - Handles the user onboarding pipeline: registration requests, confirmation email &lt;br /&gt;
     flows, and registration verification state machines.&lt;br /&gt;
&lt;br /&gt;
4. Meetings Module (Core Domain):&lt;br /&gt;
   - The heart of the business domain: creation and lifecycle of Meeting Groups, Meetings, &lt;br /&gt;
     Attendees, Waitlists, and Comment threads.&lt;br /&gt;
&lt;br /&gt;
5. Administration Module:&lt;br /&gt;
   - Dedicated workflows for back-office administrators: reviewing, approving, or &lt;br /&gt;
     rejecting meeting group proposals and auditing platform policies.&lt;br /&gt;
&lt;br /&gt;
6. Payments Module:&lt;br /&gt;
   - Financial workflows: subscription fee payments, event entry fees, payer records, &lt;br /&gt;
     and payment confirmation state handling.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
4. TACTICAL DDD PATTERNS &amp;amp; INTERNAL MODULE ANATOMY&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
Each module is designed with strict boundaries and zero unauthorized coupling:&lt;br /&gt;
&lt;br /&gt;
* High Level of Encapsulation:&lt;br /&gt;
  All internal domain entities, repository implementations, command handlers, and &lt;br /&gt;
  database models are marked with C# &#039;internal&#039; access modifiers. External callers &lt;br /&gt;
  only interact with a very small, public facade interface (e.g., IMeetingsModule).&lt;br /&gt;
&lt;br /&gt;
* Rich Domain Models (Persistence Ignorance):&lt;br /&gt;
  Domain entities are pure POCOs without EF Core or infrastructure dependencies. All &lt;br /&gt;
  business invariants and rules are strictly encapsulated inside Aggregate Roots.&lt;br /&gt;
&lt;br /&gt;
* Combating Primitive Obsession:&lt;br /&gt;
  Strong Value Objects are used throughout (e.g., MeetingId, MemberId, Money, &lt;br /&gt;
  MeetingLimits) instead of raw strings, integers, or GUIDs.&lt;br /&gt;
&lt;br /&gt;
* CQRS (Command Query Responsibility Segregation):&lt;br /&gt;
  - Command Pipeline (Write): Domain-driven mutation handled through MediatR/handlers &lt;br /&gt;
    and Entity Framework Core with strict repository patterns.&lt;br /&gt;
  - Query Pipeline (Read): High-performance, read-only SQL queries projected directly &lt;br /&gt;
    into DTOs using Dapper, completely bypassing domain models and change tracking.&lt;br /&gt;
&lt;br /&gt;
* Asynchronous Inter-Module Communication:&lt;br /&gt;
  Modules NEVER make direct database calls or synchronous method invocations across &lt;br /&gt;
  module boundaries. Inter-module communication is 100% asynchronous, mediated by an &lt;br /&gt;
  Event Bus.&lt;br /&gt;
&lt;br /&gt;
* Reliability: Transactional Outbox &amp;amp; Inbox Patterns:&lt;br /&gt;
  - Outbox Pattern: Integration events are saved into an Outbox table within the SAME &lt;br /&gt;
    local database transaction that mutates aggregate state. A background worker &lt;br /&gt;
    (Quartz.NET) polls the Outbox and dispatches events to the in-memory event bus.&lt;br /&gt;
  - Inbox Pattern: Receiving modules store incoming messages into an Inbox table to &lt;br /&gt;
    guarantee exactly/at-least-once processing and prevent duplicate side-effects.&lt;br /&gt;
&lt;br /&gt;
* Internal Commands:&lt;br /&gt;
  Enables deferred or background execution of internal tasks within a module (e.g., &lt;br /&gt;
  sending notification emails or expiring waitlist holds) with automated retry and &lt;br /&gt;
  error handling.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
5. TESTING &amp;amp; ARCHITECTURAL GOVERNANCE&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
The project features a rigorous, multi-tier testing strategy:&lt;br /&gt;
* Unit Tests: Pure domain model testing focusing on invariant logic, free from mock &lt;br /&gt;
  overhead or database dependencies.&lt;br /&gt;
* Integration Tests: End-to-end command/query execution tested against a real database &lt;br /&gt;
  environment to ensure queries, mappings, and Outbox dispatchers execute flawlessly.&lt;br /&gt;
* Architecture Tests (NetArchTest): Automated architecture tests that run on build. &lt;br /&gt;
  They enforce modular encapsulation, preventing developers from accidentally adding &lt;br /&gt;
  unauthorized dependencies across module layers.&lt;br /&gt;
&lt;br /&gt;
================================================================================&lt;br /&gt;
[بخش فارسی - راست به چپ (RTL)]&lt;br /&gt;
================================================================================&lt;br /&gt;
&lt;br /&gt;
۱. مقدمه و هدف مخزن (Introduction &amp;amp; Purpose)&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
ریپوزیتوری «kgrzybek/modular-monolith-with-ddd» اثر کمیل گژبک (Kamil Grzybek)، یکی &lt;br /&gt;
از برجسته‌ترین و استانداردترین مراجع معماری نرم‌افزار در جامعه توسعه‌دهندگان دات‌نت (.NET) &lt;br /&gt;
و کل اکوسیستم مهندسی نرم‌افزار به شمار می‌رود.&lt;br /&gt;
&lt;br /&gt;
اهداف بنیادین پروژه:&lt;br /&gt;
• ارائه الگویی عملی برای پیاده‌سازی یک معماری یکپارچه ماژولار (Modular Monolith) &lt;br /&gt;
  با کیفیت آماده برای محیط عملیاتی (Production-Ready) به‌جای یک اثبات ایده (PoC) ساده.&lt;br /&gt;
• بهره‌مندی از تمام مزایای میکروسرویس‌ها (نظیر مرزبندی شفاف دامین، استقلال پایگاه‌داده، &lt;br /&gt;
  کاهش وابستگی‌ها و استقلال تیم‌ها) بدون مواجهه با چالش‌ها و هزینه‌های گزاف توزیع‌شدگی &lt;br /&gt;
  (تأخیر شبکه، پیچیدگی تراکنش‌های توزیع‌شده، ناهماهنگی داده‌ها و زیرساخت پیچیده).&lt;br /&gt;
• نمایش پیاده‌سازی حرفه‌ای الگوهای تاکتیکی طراحی دامین‌محور (Domain-Driven Design) و &lt;br /&gt;
  طراحی با قابلیت تست‌پذیری حداکثری (Testable Design).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
۲. شرح دامنه تجاری: پلتفرم مدیریت رویدادها (Meetup Domain)&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
این پروژه برای نشان دادن الگوها در شرایط دنیای واقعی، دامنه‌ای ملموس و دارای چالش‌های &lt;br /&gt;
کسب‌وکاری یعنی «سیستم مدیریت رویداد و همایش» (شبیه به پلتفرم بین‌المللی Meetup) را &lt;br /&gt;
پیاده‌سازی کرده است:&lt;br /&gt;
&lt;br /&gt;
قوانین و مفاهیم بیزینس:&lt;br /&gt;
• گروه‌های رویداد (Meeting Groups): اعضا می‌توانند پیشنهاد تشکیل گروه جدید ثبت کنند؛ &lt;br /&gt;
  اما این پیشنهاد تا زمان بازبینی و تأیید توسط مدیران ارشد سیستم فعال نمی‌شود.&lt;br /&gt;
• اشتراک‌ها (Subscriptions): هر گروه باید دارای برگزارکننده‌ای با اشتراک معتبر باشد. &lt;br /&gt;
  هر اشتراک فعال حداکثر ۳ گروه همایش را پوشش می‌دهد.&lt;br /&gt;
• جلسات و رویدادها (Meetings): فقط سازمان‌دهنده گروه می‌تواند جلسه جدید تعریف کند. &lt;br /&gt;
  هر جلسه شامل شرکت‌کنندگان قطعی، انصراف‌دهندگان و لیست انتظار (Waitlist) است.&lt;br /&gt;
• ظرفیت و سهمیه‌ها: جلسات می‌توانند سقف ظرفیت داشته باشند؛ پس از پر شدن ظرفیت، ثبت‌نام‌ها &lt;br /&gt;
  به‌طور خودکار به لیست انتظار منتقل می‌شوند.&lt;br /&gt;
• نقش‌های جلسه: هر شرکت‌کننده می‌تواند نقش عادی یا میزبان (Host) داشته باشد. وجود حداقل &lt;br /&gt;
  یک میزبان برای ویرایش جزئیات و مدیریت لیست افراد الزامی است.&lt;br /&gt;
• هزینه‌ها و مهمانان: امکان تعیین هزینه ورودی برای جلسات وجود دارد و اعضا می‌توانند &lt;br /&gt;
  مهمان همراه بیاورند و هزینه آن‌ها را شخصاً متقبل شوند.&lt;br /&gt;
• نظرات (Comments): ثبت نظر، پاسخ و لایک‌کردن دیدگاه‌ها با توجه به تنظیمات جلسه مدیریت می‌شود.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
۳. ساختار و تفکیک ماژول‌ها بر اساس مدل C4 (Architecture &amp;amp; Modules)&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
سیستم با پیروی از متدولوژی مستندسازی C4 (سطوح کانتینر، کامپوننت و کد) و با نمودارهای &lt;br /&gt;
PlantUML مستندسازی شده و دارای تفکیک لایه‌ای زیر است:&lt;br /&gt;
&lt;br /&gt;
۱. ماژول API (لایه وب و میزبانی):&lt;br /&gt;
   - یک لایه بسیار نازک بر بستر ASP.NET Core Web API.&lt;br /&gt;
   - وظایف: دریافت درخواست‌های HTTP، اعتبارسنجی احراز هویت با ماژول دسترسی، ارسال &lt;br /&gt;
     فرمان‌ها و پرس‌وجوها به ماژول‌های داخلی و بازگرداندن پاسخ.&lt;br /&gt;
   - فاقد هرگونه لاجیک تجاری و محاسباتی.&lt;br /&gt;
&lt;br /&gt;
۲. ماژول UserAccess:&lt;br /&gt;
   - مدیریت هویت کاربری، صدور توکن‌های JWT، نقش‌ها (Roles) و مجوزهای ریزدانه (Permissions).&lt;br /&gt;
&lt;br /&gt;
۳. ماژول Registrations:&lt;br /&gt;
   - مدیریت چرخه ثبت‌نام، تایید ایمیل و ماشین وضعیت اعتبارسنجی ثبت‌نام کاربران.&lt;br /&gt;
&lt;br /&gt;
۴. ماژول Meetings (هسته مرکزی دامین):&lt;br /&gt;
   - پیاده‌سازی هسته بیزینس: گروه‌ها، جلسات، ظرفیت‌ها، لیست‌های انتظار و کامنت‌ها.&lt;br /&gt;
&lt;br /&gt;
۵. ماژول Administration:&lt;br /&gt;
   - جریان‌های کاری اختصاصی مدیران پلتفرم جهت بررسی، تأیید یا رد پیشنهادات گروه‌ها.&lt;br /&gt;
&lt;br /&gt;
۶. ماژول Payments:&lt;br /&gt;
   - جریان‌های مالی: پرداخت حق اشتراک برگزارکنندگان و هزینه‌های ورودی رویدادها.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
۴. الگوهای تاکتیکی DDD و معماری داخلی ماژول‌ها (Tactical DDD &amp;amp; Mechanics)&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
هر ماژول به عنوان یک واحد خودمختار با رعایت مرزهای نفوذناپذیر طراحی شده است:&lt;br /&gt;
&lt;br /&gt;
• کپسوله‌سازی حداکثری (Strict Encapsulation):&lt;br /&gt;
  تمامی موجودیت‌های دامین، کلاس‌های EF Core، هندلرها و ریپازیتوری‌ها با سطح دسترسی internal &lt;br /&gt;
  تعریف شده‌اند. دنیای خارج فقط از طریق یک اینترفیس پابلیک بسیار کوچک (مانند IMeetingsModule) &lt;br /&gt;
  با ماژول ارتباط برقرار می‌کند.&lt;br /&gt;
&lt;br /&gt;
• مدل‌های غنی دامنه و بی‌خبری از ذخیره‌سازی (Persistence Ignorance):&lt;br /&gt;
  موجودیت‌های دامین کلاس‌های خالص (POCO) هستند و هیچ وابستگی به زیرساخت یا پایگاه‌داده ندارند. &lt;br /&gt;
  تمام اینوریانت‌ها (Invariants) و قوانین درون ریشه‌های تجمیع (Aggregate Roots) حفظ می‌شوند.&lt;br /&gt;
&lt;br /&gt;
• مقابله با وسواس نوع‌های بدوی (Primitive Obsession):&lt;br /&gt;
  استفاده گسترده از Value Objectها به‌جای انواع داده‌ای خام نظیر string یا Guid.&lt;br /&gt;
&lt;br /&gt;
• تفکیک دستورات و پرس‌وجوها (CQRS):&lt;br /&gt;
  - مسیر تغییرات (Write): با بهره‌گیری از MediatR و Entity Framework Core برای تضمین صحت کامل داده‌ها.&lt;br /&gt;
  - مسیر خواندن (Read): با اجرای مستقیم کوئری‌های خام و با بازدهی بسیار بالای SQL توسط Dapper &lt;br /&gt;
    مستقیماً روی DTOها، بدون درگیر کردن دامین مدل یا Change Tracker.&lt;br /&gt;
&lt;br /&gt;
• ارتباط ناهمگام میان ماژول‌ها (Asynchronous Communication):&lt;br /&gt;
  هیچ ماژولی حق فراخوانی مستقیم متدها یا پایگاه‌داده ماژول دیگر را ندارد. کلیه تبادلات منحصراً &lt;br /&gt;
  از طریق انتشار رویداد روی Event Bus صورت می‌پذیرد.&lt;br /&gt;
&lt;br /&gt;
• تضمین تراکنش‌ها با الگوهای Outbox و Inbox:&lt;br /&gt;
  - الگوی Outbox: رویدادهای یکپارچه‌سازی در همان تراکنش محلی دیتابیس در جدول Outbox ذخیره &lt;br /&gt;
    می‌شوند و پردازشگر پس‌زمینه (Quartz.NET) آنها را بدون از دست رفتن اطلاعات منتشر می‌کند.&lt;br /&gt;
  - الگوی Inbox: دریافت پیام‌ها در جدول Inbox ذخیره می‌شود تا از پردازش تکراری رویدادها &lt;br /&gt;
    جلوگیری شده و ضمانت پردازش حداقل یک‌باره (At-Least-Once) حاصل شود.&lt;br /&gt;
&lt;br /&gt;
• فرمان‌های داخلی (Internal Commands):&lt;br /&gt;
  انجام پردازش‌های زمان‌بندی‌شده، ارسال ایمیل‌ها یا کارهای پس‌زمینه درون هر ماژول به شکل مطمئن &lt;br /&gt;
  با قابلیت تلاش مجدد (Retry) خودکار.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
۵. استراتژی تست و نظارت خودکار بر معماری (Testing &amp;amp; Arch Tests)&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
• تست‌های واحد (Unit Tests): متمرکز بر اعتبارسنجی لاجیک خالص دامین مدل، بدون وابستگی به دیتابیس &lt;br /&gt;
  یا شبیه‌سازی‌های زائد (Mocking).&lt;br /&gt;
• تست‌های یکپارچگی (Integration Tests): تست تراکنش‌های واقعی، دیتابیس و اجرای کامل فرآیندها.&lt;br /&gt;
• تست‌های خودکار معماری (NetArchTest): آزمون‌های کدی که نقض قوانین ماژولار، وابستگی‌های غیرمجاز و &lt;br /&gt;
  نشت کپسوله‌سازی را در زمان Build شناسایی و رد می‌کنند.&lt;br /&gt;
================================================================================&lt;/div&gt;</summary>
		<author><name>Mkaravi</name></author>
	</entry>
	<entry>
		<id>https://wiki.mohamadkaravi.ir/index.php?title=Git&amp;diff=2</id>
		<title>Git</title>
		<link rel="alternate" type="text/html" href="https://wiki.mohamadkaravi.ir/index.php?title=Git&amp;diff=2"/>
		<updated>2026-08-27T15:12:59Z</updated>

		<summary type="html">&lt;p&gt;Mkaravi: Created page with &amp;quot;== Git Commands ==  === 1. Setting &amp;amp; Creating Projects === {| class=&amp;quot;wikitable&amp;quot; |+ ! Command !! Description |- | &amp;lt;code&amp;gt;git init&amp;lt;/code&amp;gt; || Initialize a local Git repository |- | &amp;lt;code&amp;gt;git clone ssh://git@github.com/[username]/[repository-name].git&amp;lt;/code&amp;gt; || Create a local copy of a remote repository |}  === 2. Basic Snapshotting === {| class=&amp;quot;wikitable&amp;quot; |+ ! Command !! Description |- | &amp;lt;code&amp;gt;git status&amp;lt;/code&amp;gt; || Check status |- | &amp;lt;code&amp;gt;git add [file-name.txt]&amp;lt;/code&amp;gt; || Ad...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Git Commands ==&lt;br /&gt;
&lt;br /&gt;
=== 1. Setting &amp;amp; Creating Projects ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
! Command !! Description&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;git init&amp;lt;/code&amp;gt; || Initialize a local Git repository&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;git clone ssh://git@github.com/[username]/[repository-name].git&amp;lt;/code&amp;gt; || Create a local copy of a remote repository&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 2. Basic Snapshotting ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
! Command !! Description&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;git status&amp;lt;/code&amp;gt; || Check status&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;git add [file-name.txt]&amp;lt;/code&amp;gt; || Add a file to the staging area&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;git add -A&amp;lt;/code&amp;gt; || Add all new and changed files to the staging area&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;git commit -m &amp;quot;[commit message]&amp;quot;&amp;lt;/code&amp;gt; || Commit changes&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;git rm -r [file-name.txt]&amp;lt;/code&amp;gt; || Remove a file (or folder)&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;git remote -v&amp;lt;/code&amp;gt; || View the remote repository of the currently working file or directory&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 3. Branching &amp;amp; Merging ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
! Command !! Description&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;git branch&amp;lt;/code&amp;gt; || List branches (the asterisk denotes the current branch)&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;git branch -a&amp;lt;/code&amp;gt; || List all branches (local and remote)&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;git branch [branch name]&amp;lt;/code&amp;gt; || Create a new branch&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;git branch -d [branch name]&amp;lt;/code&amp;gt; || Delete a branch&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;git push origin --delete [branch name]&amp;lt;/code&amp;gt; || Delete a remote branch&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;git checkout -b [branch name]&amp;lt;/code&amp;gt; || Create a new branch and switch to it&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;git checkout -b [branch name] origin/[branch name]&amp;lt;/code&amp;gt; || Clone a remote branch and switch to it&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;git branch -m [old branch name] [new branch name]&amp;lt;/code&amp;gt; || Rename a local branch&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;git checkout [branch name]&amp;lt;/code&amp;gt; || Switch to a branch&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;git checkout -&amp;lt;/code&amp;gt; || Switch to the branch last checked out&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;git checkout -- [file-name.txt]&amp;lt;/code&amp;gt; || Discard changes to a file&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;git merge [branch name]&amp;lt;/code&amp;gt; || Merge a branch into the active branch&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;git merge [source branch] [target branch]&amp;lt;/code&amp;gt; || Merge a branch into a target branch&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;git stash&amp;lt;/code&amp;gt; || Stash changes in a dirty working directory&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;git stash clear&amp;lt;/code&amp;gt; || Remove all stashed entries&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;git stash pop&amp;lt;/code&amp;gt; || Apply latest stash to working directory&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 4. Sharing &amp;amp; Updating Projects ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
! Command !! Description&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;git push origin [branch name]&amp;lt;/code&amp;gt; || Push a branch to your remote repository&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;git push -u origin [branch name]&amp;lt;/code&amp;gt; || Push changes to remote repository (and remember the branch)&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;git push&amp;lt;/code&amp;gt; || Push changes to remote repository (remembered branch)&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;git push origin --delete [branch name]&amp;lt;/code&amp;gt; || Delete a remote branch&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;git pull&amp;lt;/code&amp;gt; || Update local repository to the newest commit&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;git pull origin [branch name]&amp;lt;/code&amp;gt; || Pull changes from remote repository&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;git remote add origin ssh://git@github.com/[username]/[repository-name].git&amp;lt;/code&amp;gt; || Add a remote repository&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;git remote set-url origin ssh://git@github.com/[username]/[repository-name].git&amp;lt;/code&amp;gt; || Set a repository&#039;s origin branch to SSH&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 5. Inspection &amp;amp; Comparison ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
! Command !! Description&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;git log&amp;lt;/code&amp;gt; || View changes&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;git log --summary&amp;lt;/code&amp;gt; || View changes (detailed)&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;git log --oneline&amp;lt;/code&amp;gt; || View changes (briefly)&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;git diff [source branch] [target branch]&amp;lt;/code&amp;gt; || Preview changes before merging&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Mkaravi</name></author>
	</entry>
</feed>