WPF PRISM – Bootstrapping & Shell

כפי שאתם יודעים לכל אפליקציה צריכה להיות נקודות פתיחה.
בפוסט הבא נלמד כיצד לאפשר לאפליקצית Prism שלנו שלנו להתחיל לעבוד
וזאת באמצעות Bootstrapper ו Shell.

מה זה הBootstrapper?

כשמו כן הוא – ה Bootstrapper הוא בפשוט ה Class האחראי על אתחול האפליקציה שלנו.

איזה רכיבים נרצה לאתחל?

1. שירותי הליבה ש Prism נותן לנו:

  • IModuleManager: אחראי על שליפת מידע ואתחול המודולים של המערכת (יורחב בהמשך)
  • IModuleCatalog: חיבור ה Modules שנרצה לטעון למערכת
  • IModuleInitialize: אחראי על אתחול Module
  • IRegionMananger: אלו אלמנטים שיכלו את UI שלנו
  • IEventAggregtor: מאפשר ליצור אירועים ולתת אותם לרשומים אליהם
  • ILoggerFacade: מאפשר לנו לבחור באיזה דרך נרצה לממש לוגים
  • IServiceLocator: מאפשר לאפליקציה שלך לגשת לשירותים מסוימים

כמובן שאנחנו שאין צורך לאתחל את השירותים, אלא רק משנצטרך לטובת האפליקציה.

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

מה זה Shell?

בפשטות זה בעצם החלון הראשי של המערכת שיכיל בתוכו את
שאר "החלונות הקטנים" דומה Master Page ב ASP.NET.
ה Shell יכיל Regions ש"יוזרקו" אליו בזמן ריצה דרך ה Bootstrapper.

דוגמה ליצירת Bootstrapper ו Shell:

אנחנו ניצור Bootstrapper באמצעות Unity, ניתן להשתמש גם ב Mef
ליצירת Bootstrapper, אך המימוש שונה.

לאחר שיצרנו פרויקט ב WPF, יש להוריד מ Nuget כמה חבילות:

  1. Prism
  2. Unity
  3. Prism.UnityExtensions

עכשיו ניצור את ה Shell שלנו פשוט על ידי יצירת חלון חדש בשם Shell (ניתן לתת כל שם שנרצה לחלון).
לאחר מכן, ניצור Class חדש בשם Bootstrapper ונמקם אותה בתיקיה הראשית
של הפרויקט.

ה Bootstrapper יראה כך:

public class Bootstrapper : UnityBootstrapper
{
    protected override System.Windows.DependencyObject CreateShell()
    {
        return Container.Resolve<Shell>();
    }
    protected override void InitializeShell()
    {
        base.InitializeShell();
        App.Current.MainWindow = (Window)Shell;
        App.Current.MainWindow.Show();
    }
}

אז מה אנחנו רואים כאן?

ה Bootstrapper שלנו יורש מ Class שסופק לנו על ידי Prism.UnityExtensions
בשלב הבא ביצענו override ל 2 פונקציות שקבלנו מהורשה:
1. CreateShell – שבסך הכל אומרת ל Contiener של Unity לאכלס את חלון ה Shell
2. InitializeShell – מחליפה את הקוד של App.xaml StartUpUri="MainWindow,xaml

לכן בשלב הבא, נמחק מה App.xaml את השורה "StartUpUri="MainWindow,xaml
מכיוון שאנחנו כבר לא צריכים שה xaml של App יפתח עברנו את החלון ה Bootstrapper
יעשה זאת בשבילנו, לצורך כך נכנס לקובץ App.cs ונבצע overrde לפונקציה OnStartup,
ונקליד את קוד הבא:

protected override void OnStartup(StartupEventArgs e)
{
    base.OnStartup(e);
    var bootstrapper = new Bootstrapper();
    bootstrapper.Run();
}

עכשיו שנריץ את האפליקציה יוצג לנו ה Shell.

ניתן להוריד פרויקט לדוגמה מכאן

עם התגית: , , , ,
פורסם ב-Bootstrapper, prism, Shell, Unity, wpf
תגובה אחת ב“WPF PRISM – Bootstrapping & Shell
  1. […] זאת דוגמת המשך לדוגמה שנעשה בפוסט על Bootstrapper & Shell […]

    אהבתי

כתיבת תגובה