שירות רשת (Web Service) הוא דרך להתחבר לתוכנה מרחוק ולקבל ממנה פונקציות. לדוגמה, מתכנת יכול לשלב שירותי מפות של Google או Apple בתוכנה במקום לפתח מפות בעצמו. יש שתי גישות מוכרות: SOAP, סטנדרט מבוסס מסרים מאורכים, ו-REST, גישה פשוטה יותר שאינה תמיד עומדת בתקנים רשמיים.
שירותי רשת נשענים על תקנים משותפים שמאפשרים לתוכנות שונות לתקשר. תקנים אלה כוללים פרוטוקולים כמו HTTP (פרוטוקול תקשורת ברשת) ותיאורים של מבנה המסר ותפקודו. המטרה היא שניתן יהיה לשלב רכיבים מסביבות שונות בקלות יחסית.
הרעיון קיבל דחיפה משמעותית ב-1999 עם מהדורת SOAP. במודל טיפוסי יש ספק שירות (מי שמפעיל את השירות) וצרכן שירות (מי שקורא אותו). האינטראקציה ביניהם דרך ממשקים מפחיתה תלות בטכנולוגיה הפנימית של כל צד. זה מאפשר להחליף שירות באחר בעל אותה פונקציונליות גם אם הוא רץ על טכנולוגיה שונה.
שלוש שכבות תקן עיקריות מתארות את המחסנית של Web Services. בנוסף קיימים תקנים המשפיעים על השכבות השונות, למשל תקנים לאבטחה ותקנים לטרנזקציות (ניהול עסקאות מזוהות).
בפיתוח שירותי רשת יש שלב של פרסום (Publishing), הצגת מה שהשירות יודע לעשות וכיצד לתקשר איתו. תהליך תקשורת טיפוסי בין צרכן לשירות כולל שלושה שלבים עיקריים:
1) הצרכן שולח בקשה, בקשה שעשויה להשתמש ב-SOAP על פרוטוקול HTTP.
2) איתור שירות מתאים ברישום (Registry), בדרך כלל באמצעות תקן UDDI, שהוא רשימה של שירותים.
3) חיבור בין הבקשה לדרישות השירות באמצעות WSDL, שפה שתוארת את הממשק והפעולות של השירות.
תקנים נקבעים בארגוני תקינה שונים. ההצעה מתחילה כטיוטה, מועברת לוועדה אם היא מתקבלת, ועוברת שינויים לפי משוב. חברות גדולות משפיעות במידה רבה על הטיוטות; בפועל מיקרוסופט ו-IBM הן דומיננטיות רבות.
השפעת האינטרסים העסקיים מובילה לפעמים לתחרויות על תקנים ולתקנים מתחרים בעלי חפיפה פונקציונלית. כדי לשפר תאימות בין מימושים שונים הוקם ארגון WS-I (Web Services Interoperability Organization). WS-I אינו מייצר תקנים חדשים; הוא בודק ומנפיק הנחיות פרקטיות שמקלות על עבודה משותפת בין סביבות שונות.
קיימים עשרות תקנים בתחום Web Services, אך רק חלק קטן בשימוש נרחב. רשימת התקנים הארוכה נובעת מהצורך בטיפול בהיבטים שונים: העברת נתונים, אבטחה, אמינות, ועוד.
בשל העובדה ש-SOAP נכתב במקור לטקסט, התפתחו שיטות להעברת מידע בינארי (קבצים שאינם טקסט). עם הזמן נבחרו ויובאו כמה פורמטים כתקנים.
למרות היתרונות יש חסרונות ברורים:
- ביצועים: שימוש ב-XML (פורמט טקסט מובנה) מחייב המרת נתונים (Serialization, המרה לטקסט) והחזרה (Deserialization). זה יוצר נפח נתונים גדול ולעיתים רצף תקשורת איטי, במיוחד כששימוש בפרוטוקול HTTP אינו יעיל.
- בשלות תקנים: תהליך הבשלת תקנים ארוך. חלק מהתקנים עדיין לא בשללים דיים ועשויים להתנגש עם תקנים אחרים.
- מגבלות אבטחה: מסרים עוברים דרך מחשבי ביניים (כמו פרוקסי). לעיתים צריך לפתוח ולפרש את המסרים בתחנות הביניים, מה שמוריד פרטיות וגורם לאתגרים באבטחה.
- חוסר בהירות ארכיטקטונית: יש ויכוחים לגבי מיקום תקנים במחסנית; ארגונים שונים עשויים למקם תקן בשכבה שונה.
- חוסר תמיכה בהיבטים סמנטיים-עסקיים: לא רבים התקנים שתומכים בהבנה עמוקה של משמעות נתונים; EBXML הוא ניסיון בתחום זה, אך זכה לתמיכה מוגבלת.
- השפעה פוליטית מסחרית: חברות עשויות לקדם תקנים הקרובים לפתרונות הקנייניים שלהן, וזה יוצר פיצול ותקנים מתחרים.
רוב סביבות הפיתוח יכולות לייצר Web Services באופן אוטומטי על בסיס הגדרות של המתכנת. בסביבת .NET של מיקרוסופט השירותים הם חלק אינטגרלי. בסביבת J2EE נוספו APIים כגון JAX-RPC ו-JAX-WS לתמיכה ב-Web Services. גם במערכות מסורתיות יותר, כמו CICS במיינפריים, נוספה תמיכה.
בשפות אחרות יש לפעמים צורך בכתיבה ידנית של קוד שיבצע סריאליזציה ושליחת הודעות. קיימים Frameworks שמייצרים קוד 'stub' לפי WSDL או יוצרים WSDL מקוד קיים.
יצירת קוד אוטומטית מקשה על תמיכה בתקנים חדשים. לדוגמה, בעיות ב-complexTypes (סוגים מורכבים) בגרסאות ישנות של .NET מקשות על תמיכה בסגנונות מסוימים של SOAP, והן דורשות התאמות ידניות כדי לתקשר עם מערכות ב-Java, C או פרל. באופן כללי, יש לבצע התאמות בין קוד שנוצר בסביבת .NET לבין סביבות אחרות כדי לאפשר העברת מידע חלקה.
שירות רשת הוא דרך לתוכנה לתת שירותים לתוכנה אחרת דרך האינטרנט. למשל, במקום לבנות מפה חדשה, מתכנת יכול להשתמש במפת Google.
שירות רשת עובד לפי חוקים משותפים. זה מקל על תוכנות שונות לדבר זו עם זו.
הרעיון התחיל לקבל תשומת לב ב-1999 עם SOAP. יש שני צדדים: מי שמספק את השירות ומי שצריך אותו. זה מאפשר להחליף שירות אחד באחר בקלות.
כאשר רוצים להשתמש בשירות עושים שלושה דברים: שולחים בקשה, מחפשים את השירות ברשימה, ומחברים בין הבקשה לשירות. יש שמות חשובים:
- SOAP: שיטה לשלוח מסרים.
- HTTP: הפרוטוקול שבאינטרנט.
- UDDI: רשימת שירותים.
- WSDL: תיאור של מה שהשירות יודע לעשות.
חברות וארגונים כותבים את התקנים. חברות גדולות כמו מיקרוסופט ו-IBM משפיעות הרבה. כדי לגרום לכל החברות לעבוד יחד קיים ארגון בשם WS-I.
לפעמים יש בעיות בשירותים:
- איטיות: הפורמט XML גדול, וזה מאט את העבודה.
- חוסר בשלות: חלק מהחוקים עדיין לא מושלמים.
- אבטחה: לעיתים הודעות עוברות דרך מחשבים אחרים וזה מסוכן.
- חוסר תאימות: תוכנות שונות לא תמיד מדברות בדיוק באותו אופן.
סביבות פיתוח כמו .NET ו-J2EE עוזרות ליצור שירותי רשת. יש גם כלים שמייצרים קוד אוטומטית לפי WSDL. לעיתים צריך להתאים קוד בין סביבות שונות כדי שהכול יעבוד.
תגובות גולשים