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

תוכן שנמחק תוכן שנוסף
לא מתעתקים, מתרגמים. יש המון דברים שצריכים להיעלם מהערך הזה.
מדהים - ערך שנכתב חצי באנגלית
שורה 2:
'''יישום רשת''' (ב[[אנגלית]]: '''web application''') הוא [[יישום מחשב|יישום]] הנגיש דרך [[תקשורת נתונים#רשתות תקשורת|רשת מחשבים]], כגון רשת ה[[אינטרנט]] או [[אינטראנט]]. המונח יכול להתייחס גם ליישום תוכנה המאוחסן בסביבה הנשלטת באמצעות [[דפדפן]] (למשל [[יישומון|Java applet]]), או יישום שפותח ב[[שפת תכנות|שפה]] הנתמכת בדפדפנים (כמו [[JavaScript]] בשילוב עם [[שפת תגיות]] ה[[מפרש (תוכנה)|מפורשת]] על ידי הדפדפן, כמו [[HTML]]), ומסתמך על אחד מדפדפני הרשת הנפוצים לצורך פירוש [[קובץ הרצה|קובץ ההרצה]] של היישום.
 
יישומי רשת הפכו לפופולאריים בזכות התפוצה הגדולה של דפדפני רשת, ובזכות הנוחות בשימוש בדפדפן כתוכנת [[לקוח (מחשבים)|לקוח]] (לעתים מכונה גם "לקוח רזה"). האפשרות לעדכן ולתחזק יישומי רשת מבלי הצורך להפיץ ולהתקין תוכנה על גבי אלפי מחשבי לקוח פוטנציאליים, היא סיבת המפתח לפופולאריות של יישומי רשת, כמו גם העובדה שמטבעם הם נתמכים על גבי פלטפורמות שונות ([[cross-platform]]). דומאות ליישומי רשת נפוצים: [[דואר מבוסס רשת]], [[מסחר אלקטרוני#קניות קמעונאיות באינטרנט|אתרי קניות באינטרנט]], מכירות פומביות אונליין, אתרי [[ויקי]], ועוד.
 
== היסטוריה ==
שורה 11:
בימים המוקדמים של הרשת כל דף אינטרנט נפרד היה מועבר ללקוח כמסמך סטאטי, אבל רצף הדפים יכול היה לספק חוויה אינטראקטיבית. הקלט מהמשתמש היה מוחזר אל השרת דרך אלמנטים של טפסים המוטמעים בתוך [[שפת תגיות|שפת התגיות]] של הדף.
 
* בשנת [[1995]], חברת [[נטסקייפ]] הציגה [[שפת תסריט]] לצד הלקוח בשם [[JavaScript]], אשר מאפשרת ל[[מתכנת|מתכנתים]] להוסיף [[DHTML|אלמנטים דינמיים]] לממשק המשתמש שרץ בצד הלקוח. כך, במקום לשלוח נתונים אל השרת ואז לקבל דף אינטרנט שלם, התסריטים המוטמעים בדף האינטרנט שירד יכולים היו לבצע משימות שונות, כגון בדיקת תקינות (validation) של הקלט, או הצגה/הסתרה של חלקים מהעמוד.
 
* בשנת [[1996]], חברת [[מקרומדיה]] הציגה את [[אדובי פלאש|Flash]], נגן של [[גרפיקה וקטורית|אנימציההנפשה וקטורית]], הניתן להוספה לדפדפנים כ[[פלאג איןתוסף]], מה שאיפשר להטמיע אנימציותהנפשות בדפי אינטרנט. יישום זה נתן אפשרות נוספת להשתמש בשפת תסריט (במקרה זה, שפה בשם [[ActionScript]]) כדי לתכנת אינטראקציות בצד הלקוח, בלי הצורך ליצור קשר עם השרת.
 
* בשנת [[1999]], התפישה של "יישום רשת" הוצגה בשפת [[Java]] במפרט [[Servlet]], גרסה 2.2. באותו זמן [[JavaScript]] ו-[[XML]] כבר פותחו, אבל המושג [[Ajax (תכנות)|Ajax]] טרם הוטבע, והאובייקט [[XMLHttpRequest]] הוצג רק לאחרונה בדפדפן [[Internet Explorer|Internet Explorer 5]], כאובייקט [[ActiveX]].
 
[[תמונה:Googlemapsisrael.jpg|שמאל|ממוזער|300px|[[גוגל מפות|מפות Google]] הוא יישום רשת של [[חברת גוגל]] המציג מפות ותצלומי לוויין. זוהי דוגמה טובה ליישום שעושה שימוש נרחב בטכניקת [[AJAX (תכנות)|Ajax]]]]
* בשנת [[2005]] הוטבע המושג [[Ajax (תכנות)|Ajax]], ויישומים כמו [[Gmail]] התחילו להפוך את צד הלקוח שלהם ליותר ויותר [[אינטראקטיביות|אינטראקטיבי]]. כעת סקריפטתסריט בדף האינטרנט היה מסוגל ליצור קשר עם השרת לצורך אחסון או קבלה של [[נתונים]], בלי הצורך להוריד דף אינטרנט שלם.
 
* בשנת [[2010]] החל השימוש ב-[[HTML5]], גרסה חדשה של שפת [[HTML]] (נכון לחודש נובמבר 2011 גרסה זו עדיין נמצאת בפיתוח), אשר מספקת יכולות [[גרפיקה]] ו[[מולטימדיה]], ללא צורך ב-[[פלאג אין|plug-insתוסף]] בצד הלקוח. HTML5 גם העשירה את התוכן הסמנטי של מסמכים. בעקבות זאת [[ממשק תכנות יישומים|ממשקי תכנות היישומים]] (APIs) וה-[[DOM]] לא היו יותר תוצרים שבדיעבד, אלא הפכו לחלקים בסיסיים במפרט של HTML5. ממשק תכנות היישומים [[WebGL]] סלל את הדרך ל[[גרפיקת תלת-ממד]] מתקדמת המבוססות על ה-canvas של HTML5 ועל שפת JavaScript. לכל אלה חשיבות רבה ליצירת [[יישום אינטרנט עשיר|יישומי אינטרנט עשירים]], שאינם תלויים בסוג הדפדפן או הפלטפורמה.
 
== חוויית משתמש ==
באמצעות טכנולוגיות כמו [[Java]], [[JavaScript]], [[DHTML]], [[אדובי פלאש|Flash]], [[Silverlight]] וטכנולוגיות אחרות, ניתן לקבל שירותים כגון ציור על גבי המסך, השמעת צלילים, גישה ל[[מקלדת מחשב|מקלדת]] ול[[עכבר (מחשב)|עכבר]], תמיכה בפעולות [[drag-and-drop]]גרירה ושחרור, ועוד. מפתחי רשת משתמשים לעתים קרובות בפונקציונאליות של סקריפטיםתסריטים לצד הלקוח, במטרה ליצור חוויה [[אינטראקטיביות|אינטראקטיבית]] שאינה דורשת טעינה מחדש של הדף. בשנים האחרונות פותחו טכנולוגיות חדשות לצורך תיאום בין הסקריפטיםהתסריטים בצד הלקוח לבין טכנולוגיות לצד השרת כמו [[PHP]]. טכניקה לפיתוח רשת בשם [[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]]) הוא השכבה האמצעית (הלוגיקה של היישום); ו[[בסיס נתונים]] הוא השכבה השלישית (אחסון הנתונים). הדפדפן שולח בקשות לשכבה האמצעית, אשר משרתת אותן באמצעות תשאול ועדכון של בסיס הנתונים, וגם יוצרת את ממשק המשתמש.
 
עבור יישומים מורכבים יותר, מודל שלוש השכבות עלול שלא להספיק, ובמקרה כזה עדיף יהיה להשתמש בגישה של [[ארכיטקטורה רב-שכבתית (תוכנה)|ארכיטקטורה רב-שכבתיתרב־שכבתית]] (n-שכבות). היתרון העיקרי בגישה כזאת הוא האפשרות לחלוקה עדינה יותר של ה[[לוגיקה עסקית|לוגיקה העסקית]], אשר נמצאת בשכבת היישום. עוד יתרון יכול להתקבל על ידי הוספת שכבת [[שילוב מערכות|אינטגרציה]] אשר מפרידה בין שכבת הנתונים ליתר השכבות, על ידי יצירה של ממשק נוח לצורך הגישה לנתונים. לדוגמה, הגישה לנתוני משתמשים תהיה באמצעות קריאה לפונקציה "()list_users", במקום לבצע שאילתת [[SQL]] ישירות כנגד טבלת המשתמשים בבסיס הנתונים. דבר זה יאפשר להחליף את בסיס הנתונים, מבלי הצורך לעשות שינויים כלשהם באף אחת מהשכבות האחרות.
 
יש המעדיפים פיתוח של יישומי רשת בארכיטקטורה של שתי שכבות: לקוח ושרת. ביישומים מסוימים הלקוח "חכם" ועושה את כל העבודה ורק מתשאל את השרת ה"טיפש", ביישומים אחרים הלקוח "טיפש" ומסתמך על שרת "חכם". הלקוח יטפל בשכבת הפרזנטציה, השרת יחזיק את בסיס הנתונים (שכבת האחסון) ו[[לוגיקה עסקית|הלוגיקה העסקית]] (שכבת היישום) תהיה על גבי אחד מהם או על שניהם. בעוד שזה מגביר את ה[[סילומיות]] (scalability) של היישומים ויוצר הפרדה בין הפרזנטציהההצגה לבסיס הנתונים, זה עדיין לא מאפשר התמחות של השכבות, ולכן מודל זה לא יתאים עבור מרבית היישומים.
 
== מודל עסקי ==
בשנים האחרונות מופיעה אסטרטגיה חדשה עבור חברות תוכנה, לספק דרך האינטרנט גישה לתוכנות שקודם לכן היו מופצות כיישומים המיועדים לריצה מקומית. בהתאם לסוג היישום, ייתכן שהדבר ידרוש פיתוח של ממשק שונה לגמרי, מבוסס [[דפדפן]], או שלחלופין תידרשנה רק התאמות פשוטות יחסית ביישום הקיים, לשימוש בטכנולוגיית פרזנטציה שונה. תוכנות כאלה מאפשרות למשתמש לשלם דמי שימוש חודשיים או שנתיים עבור זכות השימוש בתוכנה, מבלי הצורך להתקין אותה על גבי ה[[כונן קשיח|כונן הקשיח]] במחשב המקומי. חברה שפועלת על פי אסטרטגיה כזאת נקראת [[Application Service Provider]]. כיום חברות כאלה זוכות לתשומת לב רבה בתעשיית התוכנה.
 
במודל [[מחשוב ענן|מחשוב הענן]], יישומי רשת משמשים במתכונת (Software as a Service (SaaS – [[תוכנה כשירות]]. ישנם יישומים מסחריים המסופקים לארגונים במתכונת SaaSזו, בתמורה לתשלום קבוע או תלוי-שימושתלוי־שימוש. יישומי רשת אחרים מוצעים בחינם, ומספקים הכנסות בדרך כלל דרך [[פרסום באינטרנט|פרסומות]] המופיעות בממשק של היישום.
 
== פיתוח יישומי רשת ==
קיימות תשתיות ([[שלד תוכנה|Frameworks]]) רבות לפיתוח יישומי רשת, אשר מסייעות ל[[פיתוח תוכנה זריז]] (Rapid application development), בכך שהן מאפשרות למפתח להגדיר תיאור ברמה הגבוהה (high-level) של התוכנה. בנוסף לכך קיימת האפשרות לפיתוח יישומים על גבי [[מערכת הפעלה אינטרנטית|מערכות הפעלה אינטרנטיות]], אם כי כיום לא קיימות פלטפורמות פרקטיות המתאימות למודל כזה.
 
השימוש בתשתיות לפיתוח יישומי רשת יכול לעתים קרובות להוריד את כמות ה[[באג|שגיאות]] בתוכנה, הן על ידי פישוט הקוד והן בכך שהן מאפשרות לצוות מסוים להתרכז רק בתשתית. ביישומים החשופים לניסיונות [[קראקר|התקפה]] קבועים דרך האינטרנט, בעיות [[אבטחת מערכות מידע|אבטחה]] עשויות להיגרם על ידי שגיאות בתוכנית. תשתיות הפיתוח יכולות לסייע גם לקידום של שיטות עבודה מומלצות כמו [[Post/Redirect/Get]].
 
[[תמונה:GDocs_and_Spreadsheets_screenshot.png|שמאל|ממוזער|250px|[[Google Docs]] היא [[חבילת יישומים משרדיים]] הכוללת [[מעבד תמלילים]], [[גיליון אלקטרוני]] ו[[תוכנת מצגות]], המוצעים על ידי [[חברת גוגל]] כיישומי רשת.]]
שורה 52:
* יישומי רשת אינם דורשים ביצוע של שום פעולות שדרוג בצד הלקוח, מאחר שכל העדכונים מיושמים על השרת ומועברים אוטומטית למשתמשים.
* [[שילוב מערכות|אינטגרציה]] פשוטה בין יישומי רשת לשירותים אחרים בצד השרת כמו [[דואר אלקטרוני]] ו[[מנוע חיפוש|מנועי חיפוש]].
* ברוב המקרים יישומי רשת נתמכים על גבי פלטפורמות שונות ([[Microsoft Windows|חלונות]], [[מקינטוש|מקMac Os X]], [[לינוקסLinux]] ועוד) בגללכיוון שהם פועלים במסגרת הדפדפן.
 
== חסרונות ==
* מבחינת נוחות השימוש ו[[חוויית משתמש|חוויית המשתמש]] שהם מספקים, יישומי רשת בדרך כלל יהיו נחותים לעומת תוכנות לקוח "עשירות" (rich client), שאינן מסתמכות על חיבור לשרת לצורך ביצוע הפונקציונאליות שלהן. (ראו: [[שרת-לקוח]]).
* יישומי רשת דורשים תאימות מוחלטת מצד הדפדפנים. אם יצרנית דפדפנים מסוימת תחליט שלא לממש שירות (feature) מסוים, או תנטוש פלטפורמה או [[מערכת הפעלה]] מסוימת, דבר זה עלול להשפיע על מספר עצום של משתמשים.
* יישומי דפדפן מסתמכים על [[קובץ|קבצים]] הנמצאים על גבי שרתים מרוחקים הנגישים דרך האינטרנט. כתוצאה מכך, כאשר קיימת הפרעה בחיבור, לא ניתן להשתמש יותר ביישום. עם זאת, יישומים המשתמשים באפשרויות הקיימות ב-[[HTML5]], כמו offlineמטמון webיישום applicationאינטרנט cachingלא מקוון, ניתנים להורדה והתקנה מקומית לצורך שימוש במצב לא מקוון.
* יישומי רשת תלויים לגמרי בזמינות השרת שמספק את היישום. אם החברה שפיתחה את היישום פושטת רגל והשרת שלה נסגר, למשתמשים אין יותר לאן לפנות. תוכנה מסורתית המותקנת על גבי המחשב ממשיכה לפעול גם לאחר הפסקת פעילותה של החברה שפיתחה אותה (אם כי כמובן לא יהיו עבורה יותר עדכונים או שירות לקוחות).
* לחברה המפתחת יש שליטה חזקה בהרבה על התוכנה ואופן הפעולה שלה. החברה יכולה לשחרר תכונות חדשות בכל עת שתרצה, אפילו אם המשתמש יעדיף תחילה לחכות עד אשר כל ה[[באג|באגים]] יטופלו לפני שיחליט לשדרג את התוכנה. לעתים קרובות האפשרות לדלג על גרסה חלשה של התוכנה אינה קיימת. החברה עלולה לדחוף למשתמשים שירותים שאינם רצויים מבחינתם, או לקצץ בעלויות על ידי צמצום [[רוחב פס|רוחב הפס]]. כמובן שחברות ינסו לשמור על לקוחותיהן מרוצים, אבל למשתמשי יישומי רשת יש פחות אפשרויות במקרים כאלה אלא אם כן קיימת חברה מתחרה אשר מציעה מוצר טוב יותר ואפשרות נוחה למעבר אליה.