290 likes | 592 Views
ארכיטקטורת שלושת השכבות 3 Tier architecture מאת רנן חכם מאי 2008. תוכן המצגת. רקע והגדרות ארכיטקטורת שלושת השכבות יתרונות וחסרונות הארכיטקטורה הצגת מימוש לדוגמא סיכום. ארכיטקטורת תוכנה. ארכיטקטורת תוכנה
E N D
ארכיטקטורת שלושת השכבות3 Tier architectureמאת רנן חכםמאי 2008
תוכן המצגת • רקע והגדרות • ארכיטקטורת שלושת השכבות • יתרונות וחסרונות הארכיטקטורה • הצגת מימוש לדוגמא • סיכום
ארכיטקטורת תוכנה • ארכיטקטורת תוכנה "תכנון מפושט של ההיבטים השונים של התוכנה, היחסים בין המרכיבים השונים והחוקים החלים עליהם" מאת ויקיפדיה - האינציקלופדיה החופשית • דפוסים ארכיטקטוניים פופולאריים: • MVC – Model View Controller • SOA – Service Oriented Architecture • P2P – Peer to Peer • N-Tier … • במצגת הזו נתמקד בארכיטקטורת 3Tier, שהיא מקרה פרטי של N-Tier.
3 Tier ארכיטקטורת • מקרה פרטי של ארכיטקטורת N-Tier. • הרעיון הבסיסי: מפרידים את המערכת לשכבות. כל שכבה מפותחת ומתוחזקת כמודול עצמאי. כל שכבה מכונה Tier (לפעמים גם Layer). • ארכיטקטורת 3 Tier היא הפופולארית ביותר בתוך מגוון ארכיטקטורות ה- N-Tier.
ארכיטקטורת 3-Tier – דיאגראמה Presentation Tier \ GUI Forms Web pages Input Validations … Application Tier Calculators Engines Application core entities Algorithms … Data Tier Data O\R Mapping Data representation Database access Cache mechanisms …
דוגמא למימוש ארכיטקטורת שלושת השכבות מטרות הדוגמא: • להציג פתרון לבעיה פשוטה באמצעות ארכיטקטורת שלושת השכבות. • להציג בצורה מפורטת את שכבת האפליקציה. ההצגה כוללת ירושה, ממשקים, פולימורפיזם ודפוסי עיצוב שבאו לידי ביטוי בשכבה זו.
Presentation Tier \ GUI • פונקציונאליות מרכזית: • הצגת לוח שח מט • קבלת פקודות מהמשתמש • בדיקות תקינות לקלט שח מט - חלוקה לשכבות Application Tier • פונקציונאליות מרכזית: • ייצוג הישויות הלוגיות הקיימות במערכת • חוקיות מהלכי המשחק • לוגיקה משהו מצב מט Data Tier • פונקציונאליות מרכזית: • הצגת הנתונים בפורמט הניתן לשמירה • שמירה וטעינת הנתונים • פישוט הגישה למידע והכנתו לשימוש על ידי שכבת האפליקציה
Presentation Tier \ GUI Presentation Tier \ GUI עבודה עם console, ותפריטי פקודות עבודה עם ממשק גרפי Data Tier Data Tier עבודה עם קבצי XML עבודה עם מסד נתונים שלב 3 – החלפת שכבת התצוגה בשכבת תצוגה מתקדמת שלב 2 – החלפת שכבת המידע בשכבה מתקדמת יותר. שלב 1 - מימוש שכבת האפליקציה בלבד. שכבות התצוגה והמידע מכילות מימוש בסיסי בלבד. שח מט - מימוש בשלבים כדי להדגיש את היתרונות של ארכיטקטורה זו, התוכנה מפותחת בשלבים. Application Tier מימוש לוגיקה מלא
שח מט - שכבת האפליקציה שכבת האפליקציה מורכבת מכמה חלקים: • FAÇADE - ממשק השכבה. בשימוש על ידי שכבת התצוגה. • ייצוג הישויות המרכזיות במערכת (משחק, לוח, פיון, פרש,...). • לוגיקת המשחק - חוקיות הצעדים, זיהוי מצב מט וכו'
FAÇADE - ממשק השכבה • המונח FAÇADE פירושו חזית. זהו דפוס עיצוב המתאר למעשה את ה"חוזה". הממשק אותו מחויבת השכבה לשמר. • זהו החלק היחידי בשכבה המסומן כ- public. היתר מסומנים כ- internal (כזכור, לשימוש מתוך ה-assembly בלבד). • השימוש ב- interfaces מאפשר לנו לעשות אבסטרקציה של המימוש. לשכבות אחרות אין תלות בצורת המימוש.
בדיקת חוקיות מהלכים - המקרה המיוחד של המלכה • המלכה בעצם רשאית לנוע כמו הצריח וכן כמו הרץ. • מימוש "פשוט" ייצור כפל קוד לא יפה. • הפתרון:הוצאת לוגיקת הצריח למחלקה נפרדת אליה ניגשים הן מהצריח והן מהמלכה. כנ"ל לגבי הרץ.
בדיקת חוקיות מהלכים - המקרה המיוחד של המלכה
שלב 1 - הבקשה מגיע ל- FAÇADE של שכבת האפליקציה. המשחק הרלוונטי מזוהה על פי קוד המשחק. מאובייקט המשחק מקבלים את האובייקט המייצג לוח. • שלב 2, קוראים למתודה Move של הלוח. המתודה מזהה את האובייקט המייצג את הכלי המיועד לזוז. • שלב 3, הכלי עצמו מריץ את לוגיקת בדיקת התקינות שלו האם מותר לו לזוז כפי שהתבקש. • שלב 4, הלוח מריץ בדיקות נוספות על חוקיות המהלך, ובדיקות האם המשחק הסתיים. תור במשחק - רצף פעולות
Piece GameManager Game Board FACADE Move GetGame תור במשחק – sequence diagram GetBoard Move Validate Board-wise Validations
Piece piece = this.mPieces[srcRow, srcCol]; if (piece == null) return false; bool legal = piece.Validate(this, srcRow, srcCol, dstRow, dstCol); בדיקת חוקיות מהלכים - דוגמא לפולימורפיזם
סיכום - הפרדת שכבות טובה הפרדת שכבות דורשת יותר השקעה. אם לא עושים אותה נכון - מבזבזים זמן ומקבלים פרויקט מורכב ומסורבל מבלי ליהנות מהיתרונות. Loosely coupled לעומת Tightly coupled
שאלות ?
ביבליוגרפיה Wikipedia • http://en.wikipedia.org/wiki/Multitierq_architecture • http://en.wikipedia.org/wiki/Business_logic Code project • http://www.codeproject.com/KB/architecture/Facade.aspx • http://www.codeproject.com/KB/cs/DynamicProgrammingGeneric.aspx • https://secure.codeproject.com/KB/cs/NTier.aspx Others • http://triple-networks.com/documents/three-tier-architecture/ • http://kula.student.usp.ac.fj/class-shares/CS313/Notes/3-tier%20architecture/three_tier_architecture.asp.htm • http://www.experts-exchange.com/Programming/Theory/Software-Design/Q_21791638.html • https://www.planet-source-code.com/vb/scripts/ShowCode.asp?txtCodeId=6299&lngWId=10