מוצר מדף כל יכול
-
שלום לכולם
לאחר ניסיון של שנים רבות, אחת היומרות שלי היא לפתח מוצר מדף, שניתן להרחיב אותו לכל כיוון שהלקוח רק ירצה או יבקש, וכל זאת מבלי לפגוע בעצם מוצר המדף, מבלי שהוא יפסיד עדכוני גירסה, ומבלי לפגוע כמובן בלקוחות אחרים. אם תתעקשו אני בעצם מנסה להתחרות בסיילספורס, או משהו כזה.
ובכן חילקתי את האתגר לפי שכבות הפרוייקט, ואני מציין כאן מושגים שקשורים ליומרה הזו.
ראשית:
דטה בייס:
כפי שכבר סיפרתי פעם ישנה תבנית דטה בייס כמעט כל יכולה, שהיא אכן מצליחה ועונה על 90 אחוז מהדרישות של 90 אחוז מהלקוחות, על מנת להמשיך ולפתח את התבנית הלזו הגנרית כל כך, אנו משתמשים בvisual studio sql server project ומפיצים את הגירסאות מידי פעם בין הלקוחות די בקלות (לפעמים זה לא כל כך קל, אבל בכל אופן זה עובד) בכל מקרה זוהי תבנית קשיחה ואין בה תנועות לכאן או לכאן, גם אם לקוח יעמוד על הראש.
תשאלו אם ככה מה עם ה 10% הנותרים? וכי אנחנו נכתיב ללקוח איזה נתונים יש לו??? התשובה על כך טמונה ביכולת המדהימה של SQL server ליצור סכמה נוספת בתוך הדטה בייס (שימו לב שתמיד סכמת ברירת המחדל היא dbo) שזה בעצם ניימספייס נוסף, ואז יצרנו סכמה שנקראת cstm (מלשון קסטם) שם ישנם אובייקטים מאובייקטים שונים, ואף אחד לא מפריע שם לתבנית הגנרית (מותר גם ליצור טבלה עם אותו שם בדיוק שקיים בסכמה אחרת) מה שמאפשר את זה הוא היכולת של ויזואל סטודיו לאשר את הפבליש של הפיתוח רק על סכמה מסויימת (כלומר dbo עבור הסכמה הגנרית) כמובן שאת הפיתוח של הסכמה הזו, נעשה גם בויזואל סטודיו אולם זהו פרוייקט עבור הלקוח.
צד שרת
ארכיטקרטורה רב שכבתית, כאשר כל מה שגנרי מפותח עבור כולם (מה שחסר לנו זה אנטיטי פריימוורק עם קונקשן סטרינג מרובה, כי אנחנו מאמינים בדטה בייס נפרד עבור כל לקוח אבל הבנתי שזה אפשרי). כמובן כל מה שהיא יודעת לעשות זה גנרי אלא אם כן הוגדר בפירוש אחרת בדטה בייס (אז יש טבלה שמנהלת את התלויות השונות של הלקוח כפי שאסביר תיכף)מה שבעיקר קשור לכאן זה ארכיטקרטורת מיקרו שירותים. אין צורך להאריך, הכל מבואר בקישור המצורף.
המושג הנוסף שיש להוסף כאן הוא הזרקת תלויות (מי שיש לו את הספר בעברית על MVC4 יש שם פרק שלם שמוקדש לנושא) זה בעצם אומר שישנה אפשרות להפוך את התלויות לדבר דינמי מאוד, כך שלדוגמא את הבילינג אפשר להוציא לסרביס מיוחד שנכתב עבור הלקוח (כשלקוח יש לו בילינג משוגע לגמרי לדוגמא עם מבצעים מסובכים מתוקפת קלאב מרקט) ולדלג (או שלא) על הבילינג הנורמטיבי של מוצר מחיר וכדו'. כמו"כ ניתן ליצור סרביסים שונים שיפעלו אחת לשעה וכדומה, ויריצו פרוצדורות שונות בדטה בייס (שנמצאות בסכמה cstm כמובן) וכן הלאה וכן הלאה.
סרביסים נוספים, שנועדים לתקשורת, החל ממרכזייה ועד לשליחת פקסים, הינם גם כן גמישי תלויות, וניתן לבצע ללקוח כל מה שירצה.הרשאות והעדפות
כל הניהול של העדפות הלקוח, הגדרות התלויות והסרביסים השונים, כמובן נמצאים בתבנית הדטה בייס הגנרי שנבנה מראש עם המחשבה על כך שנצטרך לתת את האפשרות הזו (ולא זו בלבד אלא שניתן לקנפג סרביס פר יוזר, כאשר יוזר אחד למשל שולח פקסים דרך פריפקס, והשני דרך מכונה פיזית שנמצאת בחו"ל וכן הלאה)פילטרינג ואיתור נתונים
יש את הפתרון הזה שנכון להיום אין לו שום מגבלה לשרת כל לקוח כמו בן יחיד ממש.צד לקוח כאן אני קצת תקוע, אם בכל פעם שהלקוח רוצה "לדרוס" תצוגה גנרית, ונקנפג לו משהו בדומיין זר איך זה יעבוד? מה נעשה כשהוא יבקש התערבות ברוטלית ב HTML, אז תלוי, יש דברים שניתן כמובן לשלוט עליהם דרך razor, אבל אני לא יודע עד איזה עומק ניתן להגיע עם זה (מה לגבי קבצי script שעושים פעולה שונה עבור לקוח משוגע??? הכי נעבוד כמו חמורים על מנת "להזריק" ג'אווה סקריפט בשביל לקוח מסויים)
הבנתי שהפתרון האולטימטיבי הוא אנגולר, וכאן אני עומד.שאלתי ובקשתי מכל חברי הפורום מה דעתכם על המיזם היומרני, האם זה אפשרי בכלל (אני מדבר על ה UI בלבד, כי עד שם כבר ביצעתי את מה שצריך ואין לי ספיקות) והאם אנגולר הוא אכן הפתרון לצרכים מהסוג הזה.
תודה לכולם.
פורסם במקור בפורום CODE613 ב28/12/2015 20:07 (+02:00)
-
הקיצור: כי זה מה שהולך היום, תן שורה תחתונה ואל תאריך בפילוסופיה.
האריכות: אחרי מחקר מקיף שבדקנו את כל ההביטים, אנגולר היא הספרייה שהכי אפשר לסמוך עליה מכל הבחינות האפשריות:
קהילה רחבה מאוד
עברה את מבחן השרידות של 5 שנים (אנגולר התחילה ב 2009)
גוף חזק שעומד מאחוריה
מספיק חברות ואפליקציות גדולות מבוססות על אנגולר (רק תראה כמה דרושים יש לאנגולר באתרי הדרושים השונים) כך שאין מצב שהיא תיעלם מן העולם בקרוב
אנגולר לקחה על עצמה לבנות אבסטרקציות לכל הדברים שמתכנתי ווב שוברים עליהם שיניים כבר שנים. ולפי ההתרשמות ממחקרים ברשת, הם עשו זאת בהצלחה לא קטנה.
החיסרון היחיד שהיא מצריכה אותך לעבוד אך ורק עם השיטתיות שלה, וזאת דווקא מעלה מבחינתי כי אני דוגל בדיקטטורה נאורה, ולא בדמוקרטיה חשוכה... אבל בוא לא נציף את הדיונים האמוציונאליים הללו שוב :lol: :lol: :lol:פורסם במקור בפורום CODE613 ב18/01/2016 20:10 (+02:00)