
void. פונקציה שמחזירה ערך לא יכולה להיות one-way.OperationContract, כותבים IsOneWay = true.sendFeedback מדמה עבודה ארוכה בשרת. בשיטה הרגילה ההודעה בלקוח הופיעה רק אחרי שהשרת סיים, כלומר אחרי חמש שניות. אחרי ההגדרה כ-one-way הלקוח המשיך מיד, והשרת סיים את עבודתו ברקע.הטקסט המלא של הדקות הראשונות בהרצאה «Pattern - One Way» בקורס הווידאו של PracticU – כתוביות בעברית עם זמן התחלה לכל פסקה. כך תוכלו לקרוא ולחפש את הנושאים לפני שמתחילים ללמוד.
השיטה השנייה שיש בנוגע למסג' אקסצ'יינג' פאטרן נקראת one-way. בואו נסתכל על הדוגמה הקודמת שעשינו. יש לנו את הכלכולטור בצד של הקליינט, את השירות בצד של הקליינט, שאנחנו קראנו לפונקציה sendFeedback.
הפונקציה הזאת בצד של השרת, בואו נסתכל עליה, החזירה לנו void, לא החזירה שום ערך, ועשינו פה הדמיה כאילו שהיא לוקחת הרבה זמן, ואז כותבת משהו על הקונסול.
כאשר אנחנו קראנו לה מה הלקוח, אנחנו היינו צריכים להמתין עד שהיא תסתיים מפני שאנחנו עבדנו בשיטת request reply. זה אומר שאנחנו פשוט קראנו לה והיינו צריכים להמתין שהפונקציה תסתיים אפילו שהיא החזירה לנו void ולא היינו בעצם צריכים להמתין לה בכלל.
אז איך אנחנו בעצם מגדירים שיטה אחרת ובואו נסתכל על השיטה שאנחנו צריכים להגדיר שהיא one-way. שיטת one-way אומרת אנחנו קוראים לפונקציה שא' חייבת להחזיר void לדוגמה הפונקציה הזאת sendFeedback ובי"ת אנחנו לא צריכים להמתין שהפונקציה תסתיים.
זה אומר שהלקוח הולך לקרוא לפונקציה sendFeedback במקרה הזה, והפונקציה sendFeedback הולכת לשלוח את הקריאה ומיד להמשיך הלאה ולהגיע לשורה הבאה, במקרה הזה של המסג'בוקס.
יכול להיות שהפונקציה הסתיימה בשרת, יכול להיות שהיא לא הסתיימה, יכול להיות שבכלל הקריאה עדיין לא הגיעה, ויכול להיות שייקח לה שעה להתבצע בשרת. את הלקוח זה לא מעניין. הוא קרא לפונקציה, המשיך הלאה, מה שיקרה בשרת יקרה בשרת, אנחנו לא צריכים להמתין לפי יום הפונקציה.
איך אנחנו מגדירים פונקציה כזאת? אז אנחנו הולכים לאינטרפייס ואנחנו רואים את ההגדרה של sendFeedback. מעל ההגדרה של sendFeedback יש לנו את ה-OperationContract שזה האטריביוט שחושף החוצה את הפונקציה sendFeedback.
ואנחנו צריכים לפתוח פה סוגריים ולהגדיר את הפרמטר isOneWay=true ולסגור סוגריים. ברגע שעשינו את הדבר הזה אוטומטית הפכנו את הפונקציה ל-OneWay אבל פונקציה must return void אנחנו לא יכולים לעשות את הדבר הזה בפונקציה שלא מחזירה void אוקיי בואו נסתכל עכשיו איך המערכת פועלת עם הקריאה ובלי הקריאה אז בואו קודם כל נעשה את זה בלי הקריאה מה שנעשה זה נוריד את זה
נבדוק שאכן המערכת רצה כך שגם השירות רץ וגם