Three Tier Model Concepts النظام ثلاثي الطبقات.. نظرة متمحصة

الناقل : elmasry | الكاتب الأصلى : bashmohandes | المصدر : www.arabteam2000-forum.com

-09
أغلبنا سمع عن الThree Tier Model و الذي يتكون من الأجزاء الثلاثة الشهيرة
1- ال Data Tier
2- ال Business Logic Tier
3- ال Presentation Tier

Posted Image
و هذا هو النظام الأشهر في بناء التطبيقات التجارية و سنحاول شرحه ببساطة و اعطاء أمثلة ان شاء الله

1- ال Data Tier
و هي الجزء الذي يتولى التعامل مع مصدر المعلومات مهما كان نوعه (قاعدة بيانات, ملفات نصية , .... الخ) و هي التي تتولى تخزين و استرجاع البيانات بغض النظر عن النظام نفسه و ماذا يفعل
و ينقسم هذا الجزء الى قسمين أصغر
أ- Data Access Layer و هي الجزء المسؤول عن التعامل المباشر مع قاعدة البيانات فهي تأخذ الQuery أو الStored Procedure و تنفذها و تعود بالناتج بدون تفكير و يمكن ببساطة نقل هذا الجزء من نظام لآخر دون تغيير في الكود الخاص بها ... و مثال بسيط عليها هو ال ADO.net نفسه
ب- Proxy Layer
و هي Classes تنفذ الوظائف الأساسية على الTables مثل الUpdate و الSelect و الDelete و الInsert و لكل Table له Class Proxy خاصة به تتولى العمليات الخاصة به
بمعنى أنه اذا فرضنا أننا نملك Database تحوي Tables بهذه الأسماء Users, Articles ...
و هكذا سيكون لدينــا 2 Classes من نوع Proxy و كل منهم يحوي الCode اللازم لاضافة و حذف و تعديل و قراءة المعلومات من الجدول المناظر له في الDatabase
و لكن يظهر سؤال ماهي الطريقة التي سنمثل بها الData خارج الDatabase أي عندما نقوم بعمل شئ مشابه لهذا

Proxy_Users user = new Proxy_Users();
user.GetUser(2)

فكيف سنخزن الUser Data و أين ؟؟؟
يجب أن يكون هناك مخزن للمعلومات و هنــا يمكن استخدام الStrongly Typed DataSets مثلاً أو أن تقوم بعمل Class تمثل كل Table من اختيارك بدون الاعتماد على ال STDataSets
و سنأتي لهذا الموضوع لاحقاً

2- الBusiness Tier
و هي المنطقة التي يتحول فيها النظام من كونه Tables مخزنة في Database الى Object Oriented Model أي أننا بعد كتابة هذا الجزء يمكننا أن ننسى تماماً طبيعة تخزين البيانات..
كمثال على الDatabase السابقة سيكون لدينا Class User و Class Article و داخل ال Article يوجد reference على Object من نوع User تمثل كاتب المقال و أيضاً داخل الUser يوجد Collection من الArticle Objects تمثل المقالات التي تخص هذا المستخدم و هكذا يمكننا استخدام الClasses بهذه الطريقة
User user = new User();
user.FirstName = "Mohammed";
user.LastName = "Ahmed";
user.Age = 12;
user.Save();
Article article = new Article();
article.Subject = "anyThing";
article.CreationDate = DateTime.Now;
article.Author = user;
article.Save();
user.Articles.Add(article);

و هكذا تجد أن الكود أصبح أكثر قوة و أسهل في التعامل و أصبح ايضاًً Encapsulated بشكل متميز و استطعنا اخفاء تفاصيل التعامل مع الDatabase في الtiers الأدنى و أيضاً داخل ال BusinessObjects استطعنا اخفاء استخدامنا للDataTier حتى يمكننا في الLayer الأعلى أن ننسى فعليا طبيعة البيانات

3- الPresentation Tier
و هي الجزء الذي يتعامل مع مستخدم البرنامج (من الاخر الUser interface ) بجميع أنواعه و البيئات المستخدمة سواء كان Windows Application أو Web Application أو حتى Console Applications و يتم في هذا الجزء التعامل المباشر مع الBusinessTier و لا يُسمح أبدا بالتعامل المباشر مع الDataTier و في الحقيقة لو كان تصميمك جيداً فلن تحتاج أبدأ الDataTier في الPresentation Tier
و للحديث بقية