المحتويات


مقدمة ^

التطبيقات متعددة الطبقات هي تطبيقات برمجية تكون منفصلة إلى طبقات تتخاطب مع بعضها البعض و تسمى هذه التطبيقات بالتطبيقات الموزعة.

تقوم هذه التطبيقات بفصل المعالجة بين الطبقات ما بين العميل و الخادم فعندما يتم إنشاء تطبيق من هذا النوع يجب أن يكون هناك فصل واضح بين الطبقات المختلفة التي تشكل التطبيق.

و هذه الطبقات ^ هي :

  • طبقة العرض Presentation layer ^

و هي الطبقة التي يتفاعل من خلالها المستخدم مع التطبيق و تتكون من صفحات العرض و الواجهات.

  • طبقة الوصول للبيانات Data Access Layer ^

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

  • طبقة البيانات Database ^

هذه الطبقة تتكون من خوادم قاعدة البيانات، و هنا يتم تخزين المعلومات و استرجاعها.

فوائد هذه الطريقة ^:

  1. فصل الإجرائيات Procedures عن المعطيات و بذلك تتم زيادة سرية و أمن المعطيات.
  2. التقليل من حجم الملف التنفيذي للمشروع و بذلك تتم زيادة بسرعة التنفيذ.
  3. يمكن وضع كل قسم في خادم Server منفصل و هذا يقينا من تراكم المعطيات في جهاز واحد.
  4. سهولة بالصيانة، مثلاً إذا غيرنا قاعدة البيانات من Microsoft SQL Server إلى ORACLE نقوم فقط بالتعديل بطبقة البيانات.
  5. السماح بدمج عدة لغات برمجة أي يمكن أن يتكون الفريق من مبرمجين مختلفين.

مثال عملي بسيط وصغير عن هذه الطريقة ^

نبدأ أولا بطرح مسألة و ليكن عندنا مدرسة بها معلمين سنقوم ببناء موقع من الصفر لإضافة و استعراض المعلمين الموجودين بالمدرسة .
المرحلة الأولى بناء قاعدة البيانات
سنقوم بتحليل المعطيات الموجودة عندنا
يوجد للمعلم الخواص التالية رقم تعريف واسم ورقم هاتف ومعلومات إضافية
ID
Name
Phone
Information

و سنبدأ بالعمل نقوم بفتح الفيجوال ستوديو Visual Studio و في درسنا سنستخدم فيجوال ستوديو 2008

نقوم بعمل مشروع جديد ثم نقوم بإنشاء حاوية فارغة Solution

نقوم بإضافة موقع جديد
Project->Add->New Website

و نختار asp.net website و لا ننس أن نحدد لغة البرمجة المستخدمة و هنا سنستخدم C#

ثم نضيف قاعدة بيانات sql server database كما في الأمر

Website -> add new item -> sql server database
و سنسميها tdb
ثم نقوم بإضافة جدول جديد كما في الصورة
و نضع بالجدول خواص المعلم كرقم المعرف و اسمه

الآن نضيف صف جديد Class ونسميه DAL و كذلك صف آخر اسمه teacher
و سنستخدم بمشاريعنا مكتبة Sql Helper التي فائدتها أنها تعمل كجسر بين مكونات Dblogic و SQL Server
سنقوم بكتابة الإجرائيات المخزنة stored procedures و ما نحتاجه هو إضافة معلم و عرض كل المعلمين الموجودين
أولا : إضافة معلم نقوم بإضافة إجراء مخزّن جديد كما في الصورة

و نكتب بداخله المتحولات و التعليمات كما في الصورة

ALTER PROCEDURE tblteachersInsert
@tname nvarchar(50),
@tphone nvarchar(50),
@tinfo nvarchar(50)
AS
begin
	INSERT INTO tblteachers (tname,tphone,tinfo)
	VALUES (@Tname,@Tphone,@Tinfo)
End

ALTER PROCEDURE tblteachersGetAll
AS
	Begin
	SELECT * FROM tblteachers
	End

بعد أن ننتهي من كتابة الإجراءات المخزّنة نقوم بكتابة الصف teacher ثم نقوم بكتابة الحقول، بعد ذلك نقوم بكبسلة الحقول كما في الصورة

ثم ننقر موافق فيظهر لدينا كما في الشكل

نكرر العملية مع بقية الحقول و نقوم بترتيب الصف بوضع الحقول في حقل region و الخواص في حقل، هذا الموضوع فقط من أجل الترتيب

