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

Post on 21-Dec-2015

255 views 0 download

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

ארכיטקטורת שלושת השכבות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