في الفصول السابقة، أكملنا مناقشة عامة لبرامج CGI. هنا، أقدم برنامجًا توضيحيًا بسيطًا كملخص للمحتوى السابق.
لاستخدام هذا البرنامج، تحتاج إلى أحدث إصدار تجريبي من OmniHTTPD: OmniHTTPD 2.0b1 (beta 1) لنظام التشغيل Windows 95/NT. إذا لم يكن لديك، يمكنك تنزيله هنا (oh20b1.zip).
طريقة تثبيت OmniHTTPD هي نفسها الموجودة في المحاضرة الأولى، لذا لن أخوض فيها هنا. سأتحدث فقط عن بعض مشكلات الإعداد في هذا الإصدار هنا:
افتح مربع الحوار إعدادات خاصية OmniHTTPD، واستخدم زر الإعداد العام لخادم الويب، وانتقل إلى الصفحة الخارجية، واحذف إعدادات .cgi. عند عدم حذفها، تتم معالجة برامج CGI ذات الامتداد cgi كبرامج Perl، في الدورة التدريبية لدينا، يكون امتداد برنامج CGI في لغة Perl هو .pl، وامتداد برنامج CGI المترجم هو .cgi يجب تعديل الإعدادات مثل هذا.
في هذا الإصدار من OmniHTTPD، تم تحسين دعم أوامر SSI (تضمين جانب الخادم) بشكل كبير مقارنة بالإصدارات السابقة، كما يتم دعم أوامر مثل include وexec. في البرنامج التجريبي، استخدمت هذه الأوامر.
بعد أن تقوم بتحميل (ex8.zip)، فإنه يحتوي على ثلاثة ملفات: Index.shtml، makelog.cpp، makelog.exe. Index.shtml هو برنامج نصي يحتوي على أوامر SSI، يرجى نسخه إلى دليل c:httpdhtdocs؛ makelog.exe هو برنامج CGI، يرجى نسخه إلى دليل c:httpdcgi-bin؛ makelog.cpp هو الملف المصدر لـ makelog. exe، إذا كنت ترغب في تعديل التحويل البرمجي، فيجب عليك استخدام مترجم 32 بت، مثل VC، وإلا فلا يمكن استخدامه.
بالإضافة إلى ذلك، تحتاج إلى إجراء تعديل على الإعدادات في OmniHTTPD: حدد الإعداد الظاهري الافتراضي وقم بتغيير الفهرس الافتراضي إلى Index.shtml في صفحة الخادم. بهذه الطريقة، عندما تكتب http://localhost في المتصفح، يقوم OmniHTTPD تلقائيًا بتحميل ملف Index.shtml.
قم بإنشاء مستند ويب آخر واحفظه في الدليل c:httpdhtdocs باسم الملف Index.html. عند استخدام مستعرض للوصول إلى المضيف المحلي، يقوم ملف Index.shtml أولاً باستدعاء makelog.exe لتخزين معلومات وصول المستخدم، ثم استدعاء ملف Index.html لعرضه في المستعرض. يتم تخزين معلومات وصول المستخدم في ملف سجل المستخدم في الدليل c:httpdcgi-bin.
يستخدم هذا المثال متغيرات البيئة الأساسية وتقنية SSI في مواصفات CGI، يرجى دراستها بعناية.
4. قاعدة البيانات
من بين تطبيقات CGI، تعكس تطبيقات قواعد البيانات بشكل أفضل الوظائف القوية لبرامج CGI. هناك العديد من قواعد البيانات على الإنترنت، كما أن الطلب على تطبيقات الويب الخاصة بقواعد البيانات هذه يتزايد أيضًا (سواء كان من الشركات أو المستخدمين). يمكن القول أن الويب نفسه عبارة عن قاعدة بيانات ضخمة. إن كيفية تنظيم مجموعات البيانات الضخمة هذه بشكل فعال ونشرها على الويب هو موضوع تحله CGI وأنظمة قواعد البيانات بشكل مشترك.
إذا كنت ترغب في تصنيف تطبيقات CGI وقواعد البيانات، فهناك طرق تصنيف مختلفة من وجهات نظر مختلفة. على سبيل المثال، وفقًا لحجم قاعدة البيانات، يمكن تقسيمها إلى قاعدة بيانات نصية وقاعدة بيانات محلية (Microsoft Access وما إلى ذلك) وخادم قاعدة بيانات (MS SQL Server وInformix وما إلى ذلك) وفقًا لمحتوى معالجة CGI يمكن تقسيمها إلى برنامج CGI لقاعدة بيانات الواجهة الأمامية (مع المستخدمين الذين يستخدمون برامج CGI التفاعلية) وبرامج CGI لقاعدة البيانات الخلفية (برامج CGI التي تتفاعل مع قاعدة البيانات)، وما إلى ذلك. يعتمد اختيار حجم قاعدة البيانات عادةً على حجم البيانات وتكلفة المهام التي تريد إكمالها؛ سواءً كان فصل الواجهة الأمامية أو الخلفية أو دمجها عند برمجة برامج CGI يعتمد عادةً على مدى تعقيد معالجة البيانات لديك.
عادةً، إذا كانت مجموعة البيانات الخاصة بك في حدود بضعة ميغابايت، ولا توجد علاقات معقدة بين سجلات البيانات الخاصة بك، فيمكنك اختيار إنشاء قاعدة بيانات تحتوي على ملفات نصية، مما يحافظ على التكاليف عند الحد الأدنى ويحتوي على قاعدة بيانات للملفات النصية نظام الإدارة (DBMS، أي نظام إدارة قاعدة البيانات) لا يحتوي على: إذا حدث خطأ في بياناتك، فيمكنك نقل ملفك النصي إلى أي محرر نصوص لاسترداده، وإذا حدث خطأ في نظام قاعدة البيانات الخاصة بك، إلا إذا كنت خبير قاعدة بيانات, وإلا سيكون من الصعب إصلاحه.
إذا كانت مجموعة البيانات الخاصة بك كبيرة جدًا، أو إذا كانت سجلات البيانات الخاصة بك بها علاقات معقدة فيما بينها، فمن الأفضل استخدام نظام قاعدة البيانات. إن استخدام الملفات النصية لتنفيذ قاعدة بيانات يبلغ حجمها عشرات الميجابايت من شأنه أن يطغى على أي خادم RISC متقدم. إذا كنت تستخدم برنامج CGI للتعامل مع العلاقات المعقدة بين البيانات، فسيؤدي ذلك حتماً إلى زيادة تعقيد برنامج CGI ويشغل الكثير من موارد الخادم، ومن ناحية أخرى، فإن استخدام وظائف نظام قاعدة البيانات يمكن أن يبسط صعوبة تصميم برنامج CGI وتحسين كفاءة التنمية.
عند اختيار نظام قاعدة بيانات، عليك الاختيار من بين الجوانب التالية: 1. النظام الأساسي لنظام التشغيل: يجب عليك اختيار نظام قاعدة البيانات الأكثر دراية به، كما يجب عليك أيضًا اختيار النظام الأساسي لنظام التشغيل الأكثر دراية به فقط بهذه الطريقة يمكنك تجنب الأخطاء. 2. السعر: يجب عليك اختيار أرخص نظام من بين أنظمة قواعد البيانات المختلفة التي يمكنها إكمال عملك. هنا، يمكنني أن أخبرك عن نظام قاعدة بيانات مجاني يسمى MiniSQL، ويجب أن يعمل على نظام التشغيل UNIX أو Linux يوجد نظام قاعدة بيانات مجاني لمنصة Windows إذا كان أي شخص يعرف ذلك، من فضلك أخبرني وسأخبرك في الدورات القادمة.
دورتنا تدور حول استخدام دلفي لتطوير برامج CGI، وتوفر دلفي نظام قاعدة البيانات Interbase Server، لذلك سأتحدث بشكل أساسي عن تطوير برامج CGI باستخدام نظام قاعدة البيانات هنا. في الوقت نفسه، نظرًا لأن نظام قاعدة البيانات يقلل الكثير من أعمال الترميز، فقد قمت بدمج CGI للواجهة الأمامية وCGI للواجهة الخلفية في برنامج واحد لإكمال معالجة إدخال المستخدم وعمليات قاعدة البيانات في برنامج CGI واحد. ولكن على منصات النظام الأخرى، لا يجوز استخدام هذه الطريقة، حيث يُطلب من القراء اتخاذ قراراتهم الخاصة بناءً على المناقشة السابقة.
هنا، أود أن أشرح العديد من CGIs المختلفة واختلافاتها في استخدامها في OmniHTTPD الخاص بنا:
Standard CGI: يجب وضع CGI القياسي في الدليل الذي تم تعيينه بواسطة /cgi-bin/ ويمكن تعديله في أي وقت أثناء تشغيل OmniHTTPD.
Win CGI: يجب وضع CGI المطبق في أنظمة Windows في الدليل الذي تم تعيينه بواسطة /cgi-win/. يستخدم CGI ملف INI للحصول على الطلبات من متصفح العميل، بدلاً من استخدام متغيرات البيئة أو الإدخال القياسي. نحن عمومًا لا نستخدم هذا النوع من CGI.
ISAPI: مواصفات CGI تستخدم مكتبات الارتباط الديناميكي التي تقترحها Microsoft.
NSAPI: مواصفات CGI تستخدم مكتبات الارتباط الديناميكي التي اقترحتها Netscape.
كل من مواصفات CGI هذه لها خصائصها الخاصة: يمكن كتابة CGI القياسية باستخدام برامج قابلة للتنفيذ أو لغات البرمجة النصية مثل Perl، ولكنها غير فعالة وتستهلك الكثير من الموارد، وسيكون لكل طلب CGI مثيل لبرنامج CGI يعمل في الخادم. يتمتع Win CGI بنفس ميزات Stardand CGI. ISAPI وNSAPI فعالان للغاية ومقيمان في الذاكرة، وبغض النظر عن عدد طلبات CGI الموجودة، هناك مثيل واحد فقط يعمل في الخادم، تختلف مجموعة البيانات المقابلة لهذا المثيل، ولكن هذا النوع من CGI ليس بالأمر السهل لتصحيح الأخطاء لأنه يجب أن يكون على خادم الويب، تتوفر التحديثات فقط عند إغلاق البرنامج.
في المحاضرة القادمة سأقدم برنامج توضيحي للصفحة البيضاء. White Page عبارة عن قائمة بعناوين البريد الإلكتروني، ويمكنك السماح للمستخدمين بالاستعلام عن هذه القائمة وتعديلها وإضافتها وحذفها من خلال متصفح الويب. في هذه المحاضرة، البرنامج التوضيحي الذي قدمته هو مجرد عملية استعلام، وسيتم وصف العمليات الأخرى في الدورات اللاحقة.
تم بناء هذا البرنامج التوضيحي على قاعدة بيانات Borland Interbase Server وتم تطويره في دلفي. أثناء التطوير، اخترت Standard CGI لأنه من الأسهل تصحيح الأخطاء.
برنامجنا مكتوب باستخدام Stardand CGI، والذي يمكن تصحيحه بسهولة. بعد نجاح عملية التصحيح، يمكن تغييرها بسهولة إلى ISAPI/NSAPI في دلفي باستخدام عبارة واحدة فقط (وماذا عن ذلك، دلفي جيدة جدًا!).