Skip to content

21. الخلاصة

دعونا نلخص ما تم عرضه في هذا المستند:

  • أساسيات البرمجة على الويب بلغة Java باستخدام السيرفلت والصفحات JSP
  • مقدمة إلى البنية MVC
  • مقدمة إلى بنية 3tier
  • مقدمة إلى Spring IoC
  • أمثلة لتوضيح هذه النقاط

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

بالنسبة للتطبيقات البسيطة، هذه البنية كافية. وعندما نكتب عدة تطبيقات من هذا النوع، نلاحظ أن سيرفلتات تطبيقين مختلفين:

  1. لديهما نفس الآلية لتحديد الطريقة [doAction] التي يجب تنفيذها لمعالجة الإجراء المطلوب من قبل المستخدم
  2. لا تختلف في الواقع إلا في محتوى هذه الطرق [doAction]

ومن ثم، فإن الإغراء كبير لـ:

  • تحليل المعالجة (1) في سيرفلت عام لا يعرف التطبيق الذي يستخدمه
  • تفويض المعالجة (2) إلى فئات خارجية نظرًا لأن السيرفلت العام لا يعرف في أي تطبيق يتم استخدامه
  • ربط الإجراء المطلوب من قبل المستخدم بالفئة التي يجب أن تعالجه باستخدام ملف تكوين

ظهرت أدوات، تُسمى غالبًا "أطر عمل"، لتوفر المزايا السابقة للمطورين. أقدمها وربما أشهرها هو Struts (http://struts.apache.org/). Jakarta Struts هو مشروع تابع لمؤسسة Apache Software Foundation (www.apache.org). يرد وصف هذا الإطار في (http://tahe.developpez.com/java/struts/).

أما إطار العمل Spring (http://www.springframework.org/) الذي ظهر مؤخرًا، فيقدم ميزات مشابهة لتلك التي يقدمها Struts. وهو في الواقع وحدة Spring MVC. وقد تم وصف استخدامه في عدة مقالات (http://tahe.developpez.com/java/springmvc-part1/).

لا يقتصر Spring على مفهوم MVC الخاص بطبقة [web] في تطبيق ثلاثي الطبقات. بل إنه مفيد حتى في التطبيقات خارج نطاق الويب.

وهكذا، نكون قد أنهينا درسنا بتنفيذ بنية MVC في بنية ثلاثية الطبقات [web, metier, dao] على مثال بسيط لإدارة قائمة بالأشخاص.

في الإصدار 1 من التطبيق، كانت قائمة الأشخاص محفوظة في الذاكرة وتختفي عند إغلاق تطبيق الويب. في الإصدارات الأخرى، يتم الاحتفاظ بقائمة الأشخاص في جدول قاعدة بيانات. استخدمنا أربعة SGBD مختلفة: Firebird وPostgres وMySQL وSQL Server Express.

بفضل Spring IoC، تم الاحتفاظ بطبقة [web] من الإصدار 1 بالكامل في الإصدارات التالية. وبذلك أظهرنا أنه يمكن بناء بنى ntier بطبقات مستقلة.

مع الإصدارات التي تستخدم قاعدة بيانات، أظهرنا مساهمة Spring في بناء الطبقات [dao] و [service]. بفضل تكامل Spring مع iBATIS، تمكنا من بناء أربعة إصدارات لا تختلف إلا في ملفات التكوين الخاصة بها. تم استخدام نفس الفئة [DaoImplCommon] لتنفيذ الطبقة [dao] في الإصدارات الأربعة. لمعالجة مشكلة خاصة بـ SGBD Firebird، اضطررنا إلى اشتقاق هذه الفئة دون تعديلها.

وأخيرًا، أوضحنا كيف سمح لنا Spring بإدارة المعاملات بطريقة إعلانية على مستوى الطبقة [service].

نشجع القارئ على اكتشاف جميع الميزات التي يوفرها هذا المنتج.