יישום רשת – הבדלי גרסאות

תוכן שנמחק תוכן שנוסף
מ "קוד" כאן היה במשמעות "תוכנית"
שורה 27:
באמצעות טכנולוגיות כמו [[Java]], [[JavaScript]], [[DHTML]], [[אדובי פלאש|Flash]], [[Silverlight]] וטכנולוגיות אחרות, ניתן לקבל שירותים כגון ציור על גבי המסך, השמעת צלילים, גישה ל[[מקלדת מחשב|מקלדת]] ול[[עכבר (מחשב)|עכבר]], תמיכה בפעולות "[[גרור ושחרר]]", ועוד. מפתחי web משתמשים לעתים קרובות בפונקציונליות של סקריפטים לצד הלקוח, במטרה ליצור חוויה [[אינטראקטיביות|אינטראקטיבית]] שאינה דורשת טעינה מחדש של הדף. בשנים האחרונות פותחו טכנולוגיות חדשות לצורך תיאום בין הסקריפטים בצד הלקוח לבין טכנולוגיות [[צד-שרת|צד־שרת]] כמו [[PHP]]. טכניקה לפיתוח web בשם [[Ajax (תכנות)|Ajax]], אשר משתמשת בשילוב של כמה טכנולוגיות שונות, היא דוגמה לטכנולוגיה אשר משמשת ליצירת חוויית משתמש אינטראקטיבית יותר.
 
