RSS

SignalR Internals Flow Part I

22 ספט

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

1. נקודת ההתחלה של SignalR נמצאת במחלקה בשם AspNetBootstrapper והמתודה Initialize מוסיפה חוק לטבלת החוקים של ה-RouteTable. אבל מי מפעיל את המתודה Initialize ומתי? זה תפקידו של PreApplicationStartMethodAttribute שמסמן לASP.NET- להפעיל את המתודה בזמן עלית המערכת, זה שקול לכתוב את הקוד הזה בעצמינו ב- Global.asax בתוך המתודה Application_Start().

 

clip_image002

2. MapHubs היא מתודה מסוג Extension Methods. ויש לה 3 תפקידים מרכזים:

a. להגדיר את המימוש לממשק IAssemblyLocator, במילים פשוטות איך לטעון את ה-DLL השונים של התשתית.

b. להגדיר את תבנית ה-URL שה- SignalR עובד איתה. (routeUrl = "~/signalr /{*operation}")

c. להגדיר את Handler שיטפל בבקשה עם היא תקיים את התבנית של סעיף b.

 

clip_image004

3. HubDispatcherRouteHandler ממש את הממשק IRouteHandler ותפקידו לספק מחלקה שמממשת את

clip_image006

הממשק IHttpHandler או בגירסה של הדוט-נט 4.5 IHttpAsyncHandler.

כמו שאנחנו רואים HubDispatcherRouteHandler במתודה GetHttpHandler מחזיר את המחלקה AspNetHandler לאחר שהוא מהתחל אותה ב- HubDispatcher שהוא המחלקה שעושה באמת את העבודה.

4. ה- HubDispatcher הוא ה"לב" של המערכת והוא נכנס לפעולה כל פעם שיש התאמה לתבנית ה-URL שהגדרנו בסעיף 2. תפקידו של HubDispatcher לעשות את המשימות הבאות:

a. ליצור את ה-Hub שהמשתמש בנה.

b. למצוא את המתודה שצריך להפעיל ע"פ בקשת ה-JS .

c. לשחזר את ה-State של ה-Hub שהמשתמש הגדיר.
כאן עולות הרבה שאלות, מאיפה HubDispatcher שולף את הנתונים והאם אפשר לשנות את ההגדרות, כמו למשל עם Sessions. איך זה עובד עם Load Balance?

d. להפעיל את המתודה של ה-Hub שלנו שמצאנו בסעיף b.

סיכום:

בחלק הראשון של הפוסט ראינו איפה נקודת ההתחלה של SignalR. ועקבנו אחרי הזרימה של הדברים עד שהגענו ל"לב" של המערכת, למחלקה HubDispatcher שאחראית בפועל להפעיל לנו את ה- Hub שלנו.

בחלק שני נתמקד ביותר פרטים איך עובד ה- HubDispatcher.

יום עיון בנושא יהיה בתאריך 27.12.2012 בכנס ExpertDays 2012.

מודעות פרסומת
 
השארת תגובה

פורסם ע"י ב- ספטמבר 22, 2012 ב- Uncategorized

 

כתיבת תגובה

הזינו את פרטיכם בטופס, או לחצו על אחד מהאייקונים כדי להשתמש בחשבון קיים:

הלוגו של WordPress.com

אתה מגיב באמצעות חשבון WordPress.com שלך. לצאת מהמערכת / לשנות )

תמונת Twitter

אתה מגיב באמצעות חשבון Twitter שלך. לצאת מהמערכת / לשנות )

תמונת Facebook

אתה מגיב באמצעות חשבון Facebook שלך. לצאת מהמערכת / לשנות )

תמונת גוגל פלוס

אתה מגיב באמצעות חשבון Google+ שלך. לצאת מהמערכת / לשנות )

מתחבר ל-%s

 
%d בלוגרים אהבו את זה: