DCSIMG
What is Reflector - שלמה גולדברג (הרב דוטנט)

שלמה גולדברג (הרב דוטנט)

מרצה בסלע ויועץ בעולם ה - net.

What is Reflector

 

מה זה ואיך משתמשים ב - Reflector

 
 
קבלתי שאלה במייל - "מה זה reflector?מה השימוש בו וכיצד"
 
כדי לענות על השאלה חשבתי לכתוב פוסט שידגים את השימוש בו.
 
לפני שנדבר על הכלי המופלא שנקרא ה - Reflector, צריך לוודא שאנחנו מבינים את תהליך העבודה ב - net.
 
 
 
Net process
 
 
(התמונה לקוחה מהמצגות של סלע.)
 
התהליך מתחיל כמובן בזה שאנחנו כותבים קוד באחת משפות NET.
 
ממשיך לקומפילצייה במידה והתהליך עבר בהצלחה אנו מקבלים קובץ exe/dll (תלוי בסוג הפרויקט).
 
מה שהקובץ באמת מכיל אינו קוד בינארי אלא קוד בשפה שמכונה intermediate language - IL.
 
בזמן ריצה נטען לזיכרון המחלקה הראשונה עם מתודת ה - Main, ה - JIT עולה לחיים ומקמפל לשפה בינארית את הקוד בצורה הכי מתאימה למעבד שמריץ את הקוד.
 
יש כל מיני סיבות לתהליך אבל לא פוסט זה המקום להסביר אותם - מה שמעניין אותנו הוא שאחרי הקומפילצייה יש לנו ביד קובץ בשפת IL שמכיל את הקוד שכתבנו (והוא יהיה זהה בלא קשר לשפה המקורית שבה הוא נכתב - כל עוד שמדובר כמובן בשפה .net)
 
היות שזו המציאות קם גאון אחד וכתב כלי נהדר שנקרא Reflector - הכלי הזה יודע לקחת קוד IL ולהמיר אותו בחזרה לקוד קריא - בצורה הזו אנו יכולים לקרוא את קוד המקור של כל הקוד שמייקרוסופט כתבו.
 
אפשר להוריד את הכלי מהלינק הבא.
 
אחרי ההפעלה תקבלו את המסך הבא
 
 
 
Reflector
 
 
נבחר את אחד מה - DLL של מיקרוסופט (תמיד עניין לראות איך הם מימשו את Console.WriteLine)
 
הכי קל כדי למצוא את המתודה יהיה ללחוץ על לחצן החיפוש ולכתוב את שם המחלקה
 
Reflector
 
לחיצה כפולה על שם המחלקה בתוצאות החיפוש תביא אותנו למחלקה ב - DLL המתאים.
 
נחפש את המתודה WriteLine ונלחץ על רווח - ונראה את המימוש של מייקרוסופט
 
Reflector
Reflector
 
 
 תוכלו להכנס יותא פנימה ולראות את המימוש של Out.WriteLine (שזה המימוש האמיתי - אבל תעשו את זה לבד)
 
שימו גם לב לקומבו למעלה שמאפשר לבחור מתוך רשימת שפות - באיזה שפה אנו רוצים לראות את המימוש.
 
 
כמובן שאפשר גם לייבא DLL אחרים כדי לראות אותם ולקרוא מה נכתב בהם.
 
השימוש בכלי יכול לתת לכם פרספקטיבה אחרת על הקוד שאתם כותבים והוא גם כלי דיבוג מעולה - למשל בפוסט הזה אני מתאר כיצד מצאתי את הבאג בעזרת ההבנה כיצד מומשה מתודה מסויימת.
 
 
אז שיהיה לכם בהצלחה - אחד מהדברים שאני נהנה לעשות הוא לשוטט עם ה - Reflector ולקרוא את המימוש של מייקרוסופט.
פורסם: Sep 24 2010, 12:07 AM by Shlomo | with 2 comment(s)
תגים:,

תוכן התגובה

שלמה גולדברג (הרב דוטנט) כתב/ה:

הוספה של User Control לעמוד. במידה ואתם עובדים עם User Controls יש שתי דרכים להשתמש בהם בדפי ה - aspx

# January 3, 2011 3:55 PM

רועי כתב/ה:

פנטסטי!

# January 8, 2012 11:23 AM
שלח תגובה

(שדה חובה)  

(שדה חובה)  

(אופציונלי)

(שדה חובה) 

Please add 5 and 1 and type the answer here:


Enter the numbers above: