نظام توجيه الروابط URL Routing System

url routing
نظام توجيه الروابط URL Routing System في تطبيقات ASP.NET MVC

مقدمة:       

في تطبيقات ASP.NET الروابط إما أن يتم ربطها مع ملفات فِعلية على ال Server أو أن يتم ربطها مع دوال تعمل على تنفيذ مهمة معينة. في تطبيقات ASP.NET التي لاتستخدم نظام التوجيه Routing، يتم ربط الروابط مع ملفات فِعلية موجودة على ال Server، ثُم يحتوي هذا الملف على الكود اللازم لتنفيذ مهمة معينة. على سبيل المثال،

الرابط التالي:

http://localhost:16803/Default.aspx

يتم توجيه الرابط إلى السرفر ثم طلب ملف Default.aspx.

الملف يجب أن يكون موجوداً فعليا على السرفر كما هو موضح

1

في حالة عدم توفر الملف المطلوب ستظهر رسالة The resource cannot be found.

في تطبيقات ASP.NET التي تستخدم نظام التوجيه Routing  يمكنك أن تُنشئ أنماط تقوم بعملية توجيه الروابط إلى ملفات تتعامل مع الروابط request-handler files والتي ليس بالضرورة أن يكون اسمها موجود على الرابط.

 

 

يُستخدم نظام التوجيه routing system مع تطبيقات ASP.NET MVC بحيث أن الرابط التالي (على سبيل المثال):

http://localhost:24046/home/aboutme

سيتم توجيهه إلى كنترولر Controller اسمه Home (HomeController) ثم إلى دالة action method اسمها aboutme. كما في الصورة التالية:

2

 

المسارات Routes:

المسار Route هو عبارة عن نمط للروابط URL Pattern يتم ربطه مع مُعالج الروابط. معالج الروابط إما أن يكون ملف فِعلي كما هو الحال في ملفات .aspx في تطبيقات ASP.NET WebForm أو يُمكن أن يكون عبارة عن Class يقوم بمعالجة الطلب request كما هو الحال في ال Controller في تطبيقات ASP.NET MVC.

لتعريف مسار معين، يجب أن تُنشئ object من نوع Route class عن طريق تحديد:

  • نمط الرابط URL pattern
  • المعالج (الكلاس + الدالة) الذي سيتعامل مع الرابط
  • اسم للمسار

بعد ذلك، يتم إضافة المسار للتطبيق عن طريق اضافة ال route object إلى ال static Routes property  الخاصة بكلاس RouteTable class.

Routes property عبارة عن RouteCollection object تقوم بتخزين كل المسارات المتعلقة بالتطبيق.

 

أنماط الروابط URL Patterns:

في تطبيقات ASP.NET MVC لا نحتاج لكتابة كل انواع الروابط التي ستشكل الموقع ولكن يمكننا أن نكتب نمط لأنواع المسارات التي نتوقع أن تُمثل الموقع.

عند طلب رابط معين يتم مقارنة الرابط مع أحد الأنماط المتوفرة، فإذا وجد نمط معين يستخدم نظام التوجيه routing system هذا النمط لمعالجة الطلب وإذا لم يتوفر نمط مشابه للرابط يتم إرجاع خطأ للمستخدم.

الأنماط يجب أن تكون مسجلة داخل ملف RouteConfig.cs ضمن دالة RegisterRoutes كما هو موضح بالصورة

 

في الصورة لدينا نمط للروابط وهو مقسم كالتالي:

  • name: “Default” – اسم المسار
  • url: “{controller}/{action}/{id}” – شكل الروابط
  • defaults: new { controller = “home”, action = “Index”, id = UrlParameter.Optional } – القيم الافتراضية

اسم المسار: يجب تحديد اسماء للمسارات التي ستشكل موقعك وفي الغالب يكون لديك أكثر من مسار في الموقع

شكل الروابط: في المثال أعلاه سيدعم التطبيق أي رابط يتكون من 3 أقسام، القسم الأول اسم ال Controller، القسم الثاني اسم الدالة action method، والقسم الثالث ال id

القيم الافتراضية: القيم الافتراضية يتم تزويدها للروابط في حالة عدم تواجدها في الرابط

النمط هذا يمكن أن يدعم هذه الأنواع من الروابط:

http://mysite.com/

http://mysite.com/home

http://mysite.com/home/aboutme

http:// mysite.com /home/aboutme/2

وفي المقابل هذه الروابط سينتج عنها خطأ:

http://mysite.com/2

http://mysite.com/index

http://mysite.com/home/2

 

الرابط يتم تحليله من قبل نظام التوجيه routing system بحيث أنه يتجزأ إلى عدة أقسام أو شرائح (باستثناء اسم الموقع  http://mysite.com ) ثم يتم مطابقة الشرائح مع الأنماط الموجودة.

استخدمنا النمط التالي

url: “{controller}/{action}/{id}”

لذا في الرابط التالي:

http://mysite.com/home/aboutme

يُجزأ الرابط إلى قسمين الأول home و aboutme. يتم مطابقة home مع ال controller المتوفرة في المشروع (يقوم نظام التوجيه بإضافة كلمة controller إلى الإسم المُعطى  homeController)، إذا كان الكنترولر موجود يقوم نظام التوجيه بالبحث عن action method بإسم aboutme وفي حالة وجود الدالة عندها يُنفذ الكود الخاص بها وأما في حالة عدم تواجد أحدهما فإن خطأ The resource cannot be found يظهر للمستخدم.

 

في حالة استخدامنا لرابط مثل http://mysite.com/ يقوم نظام التوجيه بتوفير القيم الإفتراضية للرابط ( controller = “home”, action = “index”).

وفي حالة استخدامنا لرابط مثل http://mysite.com/home يقوم نظام التوجيه بتوفير القيمة الافتراضية action = “index” .

الجزء الخاص بالـ id اختياري وفي حالة عدم توفره يعتبره النظام empty string.

 

نمط الرابط يمكن أن يحتوي على قيم متغيرة أو ثابتة. القيم المتغيرة placeholders يجب أن تكون مابين قوسين {} كما هو الحال في

url: “{controller}/{action}/{id}”

والقيم الحرفية يجب أن تكون موجودة دائما مثل

url: “blog/{controller}/{action}/{id}”

فتصبح الروابط:

http://mysite.com/blog

http://mysite.com/blog/home

http://mysite.com/blog/home/aboutme

http:// mysite.com /blog/home/aboutme/2

في حالة تحديد قيمة ثابتة في نمط الرابط عندها يجب أن تكون موجودة في الروابط دائما وإلا سيتم ارجاع خطأ 404 للمستخدم.

 

كانت هذه مقدمة بسيطة عن نظام التوجيه المتبع في تطبيقات ASP.NET MVC. عرفت من خلاله الفرق بين التطبيقات التي تتبع نظام الملفات والتطبيقات التي تستخدم نظام التوجيه. تحدثنا أيضا عن المسارات وكيفية اضافتها ونبذة عن أنماط الروابط التي تشكل الموقع.

 

المصدر:

  • https://msdn.microsoft.com/en-us/library/cc668201.aspx 
  • Pro ASP.NET MVC 4 – Adam Freeman
  • مقاله رائعه استفدت منها اشكرك الشكر الجزيل

  • Faisal D Aljedaie

    مقاله ممتازة مهندس ماهر