
ServiceContract, כמו לממשק הבסיסי. בשיעור, בלי האטריביוט, נזרקה חריגה.http://127.0.0.1:6065/MyCalculator. לכל endpoint מוסיפים סיומת.הטקסט המלא של הדקות הראשונות בהרצאה «Proxy - Multiple Addresses» בקורס הווידאו של PracticU – כתוביות בעברית עם זמן התחלה לכל פסקה. כך תוכלו לקרוא ולחפש את הנושאים לפני שמתחילים ללמוד.
הדבר הבא שאנחנו הולכים לראות זה איך להרים הוסט שמאזין לשני אדרסס שונים וכמובן אחר כך להתחבר דרך פרוקסי לאדרסס האלה. קודם כל למה אנחנו צריכים לעשות את זה?
אז בואו נניח שיש לנו כאן את המחלקה של הכלקולטור והיא מאפשרת לנו פעולות בסיסיות של כלקולטור ואנחנו רוצים להוסיף גם כלקולטור שמאפשר פעולות יותר מורכבות ולאפשר ללקוח להשתמש או עם זה או עם זה.
בואו נשנה כרגע את האינטרפייס I-Calculator ל-I-Basic Calculator. או אפילו יותר טוב, הייתי משנה את השם של הקובץ ל-I-Basic Calculator, וזה כמובן משנה גם את המחלקה, ובואו נסתכל, נראה שהוא שינה בכל מקום שהוא השתמש עם I-Calculator, הוא שינה ל-I-Basic Calculator.
אותו הדבר, אני אשנה את המחלקה Calculator ל-Basic Calculator. בואו נסתכל עליה, ונראה שיש לנו פה את המחלקה Basic Calculator ואנחנו רואים שגם כאן בהוסט הוא שינה בכל מקום ל-Basic Calculator.
ומה שבנינו זה מחלקה שמאפשרת ביצוע פעולות פשוטות, בואו נניח שאתם רוצים איזשהו שירות שיאפשר דברים בסיסיים ללקוח. בנוסף לשירות הזה אתם רוצים עוד שירות שיאפשר פעולות יותר מורכבות באותו נושא.
אז בואו נלך לפרויקט של ה-Calculator Library שלנו ונוסיף עוד אינטרפרט. Add New Item, נוסיף אינטרפייס עבור פעולות יותר מורכבות שקשורות לקלקולטור ואני בוחר אינטרפייס ואני מוסיף I Advanced Calculator, נמחק את זה, נוסיף את האינטרפייס הזה שמאפשר לנו פעולות קצת יותר מורכבות לגבי קלקולטור, נגדיר אותו כ-Public ונירש את ה-Basic Calculator
כי יש לו גם את הפעולות הבסיסיות וגם אנחנו נוסיף עוד פעולות יותר מורכבות. בואו ניקח מהבייסיק את פונקציית Average שמקודם הוספנו ונעביר אותה ל-Advanced. בנוסף לזה בואו נבנה עוד פונקציה שתבצע לנו פעולות של חזקה.
נקרא לה Power והיא תאפשר לנו ביצוע פעולות של חזקה. אז אחרי שהוספנו את האינטרפייס של פעולות כלכלתור יותר מורכבות, בואו נבנה מחלקה כזאת.
ניגש שוב פעם לפרויקט, נוסיף קלאס ונקרא לקלאס הזאת Advanced Calculator והקלאס הזאת כמובן הולכת להיות Public ולרשת קודם כל את ה-Basic Calculator.
נעביר מה-Basic Calculator את פונקציית Add, יותר נכון את Average, כי היא שייכת נניח לפעולות המורכבות ובנוסף נממש גם את ה-Advanced Calculator. אז יש לנו פה את הפונקציה Power, וכל מה שאנחנו צריכים לעשות זה להחזיר math.power לשלוח את num1 ו-num2 ויש לנו גם את השירות הזה שאנחנו יכולים לספק.
אוקיי, אז מה בעצם יצרנו פה? יצרנו ב-WCF Service שני דברים. דבר אחד זה ממשק שמאפשר פעולות של כלקולטור בסיסיות ומחלקה שיורשת אותו. דבר שני, ממשק שמאפשר פעולות של כלקולטור מורכבות יותר ומחלקה שמממשת אותו.
אתם יכולים לקחת את זה לכל מיני מקומות, נניח אתם רוצים לאפשר פעילויות בסיסיות עם השירות שלכם ופעולות מורכבות יותר עם השירות שלכם, שכמובן יכולות לכלול גם את הפעולות הבסיסיות, אבל לא חייבות, ולהפריד אותם לשני אינטרפייסס שונים, ועכשיו אתם יכולים לספק ללקוח אפשרות להשתמש או עם זה או עם זה.
אוקיי, אז בואו נסגור את כל החלונות ונראה מה הדברים שאנחנו צריכים לשנות קודם כל בהוסט. אז בפרויקט ההוסט שלנו אנחנו רואים שיש לנו כרגע התייחסות רק לבייסיק קלקולטור.
בנוסף, בגלל שיש לנו רק שירות אחד, היה לפני זה בוא נגיד, אז הוא נמצא על כתובת אחת ויחידה. אנחנו עכשיו הולכים לשנות את זה ולהגדיר שתי כתובות.
במקום לחזור כל הזמן על הכתובת הראשית, מה שאנחנו יכולים לעשות זה דבר כזה: אנחנו יכולים לפתוח אובייקט מטיפוס URI שמתאר לנו כתובת כלשהי בעולם, כתובת לוגית, ונקרא לאובייקט הזה Base Address.
התפקיד של האובייקט הזה זה לתאר כתובת בסיסית שאין בה שום דבר אבל אנחנו נוסיף עליה שתי כתובות אחרות וככה אנחנו ניצור שתי כתובות ה-base address פלוס איזושהי סיומת ששייכת לכתובת יותר ספציפית.
אז בואו נבנה אובייקט מה-URI וניתן לאובייקט את ה-base address שמקודם בנינו. כלומר את כל הנתיב הזה. אוקיי, עכשיו אנחנו יכולים ליצור עוד שתי מכרוזות.