מדריך ASP – האובייקט Application
Application | |||
אוספים (Collections) | תכונות (Properties) | שיטות (Methods) | ארועים (Events) |
---|---|---|---|
Contents | Lock | OnStart | |
StaticObjects | Unlock | OnEnd |
מהי אפליקציה?
אפילקצית אינטרנט מוגדרת ככל הקבצים (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>
תגובות בפייסבוק