فیل Global.asa یک فایل اختیاری است که می توان در ان تعریف اشیا ، متغیرها و متدها را قرار داد

و اینها را می توان در هر صفحه از application استفاده کرد

تمام سکریپت های معتبر مثل javascript , vbscript, jscript,perlscript, .... می توانند از Globab.asa استفاده کنند

در فایل Global.asa فقط می توان موارد زیر را قرار داد :

  • رویدادهای application
  • رویدادهای session
  • اعلانات <object>
  • اعلانات Typelibrary
  • دستور include#

 

 

فایل Global.asa را باید در مسیر ریشه application ذخیره کنیم

و هر application می تواند فقط از فایل Global.asa خودش استفاده کند

 
رویدادها در فایل Global.asa

 در این فایل شما می توانید به اشیای session , application بگوئید هنگام شروع به کار یک session  یا application چه کارهایی انجام دهند

و هنگام خاتمه یک session , application چه کارهایی انجام دهند

 کدهای مربوط به این رویداد در قسمت های معرفی رویدادها نوشته می شود

فایل Global.asa می تواند شامل چهار نوع event ( رویداد ) باشد :

 

 Application_OnStart

این رویداد زمانی رخ می دهد که اولین کاربر ، اولین صفحه از application را فرا بخواند

این رویداد بعد از اینکه سرور وب ری استارت شد یا بعد از اینکه فایل Global.asa ویرایش شد روی می دهد

 

Session_OnStart

این رویداد هر وقت که کاربر جدید اولین صفحه مورد نظرش را از application درخواست کرد روی می دهد

 

Session_OnEnd

این رویداد در هر زمانی روی می دهد که کاربری  یک جلسه را تمام کند

این رویداد بصورت پیش فرض اگر کاربر به مدت 20 دقیقه ( مدت زمان پیش فرض برای خاتمه دادن به جلسه بیکار ) هیچ تقاضای جدیدی از سرور وب نکند ، جلسه تمام می شود

 

Application_OnEnd

این رویداد زمانی روی می دهد که آخرین کاربر هم جلسه را تمام کند

در واقع می توان گفت این رویداد زمانی روی می دهد که سرور کارش تمام شده متوقف گشته است

این روال (procedure) ، برای پاک کردن تمام تنظیمات مثل حذف کردن رکوردها یا نوشتن اطلاعات در فایلهای متنی ، بعد از توقف application هم بکار می رود

 
 یک فایل Global می تواند چیزی شبیه زیر باشد :

 

<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>

 

 کد بالا بسیار راحت است

به زبان vbscript نوشته شده است

در این زبان زیر برنامه یا همان پروسیجر را بصورت زیر تعریف می کنیم :

sub نام رویداد
دستورات
end sub

 

نکته : 

از انجائیکه  در فایل Global.asa نمی توانیم از علامت شروع و پایا ن اسکریپت asp یعنی

<%    %>

استفاده کنیم  لذا باید دستورات اسکریپت را در تگ باز و بسته زیر بنویسیم :

<script language="vbscript" runat="server">

 

دستورات اسکریپت

</script>

 این دستورات در سرور اجرا می شود و نتیجه خروجی ان اگر لازم باشد به سیستم کاربر باز پس داده شده و در مرورگر وی  نمایش می یابد
 
اعلانات object
 این امکان وجود دارد که برای session یا برای application با استفاده از تگ object اشیایی را تعریف کنیم
 روش نوشتن تگ object :

 

<object runat="server" scope="scope" id="id" {progid="progID"|classid="classID"}>
....
</object>

 
 اشنایی با پارامترها :

 scope : 

مشخص می کند شی ساخته شده برای session است یا برای application

 id : 

یک شماره شناسایی منحصر بفرد به شی ساخته شده اختصاص می دهد

 ProgID :

ای دی هست که توسط کلاس ای دی تخصیص داده شده است

برای ProgID ، قالب این ای دی بصورت زیر است :

[Vendor.]Component[.Version]

یکی از دو مورد ProgID یا ClassID باید استفاده شود

 

 ClassID :

یک ای دی یکتا و منحصر بفرد برای شی کلاس COM  مشخص می کند

یکی از دو مورد ProgID یا ClassID باید استفاده شود

 

 
 

 مثال :

اولین مثال یک شی به نام MyAd برای قلمرو کاری جلسه (session) با استفاده از پارامتر ProgID  ایجاد می کند :

 

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

 
 دومین مثال یک شی به نام MyConnection برای قلمرو کاری application با استفاده از پارامتر ClassID ایجاد می کند :

 

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

 
 شی تعریف شده در فایل Global.asa را می توان در هر اسکریپت این application مورد استفاده قرار داد :

 

GLOBAL.ASA:

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

You could reference the object "MyAd" from any page in the ASP application:

SOME .ASP FILE:

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

 
اعلانات TypeLibrary
 یک TypeLibrary  یک ظرفی است برای محتوای فایل dll که ارسال می شوند به یک شی com
 توسط دستور فراخوانی به TypeLibrary  که در فایل Global.asa وجود دارد ، محتوای شی com می توانند در دسترس و مورد استفاده باشند
 و همچنین خطاها و اشکالات پیش امده را نیز می توان بهتر با کد asp گزارش داد
 اگر application وب شما به اشیای com ای که اعلانات نوع داده در TypeLibrary  شان دارند اتکا کند ، شما می توانید کتابخانه نوع داده را در Global.asa استفاده کنید
 روش استفاده :

 

<!--METADATA TYPE="TypeLib"
file="filename" uuid="id" version="number" lcid="localeid"
-->
 
 آشنایی با پارامترها :

 file :

یک مسیر مطلق را برای دسترسی به کتابخانه نوع داده مشخص می کند

