ארכיטקטורת שלושת השכבות 3 tier architecture מאת רנן חכם מאי 2008

23
תתתתתתתתתת תתתתת תתתתתת3 Tier architecture תתת תתת תתת ייי2008

Post on 21-Dec-2015

257 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: ארכיטקטורת שלושת השכבות 3 Tier architecture מאת רנן חכם מאי 2008

ארכיטקטורת שלושת השכבות3 Tier architecture

מאת רנן חכם

2008מאי

Page 2: ארכיטקטורת שלושת השכבות 3 Tier architecture מאת רנן חכם מאי 2008

רקע והגדרות1.

ארכיטקטורת שלושת השכבות2.

יתרונות וחסרונות הארכיטקטורה 3.

הצגת מימוש לדוגמא4.

סיכום5.

תוכן המצגת

Page 3: ארכיטקטורת שלושת השכבות 3 Tier architecture מאת רנן חכם מאי 2008

ארכיטקטורת תוכנה "תכנון מפושט של ההיבטים השונים של התוכנה, היחסים בין

המרכיבים השונים והחוקים החלים עליהם"

מאת ויקיפדיה - האינציקלופדיה החופשית

:דפוסים ארכיטקטוניים פופולאריים MVC – Model View Controller

SOA – Service Oriented Architecture P2P – Peer to Peer

N-Tier

3במצגת הזו נתמקד בארכיטקטורתTier שהיא מקרה ,.N-Tierפרטי של

ארכיטקטורת תוכנה

Page 4: ארכיטקטורת שלושת השכבות 3 Tier architecture מאת רנן חכם מאי 2008

מקרה פרטי של ארכיטקטורתN-Tier.

.הרעיון הבסיסי: מפרידים את המערכת לשכבות

כל שכבה מפותחת ומתוחזקת כמודול עצמאי.

(.Layer )לפעמים גם Tierכל שכבה מכונה

3ארכיטקטורת Tier היא הפופולארית ביותר בתוך .N-Tierמגוון ארכיטקטורות ה-

3 Tier ארכיטקטורת

Page 5: ארכיטקטורת שלושת השכבות 3 Tier architecture מאת רנן חכם מאי 2008

– דיאגראמהTier-3ארכיטקטורת

Data

Data Tier

Application Tier

Presentation Tier \ GUI

O\R MappingData representationDatabase accessCache mechanisms…

CalculatorsEnginesApplication core entitiesAlgorithms…

FormsWeb pagesInput Validations…

Page 6: ארכיטקטורת שלושת השכבות 3 Tier architecture מאת רנן חכם מאי 2008

יתרונות וחסרונות

חסרונות יתרונות

בעיות אינטגרציה ובעיות התקנה.

Flexibility

כל שכבה יכולה להשתנות בנפרד.

Redundancy עלול ליצור .כפילויות.

צוותים שונים יכולים להתמקצע בשכבה מסוימת.

פרויקט גדול יותר ומורכב יותר.

יצירת סדר ומידול במערכת:

