
مقدمة إلى نمط التصميم Repository pattern
مقدمة
بالتأكيد انت تعاملت أو تتعامل حالياً مع احد التطبيقات التي تتصل بقواعد البيانات أو اي مصدر بيانات آخر. وقد واجهت العديد من التحديات وربما بحثت عن افضل طريقة لتنظيم آلية لادارة البيانات.
في الحقيقة يوجد العديد من المنهجيات التي يمكن اتباعها لإنشاء طبقة اتصال بالبيانات بشكل هندسي صحيح.
سنقدم في هذه المقالة بشكل مبسط، احد هذه المنهجيات وهو نمط التصميم Repository Pattern
يعد نمط التصميم هذا، من افضل الانماط في التطبيقات التي تتعامل مع قواعد البيانات، فهو يؤمن طبقة مفصولة عن باقي أقسام المشروع، بحيث تصبح عملية تطوير وصيانة المشاريع اكثر سهولة.
فيما يلي نستعرض تطبيق مبسّط، حيث سنقوم بإنشاء تطبيق صغير يقوم بعرض بيانات الموظفين مع امكانية الاضافة والتعديل.
تكمن الفكرة، بأننا سنقوم بفصل طبقة التعامل مع قاعدة البيانات إلى طبقة منفصلة، واكثر من ذلك سنقوم بتجريد هذه الطبقة (سيتم ذكر التجريد بشكل مفصل بالاسفل)، بحيث يمكن استخدام اكثر من مزود بيانات بنفس الوقت، بمعنى يمكن لتطبيقنا ان يقوم بتخزين وادارة البيانات ضمن SQL Server، او Access Database او ضمن ملفات XML أو ضمن ذاكرة الحاسوب، أو أي نوع اخر من التقنيات تخزين البيانات،سنكتفي في هذا المثال باستخدام SQL Database و In Memory Collection.
ما هو التجريد؟
سنقوم بتجريد الدوال الخاصة بالتعامل مع قاعدة البيانات ضمن Interface بالتالي جميع أقسام المشروع ستتعامل مع Interface فقط، اي لا يهم مزود البيانات الفعلي والخوارزميات المطلوبة لتنفيذ مختلف الاستعلامات، وكمحصلة لذلك، تخف الارتباطية بين مكونات التطبيق، وتزداد درجة السيطرة عليه.
مثال عملي
المتطلبات:
لتطبيق المثال نحتاج إلى نسخة فيجوال ستوديو 2017 او 2019.
مخدم قواعد بيانات SQL
الخطوات:
يرجى اتباع الخطوات التالية، لتشغيل المثال على جهازك:
- قم بتنزيل ملفات المشروع من GitHub على الرابط
- قم بتعديل نص الاتصال ضمن ملف App.Config واستبدل القيمة YOUR_SERVER_NAME باسم مخدم قاعدة البيانات لديك مثال (localhost- .\\SqlExpress) او أي مخدم لديك
- قم بتشغيل المشروع، سيتم إنشاء قاعدة بيانات ضمن SQL لديك، باسم RepositoryPatternDb
- قم بتنفيذ استعلام ادخال البيانات من ملف data.sql لاضافة بيانات تجريبية إلى قاعدة البيانات، الملف موجود ضمن المجلد Data ضمن ملفات المشروع.
- قم بتشغيل المشروع مرة اخرى لمشاهدة البيانات.
هاشتاغ