Global.asa (ASP Global.asa)
فایل «Global.asa» دفتر کل برنامه است. این فایل رویدادها و تنظیمات سراسری را نگه می دارد. «رویداد (Event)» یعنی کدی که در زمان مشخص اجرا می شود، مثل شروع نشست.
Global.asa چه می کند؟
می توانی برای کل برنامه متغیر بسازی، شیء بسازی، و رویدادها را هندل کنی. فقط یک Global.asa در ریشه برنامه مجاز است.
رویدادهای اصلی در Global.asa
چهار رویداد کلیدی داریم: Application_OnStart، Application_OnEnd، Session_OnStart، Session_OnEnd.
<script language="vbscript" runat="server">
sub Application_OnStart
' some code
end sub
sub Application_OnEnd
' some code
end sub
sub Session_OnStart
' some code
end sub
sub Session_OnEnd
' some code
end sub
<\/script>
نکته: اسکریپت ها داخل تگ <script> قرار می گیرند، نه با <% و %>.
شیء با محدوده نشست/برنامه
می توانی با تگ <object> شیء COM با scope نشست یا برنامه بسازی.
<object runat="server" scope="session" id="MyAd" progid="MSWC.AdRotator">
</object>
<object runat="server" scope="application" id="MyConnection" classid="Clsid:8AD3067A-B3FC-11CF-A560-00A0C9081C21">
</object>
استفاده از شیء در صفحات
GLOBAL.ASA:
<object runat="server" scope="session" id="MyAd" progid="MSWC.AdRotator">
</object>
SOME .ASP FILE:
<%=MyAd.GetAdvertisement("/banners/adrot.txt")%>
TypeLibrary در Global.asa
با METADATA می توانی تایپ لایبرری را معرفی کنی. سپس ثابت ها و خطاها دقیق تر می شوند.
<!--METADATA TYPE="TypeLib"
file="filename"
uuid="id"
version="number"
lcid="localeid"
-->
محدودیت ها
Global.asa خروجی صفحه نشان نمی دهد. دسترسی اشیاء در هر رویداد محدود است.
نمونه ها: مقداردهی و هدایت
زمان شروع کاربر را در نشست ذخیره کن.
<script language="vbscript" runat="server">
sub Session_OnStart
Session("started") = now()
end sub
<\/script>
بازدیدکننده جدید را به صفحه دیگری بفرست.
<script language="vbscript" runat="server">
sub Session_OnStart
Response.Redirect("newpage.asp")
end sub
<\/script>
نمونه: کش ساده داده ها
در شروع برنامه، داده ها را یک بار بگیر و در Application نگه دار.
<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>
نمونه: شمارش بازدیدکنندگان آنلاین
با قفل برنامه، مقدار را ایمن افزایش یا کاهش بده.
<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:
<!DOCTYPE html>
<html>
<head>
</head>
<body>
<p>There are <% response.write(Application("visitors")) %> online now!</p>
</body>
</html>
گام های عملی سریع
- یک Global.asa در ریشه برنامه بساز.
- Application_OnStart را برای تنظیمات اولیه پر کن.
- Session_OnStart را برای ثبت ورود کاربر تکمیل کن.
جمع بندی سریع
- Global.asa فقط یکی است و در ریشه است.
- رویدادها زمان های مهم را پوشش می دهند.
- از Application.Lock برای داده مشترک استفاده کن.
- خروجی مستقیم از Global.asa ممکن نیست.
Global.asa را نشانه گذاری کن تا سریع برگردی.