יישום רשת

יישום רשת (קרוי לפעמים גם "אפליקצית אינטרנט") (באנגלית: Web application) הוא יישום הבנוי במודל שרת-לקוח ונגיש דרך רשת מחשבים, כגון רשת האינטרנט או אינטראנט. לרוב, יישומי רשת משתמשים בדפדפן כתוכנת לקוח, והם מורכבים מדפי אינטרנט דינמיים המסתמכים על תוכנה שמורצת הן בצד השרת והן בצד הלקוח. בדרך כלל, בצד השרת מתבצע מרבית עיבוד הנתונים ויצירה דינמית של התוכן שנשלח להצגה בצד הלקוח (הדפדפן). בצד הלקוח, הדפדפן מפרש ומריץ את קוד ה־CSS, HTML ו־JavaScript שהתקבל מהשרת, מציג את התוכן, ושולח את הקלט מהמשתמש חזרה לעיבוד ואחסון על השרת.
יישומי רשת הפכו לפופולריים בזכות התפוצה הגדולה של דפדפני רשת, ובזכות הנוחות בשימוש בדפדפן כתוכנת לקוח (לעיתים מכונה גם "לקוח רזה"). האפשרות לעדכן ולתחזק יישומי רשת מבלי הצורך להפיץ ולהתקין תוכנה על גבי אלפי מחשבי לקוח פוטנציאליים, היא סיבת המפתח לפופולריות של יישומי רשת, כמו גם העובדה שמטבעם הם נתמכים על גבי פלטפורמות שונות. דוגמאות ליישומי רשת נפוצים: דואר מבוסס רשת, אתרי קניות באינטרנט, מכירות פומביות אונליין, אתרי ויקי, ועוד.

חוויית משתמש

באמצעות טכנולוגיות כמו Java, JavaScript, DHTML, Flash, Silverlight וטכנולוגיות אחרות, ניתן לקבל שירותים כגון ציור על גבי המסך, השמעת צלילים, גישה למקלדת ולעכבר, תמיכה בפעולות "גרור ושחרר", ועוד. מפתחי web משתמשים לעיתים קרובות בפונקציונליות של סקריפטים לצד הלקוח, במטרה ליצור חוויה אינטראקטיבית שאינה דורשת טעינה מחדש של הדף. בשנים האחרונות פותחו טכנולוגיות חדשות לצורך תיאום בין הסקריפטים בצד הלקוח לבין טכנולוגיות צד־שרת כמו PHP. טכניקה לפיתוח web בשם Ajax, אשר משתמשת בשילוב של כמה טכנולוגיות שונות, היא דוגמה לטכנולוגיה אשר משמשת ליצירת חוויית משתמש אינטראקטיבית יותר.

מבנה

