- بواسطة x32x01 ||
في ناس كتير أول ما تبدأ تشتغل في ASP.NET Core بيقعوا في حيرة:
أختار Razor Pages ولا أستخدم MVC؟
وبتبقى الدنيا شكلها معقدة شوية، وخصوصًا لو لسه جديد في المجال.
بس صدقني الموضوع أبسط من اللي أنت متخيله لو فهمنا أصل كل حاجة وليه اتعملت أساسًا.
في البوست ده هنشرح الفرق بشكل عملي وسهل، من غير تعقيد، وبأمثلة واقعية، بحيث لما تخلص القراءة تكون قادر تقول:
"تمام… أنا كده فاهم أستخدم إيه وإمتى"
يعني إيه MVC أصلاً؟
أول حاجة لازم نرجع شوية للـ Architecture اللي بقاله سنين طويلة مستخدم في تطوير الويب:
Model - View - Controller
الفكرة هنا إنك بتقسم الـ application لثلاث طبقات، وكل طبقة مسؤولة عن جزء مختلف:
الميزة هنا إن كل جزء واضح دوره ومافيش خلط، وده اللي بنسميه:
Separation of Concerns
طب إيه بقى Razor Pages؟
مع ظهور ASP.NET Core، مايكروسوفت قدمت طريقة أبسط لبناء صفحات الويب:
Razor Pages
الفكرة هنا إنك بدل ما تفصل كل طبقة لوحدها،
بيكون عندك Page واحدة فيها:
يعني الصفحة بتتعامل كأنها وحدة واحدة Self-contained بحيث يبقى شكلها:
وده بيسهل الدنيا جدًا خصوصًا لو انت بتعمل صفحات CRUD بسيطة (Insert, Edit, Delete).
والصفحة:
بسهولة… بوضوح… من غير لف كتير.
الفرق بين MVC و Razor Pages بشكل أوضح
طب أستخدم إيه وإمتى؟
التطبيق كبير وفيه Business Logic معقد
عندك Routing معقد
المشروع Web API (بدون HTML)
محتاج Testing بشكل منظم
بتشتغل على فرق كبيرة أو Enterprise Projects
هتعمل Dashboard أو Admin Panel بسيط
هتعمل CRUD سريع زي إضافة/تعديل/حذف بيانات
المشروع صغير أو متوسط
عايز تختصر الوقت والجهد
هل Razor Pages بديل لـ MVC؟
الإجابة ببساطة:
لأ
مش بديل…
ده اختيار إضافي.
الاتنين موجودين، ونقدر نستخدمهم مع بعض في نفس المشروع كمان.
وده طبيعي وبيحصل كتير جدًا في المشاريع الكبيرة.
مثال واقعي
لو بتبني موقع متجر إلكتروني:
ليه؟
لأن لوحة التحكم CRUD بسيط → Razor Pages أسرع
أما API → محتاجة flexibility أكتر → MVC أفضل
خلاصة الموضوع
وفي النهاية:
المهم إنك تفهم إمتى تستخدم إيه… مش تحفظ الكلام وخلاص.
أختار Razor Pages ولا أستخدم MVC؟
وبتبقى الدنيا شكلها معقدة شوية، وخصوصًا لو لسه جديد في المجال.
بس صدقني الموضوع أبسط من اللي أنت متخيله لو فهمنا أصل كل حاجة وليه اتعملت أساسًا.
في البوست ده هنشرح الفرق بشكل عملي وسهل، من غير تعقيد، وبأمثلة واقعية، بحيث لما تخلص القراءة تكون قادر تقول:
"تمام… أنا كده فاهم أستخدم إيه وإمتى"
يعني إيه MVC أصلاً؟
أول حاجة لازم نرجع شوية للـ Architecture اللي بقاله سنين طويلة مستخدم في تطوير الويب:Model - View - Controller
الفكرة هنا إنك بتقسم الـ application لثلاث طبقات، وكل طبقة مسؤولة عن جزء مختلف:
- Model
ده المكان اللي بتحط فيه الـ Data والـ Business Logic.
يعني الـ Classes اللي بتمثل زي: - وكمان أي قواعد معالجة أو حسابات بتخص البيانات.C#:
public class User { public int Id { get; set; } public string Name { get; set; } } - View
وده الجزء اللي بيظهر للمستخدم
وهو عبارة عن HTML / Razor اللي بتعرض البيانات. - Controller
ده العقل المدبر.
هو اللي بيستقبل الـ Request من المستخدم، ويكلم الـ Model يجيب البيانات،
وبعدها يبعت البيانات للـ View عشان تتعرض.
يعني باختصار:
User Request → Controller → Model → Controller → View → Userالميزة هنا إن كل جزء واضح دوره ومافيش خلط، وده اللي بنسميه:
Separation of Concerns
طب إيه بقى Razor Pages؟ 
مع ظهور ASP.NET Core، مايكروسوفت قدمت طريقة أبسط لبناء صفحات الويب:Razor Pages
الفكرة هنا إنك بدل ما تفصل كل طبقة لوحدها،
بيكون عندك Page واحدة فيها:
- كود الـ HTML
- والكود اللي بيتعامل مع البيانات (C# code-behind)
يعني الصفحة بتتعامل كأنها وحدة واحدة Self-contained بحيث يبقى شكلها:
Index.cshtml ← عرض الصفحةIndex.cshtml.cs← كود التعامل مع البياناتوده بيسهل الدنيا جدًا خصوصًا لو انت بتعمل صفحات CRUD بسيطة (Insert, Edit, Delete).
مثال بسيط:
C#:
public class IndexModel : PageModel
{
public string Message { get; set; }
public void OnGet()
{
Message = "أهلاً بيك 👋";
}
} والصفحة:
<p>@Model.Message</p>بسهولة… بوضوح… من غير لف كتير.
الفرق بين MVC و Razor Pages بشكل أوضح
| العنصر | MVC | Razor Pages |
|---|---|---|
| طريقة التنظيم | 3 ملفات منفصلة (Model - View - Controller) | صفحة + Code-behind |
| مناسب لـ | مشاريع كبيرة / APIs / تطبيقات معقدة | صفحات بسيطة / CRUD / Dashboards صغيرة |
| قابلية الاختبار | أعلى | ممكن بس أقل مرونة |
| منحنى التعلم | أكبر شوية | أسهل وأسرع |
| التحكم في الـ Routing | مرن جدًا | أبسط وأوضح |
طب أستخدم إيه وإمتى؟
استخدم MVC لو:
استخدم Razor Pages لو:
هل Razor Pages بديل لـ MVC؟
الإجابة ببساطة:لأ
مش بديل…
ده اختيار إضافي.
الاتنين موجودين، ونقدر نستخدمهم مع بعض في نفس المشروع كمان.
وده طبيعي وبيحصل كتير جدًا في المشاريع الكبيرة.
مثال واقعي
لو بتبني موقع متجر إلكتروني:- جزء الـ API اللي هيتعامل مع تطبيق موبايل → MVC
- لوحة التحكم بتاعة الموظفين لإدارة المنتجات → Razor Pages
ليه؟
لأن لوحة التحكم CRUD بسيط → Razor Pages أسرع
أما API → محتاجة flexibility أكتر → MVC أفضل
خلاصة الموضوع
- MVC بيقدّم تقسيم واضح للكود ومرونة أعلى → مناسب للمشاريع الكبيرة.
- Razor Pages بيخلّيك تشتغل بشكل سريع ومنظم للصفحات البسيطة → مناسب للمشاريع الصغيرة والمتوسطة.
- مفيش واحد أحسن من التاني بشكل مطلق… الاختيار يعتمد على احتياجات مشروعك.
وفي النهاية:
المهم إنك تفهم إمتى تستخدم إيه… مش تحفظ الكلام وخلاص.