namespace website
{
    public class teachers
    {
        public teachers()
        {
            //
            // TODO: Add constructor logic here
            //
 
        }
        #region fields
        private int id;
        private string tname;
        private string tphone;
        private string tinfo;
        #endregion
 
        #region Properties
        public int Id
        {
            get { return id; }
            set { id = value; }
        }
        public string Tname
        {
            get { return tname; }
            set { tname = value; }
        }
        public string Tphone
        {
            get { return tphone; }
            set { tphone = value; }
        }
        public string Tinfo
        {
            get { return tinfo; }
            set { tinfo = value; }
        }
        #endregion
        DAL ss = new DAL();
        public int teacherInsert(teachers info)
        {
            return ss.teacherInsert(info);
        }
        public List<teachers> teachersGetAll()
        {
            return ss.teachersGetAll();
        }
    }
}

بعدها نكتب تابع الإضافة و تابع عرض الكل طبعا في صف DAL كما في الصورة

namespace website
{
    public class DAL
    {
        public DAL()
        {
            //
            // TODO: Add constructor logic here
            //
        }
        public int teacherInsert(teachers info)
        {
            try
            {
                return Convert.ToInt32(SqlHelper.ExecuteScalar(SqlHelper.ConnString, "tblteachersInsert", info.Tname, info.Tphone, info.Tinfo));
            }
            catch (Exception ex)
            {
                throw ex;
            }
 
        }
        public List<teachers> teachersGetAll()
        {
            List<teachers> infos = new List<teachers>();
            try
            {
                using (SqlDataReader rdr = SqlHelper.ExecuteReader(SqlHelper.ConnString, "tblteachersGetAll"))
                {
                    while (rdr.Read())
                    {
                        teachers info = new teachers();
                        info.Id = Convert.ToInt32(rdr["id"]);
                        info.Tname = rdr["tname"].ToString();
                        info.Tphone = rdr["tphone"].ToString();
                        info.Tinfo = rdr["tinfo"].ToString();
                        infos.Add(info);
                    }
 
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }
            return infos;
        }
    }
}

و هكذا نكون قد انتهينا من المرحلة المهمة و بقي لدينا تصميم الصفحات و نبدأ بتصميم صفحة إضافة معلم و يلزمنا هنا 3 مربعات إدخال الأول للاسم و الثاني لرقم الهاتف و الثالث للمعلومات عن المعلم و لم نذكر رقم المتسلسل للمعلم لأن قيمته تزاد تلقائياً Auto Increment كما أعددناه في قاعدة البيانات
نبدأ بعمل جدول و نضيف فيه الخانات التي ذكرناها كما في الصورة
بعدها يجب أن نضيف لحدث نقرة الفأرة على زر الإضافة التعليمات البرمجية لإضافة معلم كما في الشكل

protected void btnAdd_Click(object sender, EventArgs e)
    {
        teachers  d = new teachers();
        d.Tname  = txtteacherName.Text.Trim();
        d.Tphone = txtteacherPhone.Text.Trim();
        d.Tinfo = txtteacherNote.Text.Trim();
        try
        {
            d.teacherInsert(d);
            lbmsg.Text = "تمت إضافة معلم جديد بنجاح";
            txtteacherName.Text = "";
            txtteacherPhone.Text = "";
            txtteacherNote.Text = "";
        }
        catch
        {
            lbmsg.Text = "أعد المحاولة من فضلك";
        }
    }

نضيف كذلك صفحة لعرض جميع المعلمين الموجودين و لتكن على شكل جدول يعرض المعلمين بالترتيب كما في الصور

و نضيف الأمر البرمجي لحدث تحميل الصفحة حتى يتم سرد جميع المعلمين عند فتح الصفحة كما في الصورة

protected void Page_Load(object sender, EventArgs e)
    {
        gv.DataSource = new teachers ().teachersGetAll();
        gv.DataBind();
    }


هذا مثال بسيط جداً عن البرمجة بتعدد الطبقات حيث تستعمل هذه الطريقة من قبل كبريات الشركات بالعالم. و تتميز البرمجيات التي تعمل بهذه الطريقة بمميزات قوية كالسرعة في الأداء و الحماية العالية.
ملف المثال موجود في المرفقات.

مثال - البرمجة بتعدد الطبقات
مثال - البرمجة بتعدد الطبقات
الإصدار: 0.1
التاريخ: 2010/09/04
نظم التشغيل: وندوز إكس بي, وندوز فستا, 7وندوز
اللغات: إنكليزي
269.2 KiB
تم تحمليه 19
تفاصيل...

إقرأ أيضاً:

  1. التعدادات enumerations في #C

أضف تعليقك

مطلوب

مطلوب

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>