ملف Global.asa لـ ASP

ملف Global.asa هو ملف اختياري يمكن أن يحتوي على بيانات يمكن الوصول إليها من قبل كل صفحة في تطبيق ASP، بالإضافة إلى إعلانات الأهداف، والمتغيرات، والأساليب. يمكن استخدام جميع سكريpts البرامج المشروعة في Global.asa.

ملف Global.asa

ملف Global.asa هو ملف اختياري يمكن أن يحتوي على بيانات يمكن الوصول إليها من قبل كل صفحة في تطبيق ASP، بالإضافة إلى إعلانات الأهداف، والمتغيرات، والأساليب. يمكن استخدام جميع سكريpts البرامج المشروعة في Global.asa.

يمكن أن يحتوي ملف Global.asa على ما يلي:

  • أحداث Application
  • أحداث Session
  • بيان <object>
  • إعلان TypeLibrary
  • تعليمات #include

التعليقات:ملف Global.asa يجب أن يتم تخزينه في مجلد الجذر لبرنامج ASP، ويجب أن يكون هناك ملف Global.asa واحد فقط لكل تطبيق.

حدث Global.asa

في Global.asa، يمكننا إخبار تطبيق session في بداية وتنتهي بما يجب القيام به. يتم وضع الكود الذي يقوم به هذه المهمة في محول الحدث. يمكن أن يحتوي ملف Global.asa على أربعة أنواع من الحدثات:}}

Application_OnStart - يحدث هذا الحدث في كل مرة يطلب فيها المستخدم الأول صفحته الأولى في تطبيق ASP. يحدث حدث "Session_OnStart" فور حدوث هذا الحدث ويكون هذا الحدث بعد إعادة تشغيل خادم الويب أو تعديل ملف Global.asa.

Session_OnStart - يحدث هذا الحدث في كل مرة يطلب فيها مستخدم أول صفحة في تطبيق ASP.

Session_OnEnd - يحدث هذا الحدث في كل مرة ينتهي فيها المستخدم من session. إذا لم يتم طلب صفحة في مدة محددة (يكون الحدث الافتراضي 20 دقيقة)، تنتهي session.

Application_OnEnd - يحدث هذا الحدث بعد أن ينتهي آخر مستخدم من session الخاص به. في الحالة التقليدية، يحدث هذا الحدث عند إيقاف تشغيل خادم الويب. يستخدم هذا البرنامج الفرعي لتنظيف الإعدادات بعد إيقاف التطبيق، مثل حذف السجلات أو كتابة معلومات إلى ملف نصي.

يمكن أن تشبه ملف Global.asa مثل هذا:

<script language="vbscript" runat="server">
المتحكم Application_OnStart
  'كود معين
end sub
المتحكم Application_OnEnd
  'كود معين
end sub
المتحكم Session_OnStart
  'كود معين
end sub
المتحكم Session_OnEnd
  'كود معين
end sub
</script>

التعليقات:بسبب عدم وجود محددة للسكربت في ملف Global.asa (<% و %>)، يجب استخدام عنصر <script> من HTML.

بيان <object>

يمكن إنشاء عناصر بملكول Global.asa باستخدام علامة <object> لتكون بملكول session أو application.

التعليقات:يجب أن يكون علامة <object> خارج علامة <script>.

النحو:

<object runat="server" scope="scope" id="id"
{progid="progID"|classid="classID"}>
....
</object>
المعامل وصف
scope تعيين نطاق العنصر (مجال أو تطبيق).
id تحديد id فريد للعنصر.
ProgID

id مرتبط ب ClassID. صيغة ProgID هي: [Vendor.]Component[.Version].

ProgID أو ClassID يجب تحديده.

ClassID

تحديد id فريد للعنصر COM.

ProgID أو ClassID يجب تحديده.

مثال

تم إنشاء المثال الأول تحت اسم "MyAd" كعنصر نطاق session باستخدام معامل ProgID:

<object runat="server" scope="session" id="MyAd" progid="MSWC.AdRotator"
</object>

تم إنشاء المثال الثاني تحت اسم "MyConnection" باستخدام معامل ClassID.

<object runat="server" scope="application" id="MyConnection"
classid="Clsid:8AD3067A-B3FC-11CF-A560-00A0C9081C21"
</object>

يمكن استخدام الأشياء المعلنة في هذا ملف Global.asa من أي سكربت في التطبيق.

GLOBAL.ASA:

<object runat="server" scope="session" id="MyAd" progid="MSWC.AdRotator"
</object>

يمكنك استدعاء هذا العنصر "MyAd" من أي صفحة في تطبيق ASP:

ملف .ASP:

<%=MyAd.GetAdvertisement("/banners/adrot.txt")%> 

إعلان TypeLibrary

TypeLibrary (مكتبة النوع) هي وعاء يحتوي على ملفات DLL التي تتعلق بمكونات COM. من خلال تضمين استدعاء مكتبة النوع في Global.asa، يمكن الوصول إلى المعادلات الثابتة للمكونات COM، ويمكن أن يحقق كود ASP أيضًا تقارير الأخطاء بشكل أفضل. إذا كان تطبيق موقعك يعتمد على مكونات COM تم إعلانها مسبقًا في مكتبة النوع، يمكنك إعلان مكتبة النوع في Global.asa.

