Skip to content

1. مقدمة

ملف PDF لهذا المستند متاح |هنا|.

الأمثلة الواردة في هذا المستند متاحة |هنا|.

نهدف هنا إلى تقديم المفاهيم الأساسية لـ ASP.NET MVC، وهو إطار عمل ويب لـ .NET يوفر بنية لتطوير تطبيقات الويب وفقًا لنمط MVC (النموذج – العرض – وحدة التحكم)، وذلك من خلال أمثلة توضيحية.

لا يتطلب فهم الأمثلة الواردة في هذا المستند سوى القليل من المتطلبات الأساسية. فكل ما تحتاجه هو معرفة أساسية بلغة C#. ويمكن العثور على هذه المعرفة في المستند "مقدمة إلى لغة C#" على الرابط [https://stahe.github.io/ar-csharp-mai-2008/]. يتم تقديم دراسة حالة لتطبيق المعرفة المكتسبة حول ASP.NET MVC عمليًا. وهي تستخدم Entity Framework ORM (Object-Relational Mapper). يتم عرض هذا ORM في المستند "مقدمة إلى Entity Framework 5 Code First"، المتاح على [https://stahe.github.io/ar-ef5cf-oct-2012/].

تتوفر الأمثلة المختلفة الواردة في هذا المستند على الرابط [http://tahe.developpez.com/dotnet/aspnetmvc] كملف ZIP قابل للتنزيل.

هذا المستند غير مكتمل من نواحٍ عديدة. لمعرفة المزيد عن ASP.NET MVC، يمكنك استخدام المراجع التالية:

  • [ref1]: كتاب "Pro ASP.NET MVC 4" الذي كتبه آدم فريمان ونشرته دار Apress. إنه كتاب ممتاز. لو كان متاحًا مجانًا على الإنترنت وباللغة الفرنسية، لما كان هناك داعٍ لهذا المستند. أوصي كل من يستطيع ذلك بتعلم ASP.NET MVC باستخدام هذا الكتاب. يتوفر كود المصدر لأمثلة الكتاب مجانًا على [http://www.apress.com/9781430242369
  • [ref2]: موقع الويب الخاص بالإطار [http://www.asp.net/mvc]. ستجد هناك جميع المواد اللازمة للدراسة الذاتية. تتوفر نسخة باللغة الفرنسية على الرابط [http://dotnet.developpez.com/mvc/
  • موقع [developpez.com] المخصص لـ ASP.NET [http://dotnet.developpez.com/aspnet/ ].

تمت كتابة هذا المستند بحيث يمكن قراءته دون الحاجة إلى جهاز كمبيوتر. لذلك، تم تضمين العديد من لقطات الشاشة.

1.1. دور ASP.NET MVC في تطبيق الويب

أولاً، دعونا نضع ASP.NET MVC في سياق تطوير تطبيق الويب. غالبًا ما يتم بناؤه على بنية متعددة الطبقات مثل ما يلي:

  • طبقة [Web] هي الطبقة التي تتعامل مع مستخدم تطبيق الويب. يتفاعل المستخدم مع تطبيق الويب من خلال صفحات الويب التي يعرضها المتصفح. ويقع ASP.NET MVC في هذه الطبقة، وفيها فقط؛
  • طبقة [الأعمال] تنفذ منطق الأعمال الخاص بالتطبيق، مثل حساب الراتب أو الفاتورة. تستخدم هذه الطبقة البيانات الواردة من المستخدم عبر طبقة [الويب] ومن نظام إدارة قواعد البيانات (DBMS) عبر طبقة [DAO
  • تدير طبقة [DAO] (كائنات الوصول إلى البيانات) وطبقة [ORM] (مخطط العلاقات بين الكائنات) وموصل ADO.NET الوصول إلى البيانات في نظام إدارة قواعد البيانات. تعمل طبقة [ORM] كجسر بين الكائنات التي تتعامل معها طبقة [DAO] والصفوف والأعمدة في الجداول في قاعدة البيانات العلائقية. يتم استخدام نوعين من ORM بشكل شائع في عالم .NET: NHibernate (http://sourceforge.net/projects/nhibernate/) و Entity Framework (http://msdn.microsoft.com/en-us/data/ef.aspx
  • ويمكن تحقيق تكامل هذه الطبقات باستخدام حاوية حقن التبعية مثل Spring (http://www.springframework.net/

ستستخدم معظم الأمثلة الواردة أدناه طبقة واحدة فقط، وهي طبقة [Web]:

ومع ذلك، سيختتم هذا المستند بإنشاء تطبيق ويب متعدد الطبقات:

1.2. نموذج تطوير ASP.NET MVC

يُنفذ ASP.NET MVC نمط الهندسة المعمارية MVC (النموذج – العرض – وحدة التحكم) على النحو التالي:

تتم معالجة طلب العميل على النحو التالي:

  1. الطلب - تكون عناوين URL المطلوبة على النحو التالي http://machine:port/contexte/Controlleur/Action/param1/param2/....?p1=v1&p2=v2&... يستخدم [Front Controller] ملف تكوين لـ"توجيه" الطلب إلى وحدة التحكم الصحيحة والإجراء الصحيح داخل تلك الوحدة. للقيام بذلك، يستخدم مسار [Controller/Action] من عنوان URL. يتكون باقي عنوان URL [/param1/param2/...] من معلمات اختيارية سيتم تمريرها إلى الإجراء. يشير الحرف "C" في MVC هنا إلى سلسلة [Front Controller, Controller, Action]. إذا لم يؤد مسار [Controller/Action] إلى وحدة تحكم أو إجراء موجود، فسيرد خادم الويب بأن عنوان URL المطلوب لم يتم العثور عليه.
  1. المعالجة
  • يمكن للإجراء المحدد استخدام المعلمات التي مررها [Front Controller] إليه. يمكن أن تأتي هذه المعلمات من عدة مصادر:
  • مسار [/param1/param2/...] لعنوان URL،
  • معلمات [p1=v1&p2=v2] لعنوان URL،
  • المعلمات التي أرسلها المتصفح مع طلبه؛
  • عند معالجة طلب المستخدم، قد يحتاج الإجراء إلى طبقة [business] [2b]. بمجرد معالجة طلب العميل، قد يؤدي ذلك إلى استجابات متنوعة. ومن الأمثلة الكلاسيكية على ذلك:
  • صفحة خطأ إذا تعذر معالجة الطلب بشكل صحيح
  • صفحة تأكيد في الحالات الأخرى
  • يأمر الإجراء بعرض طريقة عرض محددة [3]. ستعرض طريقة العرض هذه البيانات المعروفة باسم نموذج العرض. هذا هو M في MVC. سيقوم الإجراء بإنشاء نموذج M هذا [2c] ويأمر بعرض طريقة عرض V [3]؛
  1. الاستجابة — تستخدم طريقة العرض V المحددة النموذج M الذي أنشأته الإجراء لتهيئة الأجزاء الديناميكية من استجابة HTML التي يجب إرسالها إلى العميل، ثم ترسل هذه الاستجابة.

الآن، دعونا نوضح العلاقة بين بنية الويب MVC والبنية الطبقية. اعتمادًا على كيفية تعريفنا للنموذج، قد يكون هذان المفهومان مرتبطين أو غير مرتبطين. لنفكر في تطبيق ويب ASP.NET MVC أحادي الطبقة:

إذا قمنا بتنفيذ الطبقة [Web] باستخدام ASP.NET MVC، فسيكون لدينا بالفعل بنية ويب MVC ولكن ليس بنية متعددة الطبقات. هنا، ستتولى الطبقة [Web] كل شيء: العرض، ومنطق الأعمال، والوصول إلى البيانات. والأعمال هي التي ستقوم بهذا العمل.

الآن، لنفكر في بنية ويب متعددة الطبقات:

يمكن تنفيذ طبقة [Web] بدون إطار عمل وبدون اتباع نموذج MVC. عندئذٍ نحصل على بنية متعددة الطبقات، لكن طبقة الويب لا تنفذ نموذج MVC.

وبالتالي، يمكن تنفيذ الطبقة [الويب] المذكورة أعلاه باستخدام ASP.NET MVC، مما ينتج عنه بنية متعددة الطبقات تتضمن طبقة [ويب] على غرار نمط MVC. وبمجرد الانتهاء من ذلك، يمكننا استبدال طبقة ASP.NET MVC هذه بطبقة ASP.NET كلاسيكية (WebForms) مع الحفاظ على بقية العناصر (منطق الأعمال، DAO، ORM) دون تغيير. وبذلك نحصل على بنية متعددة الطبقات مع طبقة [Web] لم تعد قائمة على MVC.

في MVC، قلنا إن نموذج M هو نموذج عرض V، أي مجموعة البيانات التي يعرضها عرض V. وهناك تعريف آخر لنموذج M في MVC:

يعتبر العديد من المؤلفين أن ما يقع على يمين طبقة [الويب] يشكل نموذج M في MVC. لتجنب الغموض، يمكننا الإشارة إلى:

  • نموذج المجال عند الإشارة إلى كل ما يقع على يمين طبقة [الويب]
  • نموذج العرض عند الإشارة إلى البيانات التي تعرضها طريقة العرض V

فيما يلي، سيشير مصطلح "نموذج M" حصريًا إلى نموذج عرض V.

1.3. الأدوات المستخدمة

من الآن فصاعدًا، نستخدم (اعتبارًا من سبتمبر 2013) إصدارات Express من Visual Studio 2012:

لتثبيت أحدث إصدارات هذه المنتجات، يمكنك استخدام [Web Platform Installer] (http://www.microsoft.com/Web/downloads/platform.aspx) من Microsoft.

بالإضافة إلى ذلك، استخدم متصفح Chrome من Google (http://www.google.fr/intl/fr/chrome/browser/). قم بتثبيت ملحق [ Advanced Rest Client] ( ). وإليك كيفية القيام بذلك:

  • انتقل إلى [متجر Google Web Store] (https://chrome.google.com/webstore) باستخدام متصفح Chrome؛
  • ابحث عن تطبيق [Advanced Rest Client]:

Image

  • سيصبح التطبيق متاحًا للتنزيل:

Image

  • للحصول عليه، ستحتاج إلى إنشاء حساب Google. سيطلب منك [متجر Google الإلكتروني] بعد ذلك تأكيدًا [1]:
  • في [2]، يتوفر الملحق المضاف ضمن خيار [التطبيقات] [3]. يظهر هذا الخيار في كل علامة تبويب جديدة تنشئها (CTRL-T) في المتصفح.

1.4. أمثلة

ستقتصر معظم أمثلة التعلم على طبقة الويب وحدها:

بمجرد الانتهاء من هذا البرنامج التعليمي، سنقدم تطبيق ويب متعدد الطبقات: