
EndpointAddress עם כתובת השירות.BasicHttpBinding.CreateChannel() מחזיר אובייקט שממש את הממשק. מאותו אובייקט קוראים לפונקציות.הטקסט המלא של הדקות הראשונות בהרצאה «Proxy - Channel Factory» בקורס הווידאו של PracticU – כתוביות בעברית עם זמן התחלה לכל פסקה. כך תוכלו לקרוא ולחפש את הנושאים לפני שמתחילים ללמוד.
אנחנו הולכים עכשיו ליצור פרוקסי בצד של הקונסיומר בשיטה קצת שונה. מה שאנחנו הולכים לעשות זה לתת לקונסיומר, לתוכנה שרוצה להשתמש בשירות, את האינטרפייס שלנו, כלומר את הקונטרקט, ממש לתת לו את האינטרפייס באיזשהו DLL, וכמובן ברגע שיש לו את האינטרפייס הוא לא יכול סתם ככה לפתוח
אובייקט ממנו, כי מאינטרפייס אי אפשר להגדיר אובייקט, הוא יצטרך לבצע איזושהי פעולה ולהביא פרוקסי מהשר"ט על ידי רכיב שנקרא Channel Factory. אז ראשית בואו נוציא את האינטרפייס שלנו מה-DLL של ה-Calculator Library ל-DLL אחר.
אז בואו נצרף פרויקט חדש, New Project ונבחר ה-Class Library ונגדיר שהפרויקט הזה נמצא, או יותר נכון נקרא iCalculator Library. נבצע אוקיי וצירפנו עוד פרויקט שהוא dll. נמחק את המחלקה שיש בו delete ונעביר את ה-i-calculator אליו.
פשוט אני גורר אותו לפרויקט השני ומוחק אותה מהפרויקט המקורי שבנינו אותה. עכשיו אנחנו צריכים כמובן שה-calculator library, כלומר ה-wcf-service שלנו יכיר את הממשק הזה.
בשביל זה נבצע reference, עד רפרנס ונוסיף את ה-i-calculator-library שמכילה את האינטרפייס לפרויקט של ה-wcf-service. כך הוא מכיר אותה.
בנוסף אנחנו צריכים שההגדרות של ה-attributes האלה שכרגע נמצאות ב-i-calculator-library יוכרו והם הוגדרו ברפרנס שנקרא System.ServiceModel אנחנו יכולים לראות אותו כאן.
אז בואו נצרף את System.ServiceModel גם ל-iCalculatorLibrary וכעת מה שעשינו זה הפרדנו את ה-interface שנמצא ב-DLL-א' והמחלקה שמממשת אותו ב-DLL-ב'.
הקונסול הוסט מכיר את CalculatorLibrary וכמובן שהוא יכיר גם את iCalculatorLibrary. עכשיו הקונסיומר, אנחנו הולכים לתת לו את ה-DLL הזה.
אם יש לו רק את ה-DLL, כמובן שהוא לא יוכל להשתמש בו ולא יוכל לבנות אובייקט ממנו, שכמו שאמרנו מאינטרפייס אי אפשר לבנות אובייקט אז בואו נראה את זה דבר ראשון נלך לקונסיומר וניפטר מההגדרות הקודמות שהגדרנו נוריד את האפ קונפיג נוריד את הקלקולטור ונבדוק כרגע את הקוד כרגע בקוד אין לי אפשרות להגדיר אובייקט מפני שאין לי את
השירות עצמו ובואו נמחק את זה ונככב את כל היתר כעת בואו נצרף את ה-dll i-calculator-library לקליינט כי כל הרעיון זה שאנחנו כן נותנים לו dll אבל שמכיל רק את האינטרפייס אז ניתן לו את i-calculator-library ויש לו כרגע את האינטרפייס והוא יכול ליצור רפרנס ממנו אוקיי אז אני יכול כרגע לבוא i-calculator-library או יותר נכון i-calculator
ליתר דיוק זה השם של האינטרפייס CalculatorLibrary זה המרחב שמות וזה הולך להיות הסרוויס שלנו. אבל מה אנחנו מגדירים בתוך הסרוויס, איך אני יוצר אובייקט? הרי ברור שאני לא יכול ליצור אובייקט מטיפוס iCalculator מפני שהדבר הזה זה אינטרפייס.
כרגע אני רואה שיש לי כמובן שגיאה, לא ניתן ליצור אובייקט מאינטרפייס כי זה לא באמת אובייקט. אז בואו שנייה אחת נשים את זה בהערה ונראה מה אנחנו צריכים להוסיף.
אז אנחנו צריכים להוסיף אובייקט מטיפוס Endpoint Address. זה נמצא בסיסטם סרוויס מודל, אם לא היה לנו את זה בקליינד אנחנו צריכים להוסיף את ה-dll הזה.
אז יש לנו פה את האדרס, ניצור אובייקט מה-endpoint address וכאן אנחנו צריכים לתת את הכתובת של השירות, לא של ה-MSIL. בואו ניזכר איפה הכתובת של השירות עצמו יושבת.
הכתובת של השירות חשופה במיקום הזה. אז בואו נעתיק את זה, ctrl+c ונדביק את זה כאן.