النحو:

<!--METADATA TYPE="TypeLib"
file="filename"
uuid="typelibraryuuid"
version="versionnumber"
lcid="localeid"
-->
المعامل وصف
file يحدد المسار المطلق لمكتبة النوع. يجب أن يكون المعامل file أو uuid، ولا يمكن التغاضي عن أحدهما.
uuid يحدد معرف فريد لمكتبة النوع. يجب أن يكون المعامل file أو uuid، ولا يمكن التغاضي عن أحدهما.
version اختياري. ميزة اختيار الإصدار. إذا لم يتم العثور على الإصدار المحدد، سيتم استخدام الإصدار الأقرب.
lcid اختياري. ميزة تحديد منطقة مكتبة النوع.

قيمة الخطأ

سيقوم الخادم بإرجاع أحد الرسائل التالية من الأخطاء:

خطأ الكود وصف
ASP 0222 محددات مكتبة النوع غير صحيحة
ASP 0223 لم يتم العثور على مكتبة النوع
ASP 0224 لا يمكن تحميل مكتبة النوع
ASP 0225 لا يمكن تغليف مكتبة النوع

التعليقات:يمكن وضع علامة "METADATA" في أي مكان في ملف Global.asa (داخل وخارج علامة <script>). ومع ذلك، نوصي بوضع علامة "METADATA" في أعلى ملف Global.asa.

الحدود

حدود المعلومات التي يمكن استخدامها في ملف Global.asa:

لا يمكنك عرض النص الموجود في ملف Global.asa. لا يمكن عرض معلومات هذا الملف.

يمكنك استخدام أوبجكتات Server و Application فقط في عمليات "Application_OnStart" و "Application_OnEnd"، في عملية "Session_OnEnd" يمكنك استخدام أوبجكتات Server و Application و Session، وفي عملية "Session_OnStart" يمكنك استخدام أي من الأوبجكتات المدمجة.

كيفية استخدام العمليات الفرعية

يُستخدم Global.asa غالبًا لتحديد المتغيرات.

المثال التالي يوضح كيفية إيجاد الوقت الدقيق لقدوم الزائر الأول إلى الموقع. يتم تخزين الوقت في Session对象 يحمل الاسم "started"، ويمكن للصفحات ASP في التطبيق الوصول إلى قيمة هذا المتغير:

<script language="vbscript" runat="server">
sub Session_OnStart
Session("started")=now()
end sub
</script>

يمكن استخدام Global.asa أيضًا للتحكم في الوصول إلى الصفحات.

المثال التالي يوضح كيفية إعادة توجيه كل زائر جديد إلى صفحة أخرى، في هذا المثال سيتم توجيه إلى صفحة "newpage.asp":

<script language="vbscript" runat="server">
sub Session_OnStart
Response.Redirect("newpage.asp")
end sub
</script>

يمكننا أيضًا تضمين الدوال في ملف Global.asa.

في المثال التالي، عند بدء تشغيل خادم الويب، يتم بدء عملية "Application_OnStart" أيضًا. بعد ذلك، يتم استدعاء عملية "getcustomers" الأخرى. عملية "getcustomers" ستفتح قاعدة بيانات، ثم ستحصل على مجموعة سجلات من جدول "customers"، هذه المجموعة ستُنقل إلى مصفوفة، ويمكن لأي صفحة ASP الوصول إلى هذه المصفوفة دون استعلام قاعدة البيانات:

<script language="vbscript" runat="server">
sub Application_OnStart
getcustomers
end sub
sub getcustomers 
set conn=Server.CreateObject("ADODB.Connection")
conn.Provider="Microsoft.Jet.OLEDB.4.0"
conn.Open "c:/webdata/northwind.mdb"
set rs=conn.execute("select name from customers")
Application("customers")=rs.GetRows
rs.Close
conn.Close
end sub
</script>

مثال Global.asa

في هذا المثال، سنقوم بإنشاء ملف Global.asa يمكنه حساب عدد الزوار الحاليين.

يضبط Application_OnStart قيمة المتغير "visitors" في Application عند بدء تشغيل الخادم إلى 0.

عندما يزور مستخدم جديد فإن عملية Session_OnStart ستقوم بزيادة قيمة المتغير "visitors" بـ 1.

عندما يتم إطلاق عملية Session_OnEnd فإن هذه العملية ستقوم بإنقاص قيمة المتغير "visitors" بـ 1.

ملف Global.asa:

<script language="vbscript" runat="server">
Sub Application_OnStart
Application("visitors")=0
End Sub
Sub Session_OnStart
Application.Lock
Application("visitors")=Application("visitors")+1
Application.UnLock
End Sub
Sub Session_OnEnd
Application.Lock
Application("visitors")=Application("visitors")-1
Application.UnLock
End Sub
</script>

هذا ملف ASP سيظهر عدد المستخدمين الحاليين:

<html>
<head>
</head>
<body>
<p>هناك <%response.write(Application("visitors"))%> حاليًا على الخط!</p>
</body>
</html>