PracticU

יצירת מחלקת Customers Service

בלי כתוביותעם כתוביות
PracticU › קורס Entity Framework Core - עבודה עם מסד נתונים בדוט-נט › יצירת מחלקת Customers Service
מילון מושגים:
מחלקה - תבנית בתכנות מונחה עצמים שמגדירה אילו נתונים ופעולות יהיו לאובייקטים שנוצרים ממנה.
טבלה - מבנה במסד נתונים שמאחסן נתונים בשורות ועמודות. כל שורה היא רשומה וכל עמודה היא שדה.
פונקציה - קטע קוד בעל שם שמבצע משימה מוגדרת, מקבל ערכי קלט (פרמטרים) ויכול להחזיר תוצאה. מאפשרת לארגן קוד ולהשתמש בו שוב.
C# - שפת תכנות מונחית עצמים של מיקרוסופט, המשמשת בעיקר לפיתוח יישומים על פלטפורמת .NET.

יצירת מחלקת Customers Service
עד עכשיו כל הקוד נכתב במחלקה Program, וזה לא המצב במערכות אמיתיות. ההרצאה מציגה את שכבת ה-Services, המקום היחיד שבו עובדים עם הקונטקסט, ובונה את הבסיס של CustomersService.
עקרונות הארכיטקטורה
1. תיקיית Services: מקום ללוגיקה העסקית (Business Logic) של האפליקציה. לכל אזור בדאטה בייס, למשל מתנות או לקוחות, בונים מחלקה שמטפלת בו.
2. טבלה אחת או כמה: מחלקה אחת יכולה לטפל בכמה טבלאות קשורות. טבלת Age Groups לא מתעדכנת מהאפליקציה, ולכן היא לא צריכה מחלקה משלה אלא שייכת לשירות המתנות.
3. שם המחלקה: CustomersService. לא Customer, כי זה לא לקוח בודד, ולא Customers, כי זה לא אוסף. זה שירות שמטפל בכלל הלקוחות. אפשר גם Customers Logic, אבל היום מקובל Service.
4. הקונטקסט כשדה: מגדירים private readonly של הקונטקסט עם קו תחתון בתחילת השם, ויוצרים אותו עם new.
5. שחרור משאבים: בפונקציות הקודמות using קרא ל-Dispose ועטף אותו ב-finally. על שדה ברמת המחלקה אי אפשר להשתמש ב-using.
6. הפתרון: המחלקה מממשת את IDisposable, ובפונקציית Dispose קוראת ל-db.Dispose. מי שמשתמש במחלקה יכול להפעיל עליה using, וזה תמיד הנוהל ב-C#.
שימו לב
במחלקה Program משתמשים ב-CustomersService זמנית רק כדי לראות איך זה עובד. הפונקציות הלוגיות עצמן נבנות בהרצאה הבאה.
אחרי ההרצאה אפשר להקים מחלקת שירות מסודרת סביב הקונטקסט ולשחרר אותו נכון.
השיעור הבא בקורס: הוספת פעולות CRUD קריאה - הוספה - עדכון - מחיקה

פרקי ההרצאה: יצירת מחלקת Customers Service

  1. 00:00

    הקוד הלוגי במחלקת Services

  2. 00:56

    אזור ה-Services במערכת

  3. 01:30

    מחלקה לכל אזור בדאטאבייס

  4. 02:49

    בניית מחלקת Customers Service

  5. 03:46

    אובייקט הקונטקסט כשדה גלובלי

  6. 04:55

    מימוש IDisposable לשחרור משאבים

תמלול ההרצאה: יצירת מחלקת Customers Service

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

  1. 00:02

    אחרי שראינו מגוון דברים שאנחנו יכולים לבצע עם Entity Framework Core ועם דאטאבייס, אנחנו רוצים לראות משהו שקשור יותר לארכיטקטורה. אנחנו ראינו איך לבצע מגוון פעולות, קריאת מידע, כתיבת מידע, עדכון, מחיקה, Stop Procedures, Views, אבל למעשה כל הקוד שכתבנו, או רוב הקוד שכתבנו, כתבנו אותו פה במחלקה פרוגרם.

  2. 00:30

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

  3. 00:46

    איפה באמת אנחנו רוצים לבנות או לכתוב את הפעילות הלוגית? איפה אנחנו באמת רוצים לפתוח את אובייקט הקונטקסט, את ה-DB ולבצע את הפעולות?

  4. 00:58

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

  5. 01:16

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

  6. 01:33

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

  7. 01:53

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

  8. 02:12

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

  9. 02:31

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

  10. 02:46

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

  11. 03:01

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

  12. 03:12

    נקרא לה Customers Service, שירות שמטפל בלקוחות. שימו לב, אני לא קורא לה Customer, כי זה לא לקוח, אני לא קורא לה Customers כי זה לא לקוחות, זה לא קולקשן של לקוחות, אני קורא לה Customers Service כי זה שירות שמטפל בכלל הלקוחות, וזה השם הנכון.

  13. 03:35

    אפשר לפעמים לקרוא לה Customers Logic או Business Logic, אבל היום מקובל לקרוא לזה Customers Service, שירות בנוגע לכלל הלקוחות.

  14. 03:48

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

  15. 04:03

    private read-only, אני לא הולך לשנות אותו. gift shop context, זה ה-db שלנו, בגלל שהוא משתנה פרטי נהוג ב-c-sharp לפחות להתחיל אותו בכף תחתון, שווה new.

  16. 04:16

    אם אנחנו מסתכלים על איך השתמשנו עם הקונטקסט פה בכל הפונקציות אנחנו רואים שעשינו פה את פקודת ה-using ואם תזכרו הפקודה הזאת כל מה שהיא אומרת זה ברגע שהקוד הנוכחי של הפונקציה הנוכחית מסתיים c-sharp אוטומטית בסוף בסוף פה קוראת ל-db.dispose ומשחררת את

  17. 04:38

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

  18. 04:58

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

  19. 05:16

    אנחנו לא יכולים להפעיל using בצורה כזאת על משתנה שמוגדר כdata member ברמת הקלאס, שדה ברמת המחלקה. מה אנחנו כן תמיד רוצים לעשות? אם אנחנו בונים קלאס שמשתמשת באיזשהו data member שיש לו dispose, וראינו שלDB הזה יש dispose, אם אנחנו מסתכלים אנחנו רואים שהוא disposable, אז אנחנו תמיד תמיד נממש במחלקה שלנו אינטרפייס

  20. 05:50

    שנקרא iDisposable,

לקורס המלא: קורס Entity Framework Core

ההרצאה הקודמת: שימוש ב-ConnectionString - המוגדרת כ-App Secret

ההרצאה הבאה: הוספת פעולות CRUD - קריאה - הוספה - עדכון - מחיקה

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

  • יצירת מחלקת Service - דוט-נט Core
  • יצירת Service ב-Windows
  • יצירת Service Class
  • יצירת RESTful Service מאפס

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

  • קורס דוט-נט - NET Core. - עם Rest API
  • קורס ASP.NET
  • קורס MVC
  • קורס Git ו-GitHub עם Visual Studio