הרשימה שלהלן מורכבת משאלות נפוצות שנשאלו ע"י מפתחים העובדים עם מערכת nopCommerce. כמו-כן, מתוארות חלק מהבחירות הארכיטקטוניות של צוות nopCommerce.
מה הדרישות של המערכת?
הסבר על טכנולוגית nopCommerce ודרישות מערכת ניתן למצוא כאן.
כיצד יכולים מפתחים לתרום עדכונים לפרויקט nopCommerce?
nopCommerce מנהלת מאגר Codeplex Mercurial שמשתמשים יכולים לראות כאן. במאגר פומבי המשתמשים יכולים לראות שינויים קרובים והחלטות עיצוביות קודמות. ניתן למצוא מידע נוסף לגבי Codeplex Mercurial כאן או כאן. מפתחים יכולים להעלות בקלות את ההרחבות או חבילות השפה שלהם לדף ההרחבות ולחלוק אותם עם משתמשים אחרים. כדי להעלות הרחבה לאתר נופקומרס ישראל צרו עמנו קשר.
כיצד לדווח על בעיה/תקלה?
nopCommerce עושה שימוש ב- Codeplexכמעקב הרשמי אחר בעיות. במידה ונמצאה תקלה, ניתן לדווח לצוות המפתחים ע"י יצירת task חדש ב- Codeplex. מפתחים ומשתמשים יכולים גם לפרסם תקלה חדשה בפורום תמיכה טכנית. יש סיכוי טוב שהבעיה שמצאתם כבר דווחה ולכן מאד חשוב לעבור על הפורום ולוודא שאין זה המצב. דווחים כפולים על בעיות מסיחים את הדעת וגוזלים זמן פיתוח.
שכבת Data Access Layer של nopCommerce
פרויקט Nop.Data מכיל מחלקות ופונקציות לקריאה או כתיבה מ/לבסיס הנתונים. ספרית Nop.Data עוזרת להפריד בין לוגיקת גישה לנתונים לבין האובייקטים העסקיים. nopCommerce בגישת Entity Framework (EF) Code-First.גישת ה Code-First מאפשרת למפתח להגדיר את הישויות בקוד המקור (כל ישויות הליבה מוגדרות בפרויקט Nop.Core) ואז להשתמש ב-EF כדי לייצר את בסיס הנתונים ממחלקות C#. על-כן שמו - (הקוד קודם) Code-First. ניתן לבצע שאילתא על האובייקטים בעזרת LINQ המתרגם ל-SQL מאחורי הקלעים ורץ על בסיס הנתונים. nopCommerce עושה שימוש ב-API קוד שוטף בכדי לבצע התאמה מלאה למיפוי persistence. ניתן ללמוד עוד על שיטת ה Code-First כאן או כאן.
Inversion of Control and Dependency Injection
Inversion of Control and Dependency Injection הן שתי דרכים קשורות לשבירת תלות בתוך האפליקציה. Inversion of Control (IoC) משמעותה שאובייקטים לא יוצרים אובייקטים אחרים עליהם הם נסמכים לעשות את עבודתם. במקום זאת, הם מגיעים לאובייקטים אלו ממקור חיצוני. Dependency Injection (DI) משמעותה שזה נעשה ללא התערבות האוביקט, בדר"כ ע"י רכיב ה- framework שמעביר פרמטרים ל- constructor וקובע תכונות. מרטין פלווארס כתב תיאור מעולה על שניהם. ניתן לראות את הכתבה כאן.
nopCommerce עושה שימוש בספרית Autofac כ- IoC container. ברגע שנכתבים service וממשק מתאים, אותו ה-service מממש, יש לרשום אותם בכל מחלקה המממשת את הממשק IDependencyRegistrar (Nop.Core.Infrastructure.DependencyManagement namespace). למשל, כל services הליבה של nopCommerce רשומים במחלקה DependencyRegistrar הנמצאת בספרית Nop.Web.Framework.