PracticU

Multiple Contracts

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

Multiple Contracts
השיעור מראה שירות עם שני קונטרקטים שחשופים על כתובות נפרדות, כאשר הלקוח מתחבר לשניהם.
הוספת קונטרקט שני
1. מוסיפים ממשק IArrayServices עם ServiceContract ושתי פעולות: GetSum שמחזירה את סכום מערך של מספרים שלמים, ו-GetAverage שמחזירה ממוצע כ-double.
2. מחלקת Calculator ממשת את שני הממשקים. כך נוצרת מחלקה אחת עם שני קונטרקטים.
למה מחלקה אחת: ServiceHost מקבל מחלקה אחת. אפשר להשתמש בשני הוסטים נפרדים, אבל השיעור בוחר במחלקה אחת עם שני קונטרקטים.
ההוסט
1. יוצרים שני endpoints, אחד לכל קונטרקט, כל אחד על כתובת נפרדת.
2. נותנים לכל endpoint שם, למשל Calculator endpoint ו-Array Services endpoint.
3. מוסיפים Behavior אחד עם Service Metadata ו-HTTP Get Enabled, כך שמסמך WSDL אחד מתאר את שני הקונטרקטים.
הלקוח
1. מוסיפים Service Reference אחד. נוצרות שתי מחלקות פרוקסי באותו מרחב שמות: CalculatorClient ו-ArrayServicesClient.
2. בכפתור שמחשב ממוצע משתמשים ב-ArrayServicesClient ומעבירים לו מערך של שני המספרים.
3. מציגים את הממוצע ב-MessageBox. למשל הממוצע של 11 ו-22 הוא 16.5.
הלקוח מתחבר לשני הקונטרקטים דרך WSDL אחד, ומשתמש במחלקות פרוקסי נפרדות.
השיעור הבא בקורס: Pattern - Request-Reply

פרקי ההרצאה: Multiple Contracts

  1. 00:00

    שירות עם שני קונטרקטים

  2. 00:38

    הגדרת הממשק IRA Services

  3. 01:44

    מחלקה אחת שמממשת שני ממשקים

  4. 02:23

    שני Service Hosts ו-WSDL נפרדים

  5. 03:44

    מימוש הפונקציות Sum ו-Average

תמלול ההרצאה: Multiple Contracts

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

  1. 00:20

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

  2. 00:30

    אז קודם כל אנחנו רואים שיש לנו פה קונטרקט אחד, iCלקולטור. ב-iCלקולטור יש לנו את הפונקציות Add, Sub, Mod, D ו-Average.

  3. 00:39

    בואו נוסיף עוד קונטרקט, Add New Item, נבחר באינטרפייס, אינטרפייס כמובן זה קונטרקט, ונגדיר שהאינטרפייס הזה נקרא IRA Services, פעולות בנוגע למערכים, שזה גם איפשהו קשור לעולם של חישובים.

  4. 01:05

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

  5. 01:31

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

  6. 01:50

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

  7. 01:57

    עכשיו, למה אני לוקח מחלקה אחת שתממש? מפני שאם אני מסתכל על ה-host, אני רואה שיש לי פה את ה-Object Service Host, שה-Object Service Host אומר לנו, תביאו לי מחלקה אחת Object Singleton Instance או שתביאו לי Type אחד ויחיד שאתם רוצים שאני אחשוף לאוויר אז אנחנו כמובן עם כל Service

  8. 02:20

    Host יכולים להריץ רק מחלקה אחת עכשיו אנחנו יכולים לשכפל את ה-Service Host לשני Service Hosts ולהריץ את שניהם באותו פרויקט הוסט שרץ ודבר שניתן לביצוע אבל צריך לבקור ש Service Host 1 יכול לחשוף החוצה אך ורק HTTP Get URL 1, כלומר רק מסמך WSDL 1 הוא יכול לחשוף.

  9. 02:51

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

  10. 03:05

    וזה אומר שהלקוח מבחינתו יצטרך להתחבר פעמיים, פעם אחת לקובץ הראשון ואז הוא יקבל את המחלקה הראשונה, פעם אחת לקובץ השני ואז הוא יקבל את המחלקה השנייה.

  11. 03:16

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

  12. 03:31

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

  13. 03:49

    נגדיר i array services, נממש אותו ונכתוב את הפונקציות. אז יש לנו פה את ה-get sum שמה שאנחנו רוצים לעשות זה לבנות איזשהו משתנה int sum להכניס לתוך האפס.

  14. 04:04

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

  15. 04:16

    יש לנו for each int item in array sum+=item ולבסוף אנחנו מחזירים את הsum ב-get average אנחנו פשוט יכולים להחזיר את get sum של array לחלק ל-array וכמובן להפוך אחד מהם לדאבל בכדי שכל התוצאה

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

ההרצאה הקודמת: Data Contracts

ההרצאה הבאה: Pattern - Request-Reply

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

  • הסבר על Multiple Props Children
  • שימוש במספר טפסים - Multiple Forms
  • Multiple Pages - שימוש במספר דפים
  • עבודה עם מספר פרויקטים - Multiple Projects - DLL

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

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