Web Services

Download Report

Transcript Web Services

© Keren Kalif
Web Services
‫קרן כליף‬
© Keren Kalif
2
:‫ביחידה זו נלמד‬
Web Services ‫ מהו‬
‫ מוטיבציה‬
WebService ‫ מימוש‬
WebService App Client 
WebService Servlet Client 
REST 
‫‪ - Web Services‬מטרה‬
‫‪© Keren Kalif‬‬
‫‪3‬‬
‫‪ ‬כדי לייצר תקשורת עם אפליקציה מרוחקת השתמשנו ב‪ 2 -‬שיטות‪:‬‬
‫‪ .1‬מימוש מנגנון ‪Client-Server‬‬
‫‪‬‬
‫היה עלינו להאזין‪ ,‬להתחבר – לממש את כל רכיבי התקשורת‬
‫‪ .2‬יצירת ‪ WebApplication‬ופניה באמצעות ‪HttpRequest‬‬
‫‪‬‬
‫‪‬‬
‫התשובה הגיעה כדף ‪ ,HTML‬כלומר תצוגה‪+‬מידע ביחד‬
‫כדי לקבל נתון ספציפי מהדף היה צורך לפרסס ממנו את המידע הרצוי‬
‫‪ ‬היינו שמחים לו הייתה דרך פשוטה לצורך שירותים של‬
‫אפליקציה מרוחקת‪:‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫ללא מימוש של ‪Client-Server‬‬
‫היכולת לקבל אובייקטים‬
‫לא פיענוח נתונים מדף ‪ html‬ושמירת נתונים על ה‪session -‬‬
‫‪ - Web Services‬מטרה‬
‫‪© Keren Kalif‬‬
‫‪ ‬אפליקציה שניתן לצרוך אותה דרך האינטרנט (כלומר ללא תוכנת‬
‫התקנה)‪ ,‬אך יחד עם זאת אינה דורשת אתר המתקשר איתה‬
‫‪ ‬ארכיטקטורה המאפשרת לתוכנות שנכתבו בשפות שונות ועל‬
‫פלטפורמות שונות‪ ,‬לתקשר אחת עם השנייה בצורה סטנדרטית‬
‫ופשוטה‪:‬‬
‫‪ ‬שימוש ב ‪ XML -‬כשפה להעברת וקבלת נתונים‬
‫‪ ‬שימוש ב ‪ HTTP -‬כפרוטוקול להעברת המידע‬
‫‪ ‬הייעוד של ‪ Web Services‬הוא לספק ממשק לקריאה לפונקציות‬
‫מרוחקות (‪)RPC - Remote Procedure Call‬‬
‫‪ ‬כלומר‪ :‬מימוש הפונקציות יהיו בשרת והלקוח יפעיל אותן‬
‫‪ ‬פונקציות אלו יחשפו לתוכנות אחרות‬
‫‪4‬‬
‫‪© Keren Kalif‬‬
‫מנגנון ה‪( Web Services -‬השכבות)‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫בהינתן תהליך עסקי מסוים נרצה להשתמש‬
‫בשירותים מסוימים‬
‫נאתר את נותני השירות תוך שימוש במנגנון‬
‫ה‪"( UDDI -‬דפי זהב" לשירותים)‬
‫‪(Universal Description, Discovery and Integration) ‬‬
‫נבחר ספק אחד ונקבל ממנו קובץ ‪WSDL‬‬
‫(‪ )Web Services Description Language‬המכיל‬
‫נתונים על השירותים שהוא מספק (פונקציות)‬
‫וכן מידע לגבי הנתונים שיש להעביר לו על‬
‫מנת לקבל את השירות (פרמטרים)‬
‫‪5‬‬
‫תהליך עסקי‬
‫‪UDDI‬‬
‫‪WSDL‬‬
‫‪SOAP‬‬
‫‪XML‬‬
‫‪HTTP‬‬
‫מנגנון ה‪( Web Services -‬השכבות) (‪)2‬‬
‫‪‬‬
‫‪‬‬
‫העברת הנתונים וקבלת התשובה בחזרה‬
‫תהייה ע"י הודעה בפורמט ‪Simple ( SOAP‬‬
‫‪ )Object Access Protocol‬המבוסס על ‪XML‬‬
‫העברת הנתונים וקבלת התשובה תהייה מעל‬
‫‪HTTP‬‬
‫תהליך עסקי‬
‫‪UDDI‬‬
‫‪WSDL‬‬
‫‪SOAP‬‬
‫‪XML‬‬
‫‪ HTTP‬או‬
‫‪TCP/IP‬‬
‫‪6‬‬
‫‪© Keren Kalif‬‬
© Keren Kalif
7
Web Service ‫ איתור‬:UDDI
‫ הנותן שירות מסוים ניתן לחפשו‬Web Service ‫כדי לאתר‬
Universal Description, Discovery and ( UDDI -‫ב‬
-‫) שהוא ממשק המספק מדריך ל‬Integration Service
‫ ועל ידי כך מאפשר לאתר עסקים‬,Web Services
‫המציעים את השירותים הללו‬
Web Services -‫ אבל ל‬,"‫זהב‬-‫ כמו "דפי‬