ה"חוזה" בין השכבות (1מוסכם מראש.

כל שכבה קטנה יותר (2ומסודרת יותר בתוך עצמה.

האפליקציה בד"כ צורכת יותר זיכרון.

Scalability יכולת כל שכבה .לגדול בנפרד.

legacyקל לתחזוקה. מקטין code לאורך זמן. ניתן לשכתב

שכבה בודדת.

Page 7: ארכיטקטורת שלושת השכבות 3 Tier architecture מאת רנן חכם מאי 2008

דוגמא למימוש ארכיטקטורת שלושת השכבות

מטרות הדוגמא:

להציג פתרון לבעיה פשוטה באמצעות ארכיטקטורת 1.שלושת השכבות.

להציג בצורה מפורטת את שכבת האפליקציה.2.

ההצגה כוללת ירושה, ממשקים, פולימורפיזם ודפוסי עיצוב שבאו לידי ביטוי בשכבה זו.

Page 8: ארכיטקטורת שלושת השכבות 3 Tier architecture מאת רנן חכם מאי 2008

הדוגמא שנציג - משחק שח מט

Page 9: ארכיטקטורת שלושת השכבות 3 Tier architecture מאת רנן חכם מאי 2008

שח מט - חלוקה לשכבות

Data Tier

Application Tier

Presentation Tier \ GUI

פונקציונאליות מרכזית: הצגת הנתונים בפורמט הניתן לשמירה• שמירה וטעינת הנתונים• פישוט הגישה למידע והכנתו לשימוש על ידי שכבת •

האפליקציה

פונקציונאליות מרכזית: ייצוג הישויות הלוגיות הקיימות •

במערכת חוקיות מהלכי המשחק• לוגיקה משהו מצב מט•

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

Page 10: ארכיטקטורת שלושת השכבות 3 Tier architecture מאת רנן חכם מאי 2008

שח מט - מימוש בשלביםכדי להדגיש את היתרונות של ארכיטקטורה זו, התוכנה מפותחת בשלבים.

AApplicationpplication Tier Tier

- מימוש שכבת האפליקציה בלבד. שכבות התצוגה והמידע מכילות מימוש בסיסי 1שלב בלבד.

מימוש לוגיקה מלא

Presentation Tier \ GUIPresentation Tier \ GUI

, ותפריטי פקודותconsoleעבודה עם

Data TierData Tier

XMLעבודה עם קבצי

– החלפת שכבת המידע בשכבה מתקדמת יותר.2שלב

Data TierData Tier

עבודה עם מסד נתונים

– החלפת שכבת התצוגה בשכבת תצוגה מתקדמת3שלב

Presentation Tier \ GUIPresentation Tier \ GUI

עבודה עם ממשק גרפי

Page 11: ארכיטקטורת שלושת השכבות 3 Tier architecture מאת רנן חכם מאי 2008

שח מט - הדגמת הפרויקטים והרצה

הדגמה!

Page 12: ארכיטקטורת שלושת השכבות 3 Tier architecture מאת רנן חכם מאי 2008

שח מט - שכבת האפליקציה

שכבת האפליקציה מורכבת מכמה חלקים:

FAÇADE ממשק השכבה. בשימוש על ידי שכבת - התצוגה.

,ייצוג הישויות המרכזיות במערכת )משחק, לוח, פיוןפרש,...(.

'לוגיקת המשחק - חוקיות הצעדים, זיהוי מצב מט וכו

Page 13: ארכיטקטורת שלושת השכבות 3 Tier architecture מאת רנן חכם מאי 2008

FAÇADEממשק השכבה -

המונחFAÇADE פירושו חזית. זהו דפוס עיצוב המתאר למעשה את ה"חוזה". הממשק אותו מחויבת השכבה

לשמר.

-זהו החלק היחידי בשכבה המסומן כpublic.

)כזכור, לשימוש מתוך internalהיתר מסומנים כ- בלבד(.assemblyה-

-השימוש בinterfaces מאפשר לנו לעשות אבסטרקציה של המימוש. לשכבות אחרות אין תלות בצורת המימוש.

Page 14: ארכיטקטורת שלושת השכבות 3 Tier architecture מאת רנן חכם מאי 2008

ישויות המערכת

<Abstract>Piece

Game Board

RookBishopKnightPawnQueenKing

Page 15: ארכיטקטורת שלושת השכבות 3 Tier architecture מאת רנן חכם מאי 2008

בדיקת חוקיות מהלכים

<Abstract>Piece

RookBishopKnightPawnQueenKing

IValidation

bool Validate)...(

Page 16: ארכיטקטורת שלושת השכבות 3 Tier architecture מאת רנן חכם מאי 2008

בדיקת חוקיות מהלכים - המקרה המיוחד של המלכה

.המלכה בעצם רשאית לנוע כמו הצריח וכן כמו הרץ

.מימוש "פשוט" ייצור כפל קוד לא יפה

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

Page 17: ארכיטקטורת שלושת השכבות 3 Tier architecture מאת רנן חכם מאי 2008

בדיקת חוקיות מהלכים - המקרה המיוחד של המלכה

<Abstract>Piece

QueenBishopRook

IValidation

bool Validate)...(

OrthogonalValidator DiagonalValidator

Page 18: ארכיטקטורת שלושת השכבות 3 Tier architecture מאת רנן חכם מאי 2008

תור במשחק - רצף פעולות

הבקשה מגיע ל- 1שלב - FAÇADE של שכבת האפליקציה. המשחק הרלוונטי מזוהה על פי קוד המשחק. מאובייקט המשחק מקבלים את

האובייקט המייצג לוח.

קוראים למתודה 2שלב ,Move של הלוח. המתודה מזהה את האובייקט המייצג את הכלי המיועד לזוז.

הכלי עצמו מריץ את לוגיקת בדיקת התקינות שלו האם מותר 3שלב ,לו לזוז כפי שהתבקש.

הלוח מריץ בדיקות נוספות על חוקיות המהלך, ובדיקות האם 4שלב ,המשחק הסתיים.

Page 19: ארכיטקטורת שלושת השכבות 3 Tier architecture מאת רנן חכם מאי 2008

sequence diagramתור במשחק –

FACADE GameManager Game Board Piece

Move

GetGame

GetBoard

MoveValidate

Board-wiseValidations

Page 20: ארכיטקטורת שלושת השכבות 3 Tier architecture מאת רנן חכם מאי 2008

בדיקת חוקיות מהלכים - דוגמא לפולימורפיזם

Piece piece = this.mPieces[srcRow, srcCol];

if (piece == null) return false;

bool legal = piece.Validate(this, srcRow, srcCol, dstRow, dstCol);

Page 21: ארכיטקטורת שלושת השכבות 3 Tier architecture מאת רנן חכם מאי 2008

סיכום - הפרדת שכבות טובה

הפרדת שכבות דורשת יותר השקעה.•אם לא עושים אותה נכון - מבזבזים זמן ומקבלים פרויקט מורכב

ומסורבל מבלי ליהנות מהיתרונות.

•Loosely coupled לעומת Tightly coupled

Page 22: ארכיטקטורת שלושת השכבות 3 Tier architecture מאת רנן חכם מאי 2008

שאלות

?

Page 23: ארכיטקטורת שלושת השכבות 3 Tier architecture מאת רנן חכם מאי 2008

ביבליוגרפיה

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