ארכיטקטורת שלושת השכבות 3 tier architecture מאת רנן חכם מאי 2008
Post on 21-Dec-2015
257 views
TRANSCRIPT
ארכיטקטורת שלושת השכבות3 Tier architecture
מאת רנן חכם
2008מאי
רקע והגדרות1.
ארכיטקטורת שלושת השכבות2.
יתרונות וחסרונות הארכיטקטורה 3.
הצגת מימוש לדוגמא4.
סיכום5.
תוכן המצגת
ארכיטקטורת תוכנה "תכנון מפושט של ההיבטים השונים של התוכנה, היחסים בין
המרכיבים השונים והחוקים החלים עליהם"
מאת ויקיפדיה - האינציקלופדיה החופשית
:דפוסים ארכיטקטוניים פופולאריים MVC – Model View Controller
SOA – Service Oriented Architecture P2P – Peer to Peer
N-Tier
…
3במצגת הזו נתמקד בארכיטקטורתTier שהיא מקרה ,.N-Tierפרטי של
ארכיטקטורת תוכנה
מקרה פרטי של ארכיטקטורתN-Tier.
.הרעיון הבסיסי: מפרידים את המערכת לשכבות
כל שכבה מפותחת ומתוחזקת כמודול עצמאי.
(.Layer )לפעמים גם Tierכל שכבה מכונה
3ארכיטקטורת Tier היא הפופולארית ביותר בתוך .N-Tierמגוון ארכיטקטורות ה-
3 Tier ארכיטקטורת
– דיאגראמהTier-3ארכיטקטורת
Data
Data Tier
Application Tier
Presentation Tier \ GUI
O\R MappingData representationDatabase accessCache mechanisms…
CalculatorsEnginesApplication core entitiesAlgorithms…
FormsWeb pagesInput Validations…
יתרונות וחסרונות
חסרונות יתרונות
בעיות אינטגרציה ובעיות התקנה.
Flexibility
כל שכבה יכולה להשתנות בנפרד.
Redundancy עלול ליצור .כפילויות.
צוותים שונים יכולים להתמקצע בשכבה מסוימת.
פרויקט גדול יותר ומורכב יותר.
יצירת סדר ומידול במערכת:
ה"חוזה" בין השכבות (1מוסכם מראש.
כל שכבה קטנה יותר (2ומסודרת יותר בתוך עצמה.
האפליקציה בד"כ צורכת יותר זיכרון.
Scalability יכולת כל שכבה .לגדול בנפרד.
legacyקל לתחזוקה. מקטין code לאורך זמן. ניתן לשכתב
שכבה בודדת.
דוגמא למימוש ארכיטקטורת שלושת השכבות
מטרות הדוגמא:
להציג פתרון לבעיה פשוטה באמצעות ארכיטקטורת 1.שלושת השכבות.
להציג בצורה מפורטת את שכבת האפליקציה.2.
ההצגה כוללת ירושה, ממשקים, פולימורפיזם ודפוסי עיצוב שבאו לידי ביטוי בשכבה זו.
הדוגמא שנציג - משחק שח מט
שח מט - חלוקה לשכבות
Data Tier
Application Tier
Presentation Tier \ GUI
פונקציונאליות מרכזית: הצגת הנתונים בפורמט הניתן לשמירה• שמירה וטעינת הנתונים• פישוט הגישה למידע והכנתו לשימוש על ידי שכבת •
האפליקציה
פונקציונאליות מרכזית: ייצוג הישויות הלוגיות הקיימות •
במערכת חוקיות מהלכי המשחק• לוגיקה משהו מצב מט•
פונקציונאליות מרכזית: הצגת לוח שח מט• קבלת פקודות מהמשתמש• בדיקות תקינות לקלט•
שח מט - מימוש בשלביםכדי להדגיש את היתרונות של ארכיטקטורה זו, התוכנה מפותחת בשלבים.
AApplicationpplication Tier Tier
- מימוש שכבת האפליקציה בלבד. שכבות התצוגה והמידע מכילות מימוש בסיסי 1שלב בלבד.
מימוש לוגיקה מלא
Presentation Tier \ GUIPresentation Tier \ GUI
, ותפריטי פקודותconsoleעבודה עם
Data TierData Tier
XMLעבודה עם קבצי
– החלפת שכבת המידע בשכבה מתקדמת יותר.2שלב
Data TierData Tier
עבודה עם מסד נתונים
– החלפת שכבת התצוגה בשכבת תצוגה מתקדמת3שלב
Presentation Tier \ GUIPresentation Tier \ GUI
עבודה עם ממשק גרפי
שח מט - הדגמת הפרויקטים והרצה
הדגמה!
שח מט - שכבת האפליקציה
שכבת האפליקציה מורכבת מכמה חלקים:
FAÇADE ממשק השכבה. בשימוש על ידי שכבת - התצוגה.
,ייצוג הישויות המרכזיות במערכת )משחק, לוח, פיוןפרש,...(.
'לוגיקת המשחק - חוקיות הצעדים, זיהוי מצב מט וכו
FAÇADEממשק השכבה -
המונחFAÇADE פירושו חזית. זהו דפוס עיצוב המתאר למעשה את ה"חוזה". הממשק אותו מחויבת השכבה
לשמר.
-זהו החלק היחידי בשכבה המסומן כpublic.
)כזכור, לשימוש מתוך internalהיתר מסומנים כ- בלבד(.assemblyה-
-השימוש בinterfaces מאפשר לנו לעשות אבסטרקציה של המימוש. לשכבות אחרות אין תלות בצורת המימוש.
ישויות המערכת
<Abstract>Piece
Game Board
RookBishopKnightPawnQueenKing
בדיקת חוקיות מהלכים
<Abstract>Piece
RookBishopKnightPawnQueenKing
IValidation
bool Validate)...(
בדיקת חוקיות מהלכים - המקרה המיוחד של המלכה
.המלכה בעצם רשאית לנוע כמו הצריח וכן כמו הרץ
.מימוש "פשוט" ייצור כפל קוד לא יפה
:הוצאת לוגיקת הצריח למחלקה נפרדת אליה הפתרוןניגשים הן מהצריח והן מהמלכה. כנ"ל לגבי הרץ.
בדיקת חוקיות מהלכים - המקרה המיוחד של המלכה
<Abstract>Piece
QueenBishopRook
IValidation
bool Validate)...(
OrthogonalValidator DiagonalValidator
תור במשחק - רצף פעולות
הבקשה מגיע ל- 1שלב - FAÇADE של שכבת האפליקציה. המשחק הרלוונטי מזוהה על פי קוד המשחק. מאובייקט המשחק מקבלים את
האובייקט המייצג לוח.
קוראים למתודה 2שלב ,Move של הלוח. המתודה מזהה את האובייקט המייצג את הכלי המיועד לזוז.
הכלי עצמו מריץ את לוגיקת בדיקת התקינות שלו האם מותר 3שלב ,לו לזוז כפי שהתבקש.
הלוח מריץ בדיקות נוספות על חוקיות המהלך, ובדיקות האם 4שלב ,המשחק הסתיים.
sequence diagramתור במשחק –
FACADE GameManager Game Board Piece
Move
GetGame
GetBoard
MoveValidate
Board-wiseValidations
בדיקת חוקיות מהלכים - דוגמא לפולימורפיזם
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