PracticU

Advanced Features - Reuse Types

בלי כתוביותעם כתוביות
PracticU › קורס WCF - תקשורת למתקדמים בדוט-נט › Advanced Features - Reuse Types
מילון מושגים:
לקוח - תוכנה או מחשב שפונים לשרת ומבקשים ממנו שירות או מידע, למשל דפדפן שמבקש דף אינטרנט.
DLL - קובץ ספרייה ב-Windows המכיל קוד ופונקציות שתוכנות שונות יכולות לטעון ולהשתמש בהן במשותף.
פרוקסי - שרת מתווך שמעביר בקשות בין לקוח ליעד, ויכול לשמש להסתרה, לסינון, למטמון או לבקרת גישה.
שירות - תוכנה שרצה ברקע ומספקת פונקציונליות לרכיבים אחרים, לרוב ללא ממשק משתמש, ומופעלת אוטומטית עם המערכת.
אובייקט - יחידה בתכנות מונחה עצמים שמאגדת נתונים (תכונות) ופעולות (מתודות). נוצר בדרך כלל ממחלקה המשמשת כתבנית.
מחלקה - תבנית בתכנות מונחה עצמים שמגדירה אילו נתונים ופעולות יהיו לאובייקטים שנוצרים ממנה.
ספרייה - אוסף קוד מוכן, כמו פונקציות ומחלקות, שמפתחים משתמשים בו בתוכניותיהם במקום לכתוב הכול מחדש.
XML - שפת סימון לייצוג נתונים מובְנים בעזרת תגיות, המשמשת להחלפת מידע בין מערכות ולקובצי הגדרות.

Advanced Features - Reuse Types
השיעור מסביר איך לגרום ללקוח להשתמש במחלקת מידע קיימת מ-DLL משותף, במקום שהפרוקסי ייצור עותק חדש שלה.
הבעיה
השירות מחזיר אובייקט מסוג NumberInfo, שמוגדר ב-DLL נפרד. אם הלקוח לא מפעיל Reuse Types, הפרוקסי ייצור מחלקה חדשה בשם NumberInfo בתוך מרחב השמות שלו. כך יהיו בלקוח שתי מחלקות שונות עם אותו שם.
הפתרון
1. DLL מידע: פרויקט Business Entities Library עם המחלקה NumberInfo, שיש לה Number, IsPositive ו-IsEven.
2. שימוש בשירות: מחלקת Calculator מוסיפה את ה-DLL כהפניה. הפונקציה GetNumberInfo בונה אובייקט מסוג NumberInfo ומחזירה אותו.
3. Add Service Reference מתקדם: בוחרים Reuse Types. ברירת המחדל היא Reuse Types in All Referenced Assemblies, כלומר שימוש בכל ה-DLL שבפרויקט. אפשר גם לבחור רק אסמבלי מסוים, למשל Business Entities.
4. קובץ svcmap: הכלי יוצר קובץ XML שמתאר אילו טיפוסים עברו Reuse.
בדיקה
1. בלי Reuse הלקוח מקבל מחלקה שנוצרה בפרוקסי.
2. עם Reuse הלקוח מקבל את המחלקה המקורית מה-DLL.
3. אם הלקוח מפנה גם הוא ל-Business Entities, הטיפוס זהה בשני הצדדים.
יתרון נוסף
במחלקה המקורית יכולות להיות גם פונקציות, כמו ShowData שמציגה את הערכים. בפרוקסי יש רק פרופרטיז, ולכן פונקציות כאלה זמינות רק כשהמחלקה המקורית נמצאת בלקוח.
בשימוש ב-Reuse הלקוח עובד עם אותו טיפוס שהשרת משתמש בו.
השיעור הבא בקורס: Classic Web Service

