بواسطة Mohammad_807 » الجمعة إبريل 22, 2011 2:53 pm
اليوم رح نحكي عن أحلى و أشهر Design Pattern على الإطلاق ويلي هو يُعبر بمثابة منهجية (Methodology ) كاملة لكيفية تصميم وبرمجة التطبيقات سواء كانت تطببيقات عادية أو حتى في التطبيقات المؤسساتية الكبيرة .
1.png
الهدف من هذا النموذج هو فصل المكونات الثلاثة عن بعضها البعض بشكل مستقل.
وكما نعلم أن نموذج التصميم هو حل لمكشلة متكررة فما هي المشكلة المتكررة التي يحلها MVC ؟
في الحقيقة الصورة التالية توضح الفكرة .
2.png
1-هي تعدد الواجهات Multiple Views مثلاً الواجهة الأولى هي برنامج Delphi والثانية هي تطبيق ويب والواجهة الثالثة هي تطبيق موبايل . وبالتالي الهدف هو إضافة واجهة جديدة من دون أن نقوم بتغير ال Controller .
2- المشكلة الثانية التي يحلها ال MVC هي تعدد وسائط التخزين Multiple Storage مثلاً ال Model 1 يتعامل مع Access DataBase و ال Model 2 يتعامل مع SqL server DataBase والثالث يتعامل مع Oracle DataBase .
في الحقيقة إن حل المشكلة الثانية يتم من خلال Design Pattern أخر هو DAO (Data Access Object) والذي يؤمن لنا التعامل مع أي قاعدة معطيات بغض النظر عن المزود سواءً كان Access أو SqL sever أو ... .
ولكن قبل هذه الطبقة (DAO) يتم وضع طبقة تُسمى ORM (Object Relational Mapping ) والتي تسمح لنا بقراءة وكتابة الأغراض من وإلى قاعدة المعطيات .
وبالتالي يكون الشكل العام للتطبيق الخاص بنا والذي يخضع لنموذج التصميم MVC حيث أن هذا التقسيم هو تقسيم منطقي كما يلي :
1 (2).png
هذه التقسيمات منطقية (نقصد بالمنطقية أن التطبيق في النهاية هو تطبيق واحد مُقسم منطقياً على شكل صفوف أو مكتبات) إلى الأقسام التالية :
وهي الواجهة التي يتعامل معها المستخدم .
هو الذي يحوي كود منطق العمل (Business Logic Code ) ويجري ضمنه كل عمليات التحقق من المعرفات ID وهذه العمليات تُسمى Authentication بالإضافة إلى عملية التحقق من الصلاحيات وتُسمى هذه العملية أيضاً Authorization .
لنفرض الآن أننا نريد قراءة غرض من قاعدة المعطيات عندها يتم بناء غرض Object يتم مقابلة هذا الغرض بعدد من الحقول ضمن قاعدة المعطيات بشكل شفاف باستعمال نموذج تصميمي أخر هو ORM (Object Relational Mapping ) أي يتم مقابلة كل غرض لدينا ضمن ال Class Diagram بمجموعة من الحقول ضمن قاعدة المعطيات (تجري عملية التقابل لمرة واحدة فقط ويمكن تعديلها لاحقاً )وبالتالي فأن المبرمج ليس بحاجة إلى كتابة تعليمات SQL والتي لها العديد من المشاكل التي قمنا بذكرها في مقال سابق .
ومن ثم يتم توليد تعليمات SQL التي تقوم بإحضار حقول هذا الغرض من قاعدة المعطيات وتمريرها إلى طبقة أخرى حيث يقطن Design Pattern أخر هو DAO والذي يقوم بالتعامل مع N Data Base at Run Time With The Same Code أي أننا نستطيع أن نقوم بالتعامل مع قاعدة معطيات Oracle , MySqL , SqL Server,… بنفس الكود وهذه الفكرة تُعتبر ثورة في عالم برمجة التطبيقات سواء كانت عادية أم مؤسساتية () .
ثم يقوم ال DAO بالإتصال بقاعدة المعطيات واسترجاع المعطيات منها ومن ثم يمررها لل ORM الذي يقوم ببناء الغرض وملئ حقوله من النتيجة التي وصلته ويعيده إلى المبرمج الذي قام بطلب الحصول على قيمة هذا الغرض(النتيجة تعود إلى ال Controller) .
نفس الكلام ينطبق عند طلب المبرمج كتابة أو تحديث قيمة هذا الغرض ضمن قاعدة المعطيات.
1- بعض الكتب بتحكي فكرة ال MVC بطريقة انا بعتبرها خاطئة , وهي أن طبقة ال Model تتخاطب مع طبقة ال View
وهذا الكلام غير صحيح (من وجهة نظري) بكل الأحوال سأحاول أن أسأل عن الموضوع.
2- لا يمكن تحقيق الفصل المنطقي بين الطبقات الثلاثة 100% و لكن يجب العمل على هذا النموذج لضمان سرعة تطوير البرمجيات .
3- أرجو من كل الطلاب يلي عم يشتغلو مشاريع أتمتة أو مشاريع Business Application والتي هي غالباً مشاريع طبقة ال View بتكون عالويب , أنو يلتزمو بهاد ال Design Pattern وبمكتبة الكلية في أكتر من مشروع مشغولين على الMVC -دورو بمشاريع الرابعة والخامسة- بتلاقو شي حلو .
شكراً للجميع , وفي حال وجود أسئلة وإستفسارات أنا جاهز .