Remoting & Events

gilad g

New member
Remoting & Events

אז ככה: מדובר ב-Remoting. יש סרבר, וכמה מפתיע - יש קליינט
אצל הסרבר יש אובייקט שהוא Remoted (כלומר יורש מ-MarshalByRefObject), נקרא לו ServerObj. הקליינט יכול להפעיל מתודות אצל הסרבר, וזה עובד ללא בעיה. מה שאני לא יודע איך עושים, זה איך הקליינט יכול להירשם ל-events שנמצאים במחלקת השרת, ושהשרת יקפיץ אותם אצל הלקוח, כשצריך. ניסיתי לעשות את זה, אבל מסתבר שהמחלקה של הלקוח שבה יש את ה-Event Handler אף היא צריכה לרשת מ-MarshalByRefObject, ולא רק זה, אלא לשרת צריך להיות עותק מלא אליה (או reference אליה). כלומר, אי אפשר לעבוד פה עם interfaces, וזה לא מה שאני רוצה. כרגע יש לי משהו כזה עובד, אבל זה לא עם events, אלא מה שקורה זה שבעצם השרת מפעיל מתודה באובייקט שנמצא אצל הלקוח (היפוך תפקידים, בעצם). הייתי בכל זאת רוצה להשתמש ב-events, כי זה יותר נכון לדעתי. אשמח לכל רעיון
 

אבי דקל

New member
אפשר להדחף לך לאשכול ? ../images/Emo13.gif

יש לי שאלות באותו הקשר, לא תשובות
אשמח לתשובות
1. Remoting - אם הבנתי נכון, המטרה היא לאפשר הרצת מתודות של אובייקטים מסויימים, הרצים בכלל בתוכנית אחרת. האם אני צודק ? אפשר דוגמא קטנה למשהו שימושי ב REMOTING, שיבהיר את התמונה ? 2. מדוע בעצם לא להשתמש ב WebService במקום ב Remoting ? 3. כיצד בכלל אני פונה לאובייקט המרוחק ? (שם מחשב + שם פרוסס ?) 4. מה זה ה MarshalByRefObject הזה ? (אי נתקל בו בכל מיני מקומות...) תודה
 

gilad g

New member
נו פרובלם ../images/Emo13.gif

1. "הרצים בכלל בתוכנית אחרת". לא רק. גם ב-AppDomain אחר
כמו תמיד, אין כמו דוגמאות מה-MSDN: http://msdn.microsoft.com/library/en-us/cpguide/html/cpconremotingexamples.asp?frame=true
2. Remoting הוא בעיקר גם לתקשורת על TCP, וגם בעיקר לתקשורת שבה שני הצדדים מודעים אחד לשני, ומצפים למשהו אחד מהשני. בדר"כ לא תהיה תקשורת של XML, SOAP, וכו'
יש על ההבדלים בין WS ל-Remoting המונים של מאמרים - חפש בגוגל. 3. לא.. ע"י url. זה נראה משהו כמו: tcp://compname:921/Server. שוב, תסתכל בדוגמאות
4. אם אתה יורש מ-MBRO זה אומר שהאובייקט יכול להיות remoted, כלומר שאפשר לקרוא למתודות שלו מ-AppDomain אחר.
 

nattygur

New member
גלעד זה אפשרי.

אין לי כל כך זמן עד יום רביעי, עסוק במצגת. בעיקרון ברגע שהשרת מחזיר אירוע ללקוח היחסים מתהפכים וה הלקוח הופך שרת והשרת לקוח וזה דורש מהלקוח לרשת מ MarshalByRefObject ולפתוח Port. בכדי לשנות את הירושה של הלקוח מה שאני נוהג לעשות זה להוסיף עוד מחלקת שרות שהיא תרש מ MarshalByRefObject והלקוח ישתמש בה. הלינק בסוף הוא דוגמה למה שאתה מחפש. הדוגמה הזאת מציגה כיצד ניתן מתוך דף ASPX להירשם לאירועים במחלקה אשר נמצאת תחת COM+ הווה אומר dllhost.exe ולקבל אירוע כל פעם שהשרת אסף נתונים. http://www.developersdex.com/gurus/code/607.asp אשמח לעזור יותר מיום חמישי ואילך
 

gilad g

New member
לא הבנתי..

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

nattygur

New member
טיפה

כי במקרה שצינתי הלקוח (שזה הדף) יורש כבר מ Page. מקווה שאני ברור. דרך אגב הפסקתי לקבל דוא"ל על תגובות.
 

gilad g

New member
אתה לא ממש ברור..

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

nattygur

New member
ממש ממש אין לי זמן, נורא מצתער.

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