doron amir
 
דואר אלקטרוני:
 
 
סיסמה:
 
 
 
 
 
 
לוח פגישות
 
|
 
איזכור סיסמא
 
עברית
 
|
 
english
 
|
 
русский
 
 
 
doron amir
 
קורסים ותרגול
 
עמוד הבית
 
חבילות
הדרכה
 
החשבון שלי
 
אודות
דורון אמיר
 
צור קשר
 
מאגר תרגילים ופתרונות
 
מאמרי גולשים
 
קורס אנדרואיד

פנייה ל Web Service מ Console & Web & Win Application

צפיות:
5,882
דירוג:
10
דירוג המאמר:
 
שליחה
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

ה web service אומנם שייך קצת להיסטוריה אבל עדיין נמצא בשימוש רב

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

שאינם בקיאים בטכנולוגייה זאת.

 

ה web service הוא למעשה יחידה פונקציונלית ( DLL ) אשר מאוחסנת על שרת אינטרנט (IIS) 

ונגישה דרך האינטרנט (פרוטוקול HTTP)בציור ניתן לראות שני שרתי אינטרנט אחד עבור אחסון

ה web service אשר מספק שירות (לדוגמא תוצאות הספורט עבור משחקי ה NBA) ובשרת השני

היישום אשר צורך את השירות (לדוגמא אתר האינטרנט שלנו אשר מבקש את תוצאות המשחקים

בכדי לשלב באתר עם עוד משחקים בעולם)

 

בקיצור ניתן לראות שרת אחד אשר מאחסן את השירות ושרת אחר אשר צורך את השירות ,

השרת אשר מאחסן את ה web service מאפשר לפונקציונליות להיות זמינה לאתרים שונים באינטרנט

המעוניינים לצרוך את השירות.

 

היישום אשר פונה ל web service לקבלת השירות למעשה פונה בעזרת אובייקט אשר מייצג

את האובייקט המרוחק,אובייקט זה נקרא proxy ומכיל את הממשקים עבור ההתקשרות עם האובייקט המרוחק

(אובייקט ה proxy אינו מכיל מימוש של הפונקציונליות מכיוון שזה נמצא באובייקט המרוחק בשרת האחר )

 

ללא אובייקט ה proxy לא יכול המתכנת לרשום קוד אשר פונה באופן מותאם לפונקציונליות המאוחסנת ב web service ,

בכדי לבנות את ה proxy אנו צריכים לשלוח בקשת WSDL אל ה web service ולקבל את המידע עבור בניית ה proxy אשר

יאפשר לנו לפנות אל ה web service מידע זה מועבר בפורמט XML כמובן (לא מומלץ להעביר מידע באופן בינארי או אחר )

ובשיטת פרוטוקול SOAP אשר מיועדת לתאר אובייקטים באופן פשוט ואחיד.

לסיכום הנושא : את ה web service יש לאחסן בשרת הכולל כמובן את ה NET. ומאפשר

להתקשר בפרוטוקל HTTP לקבל המידע שיאפשר לנו לבנות את ה proxy .במיקום האחר בו אנו מאחסנים

את היישום אשר פונה ל web service יש לגשת אל הרכיב דרך האובייקט אשר מייצג את האובייקט המרוחק.

תחילה נייצר פרויקט פשוט מסוג Console ולאחר מכן נוסיף פרויקט נוסף מסוג Web Site עבור אחסון ה web service

יש לבחור את סוג הפרויקט Empty web site

כרגע ניתן לראות כי יש לנו שני סוגי פרוייקטים אחד מסוג Console  והשני מסוג web site הכולל קובץ קונפיגורצייה בלבד

בשלב הבא נוסיף לפרויקט ה web site שלנו item חדש מסוג web service

ונביט בקוד שנוצר באופן אוטומטי ( ניתן לראות כי נוצר קובץ מסוג cs אשר מכיל את הפונקציונליות של ה web service)

אפשרי לראות בצד ימין את קובץ ה asmx המאפשר לנו לגשת באופן ישיר לדף הדינמי אשר מאפשר לנו גישה ישירה אל

הפונקציונליות למטרות בדיקה ( לאחר שאנו רואים שהפונקציונליות עובדת יש לבנות יישום משלנו אשר פונה אל ה web service )

ספריית ה App_Code מכילה את קובץ הקוד של ה web service ומהדרת באופן אוטומטי את הקוד.

יש לשים לב כי המחלקה יורשת ממחלקת ה web service כולל שימוש ב namespace המתאים

הקוד גם מכיל תכונות Attributes (שנלמד בהמשך ) וקוד מוכן (מתודה לדוגמא)

תכונה אחד חשובה שיש להבין עוד בשלב זה היא ה WebMethod אשר מאפשר לנו לחשוף את המידע עבור המתודה הנוכחית

כלומר המתודה HelloWorld תקבל ייצוד בקובץ ה WSDL אשר יאפשר ל proxy להיבנות עם יכולת קריאה למתודה זאת.

המידע אשר מועבר אל היישום ( לדגומא אל האתר שאנו בונים ) יאפשר ליישום לפנות אל המתודה ולקבל ממנה את המחרוזת

