שרת אפליקציות, שרת אינטרנט: מה ההבדל?

23 באוגוסט 2002

ש: מה ההבדל בין שרת יישומים לשרת אינטרנט?

א:

שרת אינטרנט מטפל בלעדית בבקשות HTTP, ואילו שרת יישומים משרת לוגיקה עסקית לתוכניות יישומים באמצעות מספר פרוטוקולים כלשהו.

בואו נבחן כל אחד בפירוט רב יותר.

שרת האינטרנט

שרת אינטרנט מטפל בפרוטוקול HTTP. כאשר שרת האינטרנט מקבל בקשת HTTP, הוא מגיב בתגובת HTTP, כגון שליחת דף HTML בחזרה. כדי לעבד בקשה, שרת אינטרנט עשוי להגיב עם דף או תמונת HTML סטטיים, לשלוח הפניה מחדש, או להאציל את יצירת התגובה הדינמית לתוכנית אחרת כלשהי כמו סקריפטים של CGI, JSP (JavaServer Pages), servlets, ASPs (Active Server Pages) ), JavaScripts בצד השרת או טכנולוגיה אחרת בצד השרת. לא משנה מה מטרתן, תוכניות כאלה בצד השרת מייצרות תגובה, לרוב ב- HTML, לצפייה בדפדפן אינטרנט.

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

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

שרת היישומים

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

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

ברוב המקרים, השרת חושף את ההיגיון העסקי הזה דרך ממשק API של רכיבים, כגון מודל הרכיבים EJB (Enterprise JavaBean) שנמצא בשרתי יישומים J2EE (Java 2 Platform, Enterprise Edition). יתר על כן, שרת היישומים מנהל את המשאבים שלו. חובות כאלה לשמירת שער כוללות אבטחה, עיבוד עסקאות, איגום משאבים והעברת הודעות. כמו שרת אינטרנט, שרת יישומים עשוי גם להשתמש בטכניקות מדרגיות שונות וסובלנות תקלות.

דוגמה

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

תרחיש 1: שרת אינטרנט ללא שרת יישומים

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

לסיכום, שרת אינטרנט פשוט מעבד בקשות HTTP על ידי תגובה באמצעות דפי HTML.

תרחיש 2: שרת אינטרנט עם שרת יישומים

תרחיש 2 דומה לתרחיש 1 בכך ששרת האינטרנט עדיין מאציל את יצירת התגובה לתסריט. עם זאת, כעת תוכל לשים את ההיגיון העסקי לחיפוש התמחור על שרת יישומים. עם שינוי זה, במקום שהתסריט יידע לחפש את הנתונים ולגבש תגובה, התסריט יכול פשוט להתקשר לשירות החיפוש של שרת היישום. לאחר מכן הסקריפט יכול להשתמש בתוצאת השירות כאשר הסקריפט מייצר את תגובת ה- HTML שלו.

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

על ידי הפרדת לוגיקת התמחור מקוד יצירת HTML, הלוגיקה בתמחור הופכת לשימוש רב יותר בין יישומים. לקוח שני, כמו קופה רושמת, יכול גם להתקשר לאותו שירות בו פקיד בודק לקוח. לעומת זאת, בתרחיש 1 שירות בדיקת התמחור אינו ניתן לשימוש חוזר מכיוון שהמידע מוטבע בתוך דף ה- HTML. לסיכום, במודל של תרחיש 2, שרת האינטרנט מטפל בבקשות HTTP על ידי מענה עם דף HTML בעוד ששרת היישומים משרת את לוגיקת היישומים על ידי עיבוד בקשות תמחור וזמינות.

אזהרות

לאחרונה, שירותי XML טשטשו את הגבול בין שרתי היישומים לשרתי האינטרנט. על ידי העברת מטען XML לשרת אינטרנט, שרת האינטרנט יכול כעת לעבד את הנתונים ולהגיב כפי שקרה בעבר לשרתי היישומים.

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

טוני סינטס הוא יועץ עצמאי ומייסד ייעוץ מחלקה ראשונה, חברת ייעוץ המתמחה בגישור מערכות הכשרה שונות. מחוץ לייעוץ ממדרגה ראשונה, טוני הוא סופר עצמאי פעיל, וכן מחבר הספר Sams Teach Yourself-Oriented Object Programming in 21 Days (Sams, 2001; ISBN: 0672321092).

למידע נוסף על נושא זה

  • לקבלת מאמרים נוספים על שרתי יישומים, עיין במקטע שרתי יישומי Java במדד המקומי של JavaWorld

    //www.javaworld.com/channel_content/jw-appserv-index.shtml

  • רוצה יותר? עיין בדף אינדקס התשובות והתשובות של Java לקבלת קטלוג השאלות והתשובות המלאות

    //www.javaworld.com/column/jw-qna-index.shtml

  • במשך יותר מ 100 טיפים Java תובנה מכמה המוחות הטובים ביותר בעסק, ביקור JavaWorld" s טיפים Java דף האינדקס

    //www.javaworld.com/column/jw-tips-index.shtml

  • למידע נוסף על חוטבי יישומים ושרתי אינטרנט בדיון Enterprise Java שלנו

    //forums.idg.net/[email protected]@.ee6b80a

  • הרשמה JavaWorld שבועי חינם של" Java Enterprise דיוור אלקטרוני

    //www.javaworld.com/subscribe

  • תוכלו למצוא שפע של מאמרים הקשורים ל- IT מפרסומי אחותנו באתר .net

הסיפור הזה, "שרת אפליקציות, שרת אינטרנט: מה ההבדל?" פורסם במקור על ידי JavaWorld.