PracticU

Proxy - Channel Factory

בלי כתוביותעם כתוביות
PracticU › קורס WCF - תקשורת למתקדמים בדוט-נט › Proxy - Channel Factory
מילון מושגים:
פרוקסי - שרת מתווך שמעביר בקשות בין לקוח ליעד, ויכול לשמש להסתרה, לסינון, למטמון או לבקרת גישה.
ממשק - נקודת מגע בין רכיבים: ממשק משתמש שבו אדם מפעיל תוכנה, או ממשק תכנותי שמגדיר אילו פעולות רכיב אחד חושף לאחר.
שירות - תוכנה שרצה ברקע ומספקת פונקציונליות לרכיבים אחרים, לרוב ללא ממשק משתמש, ומופעלת אוטומטית עם המערכת.
DLL - קובץ ספרייה ב-Windows המכיל קוד ופונקציות שתוכנות שונות יכולות לטעון ולהשתמש בהן במשותף.
ספרייה - אוסף קוד מוכן, כמו פונקציות ומחלקות, שמפתחים משתמשים בו בתוכניותיהם במקום לכתוב הכול מחדש.
מחלקה - תבנית בתכנות מונחה עצמים שמגדירה אילו נתונים ופעולות יהיו לאובייקטים שנוצרים ממנה.
אובייקט - יחידה בתכנות מונחה עצמים שמאגדת נתונים (תכונות) ופעולות (מתודות). נוצר בדרך כלל ממחלקה המשמשת כתבנית.
Visual Studio - סביבת פיתוח משולבת (IDE) של מיקרוסופט לכתיבה, ניפוי והרצה של קוד, בעיקר בשפות .NET.

Proxy - Channel Factory
השיעור מציג יצירת פרוקסי בצד הצרכן בלי הפניה ל-WSDL. במקום זה הצרכן מקבל רק את הממשק, ומתחבר לשירות בעזרת ChannelFactory.
הפרדת הממשק
1. ה-ICalculator מועבר ל-DLL נפרד בשם ICalculatorLibrary. הוא מכיל רק את הממשק.
2. ה-Calculator Library מפנה לספרייה החדשה. שתי הספריות מפנות גם ל-System.ServiceModel, כי האטריביוטים מוגדרים שם.
3. הצרכן מקבל רק את ספריית הממשק, בלי המחלקה עצמה.
יצירת הערוץ
אי אפשר ליצור אובייקט מממשק, ולכן משתמשים ב-ChannelFactory:
1. כתובת: EndpointAddress עם כתובת השירות.
2. ביינדינג: BasicHttpBinding.
3. ChannelFactory: מקבלים את הביינדינג ואת הכתובת, ו-CreateChannel() מחזיר אובייקט שממש את הממשק. מאותו אובייקט קוראים לפונקציות.
הפעלה
בשיטה הזאת אין צורך ב-WSDL, ולכן אין צורך לחשוף אותו עם HttpGetEnabled. ההוסט צריך להכיר את ספריית הממשק. לפני בנייה מומלץ לבצע Clean ואז Rebuild, כי לפעמים Visual Studio ממשיך להשתמש ב-DLL ישן כשמבצעים רק Rebuild.
בשיטה זו הצרכן מתחבר לשירות בלי מידע על המימוש, והוא מכיר רק את הממשק.
השיעור הבא בקורס: Proxy - Multiple Addresses

פרקי ההרצאה: Proxy - Channel Factory

  1. 00:00

    שיטת Channel Factory והממשק כ-DLL נפרד

  2. 00:55

    ספריית iCalculator משותפת

  3. 01:42

    הפניה לממשק ו-System.ServiceModel

  4. 02:36

    הכנת ה-DLL של הממשק ללקוח

  5. 04:11

    למה לא ניתן ליצור אובייקט מממשק

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

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

  1. 00:20

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

  2. 00:39

    אובייקט ממנו, כי מאינטרפייס אי אפשר להגדיר אובייקט, הוא יצטרך לבצע איזושהי פעולה ולהביא פרוקסי מהשר"ט על ידי רכיב שנקרא Channel Factory. אז ראשית בואו נוציא את האינטרפייס שלנו מה-DLL של ה-Calculator Library ל-DLL אחר.

  3. 00:59

    אז בואו נצרף פרויקט חדש, New Project ונבחר ה-Class Library ונגדיר שהפרויקט הזה נמצא, או יותר נכון נקרא iCalculator Library. נבצע אוקיי וצירפנו עוד פרויקט שהוא dll. נמחק את המחלקה שיש בו delete ונעביר את ה-i-calculator אליו.

  4. 01:31

    פשוט אני גורר אותו לפרויקט השני ומוחק אותה מהפרויקט המקורי שבנינו אותה. עכשיו אנחנו צריכים כמובן שה-calculator library, כלומר ה-wcf-service שלנו יכיר את הממשק הזה.

  5. 01:47

    בשביל זה נבצע reference, עד רפרנס ונוסיף את ה-i-calculator-library שמכילה את האינטרפייס לפרויקט של ה-wcf-service. כך הוא מכיר אותה.

  6. 02:00

    בנוסף אנחנו צריכים שההגדרות של ה-attributes האלה שכרגע נמצאות ב-i-calculator-library יוכרו והם הוגדרו ברפרנס שנקרא System.ServiceModel אנחנו יכולים לראות אותו כאן.

  7. 02:18

    אז בואו נצרף את System.ServiceModel גם ל-iCalculatorLibrary וכעת מה שעשינו זה הפרדנו את ה-interface שנמצא ב-DLL-א' והמחלקה שמממשת אותו ב-DLL-ב'.

  8. 02:34

    הקונסול הוסט מכיר את CalculatorLibrary וכמובן שהוא יכיר גם את iCalculatorLibrary. עכשיו הקונסיומר, אנחנו הולכים לתת לו את ה-DLL הזה.

  9. 02:45

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

  10. 03:16

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

  11. 03:58

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

  12. 04:16

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

  13. 04:27

    אז אנחנו צריכים להוסיף אובייקט מטיפוס Endpoint Address. זה נמצא בסיסטם סרוויס מודל, אם לא היה לנו את זה בקליינד אנחנו צריכים להוסיף את ה-dll הזה.

  14. 04:41

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

  15. 05:01

    הכתובת של השירות חשופה במיקום הזה. אז בואו נעתיק את זה, ctrl+c ונדביק את זה כאן.

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

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

ההרצאה הבאה: Proxy - Multiple Addresses

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

  • מה זה Proxy ?
  • notification channel
  • פייטון design pattern factory
  • הגדרת JMeter כ-Proxy - חלק 1

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

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