یکی از دو پارامتر file یا uuid باید استفاده شوند

 uuid :

یک شناسه منحصر بفرد را برای کتابخانه نوع داده مشخص می کند

یکی از دو پارامتر file یا uuid باید استفاده شوند

 version:

استفاده از این پارامتر اختیاری است

برای نسخه انتخاب شده بکار می رود

اگر نسخه تقاضاشده پیدا نشد ، انگاه جدیدترین  نسخه مورد استفاده قرار می گیرد

 lcid:

استفاده از این پارامتر اختیاری است

یک شناسه محلی جهت استفاده از کتابخانه نوع داده است

 
 
 مقادیر خطا :

 کد خطای ASP 0222 :

کتابخانه نوع (type) مشخص شده غیر معتبر است

 کد خطای ASP 0223 :

کتابخانه نوع (type) پیدا نشد

 کد خطای ASP 0224 :

کتابخانه نوع (type) غیر قابل بار گذاری است

 کد خطای ASP 0225 :

کتابخانه نوع (type) غیر قابل پنهان شدن است

 

( کلمه wrapped را پنهان شدن ترجمه کرده ام )

 

 نکته :

تگ های METADATA  را در هر جایی از فایل Global.asa می توان نوشت

( یعنی هم درون و هم بیرون تگ های <script> )

اما بهتر است که تگ های METADATA  را نزدیک به بالاترین قسمت فایل  Global.asa بنویسید

 
محدودیتها

محدودیتها به شما می گوید چه چیزهایی را نمی توان در فایل Global.asa قرار داد

 

 

  •  در فایل Global.asa نمی توانید متن نوشته شده را نمایش دهید . این فایل نمی تواند دستوراتی برای نمایش خروجی به کاربر داشته باشد

 

  •  شما در رویدادهای Application_OnStart و Application_OnEnd  فقط می توانید از اشیای Server و Application استفاده کنید و در رویداد Session_OnEnd  شما می توانید از اشیای Server, Application, و Session استفاده کنید و در رویداد Session_OnStart شما می توانید از هر شی درون ساخته ای هم استفاده نمائید
 
روش استفاده از زیر برنامه ها

 از فایل Global.asa اغلب برای مقدار دهی اولیه به متغیرها استفاده می شود

 

 مثال زیر نشان می دهد چگونه می توان زمان دقیق اولین دستیابی کاربر به وب سایت را تشخیص داد

و مقدار متغیر started می تواند در هر صفحه ی asp موجود در application مورد استفاده قرار گیرد

 

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

 

 همانطور که ملاحظه کردید ، در رویداد Session_OnStart 

که گفتیم وقتی روی می دهد که کاربر اولین صفحه از application را بخواهد ، بلافاصله یک متغیر جلسه به نام started ایجادشده و  مقدار زمان و تاریخ همان لحظه سرور وب با تابع now بدست امده و در این متغیر جلسه ،  قرار می گیرد

همچنین  از Global.asa می توان برای کنترل دسترسی به صفحه نیز استفاده کرد

 مثال زیر نشان می دهد چگونه کاربر را به سمت صفحه دیگری که نامش newpage.asp است هدایت می کنیم

با درخواست صفحه مورد نظر کاربر یک جلسه اغاز می شود و در ان نمایش صفحه دیگر با دستور Response.Redirect اجرا می شود

 

<script language="vbscript" runat="server">


sub Session_OnStart
Response.Redirect("newpage.asp")
end sub


</script>

 

 و همچنین شما می توانید تابع هایی را د ر فایل Global.asa قرار دهید

در مثال زیر ، رویداد Application_OnStart  زمانی که وب سرور شروع بکار می کند ، اتفاق می افتد

سپس رویداد Application_OnStart یک زیر برنامه دیگر به نام getcustomers را صدا می زند

زیر برنامه getcustomers یک بانک اطلاعاتی را باز می کند و رکورد ستی را از جدول customer می گیرد

رکورد ست به یک ارایه تخصیص داده می شود

و  از این به بعد در هر صفحه asp دیگری از این application می توان بدون نیاز به نوشتن کوئری ، از داده های موجود در این ارایه استفاده کرد

( این مثال می خواهد نشان دهد که علاوه بر چهارزیر برنامه ازقبل مشخص می توانیم زیر برنامه های  خودمان را نیز در Global.asa تعریف کنیم )

 

<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  سرور شروع به کار کرد ،  مقدار متغیر Application  با نام visitors را برابر صفر می کند 
  •  روال Session_OnStart  هر وقت فرد جدیدی رسید ، یک واحد به این متغیر می افزاید
  •  روال Session_OnEnd هر وقت بازدید کننده ای اتصالش با سرور قطع شد ، یک واحد از این متغیر می کاهد
 
 فایل 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 ما هستند می توان در فایل Asp ای که کاربر در حال مشاهده ان است ، دستورات زیر را اضافه کرد :

 

<!DOCTYPE html>
<html>
<head>
</head>
<body>
<p>There are <%response.write(Application("visitors"))%> online now!</p>
</body>
</html>

 

 همانطور که قبلا گفتم ، اگر در صفحه وبی که می خواهیم به کاربر نشان دهیم علاوهبر دستورات html دستورات Asp هم باشد باید

اولا :

ان فایل را با پشوند asp ذخیره کنیم

دوم اینکه :

دستورات asp در سرور اجرا شده نتیجه ان در مرورگر کاربر نمایش داده می شود

در این برنامه بسیار ساده ، مقدار متغیر Application با نام visitors در بین محتوای تگ p نشان داده می شود

سوم اینکه :

کمترین دستور asp باید در بین تگ های باز و بسته <%  %> قرار بگیره

 

 

برنامه نویسی با asp به نظر من خیلی  زیبا جذاب و جالبه

نظر شما چیه ؟!