מדריך ASP – האובייקט Application

Application
אוספים (Collections)תכונות (Properties) שיטות (Methods) ארועים (Events)
Contents LockOnStart
StaticObjects UnlockOnEnd

מהי אפליקציה?


אפילקצית אינטרנט מוגדרת ככל הקבצים (asp,htm…) הנמצאים תחת ספרייה וירטואלית כלשהי, ותתי הספריות שלה. שרת אחד מריץ
יותר מאפליקציה אחת. האובייקט Application מכיל מידע על האפליקציה, ומשמש כדי לשתף מידע בין כל משתמשי האפליקציה.

Application.Contents


זהו אוסף כל הנתונים אשר הוספו לאפליקציה. כדי להוסיף נתון ("משתנה Application") נכתוב בדף ה-asp:

<% Application("VarName") = "Hello"%> 

נוכל לגשת למשתנה, לשנותו, להדפיסו או להוסיף משתנים חדשים מכל קבצי ה-asp באפליקציה, בצורה הבאה:

<% Response.Write( Application("VarName")) %> <br>

מעבר על כל האוסף:

VBScriptJScript

<% 
    For Each Key In Application.Contents
        Response.Write (Key & "=" & Application(key) & "<br>")
    Next 
%> 


<%@ Language=Jscript%>
<% 
var fields = new Enumerator(Application.Contents);
while(!fields.atEnd()){
    field = fields.item();
    Response.Write (field+"="+Application(field)+"<br>")
    fields.moveNext();
} 
%>

המאפיין Application.Contents.Count יזיר לנו את מספר הערכים המאוכסנים באוסף.

Application.StaticObjects


הוא אוסף כל המשתנים שנוצרו באפליקציה באמצעות התג <OBJECT> (ולא באמצעות Server.CreateObject).
זוהי לולאה שעוברת על כל האוסף ומדפיסה את שמו וערכו של כל אובייקט:

VBScriptJScript

<% 
    Dim ObjProp 
     
    For Each ObjProp in Application.StaticObjects
     Response.write ObjProp & " : "_
     & Application.StaticObjects(ObjProp) &"<BR>"
    Next 
%> 


<%@ Language=Jscript%>
<% 
var fields = new Enumerator(Application.StaticObjects);
while(!fields.atEnd()){
    field = fields.item();
    Response.Write (field+"="+Application.StaticObjects(field)+"<br>")
    fields.moveNext();
} 
%>

Application.Lock ו- Application.Unlock


כאמור, משתני Application נגישים לכל הקבצים באפליקציה, ולכל המשתמשים. לכן יש לנהוג בהם ביתר זהירות. אם שני משתמשים
ייגשו בו זמנית לאותו משתנה וינסו לשנותו, התוצאות עלולות להיות בלתי צפויות. כדי למנוע מקרים אלו, עומד לרשותינו "מנגנון נעילה"
למשתנים אלו, אשר ימנע את המצב המתואר למעלה. כאשר אנו קוראים לשיטה Application.Lock, אף סקריפט אחר אינו יכול לשנות את
המידע המצוי באובייקט ה-Application עד שנקרא לשיטה Application.Unlock. נעילת האפליקציה עלולה ליצור צוואר בקבוק, כאשר
כמה משתמשים "מחכים בתור" כדי לשנות משתנה אפליקציה. לכן יש להשתמש בזהירות בשיטות אלו, ולנעול את האפליקציה לזמן
קצר ככל האפשר.

VBScriptJScript

<% 
    Application.Lock 
    Application("NumVisits") = Application("NumVisits") + 1 
    Application.Unlock 
     
    Response.Write "This application page has been visited" _
    & Application("NumVisits") & " times!"
%> 


<%@ Language=Jscript%>
<% 
    Application.Lock()
    Application("NumVisits")=Application("NumVisits")+1 
    Application.Unlock()
     
    Response.Write ("This application page has been visited ")
    Response.Write (Application("NumVisits") + " times!")
 %> 

Application_OnStart ו- Application_OnEnd


שתי רוטינות אלו ממוקמות בקובץ global.asa (עליו נדון בהמשך).
Application_OnStart
מתבצעת פעם אחת בלבד, בפעם הראשונה בו לקוח כלשהו מבקש מהשרת קובץ asp השייך לאפליקציה.

VBScriptJScript

<script language="vbscript" runat="server"> 
    Sub Application_OnStart
        ' some code 
    End Sub
</script> 


<script language="jscript" runat="server"> 
    function Application_OnStart() {
        // some code 
    }
</script>

Application_OnEnd
מתבצעת בסיום האפליקציה, כאשר ה-IIS נעצר ע"י מערכת ההפעלה או ידנית (לרוב קורה כאשר השרת מכובה). הזמן העומד לרשות הארוע הוא קצת מאוד, לכן רצוי להמנע מסקריפטים ארוכים או כבדים.

VBScriptJScript

<script language="vbscript" runat="server"> 
    Sub Application_OnEnd
        'some code 
    End Sub
</script> 


<script language="jscript" runat="server"> 
    function Application_OnEnd() {
        // some code 
    }
</script>

תגיות: , , , ,

entry

סטודיו לבניית אתרים שהוקם בינואר 2005

תגובות בפייסבוק