בפעם הקודמת הסברתי על היכולות של התשתית ואיך להריץ את האפליקציה לדוגמא , בפוסט הזה אני אסביר איך כל אחד יכול לעבוד איתה בפרוייקט שלו.
אם לא מעוניינים ב NuGet אפשר ישר לקפוץ לשלב הבא "הוספה ידנית – ללא NuGet"
התקנה באמצעות NuGet
אני מתבסס על זה שכבר יודעים מה זה NuGet , אם בכל זאת לא מכירים אפשר לקרוא כאן ובעברית
Add Library Package reference:
חיפוש והתקנה של החבילה P2PSync
לאחר שהחבילה הותקנה נוספים לפרויקט מספר assemblies וכמו כן קובץ app.config מתעדכן (או נוצר אם לא היה קודם)
ה assemblies:
(dependencies for NLog)
NLog.dll
NLog.Extended.dll – הקובץ הזה איננו חובה וניתן להוריד אותו , במיוחד באפליקציות עם .Net client profile – שאז הוא לא מתאים.
Roniz.Diagnostics.Logging.dll - מעטפת שלי ל NLog
כל ה assemblies הללו כדי לתמוך ב Logging , אני משתמש ב Log2Console , ניתן להוריד מ codeplex.
וה assemblies העיקריים של התשתית:
Roniz.WCF.P2P.Channels.dll
Roniz.WCF.P2P.Messages.dll
Roniz.WCF.P2P.Sync.dll
Roniz.Diagnostics.Logging.dll
הוספה ידנית – ללא NuGet
במידה ולא רוצים להשתמש ב NuGet צריך להוריד את הגרסה האחרונה מ codeplex.
ולהוסיף את הקבצים הבאים לפרויקט:
Roniz.Diagnostics.Logging.dll
Roniz.WCF.P2P.Channels.dll
Roniz.WCF.P2P.Messages.dll
בנוסף להוריד מ NLog ולהוסיף את הקבצים הבאים:
NLog.dll
מימוש ה business logic הספציפי של הפרויקט
המימוש נעשה ע"י ירושה מRoniz.WCF.P2P.Sync.Interfaces.ISynchronizationBusinessLogic - באפליקציה לדוגמא זה ה Roniz.WCF.P2P.ApplicationTester.MySynchronizationBusinessLogic
מימוש הודעות בין ה peers:
FullPresenceInfo – מכיל את הנתונים שישלחו מה peer לשאר ה peers כשהסטטוס שלו נהפך ל Online , באפליקציה לדוגמא זה ה Roniz.WCF.P2P.ApplicationTester.Messages.MyFullPresenceInfo class.
CompactPresenceInfo - מכיל את הנתונים שישלחו מה peer לשאר ה peers כשקוראים ל close ב manager – זה המקום שה peers האחרים יכולים לדעת ש peer מסוים ירד ולפעול בהתאם , באפליקציה לדוגמא Roniz.WCF.P2P.ApplicationTester.Messages.MyCompactPresenceInfo.
BusinessLogicMessageBase – ה base class שמשמש את כל ההודעות ה business logics האחרות (למשל הודעות עדכונים).
שימוש בקוד (הקוד מהאפליקציה לדוגמא):
אתחול synchronization manager:
כשמאתחלים את SynchronizationStateManager צריך לספק לו את הclass שמממש את ה businesslogic:
SyncManager = new SynchronizationStateManager(MySynchronizationBusinessLogic);
וכשרוצים להתחיל לסנכרן:
SyncManager.Open();
שליחת נתונים לאחר הסנכרון הראשוני
במהלך הריצה של האפליקציה בדרך כלל יש צורך בשליחת עדכונים לשאר ה הpeers , ניתן לעשות זאת באמצעות Update
לדוגמא:
var updateState = new MyStateContainer { StateDictionary = new Dictionary<Guid, MyUserUpdateState>(1) }; updateState.StateDictionary.Add(id, UserState); SyncManager.Update(updateState);
הפסקת סנכרון – סגירת ה manager:
הודעה לשאר ה peer שה peer הנוכחי יורד
SyncManager.Close();
אין תגובות:
הוסף רשומת תגובה