מדריך ASP.NET MVC

מדריך ASP.NET MVC – הגדרת המודל

‏ • Hi Tech

המודל מייצג את הלוגיקה העסקית של המערכת שלנו. המודל חושף את השירותים השונים הדרושים על מנת לפתח את שאר החלקים במערכת כמו ה-Controller וה-View.
המודל מורכב מאוסף של מחלקות אשר יחדיו מאפשרים לנו לבצע פעולות במערכת כמו הוספה של נתון חדש, מחיקתו או עדכונו.

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

  • אנשי קשר – מכיל פרטים כמו שם פרטי ומשפחה וכן אוסף של כתובות. אלמנט זה מיוצג ע"י המחלקה Person.
  • קבוצות – כל קבוצה מכילה אנשים ותתי קבוצות. אלמנט זה מיוצג ע"י המחלקה Group.

להגדרת המחלקה Person יש לבצע את הפעולות הבאות:
פתח את Solution Explorer דרך התפריט הראשי View | Solution Explorer.
עמוד על ספריית ה-Models ולחץ על כפתור ימני בעכבר. בחר Add | Class וציין את שם המחלקה:

image

בקובץ החדש שנפתח הגדר את הקוד עבור המחלקה:

 

public class Person : BookItem
{
  public Person()
  {
    this.Addresses = new List<string>();
  }

  public string FirstName { get; set; }
  public string LastName { get; set; }
  public virtual ICollection<string> Addresses { get; set; }
  public override string Description
  {
    get
    {
      return this.FirstName + ", " + this.LastName;
    }
  }
}

 

באותו אופן הגדר את המחלקה Group:

 

public class Group : BookItem
{
  public Group()
  {
    this.Items = new List<BookItem>();
  }

  public string Name { get; set; }

  public virtual ICollection<BookItem> Items { get; set; }
  public override string Description
  {
    get { return this.Name; }
  }

  public void AddItem(BookItem item)
  {
    this.Items.Add(item);
    item.Parent = this;
  }
}

 

שים לב כיצד המחלקות Person ו-Group יורשות ממחלקה אחרת הקרויה BookItem. את המחלקה BookItem ניתן להגדיר באופן הבא:

 

public abstract class BookItem
{
  private static int nextId;

  public BookItem()
  {
    this.ID = ++nextId;
  }

  public int ID { get; set; }
  public Group Parent { get; set; }
  public abstract string Description { get; }
}

 

המחלקה BookItem משמשת כבסיס לשאר האלמנטים בספר הכתובות וקובעת את המשותף ביניהם כמו: ID ו-Parent.

שלושת המחלקות שהגדרנו מעלה מיישמות את הישויות השונות מהן בנוי המודל. על מנת שנוכל לשמור אותן במסד הנתונים עלינו להגדיר עוד מחלקה אחת והיא AddressBookDB. מחלקה זו אחראית על העבודה מול שרת מסד הנתונים. מאחר ואין ברצוננו לעבוד כרגע מול מסד הנתונים (נלמד זאת בהמשך) אנו נממש את המחלקה AddressBookDB כך שאת כל הנתונים על האובייקטים השונים היא תשמור בזיכרון. כמובן, המשמעות של מימוש זה המבוסס על זיכרון היא שבכל פעם שה-Worker Process של ASP.NET עולה מחדש אנו נאבד את הנתונים. לעת עתה התנהגות זאת מספיק טובה ואנו נטפל בה יותר מאוחר כאשר נלמד כיצד ניתן להפוך את AdressBookDB למחלקה שעובדת מול מסד נתונים אמיתי.

את המחלקה AddressBookDB ניתן להגדיר באופן הבא:

 

public class AddressBookDB
{
  private static AddressBookDB instance;
  private Group root;

  private AddressBookDB() {Seed();}

  private void Seed()
  {
    this.root = new Group() { Name = "~" };

    Group friends = new Group() { Name = "Friends" };
    this.root.AddItem(friends);

    Person ori = new Person()
{ FirstName = "Ori", LastName = "Calvo" };
    this.root.AddItem(ori);
  }

  public static AddressBookDB Create()
  {
    if (instance == null)
    {
      instance = new AddressBookDB();
    }

    return instance;
  }

  public Group Root
  {
    get
    {
      return this.root;
    }
  }
}

 

בפרק זה ראינו כיצד ניתן להגיד את המודל במערכת. ראינו כי המודל מורכב מאוסף של מחלקות פשוטות אשר מקיימות קשרים ביניהם. אחד היתרונות המרכזיים בארכיטקטורה של- ASP.NET MVC הוא שניתן להגדיר מחלקות פשוטות מסוג זה ולשלבן יותר מאוחר ב-Controller וב-View.

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

תגיות: , , , ,

תגובות בפייסבוק