פרקי ההרצאה: Advanced Features - Reuse Types

  1. 00:00

    ספריית Business Entities ומחלקת NumberInfo

  2. 01:52

    פונקציה שמחזירה NumberInfo לשרת

  3. 03:41

    הוספת ה-DLL גם ללקוח

  4. 04:42

    Reuse Types ב-Add Service Reference

  5. 06:04

    החרגת ה-DLL ושכפול מחלקת הפרוקסי

תמלול ההרצאה: Advanced Features - Reuse Types

הטקסט המלא של הדקות הראשונות בהרצאה «Advanced Features - Reuse Types» בקורס הווידאו של PracticU – כתוביות בעברית עם זמן התחלה לכל פסקה. כך תוכלו לקרוא ולחפש את הנושאים לפני שמתחילים ללמוד.

  1. 00:19

    הדבר הבא שאנחנו הולכים לראות בטופס של Advanced Features של Add Service Reference זה איך אנחנו מבצעים Reuse Types. קודם כל בואו ניצור לעצמנו איזשהו טייפ ב-DLL נפרד.

  2. 00:32

    אז מה שנעשה, נוסיף DLL, New Project, נבחר ה-Class Library וה-DLL הזה אמור להיות DLL שמחזיק לנו כל מיני מחלקות מידע שאנחנו צריכים להשתמש איתן גם ב-Client וגם ב-Server.

  3. 00:47

    אז נקרא לו Business Entities Library. עכשיו יש לנו פה קלאס אחת שנשנה אותה לשם number info וזאת מחלקה מחלקת מידע שאמורה לתת לנו מידע לגבי מספר אוקיי אז יש לנו כאן את המספר עצמו יש לנו פה משתנה בולעני שאומר is positive יש לנו משתנה בולעני שאומר is even האם הוא זוגי האם הוא מספר חיובי ובוא נניח שזה מספיק לנו כרגע אז המחלקה הזאת זאת מחלקת מידע שמספקת לנו מידע לגבי מספר.

  4. 01:43

    ואנחנו רוצים להשתמש איתה בקלקולטור שלנו. אז קודם כל נצרף את המחלקה, או יותר נכון את ה-DLL Business Entities, לקלקולטור ליבררי. נלך ל-References, Add Reference, נבחר את Business Entities ונצרף אותו.

  5. 02:00

    ועכשיו אנחנו יכולים לבנות פונקציה שמחזירה לנו מידע לגבי מספר. אז יש לנו פה עוד פונקציה שמחזירה Number Info. נקרא לה getNumberInfo והיא תקבל איזשהו intNumber בואו נממש את הפונקציה הזאת במחלקה כלקולטור נלחץ ctrl נקודה enter אני רואה שכבר פה למטה ונבנה אובייקט

  6. 02:40

    מטיפוס numberInfo נעדכן אותו במשתנים numberInfo נקודה number שווה למספר שהתקבל numberInfo נקודה is positive שווה האם המספר שלנו יותר גדול מאפס ו-Is Even האם המספר שלנו זוגי ואז אנחנו יכולים להחזיר את ה-Number Info.

  7. 03:38

    אוקיי סיימנו עם השרת ועכשיו אנחנו הולכים לעבור ללקוח אבל בוא נניח שיש מקרה מאוד מיוחד שאנחנו כותבים גם את הצד שרת וגם את הצד לקוח ויש לנו הרבה מחלקות ב-DLL Business Entities ואנחנו רוצים פשוט שהלקוח ישתמש ישירות עם ה-DLL שלנו מכל מיני סיבות אז בואו נצרף את ה-DLL Business Entities גם ללקוח.

  8. 04:02

    Add Reference, Business Entities, אוקיי. ועכשיו המחלקה Number Info כבר נמצאת בצד של הלקוח. אוקיי, בואו נראה איך זה משפיע עכשיו על התוכנית כאשר אנחנו מבצעים Add Service Reference.

  9. 04:20

    אז ראשית, נעתיק שוב פעם את מיקום מסמך ה-WSDL, Control-C, ניגש ל-Service Reference, Add Service Reference, נדביק, ואני כבר רואה ששכחתי להריץ את הוסט אז אני אכבה את זה שנייה אני אלך לסט הסטארטאפ פרוג'קט אני אריץ את ההוסט ההוסט כרגע רץ נחזור לסרוויס רפרנס אד סרוויס רפרנס נעשה את זה שוב פייסט גו

  10. 04:59

    והוא איתר לנו עכשיו מה שאני רוצה לעשות זה כזה דבר קודם כל לרשום פה כלקולטור דמו דבר שני אני רוצה ללכת לאדוונס ולראות מה קורה עם הרי יוז טייפס הזה שנמצא כאן אז דבר ראשון אני רואה שאני יכול לבצע ריוז טייפס אין אול רפרנס אסמבלי. מה זה אומר? זה אומר שהוא לא ישכפל אוטומטית את המחלקות שהווב סרוויס או יותר נכון ה-WCF סרוויס בצד השרת משתמש איתם אם

  11. 05:37

    כבר קיימות לו מחלקות כאלה ובמקרה שלנו כבר קיימת לו מחלקה שנקראת number info ולכן הוא לא ישכפל אותה קודם כל אני רוצה לראות מה יקרה אם אני כן אגיד לו לשכפל אז אם כן אני אגיד לו לשכפל וכל מה שאני אעשה אני אגיד לו ריוז טייפס אין ספסיפיק אין סליחה ספסיפייד רפרנס אסמבליז, ואני אבחר את כל האסמבליז הרגילים של המערכת.

  12. 06:04

    בואו נבחר את כולם. יש לנו פה עוד שלושה לבחור. אחת, שתיים, שלוש. ושימו לב שלא בחרתי את ביזנס אנטיטיז. זאת אומרת, שאלותי לו, אל תבצע רי-יוז.

  13. 06:25

    אל תבצע רי-יוז לרכיבים שנמצאים בתוך ה-Business Entities Library, זאת אומרת שאתה צריך בעצם להביא לי מהשרת את נאמבר אינפו.

  14. 06:37

    בואו נבצע אוקיי, אוקיי, ונסתכל כרגע מה יש לנו בתוך הפרוקסי. אז נציג את כל הקבצים ונאתר את מחלקת הפרוקסי. הנה היא כאן, זה הכובד שלה, ואני רואה שהוא משכפל לי את המחלקה נאמבר אינפו למחלקה האחרת לגמרי, כאילו שזאת לא המחלקה שנמצאת בתוך ה-DLL

  15. 07:08

    שלי, כי למעשה זאת לא המחלקה שנמצאת בתוך ה-DLL שלי, זאת מחלקה אחרת שכביכול מיוצרת אוטומטית בפרוקסי.

  16. 07:16

    זה מה שהוא עושה תמיד למחלקות שמגיעות מהצד של השרת. אוקיי, עכשיו אם אנחנו נלך ונייצר איזשהו אובייקט לגבי הסרוויס ונראה איך זה מתנהג, אנחנו נראה שיש לנו כרגע שתי מחלקות.

  17. 07:36

    אז יש לנו פה את האובייקט של הסרוויס,

לקורס המלא: קורס WCF אונליין בדוט-נט

ההרצאה הקודמת: Advanced Features - Collection Types

ההרצאה הבאה: Classic Web Service

הרצאות קשורות מקורסים אחרים

  • Types of Memories
  • Advanced Routing - Paging
  • כל היכולות של צ'ק פוינט - Blades and Features
  • רידקס - יצירת Action Types

קורסים נוספים במסלול

  • קורס WinForms - תוכנות רגילות בווינדוס
  • פרויקט מעשי ב-#C - בונים מחשבון פשוט
  • פרויקט מעשי ב-#C - ספר טלפונים
  • פרויקט מעשי ב-#C - תוכנת צייר
  • קורס ADO.NET - חיבור אתר למסד נתונים
  • קורס תכנות מתקדם - #Advanced .NET C