ניתן להריץ באופן ישיר את קובץ ה asmx ולראות את הדף הדינאמי אשר מתאר את הרכיב ומאפשר לנו לבחון את המתודה

טרם הכנו את היישום המותאם אישית אל צרכי הלקוח

בכדי להריץ באופן ישיר יש לעמוד על קובץ ה asmx ולבחור View in Browser

הדף מציג את רשימת המתודות של הרכיב ( במקרה זה רק helloworld ) והסברים ונתונים אודות פרוטוקול ההתקשרות

כגון בקשת get וכדומה

לאחר בחירת המתודה נקבל אפשרות לקרוא למתודה (לחיצה על Invoke)

הערך המוחזר מהמתודה יופיע בפורמט XML

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

ולחיצה ימנית בעכבר תאפשר לנו לבחור Add Service References אשר תציג לנו את האפשרות להפנות את

היישום אל ה Web Service ולשלוח בקשת WSDL אשר תחזיר אלינו את המידע לבניית ה proxy .אם הרכיב

קיים על אותה מכונה אפשרי לחפש בעזרת Discover או ע"י הדבקת הנתיב הווירטואלי של קובץ ה asmx

לאחר האישור ניתן לראות את בניית התיקייה המכילה את ה reference אל ה web service ואם נפתח את הקבצים

המוסתרים ע"י Show all files ניתן יהיה לראות את ה proxy

ניתן לראות את קובץ ה wsdl המכיל את תאור ממשקי הרכיב המרוחק

ואת כתובת הרכיב

כולל קוד המחלקה אשר מיועדת ליצירת ה proxy

המימוש של ה proxy מכיל את כל המידע הנדרש לבצע התקשרות מרוחקת ומסונכרנת עם הרכיב המרוחק

 

לאחר שראינו את הקבצים הנוצרים יש לחזור אל יישום ה console ולהשלים את מתודת ה Main לפי הקוד הבא

 

1
2
3
4
5
6
7
8
9
 static void Main(string[] args)
        {
 
            ServiceReference1.WebServiceSoapClient proxy = new ServiceReference1.WebServiceSoapClient();
 
            string msg =  proxy.HelloWorld();
 
            Console.WriteLine(msg);
        }

 

הקוד מכיל יתירת מופע מהמחלקה שנוצרה באופן אוטומטי ע"י המידע מקובץ ה wsdl לבניית ה proxy ולאחר מכן פנייה אל

המתודה HelloWorld אשר תתבצע בשרת המרוחק , לבסוף ניתן לראות כי המידע שחזר מהמתודה המרוחקת מוצג

על גבי יישום ה Console

ניתן לחזור שוב על הפעולה עבו יישום מסוג Windows Forms וגם מסוג Web Form  במסכים הבאים נראה כיצד נוסיף

סוגים שונים של יישומים ונפנה בעזרתם את ה Web Service

עיצוב יישום ה Win Forms

הפנייה אל רכיב ה web service

הפנייה לבקשת ה wsdl בעזרת ה visual studio (ישנן אפשרויות נוספות לבצע זאת - נלמד בהמשך )

הספריות החדשות המכילות את ההפנייה אל הרכיב נוצרו ( וגם מחלקת ה proxy)

 

1
2
3
4
5
6
   private void button1_Click(object sender, EventArgs e)
        {
            DoronWebService.WebServiceSoapClient p = new DoronWebService.WebServiceSoapClient();
 
            textBox1.Text = p.HelloWorld();
        }

 

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

 

ושוב קיבלנו את המסר המוחזר אל המתודה מה web service אל תיבת הטקסט ב win form

 

התהליך זהה גם כאשר אנו בונים יישום web אשר פונה אל ה web service לדוגמא הוסיפו פרויקט נוסף מסוג

web site ובצעו הפנייה בדיוק כמו בדוגמא הקודמת

 פרןיקט מסוג empty web site

 

הוספת דף aspx

 

 

עצוב ממשק פשוט

 

הפנייה אל הרכיב המרוחק

 

 

איתור וביצוע הפנייה

 

בניית proxy וקריאה למתודה

 

 

הפעלת היישום

 

 

הצגת הערך המוחזר

 

לסיכום: המשתמש שפונה אל האתר מפעיל פונקציונליות שלא בהכרח קיימת באתר ,יתכן וכי הפונקציונליות נמצאת

בשרת אחר אשר מספר לאתר שלנו ממשקים אשר מאפשרים לעבוד בשיתוף

 

לדוגמא נניח שאתם רוצים להזמין חופשה ואתם נכנסים לאתר של חופשות יתכן ואתם מזמינים חדר במלון דרך

מידע ופונקציונליות המתרחשת במקום אחר בעולם וכי האתר שבו אתם נמצאים הוא לא יותר מאפשר מתווח (-:

 

 

 

נכתב על-ידי: doron amir
דירוג המאמר:
 
שליחה
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
אפליקציות אפל
אפליקציות אנדרואיד
001 קורס אנדראויד באתר