DCSIMG
Question from .Net Tapuz Forum: Overhead of using MasterPages and UserControls in ASP.Net (ASP.Net compilation modal) - Justin myJustin = new Justin( Expriences.Current );

Question from .Net Tapuz Forum: Overhead of using MasterPages and UserControls in ASP.Net (ASP.Net compilation modal)

שאלה: האם שימוש ב-UserControls וב-MasterPages (שהוא למעשה UserControl) גורר פגיעה כלשהי בביצועים?

 

תשובה:

האבחנה שה-Master Page הוא למעשה סוג של User Control היא נכונה מאוד. דפי Master Pages  אפילו (בניגוד מוחלט לאינטואציה) מתרנדרים אחרי הדפים עצמם שאותם הם מכילים.

לשימוש ב-User Control מול שימוש ב-Custom/Composite Controls היה אימפקט קל מאוד על הביצועים ב-ASP.Net 1.1. זהו אותו הבדל שהיה על כתיבת קוד בדף ה-ASP.Net Designer (כל מיני תגיות <asp:> למיניהן) לבין הצהרה על הפקדים תכנותית. הסיבה להבדל ביצועים הזה נובעת מכך שבגישה הראשונה מאז האתחול האחרון של ה-AppDomain (שקורה כברירת מחדל פעם ב-29 שעות ב-IIS) ה-Runtime צריך לבדוק את התוכן של הדף ולתרגם אותו לפקדים תכנותיים. אותם פקדים תכנותיים הוחזקו בקבצי ה-ASP.Net Temporary files והם למעשה גירסה בלי תגיות ASP.Net של דפים עם תגיות ASP.Net.
בכל גישה ראשונה לדף מאז האתחול הדף נותח ונבנה מחדש מה שלקח בממוצע 30 שניות לדף, אך אחרי הבקשה הראשונה לא היה יותר עיכוב שכזה.


בדוט נט 2.0 יש אפשרות חדשה שהיא לבצע Precompile לכל האתר עצמו מה שלוקח את קבצי ה-ASPX וה-ASCX שבעבר נותחו רק עם פנייה לדף ומקפמל אותם למחלקות אמיתיות. את ה-Procompile הזה ניתן להגדיר בעת הפריסה של האפליקציה באמצעות Deploy Web Site של Visual Studio 2005 או ניתן להשתמש ב-aspnet_precompile.exe שמגיע עם הפריימוורק ומאפשר לקמפל אתר כאתר או לקמפל אתר לתוך תיקייה שתיפרס במועד מאוחר יותר.

עם ההצגה של מודל הקומפילציה של דוט נט 2.0 אין יותר הבדלים בין כתיבת ASPX/ASCX לכתיבת קוד מבחינת ביצועים.

בדוט נט 1.1 היה נהוג ליצור Service שעם כל אתחול של ה-AppDomain שמכיל את האתר היה מבצע בקשות מול כל האתר ובכך מבצע פרה-קומפילציה בזמן-ריצה.

 

קישור: http://www.tapuz.co.il/tapuzforum/main/Viewmsg.asp...

Published Friday, October 06, 2006 5:10 PM by Justin-Josef Angel [MVP]

Comments

No Comments