‫‪ :WSDL‬קבלת "חוזה התקשרות"‬
‫‪‬‬
‫‪‬‬
‫‪© Keren Kalif‬‬
‫‪8‬‬
‫לאחר שנבחר הספק ממנו נרצה לצרוך את השירות נקבל‬
‫ממנו קובץ תיעוד המתאר לאילו נתונים הוא זקוק כדי לספק‬
‫את המידע‪ ,‬ומה המידע שהוא יספק‬
‫‪ ‬אלו למעשה פרמטרים לפונקציות והערך המוחזר‬
‫חוזה זה הוא מסמך ‪ XML‬הנקרא ‪WSDL‬‬
‫(‪)Web Services Description Language‬‬
‫‪ :SOAP‬פורמט העברת המידע‬
‫‪© Keren Kalif‬‬
‫‪9‬‬
‫‪ (Simple Object Access Protocol) SOAP ‬הוא פרוטוקול‬
‫המבוסס על ‪ ,XML‬שתפקידו העיקרי להגדיר מסגרת שתייצג מודל‬
‫המתאר את מבנה המסר‬
‫‪ ‬מסגרת המכילה מהם הפרמטרים שיועברו‪ ,‬טיפוסיהם‪ ,‬הערכים‬
‫המוחזרים וכו'‬
© Keren Kalif
10
‫ דוגמא‬- Web Service ‫ איתור‬:UUDI
‫ באתר‬
‫ אתר זה הוא‬.‫ הנותנים שירותים שונים‬Web Services ‫ניתן למצוא‬
Web Services ‫זהב" עבור‬-‫סוג של "דפי‬
-‫ היה אינקס חינמי מעולה ל‬seekda.com ‫ בעבר האתר‬
WebServices
http://www.actionscript.org/forums/showthread.php3?t=70742
weather -‫תוצאות חיפוש ל‬
© Keren Kalif
11
WSDL -‫זיהוי קובץ ה‬
© Keren Kalif
12
‫בדיקת ה‪WSDL -‬‬
‫‪ ‬באתר ‪ http://wsdlbrowser.com/‬ניתן להכניס את הקישור ל‪-‬‬
‫‪ wsdl‬ונקבל את המתודות שה‪ Web Service -‬חושף‬
‫‪ ‬נוכל להתנסות בבדיקת המתודות‬
‫‪13‬‬
‫‪© Keren Kalif‬‬
‫יצירת ‪ WS Client‬שיעבוד מול ה‪WS -‬‬
‫‪ ‬נייצר בפרוייקט קובץ מטיפוס ‪:Web Service Client‬‬
‫‪© Keren Kalif‬‬
‫‪14‬‬
‫יצירת ‪ WS Client‬שיעבוד מול ה‪ :WS -‬המחלקה‬
‫‪15‬‬
‫‪© Keren Kalif‬‬
‫הפלט‬
© Keren Kalif
16
‫יצירת ‪Web Service‬‬
‫המחלקה חייבת‬
‫להיות בתוך‬
‫‪package‬‬
‫סימון המחלקה כ‪-‬‬
‫‪Web Service‬‬
‫סימון השיטה‬
‫כשיטה שניתן‬
‫להפעיל מרחוק‬
‫‪© Keren Kalif‬‬
‫‪17‬‬
‫אישור כי ה‪ deploy -‬עבר בהצלחה‬
‫‪ ‬ניתן לראות תחת ‪ Web Services‬את ה‪ WS -‬שיצרנו‪:‬‬
‫‪© Keren Kalif‬‬
‫‪18‬‬
© Keren Kalif
19
Web Service -‫בדיקת ה‬
:‫ באופן כללי‬
http://localhost:<port>/<project-name>/<class-name>Service?Tester
:‫ באופן ספציפי לדוגמא שלנו‬
http://localhost:8080/BmiCalculatorWS/BmiCalcService?Tester
© Keren Kalif
20
Tester -‫הרצת ה‬
© Keren Kalif
21
Tester -‫הזנת ערכים ב‬
© Keren Kalif
22
‫ התוצאה‬- )1( Tester -‫תשובת ה‬
© Keren Kalif
23
Soap Request – )2( Tester -‫תשובת ה‬
‫שם המתודה‬
package -‫שם ה‬
‫הפרמטרים‬
‫שנשלחו‬
© Keren Kalif
24
Soap Response - )3( Tester -‫תשובת ה‬
© Keren Kalif
25
‫ על הפרמטרים‬annotation -‫שימוש ב‬
© Keren Kalif
26
URI -‫ לשינוי ה‬annotation -‫שימוש ב‬
:‫ היא‬URI -‫ ראינו כי ברירת המחדל של ה‬
http://localhost:<port>/<project-name>/<class-name>Service?Tester
:‫ באופן ספציפי לדוגמא שלנו‬
http://localhost:8080/BmiCalculatorWS/BmiCalcService?Tester
http://localhost:8080/BmiCalculatorWS/BmiCalc?Tester
© Keren Kalif
27
‫ לשינוי שם המתודה‬annotation -‫שימוש ב‬
© Keren Kalif
28
WSDL -‫קובץ ה‬
‫התוספת לפרוייקט‪:‬‬
‫נוצר קובץ ה‪ proxy -‬שבעזרתו קוד הלקוח‬
‫יוכל לגשת ל‪ Web Service -‬שכתבנו‬
‫‪© Keren Kalif‬‬
‫‪29‬‬
‫‪© Keren Kalif‬‬
‫תיקון שגיאות הקומפילציה בקובץ שנוצר‬
‫לשים בהערה‬
‫‪30‬‬
© Keren Kalif
31
Web Service Client ‫יצירת‬
:Web Service Client ‫ יש להוסיף קובץ מטיפוס‬
‫‪© Keren Kalif‬‬
‫מימוש ‪Web Service Application Client‬‬
‫הגדרת מיקום‬
‫קובץ ה‪wsdl -‬‬
‫יצירת משתנה מטיפוס‬
‫ה‪ proxy -‬שנוצר‬
‫יצירת משתנה מטיפוס‬
‫המחלקה שיצרנו‬
‫אתחול‬
‫הפעלת מתודה מרוחקת ב‪WS -‬‬
‫‪32‬‬
Web Service ‫מימוש‬
Servlet Client
© Keren Kalif
33
‫הקונספט של ‪WS‬‬
‫‪© Keren Kalif‬‬
‫‪34‬‬
‫‪ ‬מייצרים מחלקה וחושפים מתודות שלה החוצה‬
‫‪ ‬נקרא גם ‪Java Api for XML - Web Services :JAX-WS‬‬
‫‪ ‬ישנה מתודלוגיה נוספת הנקראת ‪ REST‬והדגש בה על חשיפה‬
‫מידע בלבד‪ :‬קריאה‪ ,‬מחיקה‪ ,‬הוספה ועדכון‬
‫‪ ‬נקרא גם ‪Java Api for XML – RESTful Web Services:JAX-RS‬‬
‫‪REpresentational State Transfer :REST ‬‬
‫‪© Keren Kalif‬‬
‫‪REST‬‬
‫‪35‬‬
‫‪ ‬במתדולוגיה זו נשלחים רק הנתונים ללא מעטפת ה‪ ,SOAP -‬מה‬
‫שהופך את השימוש ליותר יעיל מבחינת רוחב פס‬
‫‪ ‬כל אובייקט או פעולה נקראים ‪ ,resource‬ויש ‪ URI‬שונה עבור כל‬
‫‪resource‬‬
‫‪ ‬דוגמא‪:‬‬
‫‪ ‬בפניה רגילה‪:‬‬
‫‪http://mysite.com/data?fName=Keren&lName=Kalif‬‬
‫‪ ‬בפנית ‪:REST‬‬
‫‪http://mysite.com/fName/Keren/lName/Kalif/data‬‬
‫‪ :physicalURI ‬הדף קיים מראש‬
‫‪ :logicalURI ‬הדף נבנה אופן דינאמי בהתאם לנתונים‬
‫‪ – REST‬סוגי הפעולות‬
‫‪© Keren Kalif‬‬
‫‪ ‬כאשר אנחנו מפעילים מתודה‪ ,‬לרוב היא מבצעת את אחת‬
‫מהפעולות הבאות‪:‬‬
‫‪ ‬קבלת מידע ‪@GET -‬‬
‫‪ ‬הוספת מידע ‪@PUT -‬‬
‫‪ ‬עדכון ‪@POST -‬‬
‫‪ ‬מחיקה ‪@DELETE -‬‬
‫‪ ‬לכן כל ‪( resource‬מתודה) במימוש ‪ REST‬תצהיר מהו סוג‬
‫הפעולה שתבצע‬
‫‪36‬‬
‫הגדרת פרוייקט‬
‫‪© Keren Kalif‬‬
‫‪JAX-RS‬‬
‫‪ ‬נייצר פרוייקט ונוסיף לו את ה‪Jersey 1.3 (JAX-RS RI) :lib -‬‬
‫‪ ‬נעדכן את ה‪:web.xml -‬‬
‫‪37‬‬
© Keren Kalif
‫דוגמא‬
38
resource -‫שם ה‬
‫שם הפרוייקט‬
resource -‫שם ה‬
‫דוגמא‪ :‬יותר ממתודה אחת במחלקה‬
‫‪© Keren Kalif‬‬
‫‪39‬‬
© Keren Kalif
40
PathParam -‫שימוש ב‬
‫תרגיל‬
‫‪© Keren Kalif‬‬
‫‪ ‬כתוב למשחק ‪ WebService‬הניחושים‬
‫‪ ‬ה‪ client -‬צריך להיות ‪servlet‬‬
‫‪ ‬לא לשכוח שימוש ב‪ session -‬על מנת לשמור את הנתונים‬
‫‪41‬‬
© Keren Kalif
42
:‫ביחידה זו למדנו‬
Web Services ‫ מהו‬
‫ מוטיבציה‬
WebService ‫ מימוש‬
WebService App Client 
WebService Servlet Client 
REST 