Intermediate Language

Intermediate Language

טוב, אני חדש פה, מגיע מעולם הPHP ועושה צעדים ראשונים בASP.NET, בטח בהמשך יהיו לי שאלות יותר מתוחכמות, אבל עכשיו יש לי שאלה בקשר לIntermediate Language. אם הבנתי נכון את ההסברים, אז כל דף מקומפל בשני צעדים. צעד ראשון לאותה שפת ביניים ובזמן שקוראים לדף מתבצעת קומפילציה נוספת. מתי בדיוק מתבצעת הקומפילציה ל-Intermediate Language? הרי כשאני עורך דף ושומר אותו, לא מתבצעת שום קומפילציה. תודה מראש לעונים.
 
כשאתה מקמפל.

הפריימוורק מכיל קומפיילר ואפשר להשתמש בו לקמפל ל msil . כלי הפיתוח יודעים להפעיל את הקומפיילר בשבילך ולשים בספריית bin את ה DLL המוכן. גם סטודיו וגם הגרסה המוקטנת VWD . בכל אופן ברגע שאתה מריץ את הדף, לוחץ F5, הפרויקט מתקמפל ורץ. עריכת דף באמת לא עושה כלום. אפשר גם לערוך עם notepad או כל עורך אחר ולקמפל ידנית. זה לא סיפור, רק שאני לא זוכר את הסינטקס מאחר ולא עשיתי את זה שנים רבות.
 
OK, תודה

עשיתי עכשיו ניסוי וכתבתי משהו קטן בNOTEPAD, כלומר עקפתי את הקומפילציה של העורך. עדיין רץ. עשיתי שינוי בקובץ ובאמת הוא רץ בגירסה הישנה כל עוד לא עשיתי F5. אז אם ככה, והפרוייקט באמת מתקמפל כל זמן שאין העתק של דף הASPX בCACHE, אז מה הקטע של הקומפלציה לMSIL? החיסכון מתבטל, לא? דבר נוסף: האם המשמעות של הקומפילציה לMSIL היא שאני יכול לשחרר מוצר סגור בלי דפי הASPX? שוב תודה,
 
בהחלט

אפשר להעלות לשרת (או למכור, או כל דבר אחר), אסמבליז ללא קוד מקור. למרות שיש כלים שמאפשרים שחזור, ותעשיה שלמה של אמצעי הסתרה (dotfuscator ) . זה בהחלט שונה מ ASP, יש כאן קומפילציה. לגבי החיסכון: הוא בהחלט קיים. זה לא עניין של cache, אלא שהפרויקט מתקמפל בפעם הראשונה, ומאז, עכשיו ובעוד שנה - רצה הגרסה המקומפלת.
 
אבל אבל אבל...

עשיתי שינוי בNOTEPAD והוא התקמפל שוב, כמו שציינת אחרי F5. כלומר הקימפול לMSIL מתבצע מדי פעם (ולאו דווקא בEDITOR).
 
נכון,

זו תכונה של asp.net 2, קומפילציה אוטומטית בעקבות "צריכה" של הדף. מאד נוח. אבל הקימפול לא מתבצע "מדי פעם" אלא רק כיש לך שינוי בדף אתה יכול להעלות קבצי מקור לשרת, והם יתקמפלו אוטומטית. זה לא הכי מומלץ, אבל זה עובד. בזמן פיתוח זה חוסך הרבה. ושוב: יתקמפלו פעם אחת בלבד, אלא אם כן תשלח קבצים חדשים.
 
למעלה