== מבנה יישומיםיישומי רשת ==
בדרך כלל יישומי רשת מחולקים בדרך כלל ליחידות לוגיות הנקראות "שכבות" (באנגלית: tiers), ולכלוכל שכבה ישמתמחה תפקידבתפקיד משלהאחר. יישומיםלהבדיל מיישומים מסורתיים מורכביםהמורכבים רק משכבה אחת אשר נמצאתרצה על גבי מחשב הלקוח. לעומת זאת, יישומי רשת מובילים מטבעם מובילים לעבודה במודל של [[ארכיטקטורה רב-שכבתית]] (n-tier). למרות שקיימות אפשרויות שונות רבות, המבנה הנפוץ ביותר לעיצוב יישומי רשת הוא [[ארכיטקטורה רב-שכבתית#ארכיטקטורת שלוש שכבות|מבנה של שלוש שכבותהשכבות]] (three-tiered architecture). בצורתו הנפוצה ביותר, מבנה שלוש השכבות מורכב מהשכבות הבאות: שכבת הצגה (presentation), לוגיקת היישום (application logic) ואחסון נתונים (data storage), בסדר הזה. הדפדפן הוא השכבה הראשונה (הצגה); המנוע שמשתמש באחת מהטכנולוגיות ליצירת [[דף אינטרנט דינמי|דפי אינטרנט דינמיים]] (כגון [[Active Server Pages|ASP]], [[ASP.NET]], [[Common Gateway Interface|CGI]], [[ColdFusion]], [[JSP]], [[PHP]], [[Perl]], [[Python]], [[Ruby on Rails]]) הוא השכבה האמצעית (שכבת ה[[לוגיקה עסקית|לוגיקה העסקית]]); ו[[בסיס(business נתונים]] הוא השכבה השלישית המשתמשת לאחסון נתונים. הדפדפן שולח בקשות לשכבה האמצעיתlogic), אשרושכבת משרתת אותן באמצעות תשאול ועדכון של בסיסאחסון הנתונים, וגם(data יוצרת את ממשק המשתמשstorage).
 
הדפדפן נמצא בשכבה הראשונה והוא משמש להצגת התוכן למשתמש. בשכבה האמצעית (נקראת גם שכבת ה[[לוגיקה עסקית|לוגיקה העסקית]] או "שכבת היישום") נמצא [[שרת HTTP]] שעובד בתיאום עם מנוע ליצירת [[דף אינטרנט דינמי|דפי אינטרנט דינמיים]]. לרוב, יצירת הדפים מתבצעת על ידי אחת מהטכנולוגיות הבאות: [[Active Server Pages|ASP]], [[ASP.NET]], [[Common Gateway Interface|CGI]], [[ColdFusion]], [[JSP]], [[PHP]], [[Perl]], [[Python]], [[Ruby on Rails]]. בשכבה השלישית נמצא [[בסיס נתונים]] המשמש לקבלה ואחסון של נתונים. סדר הפעולות הכללי הוא: הדפדפן שולח בקשות לשרת שמהווה את שכבת הלוגיקה העסקית, והוא משרת אותן באמצעות תשאול ועדכון של בסיס הנתונים, ולבסוף יוצר ושולח את התוכן חזרה להצגה בדפדפן.
עבור יישומים מורכבים יותר, מודל שלוש השכבות עלול לא להספיק, ובמקרה כזה עדיף יהיה להשתמש בגישה של [[ארכיטקטורה רב-שכבתית (תוכנה)|ארכיטקטורה רב־שכבתית]] (n-שכבות). היתרון העיקרי בגישה כזאת הוא האפשרות לחלוקה עדינה יותר של ה[[לוגיקה עסקית|לוגיקה העסקית]], אשר נמצאת בשכבת היישום. עוד יתרון יכול להתקבל על ידי הוספת שכבת [[שילוב מערכות|אינטגרציה]] אשר מפרידה בין שכבת הנתונים ליתר השכבות, על ידי יצירה של ממשק נוח לצורך הגישה לנתונים. לדוגמה, הגישה לנתוני משתמשים תהיה באמצעות קריאה לפונקציה "()list_users", במקום לבצע שאילתת [[SQL]] ישירות כנגד טבלת המשתמשים בבסיס הנתונים. דבר זה יאפשר להחליף את בסיס הנתונים, מבלי הצורך לעשות שינויים כלשהם באף אחת מהשכבות האחרות.
 
עבור יישומים מורכבים יותר, מודל שלוש השכבות עלוליכול לא להספיק, ובמקרה כזה עדיףתהיה יהיההעדפה להשתמש בגישהביותר של [[ארכיטקטורה רב-שכבתית (תוכנה)|ארכיטקטורה רב־שכבתית]] (n-שכבות). היתרון העיקרי בגישהשל כזאתריבוי שכבות הוא האפשרות לחלוקה עדינה יותר של ה[[לוגיקה עסקית|לוגיקה העסקית]], אשר נמצאתשנמצאת בשכבת היישוםהאמצעית. עוד יתרון נוסף יכול להתקבל על ידי הוספתמהוספת שכבת [[שילוב מערכות|אינטגרציה]] אשר מפרידההמפרידה בין שכבת הנתונים ליתר השכבות, על ידי יצירהיצירת של[[ממשק תכנות יישומים|ממשק]] נוח לצורך הגישהלגישה לנתונים. לדוגמה, הגישה לנתוני משתמשים תהיה באמצעות קריאה לפונקציהל[[שגרה (תכנות)|פונקציה]] "()list_usersget_user_details", במקום לבצע שאילתת [[SQL]] ישירות כנגד טבלת המשתמשים בבסיס הנתונים. דבר זה יאפשר להחליף במידת הצורך את בסיס הנתונים, מבליללא הצורךצורך לעשות שינויים כלשהםנוספים באף אחת מהשכבות האחרות.
יש המעדיפים פיתוח של יישומי רשת בארכיטקטורה של שתי שכבות: לקוח ושרת. ביישומים מסוימים הלקוח "חכם" ועושה את כל העבודה ורק מתשאל את השרת ה"טיפש". ביישומים אחרים הלקוח הוא "טיפש" ומסתמך על שרת "חכם". הלקוח יטפל בשכבת ההצגה, השרת יחזיק את בסיס הנתונים (שכבת האחסון) ו[[לוגיקה עסקית|הלוגיקה העסקית]] תהיה על גבי אחד מהם או על שניהם. בעוד שזה מגביר את ה[[סילומיות]] של היישומים ויוצר הפרדה בין ההצגה לבסיס הנתונים, זה עדיין לא מאפשר התמחות של השכבות, ולכן מודל זה לא יתאים עבור מרבית היישומים.
 
יש המעדיפים פיתוח של יישומי רשת בארכיטקטורה של שתי שכבות: לקוחשרת ושרתולקוח בלבד. ביישומים מסוימיםתפקיד הלקוח "חכם"לטפל ועושהבהצגת הנתונים, ואילו השרת מחזיק את כלבסיס העבודההנתונים, ורקו[[לוגיקה מתשאלעסקית|הלוגיקה אתהעסקית]] יכולה להתבצע על גבי השרת ה"טיפש".או ביישומיםעל אחריםגבי הלקוח, הואאו "טיפש"על ומסתמךשניהם. עלניתן שרתלממש "חכם".יישומים בהם הלקוח יטפליהיה בשכבת"חכם" ההצגה,והוא השרת יחזיקיבצע את בסיסכל עיבוד הנתונים (שכבתורק האחסון)יתשאל ו[[לוגיקהאת עסקית|הלוגיקההשרת העסקית]]ה"טיפש" תהיהואילו עלביישומים גביאחרים אחדהלקוח מהםיהיה או"טיפש" ויסתמך על שניהםשרת "חכם". בעוד שזה מגביר את ה[[סילומיות]] של היישומיםיישומים ויוצר הפרדה בין ההצגה לבסיס הנתונים, במודל זה עדיין לא מאפשראין התמחות של השכבות, ולכן מודל זה לא יתאים עבור מרבית היישומים.
 
== מודל עסקי ==