שאלה על webservices

alexrait1

New member
שאלה על webservices

אני מעונין לבצע באמצעות ה webservice שלי משהו דומה לארועים - events. שרת A חושף איזשהו API ומבצע ואת הלוגיקה שלו באופן תקופתי. הבעיה: לידע את הלקוח B כל פעם שהמידע משתנה. האם יש אמצעים פשוטים לישם את את זה באמצעות המנגון הקיים או שזה דורש אמצעים אחרים? תודה.
 
הדרך היחידה לידע לקוח היא...

אם הלקוח גם "יחשוף משהו", כלומר יהפך גם כן לשרת לצורך קבלת התגובה משרת A. דרך אחת היא, שגם על הלקוח יהיה WebService חשוף שידע לקלוט את האירוע. דרך שנייה היא, TCP/IP... (לא מומלץ). אם תפרט יותר את הבעיה שלך אלי נוכל לחשוב על משהו יותר נח. מי כאן "לקוח B"? סתם לקוח מרחבי האינטרנט? או שרת נוסף שברשותך? אולי מדובר במשהו כמו מערכת צא'ט?
 

alexrait1

New member
מדובר על מערכת

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

Miki Watts

New member
האם המערכת אמורה להיות

ב Real time ? אם לא, אפשר ש B ישאל כל כמה דקות/שניות את A אם השתנה משהו.
 

alexrait1

New member
המטרה בסופו של דבר

זה להגיע לביצועים דומים ל MSMQ למי שמכיר. הפתרון שלי כרגע הוא כזה: A מחזיק שרת וגם B מחזיק שרת. כשאני שולח מ A ל B בקשה לקבל נתונים ברגע שהם מתעדכנים לגבי איזשהו ארוע או משהו כזה, אני שולח את (שם של) הפונקציה ש B צריך להפעיל על השרת של A. שזה פתרון נחמד, אבל חשבתי אולי קיים משהו מובנה בתוך ה webservices. הבעיה השניה שהתעוררה אצלי זה כשאני מבקש מ A שאמור להציג את תוצאות האלגוריתם, להציג אותו באמצעות GUI ואני לא יודע איך לעשות את זה. כלומר נניח שיש לי MyWebServer (שזה A). אני רוצה שהוא יפעיל GUI בתוך ה"לוגיקה" שלו. אני אנסח את השאלה קצת אחרת. נניח שיש לי form שמראה גרפיקה. אני רוצה לחשוף את המתודות של ה form הזה באמצעות WebService (בלי http, סתם tcp). האם זה אפשרי? תודה.
 
WebServices בנוי על Http דוקה

בשילום עם Soap לצורך העבת נתונים מורכבים. אז אם אתה רוצה לממש תקשורת Tcp/IP שיערב לך, אבל זה לא נראה נחוץ אא"כ זו מערכת זמן אמת (כפי שכבר צוין). בפרוטוקול Http לצורך אבטחה, לא ניתן לפנות לIP מסויים אא"כ הוא "מצפה" (listening) לכך. לכן עליך להגדיר את את "תחנה ב" שגם כן תחשוף מתודות שונות (לצורך הGUI אם הבנתי נכון) שדרכן היא תקבל נתונים בשיטת "דחיפה", שזה יספק תוצאה קרובה ל"זמן אמת".
 

yonigold

New member
פשוט מאוד

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

yonigold

New member
אפשרות נוספת

רכיב אחד A אחראי על ביצוע של אלגוריתם כלשהו, בין היתר הוא חושף לעולם את ה-DATA SOURCE שלו, קרי הנתונים שהוא יוצר בשירות כלשהו. פשוט WEB SERVICE שבכל רגע נתון מחזיר את הנתונים הקיימים כרגע. רכיב השני B אחראי על ביצוע שאילתה לאותו שירות והצגת הנתונים בפורמט כלשהו. אם A חייב להודיע לB ולעולם שקרו דברים, הוסף מתודה נוספת בA המאפשרת רישום לאירועים. כשמישהו פונה אליה, כתובתו תירשם בזיכרון ובכל התרחשות של האירוע תודיע לשירות המתאים ב-B. כדי לעשות את זה STRONG TYPE תוכל לבצע בדיקה בזמן רישום האירוע בA שאכן הWS בB תומך בקבלת האירוע קרי מממש מתודה כלשהי, למשל ONDATACHANGE. זה לא לחלוטין נקי אבל מתקרב להיות...
 
למעלה