
BooksService עם פונקציה GetSomeData שמחזירה string, "some amazing data". בהמשך היא תתחבר למסד הנתונים ותביא ממנו מידע.new. מריצים עם Ctrl+F5 ורואים את הטקסט._booksService.new BooksController, וגם לא רוצים לבנות ידנית אובייקט Context עם כל האופציות שלו.הטקסט המלא של הדקות הראשונות בהרצאה «יצירת מחלקת Service דוט-נט Core» בקורס הווידאו של PracticU – כתוביות בעברית עם זמן התחלה לכל פסקה. כך תוכלו לקרוא ולחפש את הנושאים לפני שמתחילים ללמוד.
כעת אנחנו רוצים לבנות סרוויס שמטפל בספרים. בואו נוסיף class, נקרא לה booksService, ניפטר מה-extra namespace, נקודה פסיק, וכרגע אנחנו רוצים רק פונקציית בדיקה לראות שדברים עובדים.
בואו נעצר פונקציה שמחזירה string, get some data, return, some amazing data. Alright. הנה נו פונקציה שבהמשך הפונקציה הזאת גם תתחבר לדטאבייס ותביא מידע מהדטאבייס.
פונקציות הכוונה שהתחברו לדטאבייס ויביאו דטא. אנחנו רוצים להשתמש עם הפונקציה הזאת פה בקונטרולר. אם יש לנו כמובן namespace שהם לא נדרשים, אפשר to remove them.
אני אשים רגע את זה side by side. בואו נגרור, נשים את זה פה, זה נסגור. הנה פונקציה ש... שנקראת סרוויס והיא בעצם ניגשת לדטאבייס מבצעת חישובים אולי, כל מיני דברים ובסופו של דבר מחזירה לי מידע.
הקונטרולר, התפקיד שלו זה רק לקבל את הבקשה מהמשתמש, מהפרונט אנד, ללכת לסרוויס, לקבל את הדאטה ולחזיר. קונטרולר לא אמור להתעסק עם חישובים, לוגים, הוא לא אמור לגלוש בעצמו לדטאבייס או להיגשת בעצמו לדטאבייס, הוא לא אמור להכיל כל מיני קוד.
שמתעסק עם הלוגיקה הוא רק אומר לסרוויס תעשה לי תביא לי אני מחזיר יש לו תחום אחריות משלו שנראה בהמשך שקשור גם לוולידציות ולאימות מידע אבל הוא מבצע רק בקשה מהלקוח הסרוויס מבצע את רוב הפעולה שתל הלוגיקה נותן את הדאטה לקונטרולר והקונטרולר מחזיר אז מה שאנחנו רוצים זה
שהקונטרולר יקרא לפונקציה הזאת אם יש לי פונקציה בקלאס רגילה אז אנחנו צריכים לבנות אובייקט מהקלאס הרגילה, בכדי לקרוא לפונקציה.
טוב, בואו נבנה אובייקט. אז יש לנו פה איזשהו אובייקט שאנחנו רוצים לבנות. בואו נבצע פה book service, ונחזיר את הדאטה, בואו ניקח string data, שווה ל-books service, get some data, ונחזיר את הדאטה הזה.
יצרנו אובייקט, קראנו לפונקציה, קיבלנו את המידע, החזרנו. נריץ, Ctrl F5, ונראה Some Amazing Data. זאת אומרת שהמערכת עובדת אחלה. האם אנחנו רוצים בכל פונקציה לבנות את האובייקט הזה?
כמובן שלא. בואו ניקח אותו ונשים אותו באזור הגלובלי. נגדיר פה Private, Book Service, אם משהו הוא Private, יש איזושהי מוסכמה, לא בטוח שאתם רוצים או חייבים לעבוד איתה, אבל כל מה שמוגדר כPrivate מתחיל ב-Underline, אני אלך כרגע מהמוסכמה הזאת.
ולכן אנחנו... רוצים פעם אחת לבנות את האובייקט בשבילו אני אצטרך לבנות אותו בכל מקום כמובן כל פעם שהמחלת גולשת לקונטרולר שלנו אז היא בונה פעם אחת את האובייקט הזה