בדרך כלל יישומי רשת מחולקים ליחידות לוגיות הנקראות "שכבות" (באנגלית: tiers), וכל שכבה מתמחה בתפקיד אחר. להבדיל מיישומים מסורתיים המורכבים רק משכבה אחת אשר רצה על גבי מחשב הלקוח, יישומי רשת מובילים מטבעם לעבודה במודל של ארכיטקטורה רב-שכבתית. למרות שקיימות אפשרויות שונות רבות, המבנה הנפוץ ביותר לעיצוב יישומי רשת הוא מבנה שלוש השכבות. בצורתו הנפוצה ביותר, מבנה שלוש השכבות מורכב מהשכבות הבאות: שכבת הצגה (presentation), שכבת הלוגיקה העסקית (business logic), ושכבת אחסון הנתונים (data storage).
הדפדפן נמצא בשכבה הראשונה והוא משמש להצגת התוכן למשתמש. בשכבה האמצעית (נקראת גם שכבת הלוגיקה העסקית או "שכבת היישום") נמצא שרת HTTP שעובד בתיאום עם מנוע ליצירת דפי אינטרנט דינמיים. לרוב, יצירת הדפים מתבצעת על ידי אחת מהטכנולוגיות הבאות: ASP, ASP.NET, CGI, ColdFusion, JSP, PHP, Perl, Python, Ruby on Rails. בשכבה השלישית נמצא בסיס נתונים המשמש לקבלה ואחסון של נתונים. סדר הפעולות הכללי הוא: הדפדפן שולח בקשות לשרת שמהווה את שכבת הלוגיקה העסקית, והוא משרת אותן באמצעות תשאול ועדכון של בסיס הנתונים, ולבסוף יוצר ושולח את התוכן חזרה להצגה בדפדפן.
עבור יישומים מורכבים יותר, מודל שלוש השכבות יכול לא להספיק, ובמקרה כזה תהיה העדפה להשתמש ביותר שכבות. היתרון העיקרי של ריבוי שכבות הוא האפשרות לחלוקה עדינה יותר של הלוגיקה העסקית שנמצאת בשכבת האמצעית. יתרון נוסף יכול להתקבל מהוספת שכבת אינטגרציה המפרידה בין שכבת הנתונים ליתר השכבות, על ידי יצירת ממשק נוח לגישה לנתונים. לדוגמה, הגישה לנתוני משתמשים תהיה באמצעות קריאה לפונקציה "()get_user_details", במקום לבצע שאילתת SQL ישירות כנגד טבלת המשתמשים בבסיס הנתונים. דבר זה יאפשר להחליף במידת הצורך את בסיס הנתונים, ללא צורך לעשות שינויים נוספים באף אחת מהשכבות האחרות.
יש המעדיפים פיתוח יישומי רשת בארכיטקטורה של שתי שכבות: שרת ולקוח בלבד. תפקיד הלקוח לטפל בהצגת הנתונים, ואילו השרת מחזיק את בסיס הנתונים, והלוגיקה העסקית יכולה להתבצע על גבי השרת או על גבי הלקוח, או על שניהם. ניתן לממש יישומים בהם הלקוח יהיה "חכם" והוא יבצע את כל עיבוד הנתונים ורק יתשאל את השרת ה"טיפש" ואילו ביישומים אחרים הלקוח יהיה "טיפש" ויסתמך על שרת "חכם". בעוד שזה מגביר את הסילומיות של יישומים ויוצר הפרדה בין ההצגה לבסיס הנתונים, במודל זה אין התמחות של השכבות, ולכן מודל זה לא יתאים עבור מרבית היישומים.

מודל עסקי

בשנים האחרונות מופיעה אסטרטגיה חדשה עבור חברות תוכנה, לספק דרך האינטרנט גישה לתוכנות שקודם לכן היו מופצות כיישומים המיועדים לריצה מקומית. בהתאם לסוג היישום, ייתכן שהדבר ידרוש פיתוח של ממשק שונה לגמרי, מבוסס דפדפן, או שלחלופין תידרשנה רק התאמות פשוטות יחסית ביישום הקיים, לשימוש בטכנולוגיית הצגה שונה. תוכנות כאלה מאפשרות למשתמש לשלם דמי שימוש חודשיים או שנתיים עבור זכות השימוש בתוכנה, מבלי הצורך להתקין אותה על גבי הכונן הקשיח במחשב המקומי. חברה שפועלת על פי אסטרטגיה כזאת נקראת Application Service Provider. כיום חברות כאלה זוכות לתשומת לב רבה בתעשיית התוכנה.
במודל מחשוב הענן, יישומי רשת משמשים במתכונת (Software as a Service (SaaS — תוכנה כשירות. ישנם יישומים מסחריים המסופקים לארגונים במתכונת SaaS, בתמורה לתשלום קבוע או תלוי־שימוש. יישומי רשת אחרים מוצעים בחינם, ומספקים הכנסות בדרך כלל דרך פרסומות המופיעות בממשק של היישום.

פיתוח

קיימות תשתיות (Frameworks) רבות לפיתוח יישומי רשת, אשר מסייעות לפיתוח תוכנה זריז (Rapid application development), בכך שהן מאפשרות למפתח להגדיר תיאור ברמה הגבוהה (high-level) של התוכנה. בנוסף לכך קיימת האפשרות לפיתוח יישומים על גבי מערכות הפעלה אינטרנטיות, אם כי כיום לא קיימות פלטפורמות פרקטיות המתאימות למודל כזה.
השימוש בתשתיות לפיתוח יישומי רשת יכול לעיתים קרובות להוריד את כמות השגיאות בתוכנה, הן על ידי פישוט הקוד והן בכך שהן מאפשרות לצוות מסוים להתרכז רק בתשתית. ביישומים החשופים לניסיונות התקפה קבועים דרך האינטרנט, בעיות אבטחה עשויות להיגרם על ידי שגיאות בתוכנית. תשתיות הפיתוח יכולות לסייע גם לקידום של שיטות עבודה מומלצות כמו Post/Redirect/Get.

סוגי יישומים

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