כיצד להשתמש ב- Autofac ב- ASP.Net Core

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

כדי להתגבר על כך, אתה יכול להשתמש במכולות צד שלישי ב- ASP.Net Core. במילים אחרות, ניתן להחליף בקלות את המכולה המובנית במיכל צד שלישי. Autofac הוא היפוך של מיכל השליטה בו ניתן להשתמש כדי לפתור תלות. מאמר זה מספק דיון כיצד אנו יכולים לעבוד עם Autofac ב- ASP.Net Core.

צור פרויקט Core ASP.Net ב- Visual Studio

ראשית בואו ליצור פרויקט ASP.Net Core ב- Visual Studio. בהנחה ש- Visual Studio 2017 או Visual Studio 2019 מותקנים במערכת שלך, בצע את השלבים המתוארים להלן כדי ליצור פרויקט ASP.Net Core חדש ב- Visual Studio.

  1. הפעל את Visual Studio IDE.
  2. לחץ על "צור פרויקט חדש".
  3. בחלון "צור פרויקט חדש" בחר "יישום אינטרנט ASP.Net Core" מרשימת התבניות המוצגות.
  4. הקש "הבא.
  5. בחלון "הגדר את הפרויקט החדש שלך", ציין את השם והמיקום של הפרויקט החדש.
  6. לחץ על צור.
  7. בחלון "צור יישום אינטרנט חדש של ASP.Net Core" בחר. Net Core בתור זמן הריצה ו- ASP.Net Core 2.2 (או מאוחר יותר) מהרשימה הנפתחת בחלק העליון.
  8. בחר "יישום אינטרנט" כתבנית הפרויקט. 
  9. ודא שתיבות הסימון "אפשר תמיכה ב- Docker" ו- "הגדר עבור HTTPS" אינן מסומנות מכיוון שלא נשתמש בתכונות אלה כאן.
  10. ודא שהאימות מוגדר כ"אין אימות "מכיוון שלא נשתמש גם באימות.
  11. לחץ על צור.

פעולה זו תיצור פרוייקט ASP.Net Core חדש ב- Visual Studio. נשתמש בפרויקט זה בחלקים הבאים של מאמר זה לעבודה עם Autofac.

התקן את Autofac בפרויקט הליבה של ASP.Net

קל להתקין את Autofac - ניתן להתקין אותו מ- NuGet. בזמן כתיבת שורות אלה, הגרסה הנוכחית של Autofac היא 4.9.2. כדי לעבוד עם Autofac, עליך להתקין גם את חבילת Autofac.Extensions.DependencyInjection. זה יבטיח שהתקנות התלות הדרושות לעבודה עם Autofac.

בחר את פרויקט יישום האינטרנט של ASP.Net Core שיצרת לעיל, ואז לחץ באמצעות לחצן העכבר הימני והתקן את Autofac.Extensions.DependencyInjection באמצעות מנהל החבילות NuGet. קבל את כל הסכמי הרישוי שאתה עשוי להתבקש במהלך ההתקנה. לחלופין, תוכל להתקין חבילה זו על ידי הזנת הפקודה הבאה במסוף מנהל החבילות של NuGet:

התקנת החבילה Autofac.Extensions.DependencyInjection

צור מחלקה ביישום ASP.Net Core שלך

כדי להמחיש הזרקת תלות, נצטרך כמה אובייקטים לעבוד איתם. שקול את ממשק IAuthorRepository המכיל את ההצהרה על שיטת GetMessage להלן.

 ממשק ציבורי IAuthorRepository

    {

        מחרוזת GetMessage ();

    }

המחלקה AuthorRepository מיישמת את ממשק IAuthorRepository כמוצג להלן.

 מחלקה ציבורית מחבר מאגר: IAuthorRepository

    {

        מחרוזת ציבורית GetMessage ()

        {

            להחזיר "שלום עולם";

        }

    }

שים לב שמדובר ביישום מינימליסטי של מאגר - כלומר, הוא אינו מכיל את שיטות ה- CRUD שמאגר אופייני מכיל. אשאיר לך ליישם את שיטות ה- CRUD כראוי.

הגדר את התצורה האוטומטית ב- Core Core ASP

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

הצעד הראשון הוא ליצור בונה מכולות כדי לרשום את השירותים הדרושים במיכל Autofac. השלב הראשון הוא אכלוס שירותי המסגרת בשיטת Populate כמוצג להלן.

var containerBuilder = ContainerBuilder חדש ();

containerBuilder.Populate (שירותים);

השלב הבא הוא רישום השירותים המותאמים אישית ב- Autofac. לשם כך, השתמש בשיטת RegisterType במבנה בונה המכולות כמוצג להלן.

containerBuilder.RegisterType (). כמו ();

לבניית המכולה, כתוב את הקוד הבא.

מיכל var = containerBuilder.Build ();

מיכל החזרה. פתרון ();

הנה קוד המקור השלם של שיטת ConfigureServices לעיונך:

ציבורי IServiceProvider ConfigureServices (שירותי ISCollection)

   {

       services.AddMvc ();

       var containerBuilder = ContainerBuilder חדש ();

       containerBuilder.Populate (שירותים);

       containerBuilder.RegisterType ().

       כפי ש();

       מיכל var = containerBuilder.Build ();

       מיכל החזרה. פתרון ();

   }

השתמש ב- Autofac בבקרים שלך ב- ASP.Net Core

כעת, לאחר שהותקן והוגדר Autofac בפרויקט שלך, תוכל להתחיל להשתמש בו בבקרים שלך. קטע הקוד הבא ממחיש כיצד ניתן לפתור תלות ב- ValuesController.

  Class class ValuesController: ControllerBase

  {

        פרטי IAuthorRepository _authorRepository; 

        ValuesController (IAuthorRepository authorRepository) 

        {

            _authorRepository = authorRepository;

        } // קבל API / ערכים

        [HttpGet]

        ActionResult ציבורי Get ()

        {

            להחזיר _authorRepository.GetMessage ();

        }

     // שיטות פעולה אחרות

  }

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

הזרקת תלות לובשת שלוש צורות: הזרקת קונסטרוקטור, הזרקת ממשק והזרקת רכוש. בדוגמה זו השתמשנו בהזרקת קונסטרוקטור כדי להזריק תלות - כלומר מופע מסוג AuthorRepository - בזמן ריצה במחלקה ValuesController.

ראינו כיצד ניתן להשתמש ב- Autofac להחלפת מיכל הזרקת התלות המוגדר כברירת מחדל ב- ASP.Net Core, אך רק גירדנו את פני יכולותיו. אחקור את Autofac לעומק יותר בפוסטים עתידיים כאן.