الفرق بين Razor Pages و MVC في ASP.NET Core

x32x01
  • بواسطة x32x01 ||
في ناس كتير أول ما تبدأ تشتغل في ASP.NET Core بيقعوا في حيرة:
أختار 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 بشكل أوضح 🆚

العنصرMVCRazor Pages
طريقة التنظيم3 ملفات منفصلة (Model - View - Controller)صفحة + Code-behind
مناسب لـمشاريع كبيرة / APIs / تطبيقات معقدةصفحات بسيطة / CRUD / Dashboards صغيرة
قابلية الاختبارأعلىممكن بس أقل مرونة
منحنى التعلمأكبر شويةأسهل وأسرع
التحكم في الـ Routingمرن جدًاأبسط وأوضح

طب أستخدم إيه وإمتى؟ 🎯


استخدم MVC لو:​

✅ التطبيق كبير وفيه Business Logic معقد
✅ عندك Routing معقد
✅ المشروع Web API (بدون HTML)
✅ محتاج Testing بشكل منظم
✅ بتشتغل على فرق كبيرة أو Enterprise Projects

استخدم Razor Pages لو:​

✅ هتعمل Dashboard أو Admin Panel بسيط
✅ هتعمل CRUD سريع زي إضافة/تعديل/حذف بيانات
✅ المشروع صغير أو متوسط
✅ عايز تختصر الوقت والجهد



هل Razor Pages بديل لـ MVC؟ 🤨

الإجابة ببساطة:
لأ
مش بديل…
ده اختيار إضافي.

الاتنين موجودين، ونقدر نستخدمهم مع بعض في نفس المشروع كمان.
وده طبيعي وبيحصل كتير جدًا في المشاريع الكبيرة.



مثال واقعي ✨

لو بتبني موقع متجر إلكتروني:
  • جزء الـ API اللي هيتعامل مع تطبيق موبايل → MVC
  • لوحة التحكم بتاعة الموظفين لإدارة المنتجات → Razor Pages

ليه؟
لأن لوحة التحكم CRUD بسيط → Razor Pages أسرع
أما API → محتاجة flexibility أكتر → MVC أفضل



خلاصة الموضوع 🎁

  • MVC بيقدّم تقسيم واضح للكود ومرونة أعلى → مناسب للمشاريع الكبيرة.
  • Razor Pages بيخلّيك تشتغل بشكل سريع ومنظم للصفحات البسيطة → مناسب للمشاريع الصغيرة والمتوسطة.
  • مفيش واحد أحسن من التاني بشكل مطلق… الاختيار يعتمد على احتياجات مشروعك.

وفي النهاية:
المهم إنك تفهم إمتى تستخدم إيه… مش تحفظ الكلام وخلاص. 😉
 
المواضيع ذات الصلة
x32x01
الردود
0
المشاهدات
45
x32x01
x32x01
x32x01
الردود
0
المشاهدات
5
x32x01
x32x01
x32x01
الردود
0
المشاهدات
6
x32x01
x32x01
x32x01
الردود
0
المشاهدات
906
x32x01
x32x01
x32x01
الردود
0
المشاهدات
1K
x32x01
x32x01
الدخول أو التسجيل السريع
نسيت كلمة مرورك؟
إحصائيات المنتدى
المواضيع
1,983
المشاركات
2,183
أعضاء أكتب كود
479
أخر عضو
as6318380@gmail
عودة
أعلى