بسم الله الرحمن الرحيم
يقوم المشروع على استخدام تقنية J2EE لإنشاء مكونات ويب ديناميكية , وذلك من خلال تطبيق الـ Servlets و الـ Java Server Pages( JSPs) وغيرها .. وفق تقنية دقيقة وذات كفاءة وفعالية.
بيئة الــJ2EE
تعتبر بنية J2EE بنية مختلفة تضم عدة تقنيات منها servlets , Java Server Pages ,
Enterprise Java Bean…
وتتألف بنية J2EE من خمس طبقات هي:
Client |
Presentation |
Business |
Integration |
Resource |
تعتبر كل طبقة قسم منطقي يتضمن عدداً من العناصر تساهم في تشكيل النظام الكلي وترتبط كل طبقة مع الطبقات المجاورة ارتباطاً وثيقاً.
طبقة Client : تضم هذه الطبقة العناصر التي تعد زبائن لتطبيق الويب مثل متصفح الإنترنت أو تطبيق آخر يستخدم خدمات تطبيق الويب.
طبقة Presentation: تغلف منطق العرض. ترتبط مع طبقة Client حيث تقبل طلبات الزبائن request وتعالج المسائل المتعلقة بالوثوقية و السماحية وتدير جلسات الزبائن session. وتسلم هذه الطلبات إلى طبقة Business التي تتولى معالجة الطلبات وفق منطق البرنامج. تعود طبقة Presentation وتأخذ النتائج من طبقة Business ليتم عرضها للزبون
العناصر التي توجد في هذه الطبقة Servlets , Java Server Pages , Filters
طبقة Business: تعتبر هذه الطبقة أساس تطبيق الإنترنت حيث تتضمن منطق عمل المنظومة التي يمثلها هذا التطبيق تتألف هذه الطبقة من عدة حبيبات java (Java Beans)
طبقة Integration: دور هذه الطبقة مواءمة الأنماط المختلفة من مصادر البيانات الخارجية الموجودة ضمن طبقة Resource (قاعدة بيانات , ملف , ...) لكي تتمكن عناصر طبقة Business من الاستفادة منها وتستخدم عناصر طبقة Integration عدة تقنيات مثل JDBC , JNDI ,
J2EE Connector Technology , ….
طبقة Resource: تتضمن هذه الطبقة الموارد الخارجية التي تؤمن البيانات الفعلية للتطبيق كقواعد البيانات databases والملفات files وتقنيات التحقق من بطاقة المال credit card
مثال يوضح الطبقات ودور كل منها:
تطبيق لمتجر إلكتروني لبيع الأجهزة المحمولة متاح عبر الشبكة:
يقوم الزبون بالضغط على رابط لعرض المنتجات فيقوم servlet محدد (ضمن طبقة presentation ) بتلقي طلب الزبون يقوم ال servlet باستخدام أغراض من صفوف تشكل أساس التطبيق (ضمن طبقة business ) تحتاج هذه الأغراض لبيانات مخزنة ضمن قاعدة البيانات تؤمن طبقة integration البيانات المطلوبة عبر استخدام تقنية jdbc للاتصال مع قاعدة البيانات الموجودة ضمن طبقة resource
ما المقصود بالـ Servlet ؟
- كيان له علاقة بالمخدم ( server).
- نموذج تصميم جديد من أجل المخدمات .
- صف جافا جديد .
- تقنية جديدة.
تظهر أهمية هذه التقنية الجديدة من خلال مساعدتها للمخدم بالقيام بمسؤولياته التي تتلخص فيما يلي :
1. معالجة طلبات الزبون client request .
2. إنشاء رد راجع response .
مع كل ما تتضمنه كل مهمة من مراحل العمل وشروط واجبة التحقق , إضافة إلى أن بعضها قد تتعلق طريقة تنفيذها بنوع المخدم .
الطريقة الوحيدة لجعل المخدم بسيط هي تخديم البيانات الساكنة (static) فقط بحيث يكوّد كل شيء ببرنامج وحيد ومقبول , لكن في الوقت نفسه نحن لا نستطيع كتابة برنامج وحيد يعالج المهمات جميعها. وماذا لو أضيفت وظائف جديدة ؟ وماذا لو تغيرت صيغ البيانات؟
من أجل ذلك كله.... التصميم الأفضل من اجل مخدمات الـ HTTP هو تقسيم الكود إلى قسمين تنفيذيين:
أحدهما يعالج الشبكة والآخر يؤمن منطق التطبيق , ونجعل كلا القسمين يملكان واجهة بينهما . هذا النوع من التقسيم يجعل من الممكن تعديل الكود وفق منطق التطبيق ودون التأثير على نموذج الشبكة .
البعض يحققون هذا التصميم من أجل مخدمات HTTP باستخدام CGI (Common Getway Interface) لكن ذلك يحوي العديد من العيوب : إن الفكرة الأساسية من مواقع الويب ذات حركة المرور العالية هي النطاق scalability)) ,وكل استدعاء لطلب يشمل إنشاء وهدم عملية جديدة لتنفيذها على سكريبتات CGI , هذا يعني عدم فعالية عال جداً خاصة إذا كان السكريبت ينجز روتينات التهيئة مثل الاتصال بقاعدة البيانات . وأكثر من ذلك : اتصال ملف الإدخال و الإخراج بالمخدم يسبب زيادة هامة في زمن الاستجابة الكلي .
لذلك الطريقة الأفضل تقوم على دعم المخدم لنماذج جزئية يمكن تحميلها إلى الذاكرة وتهيئتها فقط حالما يبدأ المخدم بالعمل (start up) , هذه النماذج تدعى بـ server extensions .
في الجافا ... الـ server extensions تكتب باستخدام الـ servlet API(Application Programming Interface)
و نماذج الـ server extensions تدعى بـ servlets
ميزات الـ servlet API :
1. المرونة Flexibility : في أي وقت نحتاج فيه لإضافة وظيفة جديدة للمخدم , كل ما علينا فعله هو كتابة servlet معين لمجموعة من المتطلبات وربطه بالمخدم دون تعديل على المخدم نفسه
2. تجزئة (توزيع) المسؤوليات Separation of responsibilities : المخدم الرئيسي (بذلك) يهتم بالاتصال بالشبكة وقسم الاتصالات بينما تفسير الطلبات requests وإنشاء الرد المناسب لكل طلب فهي مهمة الـ servlets .
3. الاعتماد على الجافا It’s Java : مبرمجو الجافا ليسوا بحاجة لتعلم لغة script جديدة وبإمكانهم استخدام الميزات غرضية التوجه التي تؤمنها الجافا .
4. قابلية النقل Portability : بإمكاننا تطوير واختبار servlet ما على container معين وتوزيعه على آخر . الـ servlet API مستقلة عن خدمات الويب وعن الـ containers servlet (علماً أن الـ container servlet هو النموذج الذي يخصص لإدارة الـ servlet ويستخدمه مخدم الويب لتحميل وتنفيذ الـ servlet )
وهكذا فإن الـ servlet بشكل عام هو قطعة من الكود تربط بالمخدم الموجود لتوسيعه وظيفياً حيث أنها تستخدم لتوليد الخرج المطلوب ديناميكياً وتخديم طلبات الـ HTTP .
ما هي صفحة الـ JSP ؟
هي صفحة ويب تحتوي كود جافا مضمن في واسمات الـ HTML , بحيث أن صفحة الـ JSP هي قالب HTML مكوّن من واسمات الـ JSP الفعالةactive و واسمات الـ HTML الغير فعالة passive , وعند التنفيذ القالب يستخدم لتوليد صفحة HTMLترسل إلى الزبون .
تشكل الـ JSP طبقة التمثيل presentation layer في بناء الـ(J2EE) : Sun's Java Enterprise Edition .
Servlet or JSP ؟
لذلك يفضل استخدام صفحات الـ JSP للعرض أي visual presentation .
بينما تستخدم الـ servlet للتحكم بسير العمل .
ما هو الـ web application ؟
- تطبيق يتم الوصول إليه من خلال الويب .
- الفائدة الأساسية لتطبيق الويب هي سهولة وصول المستخدمين إلى التطبيقات , كل ما يحتاجه المستخدم هو مستعرض ويب ليصبح التطبيق منصباً على جهازه .
- في الواقع , الـ web application يتألف من servlets عديدة و صفحات JSP و ملفات HTML وملفات صور وغير ذلك .. كل هذه المكونات تتناسق مع بعضها البعض وتؤمن مجموعة متكاملة لخدمات المستخدمين .
- يوصَّف تطبيق الويب باستخدام deployment descriptor وهو ملف xml يسمى بـ web.xml يحوي وصفاً لكل المكونات الديناميكية الخاصة بتطبيق الويب , كمثال : هذا الملف يحوي المدخل إلى كل استخدامات الـ servlet في تطبيق الويب , كذلك يبين مظاهر السرية في التطبيق .
مخدم التطبيق Application Server يستخدم الـ deployment descriptor لتهيئة مكونات تطبيق الويب وجعلها متوفرة للزبائن .
- بشكل مختصر : web application مجموعة من مكونات الويب التي تنجز مهمات محددة وتسمح بتحقيق منطق العمل عبر مستعرضات الإنترنت .
HTTP Protocol :
Hypertext Transfer Protocol بروتوكول معتمد على الثنائية request-response) )
يمتاز بالصفة stateless أي: حالما يرسل المخدم الرد فإنه ينسى ما يعلمه عن الزبون . بمعنى آخر : رد أي طلب لا يعتمد على أي طلبات قام بها الزبون مسبقاً . من وجهة نظر المخدم : أي طلب هو الطلب الأول من الزبون client .
0 التعليقات:
إرسال تعليق