الحالمة
03-05-2002, 02:08 AM
تقنيات برمجة Web مع Delphi
قد لا يعلم الكثيرون ان Delphi يعتبر من الأدوات القوية لتطوير برامج ومواقع كاملة على الانترنت او كما يعرف ب Web Applications أو Server-Side Applications، فهو يوفر الدعم لكثير من التقنيات المستخدمة مثل: CGI, Win-CGI, ISAPI/NAPI, ASP وايضا تم اضافة تقنيات جديدة مع النسخة السادسة من Delphi مثل WebSnap.
عند بداية ظهور الويب كانت الطرق السائدة آنذاك لانشاء المواقع هي انشاء الصفحة بمحرر نصوص او محرر صفحات ثم تخزينها على جهاز الخادم بلاحقة htm/html وعندما يأتي الزائر للموقع وطلبه لصفحة معينة يتم إرسال الصفحة له كاملة كما هي مخزنة على الخادم، تسمى الصفحات المنشئة بهذه الطريقة Static Pages اي صفحات ساكنة، لانه عند تخزينها تبقى كما هي وان اراد مطورو الموقع التعديل عليها، عليهم فتحها مرة اخرى بمحرر الصفحات ثم تخزينها، قد تكون هذه الطريقة كافية للمواقع الصغيرة والتى لا تحتاج اي تفاعل مع الزائر لكنها عقيمة في حالة ما أردت ان تعرض معلومات مخزنة في قاعدة البيانات او تعديل الصفحة حسب طلب الزائر لمعلومات معينة.
اللغة التي كانت مستخدمة لإنشاء هذه الصفحات هي HTML Hyper Text Mark-up Language وهي عبارة عن لغة وصفية تعتمد على Tags في التحكم بشكل الصفحة كيف تظهر وتتسم بالبساطة ومن السهل تعلمها في وقت قصير، لكنها تعاني من عندم قدرتها على التفاعل من المستعرض وايضا لا يمكن من خلالها القيام بالكثير من العمليات مثل الحسابية وعمليات التدقيق.
لحل مشكلة الصفحات الساكنة تم انشاء ال Dynamic Pages وهي صفحات دينامكية تتغير حسب الزائر او المعلومات المطلوبة، فمثلا كلنا زار مواقع مثل ياهو، عندما يبحث شخص معين عن معلومة فإن الصفحة سوف تُضَمن المعلومات المطلوبة وترسلها من جهاز الخادم الى المستعرض وبالطبع فإن هذه الصفحة انشئت عندما تم البحث عن المعلومة وليست مخزنة على الخادم.
من التقنيات الاولى التى استخدمت لانشاء الصفحات الدينامكية الـ CGI وهناك لغات عديدة تسمح بإنشاء هذا النوع من البرامج اشهرها Perl، ثم بعد ذلك تبعها الكثير من التقنيات التى سوف اوضح بعضها تباعاً.
أيضا هناك لغات إنشئت لتحسين التعامل مع ال HTML مثل JavaScript, VBScript وهي تدمج داخل صفحة ال HTML ويتم تنفيذها في المستعرض اي على جهاز الزائر للموقع، وهذه اللغات عبارة عن Scripts اي نصوص مكتوبة وتنفذ بشكل تسلسلي ولا يتم عملية ترجمة لها Compilation.
قبل الإنتقال الى التقنيات المستخدمة لا بد ان نعطي لمحة عن طريقة عمل Web Application ويمكن تلخيصها الى ثلاث خطوات هي:
1. يقوم المستعرض بطلب الصفحة وهذا ما يسمى Request.
2. يقوم ال Web Server الموجود على الجهاز الخادم بإخذ الطلب من المستعرض وإرساله إلى Web Application.
3. يقوم ال Web Application بمعالجة الطلب ثم إرسال الصفحة الى المستعرض وهو ما يسمى بالـ Response.
والفكرة الأساسية بصفة عامة تتلخص في عملية الطلب Request والإجابة Response.
أولا: CGI (Common Gateway Interface)
ال CGI هوا عبارة عن بروتوكل قياسي يتم من خلاله الاتصال بين المستعرض الموجود في جهاز الزائر و Web serverالموجود على جهاز الخادم، وهو يتيح للمستعرض السؤال عن البيانات من الخادم وإرسال البيانات ايضا الى الخادم
كما ذكرت سابقا كانت هذه من اوئل التقنيات لانشاء مواقع على الانترنت ذات صفحات ديناميكية، تتميز هذه الطريقة بسهولة التطوير وامكانية استخدام عدة لغات لتطويره هذه التقنية ويوضع البرنامج على الخادم وعادة يكون له لاحقة exe اذا كانت اللغة المستخدمة تقوم بعملية الترجمة ويكون على هذا الشكل:
www.myserver.com/mycgi.exe
أما اذا كانت اللغة المستخدمة Scripts فمن الممكن ان يكون بهذا الشكل
www.myserver.com/mycgi.pl
بالطبع فإن برامج CGI التى يتم إنشائها بلغات برمجة تقوم بعملية الترجمة الى Exe تكون أسرع من البرامج التى يستخدم Scripts لإنشائها لان ال Scripts تعتبر Interrupted حيث يلزمها عملية ترجمة كل مرة يتم فيها إستدعائها.
مميزات تقنية CGI:
1. سهولة وسرعة إنشائها.
2. دعم مجموعة كبيرة من لغات البرمجة لهذه التقنية.
3. مدعومة في العديد من نظم التشغيل وأغلب ال Web servers يمكنه التعامل معها.
عيوبها:
1. إستهلاك ذاكرة وموارد الخادم، لأن كل طلب للصفحة سوف يقوم بتحميل نسخة مستقلة من البرنامج مما يستهلك موارد جهاز الخادم بشكل كبير.
2. تعتبر بطيئة وعديمة الفعالية من ناحية الأداء.
3. صعوبة استخدامها وصيانتها في المواقع الكبيرة.
ثانيا: ISAPI/NSAPI Internet Server API/Netscape API
قامت شركة ميكروسوفت بإنشاء تقنية ISAPI وذلك للتغلب على العيوب التى كانت موجودة في CGI مع دعم لمجموعة تقنيات اخرى والبرامج المنشئة بهذه الطريقة تأخذ لاحقة DLL وهي شبيهة بال Servlets الموجودة في JAVA لكنISAPI أسرع منها من ناحية الأداء، وهناك تقنية مشابها من شركة نتسكيب وهي NSAPI ولكنها ليست منتشرة مثل الاولى، والميزة الكبرى في Delphi انه يتيح لك بناء برنامج واحد ليعمل على كل التقنيتن وسوف أركز في المقالة على ISAPI لأنها الأكثر انتشاراً
مميزات تقنية ISAPI:
1. تعطي أسرع أداء في تقنيات Web Applications المستخدمة.
2. سهولة إنشائها وتطبيقها من داخل Delphi.
3. فعاليتها من ناحية إستخدام الذاكرة والموارد، حيث أنه عند طلب البرنامج للمرة الأولى سوف يتم تحميل نسخة من الـ DLL في الذاكرة، ثم بعد ذلك أي طلب سوف يستخدم النسخة الموجودة في الذكرة.
عيوبها:
1. عند وجود نسخة محملة في الذاكرة، لا يمكن القيام بعملية Compilation الا في حالة قيامك بتفريغها من الذاكرة، أو بإيقاف ال Web Server وإعادة تشغيله.
2. إقتصارها على بيئة ويندوز و IIS لكن يوجد العديد من ال Web servers يدعم هذه التقنية.
3. في حالة انهيار الـ DLL قد يسبب ذلك إنهيار ال Web Server لكن ميكروسوفت حلت هذه المشكلة في نسخها الجديدة من IIS من خلال تخصيص منطقة ذاكرة محمية للـ DLL.
ثالثا: ASP Active Server Page
أيضا هذه التقنية من ميكروسوفت، ويتم من خلالها بناء scripts يتم تنفيذها في Web Server الموجود على الخادم، يتم بناء الـ scripts بإستخدام VBScript و JavaScript ويتم وضع الكود داخل Tags وهي <% %> وتأخذ الصفحة لاحقة ASP ومن الأدوات المشهورة لبناء هذه الصفحات MS InterDev لكنه تم دمجه في نسخة Visual Studio .Net ولم يعد منتج مستقل.
ما ذكر يسمى ASP scripts وبالطبع لا يتم عملية ترجمة لها وكل مرة تستدعي الصفحة يتم ترجمتها لكن هناك نوع أخر يسمى ASP Objects ويتم بنائها ك Com Components بإستخدام Delphi وVisual Basic ويتم عملية ترجمة لها وهذه أسرع من النوع السابق لأنه يتم ترجمتها مرة واحدة وليس كل مرة يتم طلب الصفحة
مميزات تقنية ASP:
1. الإنتاجية هي الميزة الأهم لها وهي التى تركز ميكوسوفت عليها.
2. تكامل هذه التقنية مع تقنية COM مما يوفر لها مميزات قد لا توجد في التقنيات الأخرى.
3. هذه التقنية لها شعبية كبيرة ومنشرة بشكل كبير.
عيوبها:
1. تعتبر ابطأ من ال ISAPI و CGI.
2. تحتاج لوجود ASP.Dll ليتحمل وجوده في الذاكرة ليتم التعامل معها مما يضيف طبقة أخرى للبرنامج.
3. اقتصارها على بيئة Windows.
Delphi وتقنيات Web Applications:
كما ذكرت سابقا يعتبر Delphi من أقوى الأدوات لتطوير التقنيات التى استعرضتها سابقا من خلال توفيره ل Framework متكامل وهو ما يسمى WebBroker والذي يجعل من التطوير سهل جداً، فمثلا تقنية ISAPI ليست منتشرة كثيرا لأنها صعبة الإستخدام ب VC++ لكن من خلال Delphi يعطيك سهولة تطبيقها مع أفضل أداء لها وهو ما يعطيك معدل عالي للإنتاجية مع أفضل أداء للبرنامج.
أيضا يمكنك من خلال Delphi بناء برنامج واحد لكل من ISAPI/NSAPI دون الحاجة لإنشاء برنامجين بشكل منفصل ومخصص لكل تقنية، أيضا عملية الإنتقال من CGI إلى ISAPI تعتبر في غاية السهولة ويتوفر مع Delphi مجموعة من ال Wizards تساعدك في بناء ASP Objects، كذلك هناك بعض المشاكل والإعتبارات التى يجب أخذها بعين الإعتبار عن تطوير تقنية مثل ISAPI في لغات برمجة اخرى لكن Delphi أراح المبرمج من كل هذا بتضمنيه للحلول وليتح للمبرمج التركيز على التطوير فقط.
يمكنك الإطلاع على أداء كل من ISAPI و ASP في موقع ميكروسوفت على هذا الرابط
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnnile/html/docu2kbench.asp
تحيــــاتــي
الحــالمـــة
=========================
قد لا يعلم الكثيرون ان Delphi يعتبر من الأدوات القوية لتطوير برامج ومواقع كاملة على الانترنت او كما يعرف ب Web Applications أو Server-Side Applications، فهو يوفر الدعم لكثير من التقنيات المستخدمة مثل: CGI, Win-CGI, ISAPI/NAPI, ASP وايضا تم اضافة تقنيات جديدة مع النسخة السادسة من Delphi مثل WebSnap.
عند بداية ظهور الويب كانت الطرق السائدة آنذاك لانشاء المواقع هي انشاء الصفحة بمحرر نصوص او محرر صفحات ثم تخزينها على جهاز الخادم بلاحقة htm/html وعندما يأتي الزائر للموقع وطلبه لصفحة معينة يتم إرسال الصفحة له كاملة كما هي مخزنة على الخادم، تسمى الصفحات المنشئة بهذه الطريقة Static Pages اي صفحات ساكنة، لانه عند تخزينها تبقى كما هي وان اراد مطورو الموقع التعديل عليها، عليهم فتحها مرة اخرى بمحرر الصفحات ثم تخزينها، قد تكون هذه الطريقة كافية للمواقع الصغيرة والتى لا تحتاج اي تفاعل مع الزائر لكنها عقيمة في حالة ما أردت ان تعرض معلومات مخزنة في قاعدة البيانات او تعديل الصفحة حسب طلب الزائر لمعلومات معينة.
اللغة التي كانت مستخدمة لإنشاء هذه الصفحات هي HTML Hyper Text Mark-up Language وهي عبارة عن لغة وصفية تعتمد على Tags في التحكم بشكل الصفحة كيف تظهر وتتسم بالبساطة ومن السهل تعلمها في وقت قصير، لكنها تعاني من عندم قدرتها على التفاعل من المستعرض وايضا لا يمكن من خلالها القيام بالكثير من العمليات مثل الحسابية وعمليات التدقيق.
لحل مشكلة الصفحات الساكنة تم انشاء ال Dynamic Pages وهي صفحات دينامكية تتغير حسب الزائر او المعلومات المطلوبة، فمثلا كلنا زار مواقع مثل ياهو، عندما يبحث شخص معين عن معلومة فإن الصفحة سوف تُضَمن المعلومات المطلوبة وترسلها من جهاز الخادم الى المستعرض وبالطبع فإن هذه الصفحة انشئت عندما تم البحث عن المعلومة وليست مخزنة على الخادم.
من التقنيات الاولى التى استخدمت لانشاء الصفحات الدينامكية الـ CGI وهناك لغات عديدة تسمح بإنشاء هذا النوع من البرامج اشهرها Perl، ثم بعد ذلك تبعها الكثير من التقنيات التى سوف اوضح بعضها تباعاً.
أيضا هناك لغات إنشئت لتحسين التعامل مع ال HTML مثل JavaScript, VBScript وهي تدمج داخل صفحة ال HTML ويتم تنفيذها في المستعرض اي على جهاز الزائر للموقع، وهذه اللغات عبارة عن Scripts اي نصوص مكتوبة وتنفذ بشكل تسلسلي ولا يتم عملية ترجمة لها Compilation.
قبل الإنتقال الى التقنيات المستخدمة لا بد ان نعطي لمحة عن طريقة عمل Web Application ويمكن تلخيصها الى ثلاث خطوات هي:
1. يقوم المستعرض بطلب الصفحة وهذا ما يسمى Request.
2. يقوم ال Web Server الموجود على الجهاز الخادم بإخذ الطلب من المستعرض وإرساله إلى Web Application.
3. يقوم ال Web Application بمعالجة الطلب ثم إرسال الصفحة الى المستعرض وهو ما يسمى بالـ Response.
والفكرة الأساسية بصفة عامة تتلخص في عملية الطلب Request والإجابة Response.
أولا: CGI (Common Gateway Interface)
ال CGI هوا عبارة عن بروتوكل قياسي يتم من خلاله الاتصال بين المستعرض الموجود في جهاز الزائر و Web serverالموجود على جهاز الخادم، وهو يتيح للمستعرض السؤال عن البيانات من الخادم وإرسال البيانات ايضا الى الخادم
كما ذكرت سابقا كانت هذه من اوئل التقنيات لانشاء مواقع على الانترنت ذات صفحات ديناميكية، تتميز هذه الطريقة بسهولة التطوير وامكانية استخدام عدة لغات لتطويره هذه التقنية ويوضع البرنامج على الخادم وعادة يكون له لاحقة exe اذا كانت اللغة المستخدمة تقوم بعملية الترجمة ويكون على هذا الشكل:
www.myserver.com/mycgi.exe
أما اذا كانت اللغة المستخدمة Scripts فمن الممكن ان يكون بهذا الشكل
www.myserver.com/mycgi.pl
بالطبع فإن برامج CGI التى يتم إنشائها بلغات برمجة تقوم بعملية الترجمة الى Exe تكون أسرع من البرامج التى يستخدم Scripts لإنشائها لان ال Scripts تعتبر Interrupted حيث يلزمها عملية ترجمة كل مرة يتم فيها إستدعائها.
مميزات تقنية CGI:
1. سهولة وسرعة إنشائها.
2. دعم مجموعة كبيرة من لغات البرمجة لهذه التقنية.
3. مدعومة في العديد من نظم التشغيل وأغلب ال Web servers يمكنه التعامل معها.
عيوبها:
1. إستهلاك ذاكرة وموارد الخادم، لأن كل طلب للصفحة سوف يقوم بتحميل نسخة مستقلة من البرنامج مما يستهلك موارد جهاز الخادم بشكل كبير.
2. تعتبر بطيئة وعديمة الفعالية من ناحية الأداء.
3. صعوبة استخدامها وصيانتها في المواقع الكبيرة.
ثانيا: ISAPI/NSAPI Internet Server API/Netscape API
قامت شركة ميكروسوفت بإنشاء تقنية ISAPI وذلك للتغلب على العيوب التى كانت موجودة في CGI مع دعم لمجموعة تقنيات اخرى والبرامج المنشئة بهذه الطريقة تأخذ لاحقة DLL وهي شبيهة بال Servlets الموجودة في JAVA لكنISAPI أسرع منها من ناحية الأداء، وهناك تقنية مشابها من شركة نتسكيب وهي NSAPI ولكنها ليست منتشرة مثل الاولى، والميزة الكبرى في Delphi انه يتيح لك بناء برنامج واحد ليعمل على كل التقنيتن وسوف أركز في المقالة على ISAPI لأنها الأكثر انتشاراً
مميزات تقنية ISAPI:
1. تعطي أسرع أداء في تقنيات Web Applications المستخدمة.
2. سهولة إنشائها وتطبيقها من داخل Delphi.
3. فعاليتها من ناحية إستخدام الذاكرة والموارد، حيث أنه عند طلب البرنامج للمرة الأولى سوف يتم تحميل نسخة من الـ DLL في الذاكرة، ثم بعد ذلك أي طلب سوف يستخدم النسخة الموجودة في الذكرة.
عيوبها:
1. عند وجود نسخة محملة في الذاكرة، لا يمكن القيام بعملية Compilation الا في حالة قيامك بتفريغها من الذاكرة، أو بإيقاف ال Web Server وإعادة تشغيله.
2. إقتصارها على بيئة ويندوز و IIS لكن يوجد العديد من ال Web servers يدعم هذه التقنية.
3. في حالة انهيار الـ DLL قد يسبب ذلك إنهيار ال Web Server لكن ميكروسوفت حلت هذه المشكلة في نسخها الجديدة من IIS من خلال تخصيص منطقة ذاكرة محمية للـ DLL.
ثالثا: ASP Active Server Page
أيضا هذه التقنية من ميكروسوفت، ويتم من خلالها بناء scripts يتم تنفيذها في Web Server الموجود على الخادم، يتم بناء الـ scripts بإستخدام VBScript و JavaScript ويتم وضع الكود داخل Tags وهي <% %> وتأخذ الصفحة لاحقة ASP ومن الأدوات المشهورة لبناء هذه الصفحات MS InterDev لكنه تم دمجه في نسخة Visual Studio .Net ولم يعد منتج مستقل.
ما ذكر يسمى ASP scripts وبالطبع لا يتم عملية ترجمة لها وكل مرة تستدعي الصفحة يتم ترجمتها لكن هناك نوع أخر يسمى ASP Objects ويتم بنائها ك Com Components بإستخدام Delphi وVisual Basic ويتم عملية ترجمة لها وهذه أسرع من النوع السابق لأنه يتم ترجمتها مرة واحدة وليس كل مرة يتم طلب الصفحة
مميزات تقنية ASP:
1. الإنتاجية هي الميزة الأهم لها وهي التى تركز ميكوسوفت عليها.
2. تكامل هذه التقنية مع تقنية COM مما يوفر لها مميزات قد لا توجد في التقنيات الأخرى.
3. هذه التقنية لها شعبية كبيرة ومنشرة بشكل كبير.
عيوبها:
1. تعتبر ابطأ من ال ISAPI و CGI.
2. تحتاج لوجود ASP.Dll ليتحمل وجوده في الذاكرة ليتم التعامل معها مما يضيف طبقة أخرى للبرنامج.
3. اقتصارها على بيئة Windows.
Delphi وتقنيات Web Applications:
كما ذكرت سابقا يعتبر Delphi من أقوى الأدوات لتطوير التقنيات التى استعرضتها سابقا من خلال توفيره ل Framework متكامل وهو ما يسمى WebBroker والذي يجعل من التطوير سهل جداً، فمثلا تقنية ISAPI ليست منتشرة كثيرا لأنها صعبة الإستخدام ب VC++ لكن من خلال Delphi يعطيك سهولة تطبيقها مع أفضل أداء لها وهو ما يعطيك معدل عالي للإنتاجية مع أفضل أداء للبرنامج.
أيضا يمكنك من خلال Delphi بناء برنامج واحد لكل من ISAPI/NSAPI دون الحاجة لإنشاء برنامجين بشكل منفصل ومخصص لكل تقنية، أيضا عملية الإنتقال من CGI إلى ISAPI تعتبر في غاية السهولة ويتوفر مع Delphi مجموعة من ال Wizards تساعدك في بناء ASP Objects، كذلك هناك بعض المشاكل والإعتبارات التى يجب أخذها بعين الإعتبار عن تطوير تقنية مثل ISAPI في لغات برمجة اخرى لكن Delphi أراح المبرمج من كل هذا بتضمنيه للحلول وليتح للمبرمج التركيز على التطوير فقط.
يمكنك الإطلاع على أداء كل من ISAPI و ASP في موقع ميكروسوفت على هذا الرابط
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnnile/html/docu2kbench.asp
تحيــــاتــي
الحــالمـــة
=========================