DCSIMG
Event-based Asynchronous Pattern פשוט חמק ממני! - Essential WPF

Event-based Asynchronous Pattern פשוט חמק ממני!

אני פשוט לא מאמין שקיים Pattern חדש (אולי כבר ישן) נוסף, לפחות ב-.NET 2.0 למימוש קריאות אסינכרוניות. וזה לא ה-Pattern הסטנדרטי: Asynchronous Programming Design Patterns.

קוראים לו: Event-based Asynchronous Pattern

אגב זאת גם הסיבה שהקומפיילר מייצר Proxies לטובת Web Services וכו', ללא זוג המטודות הנוספות שהתרגלנו אליהם: BeginXXX, EndXXX.

אז מה קורה פה?

אם תסתכלו טוב, תמצאו מטודות שמסתיימות עם Async, AsyncCancel, ובנוסף Event שאפשר להרשם אליו, והוא פועל כשההפעלה האסינכרונית הסתיימה (אגב ה-BackgroundWorker תומך ב-Pattern הזה). בגדול, לפחות מבחינת המשתמש ולא העורך, הרבה יותר קל להשתמש ב-Types שתומכים ב-Pattern הזה. מה גם שיותר נכון להרשם ל-Event מאשר למסור Delegate. מבחינה ארכיטקטונית, Delegate מייצג Callback שמתאים יותר לתכנות פרוצדורלי ולא אובייקטלי. בסה"כ הכללי, ה-Pattern החדש גם מרחיב את הפעילות ע"י כך שמציע שיטות לעצור/לבטל את הקריאה האסינכרונית.

איך הגעתי לזה? ממש במקרה. אני בדיוק כותב את הפרק Asynchronous and Multithreading לקורס Essential WPF, ובמקביל קורא להנאתי חומר שקשור לנושא ב-MSDN: Threading Model תחת WPF. בסוף העמוד: Writing Components Using Threading מזכיר את הנושא.

מיד קפצתי לקרוא במה מדובר: http://msdn2.microsoft.com/en-us/library/wewwczdw.aspx.

עכשיו אני שוקל אם להכניס את הנושא לקורס, או לא.

אשמח לקבל רעיונות נוספים, ו/או חוות-דעת.

Published Friday, December 15, 2006 2:34 PM by Tomer Shamam

Comments

No Comments

Leave a Comment

(required) 
(required) 
(optional)
(required) 

Enter the numbers above:
Powered by Community Server (Commercial Edition), by Telligent Systems