PracticU

Proxy - Multiple Addresses

בלי כתוביותעם כתוביות
PracticU › קורס WCF - תקשורת למתקדמים בדוט-נט › Proxy - Multiple Addresses
מילון מושגים:
פרוקסי - שרת מתווך שמעביר בקשות בין לקוח ליעד, ויכול לשמש להסתרה, לסינון, למטמון או לבקרת גישה.
לקוח - תוכנה או מחשב שפונים לשרת ומבקשים ממנו שירות או מידע, למשל דפדפן שמבקש דף אינטרנט.
ממשק - נקודת מגע בין רכיבים: ממשק משתמש שבו אדם מפעיל תוכנה, או ממשק תכנותי שמגדיר אילו פעולות רכיב אחד חושף לאחר.
מחלקה - תבנית בתכנות מונחה עצמים שמגדירה אילו נתונים ופעולות יהיו לאובייקטים שנוצרים ממנה.
מאפיין - תכונה שמצמידים לרכיב ומתארת אותו או את התנהגותו, למשל מאפיין של תגית HTML או שדה באובייקט.
חריגה - מצב שגיאה שמתרחש בזמן ריצת התוכנית ומפסיק את המהלך הרגיל, אלא אם הקוד תופס ומטפל בו.
HTTP - פרוטוקול להעברת דפי אינטרנט ונתונים בין דפדפן לשרת. הגרסה המאובטחת שלו היא HTTPS.
Endpoint - נקודת קצה שאליה פונים ב-API, המזוהה בכתובת ומטפלת בסוג מסוים של בקשות. גם מכשיר קצה ברשת.

Proxy - Multiple Addresses
השיעור מציג שירות שמאזין בשתי כתובות נפרדות, כל אחת עם קונטרקט משלה, והלקוח יכול לבחור ביניהן.
פיצול לשני קונטרקטים
1. ממשק בסיסי: ICalculator שונה ל-IBasicCalculator, והמחלקה ל-BasicCalculator.
2. ממשק מורכב: IAdvancedCalculator יורש את IBasicCalculator ומוסיף עליו פעולות מורכבות. הפונקציה Average עוברת לכאן, ונוספה פונקציה Power שמחזירה חזקה.
3. המחלקה: AdvancedCalculator ממשת את IAdvancedCalculator, ולכן יכולה לשרת את שני הקונטרקטים.
4. אטריביוט: גם לממשק המורכב חייב להיות אטריביוט ServiceContract, כמו לממשק הבסיסי. בשיעור, בלי האטריביוט, נזרקה חריגה.
ההוסט
1. Base Address: אובייקט URI משותף, למשל http://127.0.0.1:6065/MyCalculator. לכל endpoint מוסיפים סיומת.
2. שני endpoints: אחד לקונטרקט הבסיסי עם הסיומת Basic, ואחד לקונטרקט המורכב עם הסיומת Advanced. שניהם משתמשים ב-BasicHttpBinding.
3. מחלקה: ההוסט נוצר מהמחלקה AdvancedCalculator, והיא מספקת את שני הקונטרקטים.
4. בדיקה: ההוסט מדפיס לכל endpoint את הכתובת, הביינדינג והקונטרקט.
הלקוח
1. מוסיפים Service Reference אחד, וה-WSDL מתאר את שני הקונטרקטים.
2. נוצרות שתי מחלקות פרוקסי: BasicCalculatorClient ו-AdvancedCalculatorClient. הפונקציה Power קיימת רק במחלקה המורכבת.
3. קובץ App.config מכיל שני endpoints עם אותו Base Address, שלא שוכפל.
הלקוח יכול להשתמש בשירות הבסיסי, במורכב, או בשניהם, בלי לשכפל את הכתובת.
השיעור הבא בקורס: Advanced Features - Collection Types

פרקי ההרצאה: Proxy - Multiple Addresses

  1. 00:00

    למה להאזין לשתי כתובות

  2. 00:56

    שינוי שמות: Basic Calculator

  3. 01:51

    ממשק Advanced Calculator חדש

  4. 03:02

    פונקציית Power והמחלקה המורכבת

  5. 04:37

    שני שירותים בשני ממשקים

  6. 05:11

    הגדרת שתי כתובות בהוסט

  7. 05:48

    Base Address ושתי כתובות ספציפיות

תמלול ההרצאה: Proxy - Multiple Addresses

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

  1. 00:19

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

  2. 00:35

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

  3. 00:52

    בואו נשנה כרגע את האינטרפייס I-Calculator ל-I-Basic Calculator. או אפילו יותר טוב, הייתי משנה את השם של הקובץ ל-I-Basic Calculator, וזה כמובן משנה גם את המחלקה, ובואו נסתכל, נראה שהוא שינה בכל מקום שהוא השתמש עם I-Calculator, הוא שינה ל-I-Basic Calculator.

  4. 01:21

    אותו הדבר, אני אשנה את המחלקה Calculator ל-Basic Calculator. בואו נסתכל עליה, ונראה שיש לנו פה את המחלקה Basic Calculator ואנחנו רואים שגם כאן בהוסט הוא שינה בכל מקום ל-Basic Calculator.

  5. 01:42

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

  6. 02:00

    אז בואו נלך לפרויקט של ה-Calculator Library שלנו ונוסיף עוד אינטרפרט. Add New Item, נוסיף אינטרפייס עבור פעולות יותר מורכבות שקשורות לקלקולטור ואני בוחר אינטרפייס ואני מוסיף I Advanced Calculator, נמחק את זה, נוסיף את האינטרפייס הזה שמאפשר לנו פעולות קצת יותר מורכבות לגבי קלקולטור, נגדיר אותו כ-Public ונירש את ה-Basic Calculator

  7. 02:36

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

  8. 03:05

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

  9. 03:18

    ניגש שוב פעם לפרויקט, נוסיף קלאס ונקרא לקלאס הזאת Advanced Calculator והקלאס הזאת כמובן הולכת להיות Public ולרשת קודם כל את ה-Basic Calculator.

  10. 03:44

    נעביר מה-Basic Calculator את פונקציית Add, יותר נכון את Average, כי היא שייכת נניח לפעולות המורכבות ובנוסף נממש גם את ה-Advanced Calculator. אז יש לנו פה את הפונקציה Power, וכל מה שאנחנו צריכים לעשות זה להחזיר math.power לשלוח את num1 ו-num2 ויש לנו גם את השירות הזה שאנחנו יכולים לספק.

  11. 04:29

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

  12. 04:52

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

  13. 05:13

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

  14. 05:30

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

  15. 05:45

    במקום לחזור כל הזמן על הכתובת הראשית, מה שאנחנו יכולים לעשות זה דבר כזה: אנחנו יכולים לפתוח אובייקט מטיפוס URI שמתאר לנו כתובת כלשהי בעולם, כתובת לוגית, ונקרא לאובייקט הזה Base Address.

  16. 06:02

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

  17. 06:17

    אז בואו נבנה אובייקט מה-URI וניתן לאובייקט את ה-base address שמקודם בנינו. כלומר את כל הנתיב הזה. אוקיי, עכשיו אנחנו יכולים ליצור עוד שתי מכרוזות.

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

ההרצאה הקודמת: Proxy - Channel Factory

ההרצאה הבאה: Advanced Features - Collection Types

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

  • מה זה Proxy ?
  • הגדרת JMeter כ-Proxy - חלק 1
  • הגדרת Proxy - בדפדפן
  • הסבר על Multiple Props Children

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

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