
הטקסט המלא של הדקות הראשונות בהרצאה «יצירת DLL - חלק 1» בקורס הווידאו של PracticU – כתוביות בעברית עם זמן התחלה לכל פסקה. כך תוכלו לקרוא ולחפש את הנושאים לפני שמתחילים ללמוד.
אנחנו מגיעים לנושא נוסף, בסיסי וחשוב מאוד, והנושא הזה פשוט מאוד הוא שימוש ב-DLLים. עכשיו, ברור שכבר יצא לנו להשתמש ב-DLLים, אבל פה אנחנו הולכים לראות עוד כל מיני נתונים בקשר ל-DLLים ולשימוש בהם.
נתחיל עם מה זה DLL. DLL זה קיצור של Dynamic Link Library, שזה בעצם קובץ עם סיומת נקודת DLL שמכיל טיפוסי נתונים.
אפשר לכתוב DLLים בהרבה שפות ישנות, כמו בשפת C, C++, פסקל, דלפי, VB6.
אנחנו כמובן הולכים לכתוב DLL בדוטנט, אנחנו כבר הולכים לפתוח פרויקט חדש בשביל לבצע את הכתיבה בו, אבל אנחנו צריכים להבין ש-DLL דוטנטי זה לא אותו דבר מבחינת התוכן כמו DLL בשפת C לדוגמה.
שימוש ב-DLL בשפת C יהיה קצת שונה מאשר שימוש ב-DLL שנכתב בדוט-נט. שימוש ב-DLL של C++ יהיה גם כן בצורה קצת שונה, ובאחד הסרטונים היותר מתקדמים אנחנו נראה איך אנחנו יכולים להשתמש ב-DLLים משפות אחרות כמו C ו-C++.
אבל כעת מה שאנחנו הולכים לעשות זה לעשות את הדבר היותר נפוץ שיש, וזה לכתוב dll.neti, כלומר ב-C-sharp, ולהשתמש איתו.
אז כאמור dll זה קובץ עם סיומת dll שזה קיצור של dynamic link library ומה שהוא אומר זה שאנחנו יכולים לבנות איזשהו קובץ פיזי לכתוב בתוכו טיפוסי נתונים ואז להשתמש עם הטיפוסי הנתונים האלה בפרויקטים אחרים למה לנו לעשות את זה כי אם לדוגמה אנחנו רוצים איזושהי מחלקה בוא ניקח מחלקה נניח person כתבנו person פעם
אחת ועכשיו אנחנו רוצים להשתמש איתה במספר פרויקטים שונים באתר אינטרנט בפרויקט חלונאי כלשהו באיזשהו dll אחר בקונסול אפליקיישן בפרויקט של מכללה א' ובפרויקט של מפעל ב' ואנחנו רוצים את אותו הבן אדם בתכנות כמעט תמיד אסור באיסור חמור לעשות copy paste של קודים שכתבתם זה גורם לשכפולים זה גורם ללכו לתקן את הבאג שקיים בכל מיני קבצים קשה לתחזק קשה לתקן
באגים קשה לעקוב אחרי הקוד לא עושים את זה אבל בכדי שלא נצטרך לעשות קופי פייסט של המחלקה ולהשתמש בה בעוד כל מיני מקומות אחרים אנחנו יכולים להוציא אותה לקובץ נפרד ואז להשתמש עם הקובץ הזה באיזה פרויקט שאנחנו רוצים.
בגלל שאנחנו הולכים עכשיו גם ליצור dll וגם לבדוק אותו בפרויקט אמיתי אז אנחנו לא הולכים לפתוח console אפליקיישן אבל אנחנו לא הולכים לפתוח פרויקט dll אנחנו הולכים לפתוח משהו שנקרא other project types visual studio סולושן בלנק סולושן ופה אנחנו הולכים לפתוח סולושן ריק אנחנו יודעים כבר שסולושן זה קובץ
בעל סיומת sln ששולט על מספר פרויקטים והוא בכיר יותר לפרויקטים ולכן אנחנו קודם כל רוצים לפתוח קובץ סולושן ואז לצרף אליו פרויקטים בכדי שתמונת ההרדיסק תהיה תיקייה שיש בה את קובץ הסולושן ואז ליד קובץ הסולושן יש תיקיות של פרויקטים ואנחנו לא רוצים שקובץ הסלושן יהיה בתוך קובץ של פרויקט בודד.
אז בואו רגע נבהיר את הרעיון הזה שדיברתי עליו, כאמור זה רעיון מאוד מאוד בסיסי אבל כדאי שנבהיר אותו. אם הייתי פותח Console Application ולא הייתי מסמן Create Directory for Solution והייתי פשוט קורא לו טסטר, אז היה נפתח לי משהו שהוא ממש לא אוקיי, בואו
נסתכל על זה רגע. אני פותח את הקובץ, את הפרויקט, יש לי פה קונפרט אפליקיישן כמו שתמיד עשינו, אפילו נכתוב בתוך המיין איזושהי שורה אחת, בואו נכתוב פה את הפקודה היי, נריץ.
אז אנחנו רואים שזה עובד כמו שצריך, אבל מה שמעניין אותי זה לפתוח ולראות מה נוצר לנו בזיכרון, מה שאנחנו יכולים לראות כרגע זה שנוצרה לנו תיקייה עבור הפרויקט וקובץ ה-SLN נמצא בתוך התיקייה של הפרויקט ליד קובץ ה-CSproge שאחראי על הפרויקט וליד קבצי ה-C-Sharp של הפרויקט וזה לא מקצועי לגמרי ולא עושים את זה כאשר מעורבים כאן מספר פרויקטים שקשורים לאותה
המערכת. למה? כי קובץ ה-SLN הוא לא באותו לבל כמו ה-CSproge שהוא בכיר יותר, זה כמו שיש לנו בוס וזוטר בחברה והם לא יושבים באותו המשרד.
ה-SLN צריך להיות בתיקייה אחת מעל בכדי שהוא ישלוט על כל התיקיות שנמצאות באותו ה-level שלו. אוקיי, אז בואו נבצע סגירה, Close, נבצע מחיקה ונראה שתי שיטות להצליח לעשות את זה.
תכף נבין למה בעצם זה בכלל לא היה נכון לבצע את מה שעשינו. השיטה הראשונה זה פשוט לבצע את אותו הדבר, בואו נרשום פה טסטר, אבל ללחוץ על Create Directory for Solution.
אם יש לכם את Visual Studio Express, זאת השיטה שאתם יכולים לבצע ולא השיטה השנייה שאני כבר הולך להראות. עכשיו שימו לב שברגע שכתבתם Create Directory for Solution, אוטומטית מופיע לכם פה עוד תיקייה או שם של תיקייה עבור תיקיית ה-Solution.
נקרא לזה MySolutionDirectory, בניגוד לטסטר שזה הפרויקט, נבצע אוקיי. הנה נפתח לנו פה הפרויקט, נבצע את אותו הדבר. קונסול רייט היי, נריץ, נראה שיש לנו פה את התצוגה ונסתכל מה באמת נפתח לנו.
ומה שאנחנו רואים זה תיקייה אחת עבור הסולושן, בתוך התיקייה הזאת יש את קובץ ה-SLN ויש קובץ SUO שזה קיצור של סולושן יוזר אופשיונס, כבר נדבר עליו.
ה-SLN אחראי על הפרויקטים השונים ששייכים לאותה סביבת פיתוח שאנחנו עובדים בה וה-SUO מכיל הגדרות לגבי איזה קובץ אחרון המתכנת תשתמש בו, איפה הקורסור היה בכדי להחזיר את סביבת הפיתוח בדיוק לאותו המצב שבו היא הייתה.
אבל שימו לב להבדל, קובץ ה-SLN לא נמצא ביחד עם קובץ ה-CSproge. אם אני אכנס לתוך תקיעת טסטר אני אראה CSproge שאחראי רק על הפרויקט הנוכחי וה-SLN כמו שצריך נמצא בתיקייה אחת מעליו.
כך אנחנו יכולים להגדיר פה הרבה תיקיות עבור מספר רב של פרויקטים שעל כולם שולט ה-SLN וה-SLN לא נמצא בתיקייה כלשהי של אחד הפרויקטים כי הוא לא אמור להיות שם.
בואו נבצע סגירה של כל הסיפור הזה, נבצע מחיקה ונראה איך אפשר לעשות את זה בשיטה נוספת. מחקתי את כל תיקיית הסלושן, נחזור בחזרה, פייל, ניו, פרוג'קט, ופה התחלתי לומר שניתן לגשת ל-other
project types, visual studio solution, blank solution. פה ניתן שם אחד שכולל את כל המערכת כולה. אנחנו רוצים לבצע איזשהו פרויקט שמבהיר מה זה DLL וכל מיני דברים מגניבים בנוגע ל-DLLים, ולכן נקרא לתיקייה הזאתי טסט DLLs.
נבצע אוקיי ושימו לב שנפתח לי רק תיקייה עבור הסלושן עם כובד סלושן והוא אומר לי כרגע שיש לי זירו פרוג'קטס. בואו נסתכל מה באמת נוצר.
הנה התיקייה, הנה קובץ ה-SLN בתוכה, לידו יש את ה-Solution User Options ואין לי פרויקטים כי רק פתחתי סלושן ריק.
עכשיו אנחנו לוחצים על קשיים אני, Add New Project ובוחרים מ-C-Sharp, שימו לב, כי לפעמים הוא אוטומטית מצביע לכם על VB, אז שימו לב ששפת התכנות היא C-Sharp, ואנחנו צריכים לבחור Class Library.
Class Library ופרויקט עבור יצירה של קובץ DLL, אחלה. אנחנו רואים אוטומטית גם שהוא הולך להיכנס לתוך התיקייה, טסט DLL. סבבה.
אז בואו נחשוב איזה קובץ אנחנו רוצים ליצור, בואו נניח שאנחנו רוצים ליצור את המחלקה person בתוך dll נפרד ובנוסף למחלקה person עוד כל מיני מחלקות אחרות.
בדרך כלל אם יש לכם איזשהו dll שמחזיק לכם כל מיני מחלקות מידע שאתם רוצים להשתמש איתם בכל מיני פרויקטים זה יקרא business entities library. יש איזושהי מוסכמה לסיים dll במילה library אבל כמובן זה לא חובה.
ביזנס אנטיטיז ליברירי, כרגע זה מה שכתבתי, בואו ננסה אוקיי. ויש לנו כרגע פרויקט אחד שהתווסף לתוך התיקייה בדיוק כמו שהיה לנו קודם, וה-SLN שולט עליו.
אם אנחנו רוצים להוסיף עוד פרויקט, אין שום בעיה. מקש ימני, Add New Project, פה אנחנו הולכים ובוחרים פרויקט אחר, לדוגמה Console Application, נקרא לזה My Console App, נבצע אוקיי, ואם אנחנו נסתכל על תמונת ה-hard disk, אנחנו רואים שיש לנו קובץ אסלן בתיקייה משלו שנקראת SDLs,
לידו סולושן יוזר אופשיונס ולידו עבור כל פרויקט ששייך למערכת שאנחנו בונים כרגע יש לנו תיקייה נפרדת. שימו לב שבדיוק התמונה הזאת שאנחנו רואים כרגע זאת התמונה שמוצגת בסולושן אקספלורר ולכן היא כמובן מתאימה יותר כי הסולושן בכיר יותר.
דבר נוסף, בואו נבצע איזשהו הפרש כאן. דבר נוסף, עכשיו אנחנו יכולים לבצע העתקה של התיקייה testdlls או לייצר ממנה איזשהו קובץ rar או zip בכדי לבצע גיבוי של כל הסיפור הזה, ואוטומטית הוא שומר לי את כל הפרויקטים כולם.
כלומר, יש לי תיקייה אחת שעוטפת לי את כל הפרויקטים שקשורים למערכת הנוכחית שאני בונה, ולא כמה תיקיות שלא קשורות אחת לשנייה שבזורות לי בכל מיני מקומות במחשב.
שזה כמובן לא מקצועי בעליל. אז אחרי שפתחנו נכון סולושן עם שני פרויקטים שאחד מהם זה DLL, אז אנחנו יכולים להתחיל לבנות את ה-DLL. אז בואו נסתכל רגע על הפרויקט של ה-DLL.
הפרויקט של ה-DLL מכיל לי אוטומטית קובץ שנקרא class1.cs ועם מחלקה שנקראת class1. אנחנו כמובן יכולים לשנות את השם של המחלקה, של הקובץ ל-person, enter, ואז הוא שואל אותי האם אני רוצה לשנות גם את השם של ה-class, אנחנו יודעים כבר שמבחינה מקצועית קלאס צריכה
להיות בקובץ ייעודי עבור הקלאס הזאת בעל אותו השם של הקלאס. נגיד לו כן. הנה יש לנו person.cf שבתוכו יש את המחלקה person.
אז בואו נבנה את המחלקה. יש לנו public.string.firstName public.string.lastName יש לנו איזשהו קונסטרקטור ריק, איזשהו קונסטרקטור מלא ואיזושהי פרינט.
סיימנו פרסון, ננקה מרחבי שמות לה ובואו ניצור אפילו עוד איזושהי מחלקה שנראה שיש פה כמה מחלקות שיכולות להיות בתוך dll ויכול להיות בעצם כל טיפוס נתונים.
מה זה אומר טיפוס נתונים? טיפוס נתונים זה אחד מחמישה דברים בלבד בדוטנט. פלאס, סטראקט, אינאם, דלגייט, אינטרפייס.