PracticU

יצירת מחלקת Service
דוט-נט Core

בלי כתוביותעם כתוביות
PracticU › קורס דוט-נט - NET Core. - עם Rest API › יצירת מחלקת Service דוט-נט Core
יצירת מחלקת Service דוט-נט Core
ההרצאה מראה למה צריך מחלקת Service נפרדת ל-Controller, ומדגימה בנייה ידנית של אובייקט שמובילה לצורך ב-Dependency Injection.
הרעיון
1. מחלקת Service: מוסיפים class בשם BooksService עם פונקציה GetSomeData שמחזירה string, "some amazing data". בהמשך היא תתחבר למסד הנתונים ותביא ממנו מידע.
2. חלוקת תפקידים: ה-Controller רק מקבל את הבקשה מהמשתמש (מה-Front End), פונה ל-Service ומחזיר את התשובה. הוא לא אמור לבצע חישובים, לוגיקה, לוגים או גישה ישירה למסד הנתונים. ה-Service מבצע את רוב העבודה. ל-Controller יש גם אחריות על ולידציה, שתוצג בהמשך.
3. קריאה ל-Service: כדי לקרוא לפונקציה במחלקה רגילה בונים ממנה אובייקט עם new. מריצים עם Ctrl+F5 ורואים את הטקסט.
4. שדה גלובלי: מעבירים את האובייקט לשדה פרטי ברמת המחלקה, ובונים אותו פעם אחת. לפי מוסכמה שדה פרטי מתחיל ב-underline, למשל _booksService.
5. הבעיה: כך לא עובדים. לא רוצים לבנות אובייקטים בעצמנו, בדיוק כמו שאף פעם לא כתבנו new BooksController, וגם לא רוצים לבנות ידנית אובייקט Context עם כל האופציות שלו.
6. הפתרון: טכניקה נפוצה בהרבה שפות ו-frameworks שנקראת DI, Dependency Injection. ה-framework בונה את האובייקטים, ואנחנו רק משתמשים בהם. ההסבר המפורט בהרצאה הבאה.
הרצאה זו מסבירה מדוע ה-Service נפרד מה-Controller ומה הבעיה בבניית אובייקטים ידנית.
השיעור הבא בקורס: הסבר על Dependency Injection
מילון מושגים:
קונטרולר – רכיב שמתווך בין הממשק לבין הלוגיקה והנתונים, מקבל בקשות ומחליט כיצד לטפל בהן (למשל בדפוס MVC).
מחלקה – תבנית בתכנות מונחה עצמים שמגדירה אילו נתונים ופעולות יהיו לאובייקטים שנוצרים ממנה.
מחרוזת – סוג נתונים שמייצג רצף של תווים, כלומר טקסט, ומשמש לאחסון מילים, משפטים או כל רצף סימנים.
בקשה – פנייה שלקוח שולח לשרת כדי לקבל מידע או לבצע פעולה; השרת מחזיר עליה תגובה.
לוג – רישום מתועד של אירועים ופעולות שמתרחשים במערכת או בתוכנה, המשמש למעקב ולאיתור תקלות.
סכמה – המבנה הלוגי של מסד נתונים: הגדרת הטבלאות, העמודות, הסוגים והקשרים ביניהם.
פריימוורק – מסגרת תוכנה שמספקת מבנה וכלים מוכנים לפיתוח יישומים, כדי לחסוך כתיבת קוד חוזר.
פורט – מספר שמזהה שירות או תהליך מסוים בתוך מחשב, ומאפשר לכוון תעבורת רשת ליעד הנכון. למשל פורט 80 ל-HTTP.

פרקי ההרצאה: יצירת מחלקת Service דוט-נט Core

  1. 00:00

    בניית מחלקת BooksService

  2. 00:41

    תפקיד ה-Controller מול ה-Service

  3. 01:36

    יצירת אובייקט וקריאה לפונקציה

  4. 02:28

    העברת האובייקט לרמה הגלובלית

תמלול ההרצאה: יצירת מחלקת Service דוט-נט Core

הטקסט המלא של הדקות הראשונות בהרצאה «יצירת מחלקת Service דוט-נט Core» בקורס הווידאו של PracticU – כתוביות בעברית עם זמן התחלה לכל פסקה. כך תוכלו לקרוא ולחפש את הנושאים לפני שמתחילים ללמוד.

  1. 00:02

    כעת אנחנו רוצים לבנות סרוויס שמטפל בספרים. בואו נוסיף class, נקרא לה booksService, ניפטר מה-extra namespace, נקודה פסיק, וכרגע אנחנו רוצים רק פונקציית בדיקה לראות שדברים עובדים.

  2. 00:20

    בואו נעצר פונקציה שמחזירה string, get some data, return, some amazing data. Alright. הנה נו פונקציה שבהמשך הפונקציה הזאת גם תתחבר לדטאבייס ותביא מידע מהדטאבייס.

  3. 00:36

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

  4. 00:49

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

  5. 01:04

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

  6. 01:24

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

  7. 01:46

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

  8. 01:55

    טוב, בואו נבנה אובייקט. אז יש לנו פה איזשהו אובייקט שאנחנו רוצים לבנות. בואו נבצע פה book service, ונחזיר את הדאטה, בואו ניקח string data, שווה ל-books service, get some data, ונחזיר את הדאטה הזה.

  9. 02:16

    יצרנו אובייקט, קראנו לפונקציה, קיבלנו את המידע, החזרנו. נריץ, Ctrl F5, ונראה Some Amazing Data. זאת אומרת שהמערכת עובדת אחלה. האם אנחנו רוצים בכל פונקציה לבנות את האובייקט הזה?

  10. 02:28

    כמובן שלא. בואו ניקח אותו ונשים אותו באזור הגלובלי. נגדיר פה Private, Book Service, אם משהו הוא Private, יש איזושהי מוסכמה, לא בטוח שאתם רוצים או חייבים לעבוד איתה, אבל כל מה שמוגדר כPrivate מתחיל ב-Underline, אני אלך כרגע מהמוסכמה הזאת.

  11. 02:47

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

לקורס המלא: קורס דוט-נט - NET Core. - עם Rest API

ההרצאה הקודמת: יצירת Controller - דוט-נט Core

ההרצאה הבאה: הסבר על Dependency Injection

הרצאות קשורות מקורסים אחרים

  • יצירת מחלקת Customers Service
  • הסבר על Console - דוט-נט Framework vs Core
  • הסבר על WinForms - דוט-נט Framework vs Core
  • יצירת Service ב-Windows

קורסים נוספים במסלול

  • קורס Entity Framework Core - עבודה עם מסד נתונים בדוט-נט
  • קורס ASP.NET
  • קורס MVC
  • קורס Git ו-GitHub עם Visual Studio