ארכיטקטורה רב-שכבתית – הבדלי גרסאות

תוכן שנמחק תוכן שנוסף
מאין תקציר עריכה
שימוש בפיתוח ווב, שיקולים נוספים
שורה 1:
{{בעבודה מתמשכת}}
 
ב[[הנדסת תוכנה]], '''ארכיטקטורה רב-שכבתית''' או '''ארכיטקטורת n-שכבות''' (ב[[אנגלית]]: '''multi-tier architecture''' או '''n-tier architecture''') היא [[ארכיטקטורת תוכנה|ארכיטקטורת]] [[שרת-לקוח]] שבה הפרזנטציה (הצגה), עיבוד היישום, וניהול ה[[נתונים]] (data) הם תהליכים נפרדים מבחינה לוגית. לדוגמא, יישום המשתמש ב[[תווכה]] לצורך טיפול בהעברת נתונים בין משתמש ל[[בסיס נתונים]], יעבוד בארכיטקטורה רב-שכבתית. השימוש הנפוץ ביותר בארכיטקטורה רב-שכבתית הוא בצורה של '''ארכיטקטורת שלוש שכבות''' ('''three-tier architecture''').
 
שורה 29 ⟵ 27:
ממבט ראשון, מודל שלוש השכבות נראה דומה לתבנית העיצוב [[MVC|Model-View-Controller]]. עם זאת, מבחינה טופולוגית הם שונים. כלל יסוד בארכיטקטורת שלוש השכבות הוא שהלקוח לעולם אינו מתקשר ישירות עם שכבת הנתונים; במודל שלוש השכבות כל התקשורת חייבת לעבור דרך השכבה האמצעית, ולכן מבחינה רעיונית, ארכיטקטורת שלוש השכבות היא ליניארית. לעומת זאת, ארכיטקטורת MVC היא משולשת: המבט (view) שולח עידכונים לבקר (controller), הבקר מעדכן את המודל (model), והמבט מתעדכן ישירות מהמודל.
 
מנקודת מבט היסטורית, ארכיטקטורת שלוש השכבות התפתחה בשנות ה-90 של המאה ה-20 מתצפיות על [[חישוב מבוזר|מערכות מבוזרות]] (כגון [[יישום ווב|יישומי ווב]]), שבהן שכבות הלקוח, ה[[תווכה]] והנתונים רצו על גבי פלטפורמות נפרדות פיזית. לעומת זאת, מודל ה-MVC פותח עשור קודם לכן (עבודה ב-[[פארק (חברה)|Xerox PARC ]] בשנות ה-70 המאוחרות ותחילת שנות ה-80 של המאה ה-20), והפיתוח התבסס על תצפיות על יישומים שרצו על גבי תחנת עבודה גרפית יחידה. תבנית ה-MVC יושמה ליישומים מבוזרים בשלב מאוחר יותר בהיסטוריה שלה.
 
=== שימוש בפיתוח ווב ===
בתחום פיתוח הווב (web development), ארכיטקטורת שלוש השכבות משמשת ב[[אתר אינטרנט|אתרי אינטרנט]], בדרך כלל באתרי [[מסחר אלקטרוני]] הנבנים בשלוש שכבות:
# [[שרת HTTP|שרת רשת]] קדמי מגיש תוכן סטאטי ואולי גם תוכן דינאמי שנשמר מראש (cached). ב[[יישום ווב|יישומי ווב]], הקצה הקדמי (front-end) הוא התוכן ש[[מפרש|מפורש]] ומוצג על ידי ה[[דפדפן]]. התוכן יכול להיות סטאטי או תוכן שנוצר באופן דינאמי.
# [[שרת יישומים]] (application server) דינאמי שנמצא באמצע, ותפקידו לעבד נתונים וליצור תוכן. דוגמאות לכך הן פלטפורמות כמו: [[Ruby on Rails]], [[Java Enterprise Edition|Java EE]], [[ASP.NET]], [[PHP]], [[ColdFusion]].
# [[שרת בסיס נתונים]] אחורי (back-end), המורכב מ[[בסיס נתונים]] ותוכנה לניהול בסיס נתונים טבלאי (RDBMS), מספק את הגישה אל הנתונים.
 
=== שיקולים נוספים ===
העברת הנתונים בין השכבות היא חלק מהארכיטקטורה. לצורך כך יכול להיות שיהיה שימוש באחד או יותר מה[[פרוטוקול תקשורת|פרוטוקולים]] הבאים:
[[Simple Network Management Protocol|SNMP]], [[CORBA]], [[Java RMI]], [[.NET Remoting]], [[Windows Communication Foundation]], [[sockets]], [[UDP]], [[Web services]]
או פרוטוקול סטנדרטי או קנייני אחר. לעיתים קרובות משתמשים ב[[תווכה]] כדי לחבר בין השכבות הנפרדות. השכבות הנפרדות לעיתים קרובות רצות על גבי שרתים פיזיים נפרדים, וכל שכבה יכולה בעצמה לרוץ על גבי [[אשכול מחשבים]].
 
== ראו גם ==
* [[שרת-לקוח]]
* [[יישום ווב]]