ABA


"עזרה עם Server-Client בDotNet"
גירסת הדפסה        
קבוצות דיון פיתוח, תיכנות ובניית אתרים נושא #20549 מנהל    סגן המנהל    מפקח   Winner    צל"ש   מומחה  
אשכול מספר 20549
Gman
חבר מתאריך 31.3.02
1846 הודעות
   14:28   23.02.14   
אל הפורום  
  עזרה עם Server-Client בDotNet  
 
   היי

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

הClient והServer שניהם צריכים להיות אפליקציות Dotnet,
הסרבר צריך להריץ עבודה עם ספריות עיבוד תמונה (EmguCV) והקליינט צריך לרוץ מWindows Phone 8.

ראיתי שהאופציות שלי לעשות את זה הן
א - WCF
ב - WebAPI.


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

תודה מראש


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

  האשכול     מחבר     תאריך כתיבה     מספר  
  כנס איציק2 23.02.14 21:41 1
     רצת קצת מהר מידי עבורי לרגע אחד Gman 23.02.14 22:35 2
         בגדול WEB API VeNom  24.02.14 08:39 3
             תודה Gman 24.02.14 09:23 4
                 כנס איציק2 24.02.14 19:49 5

       
איציק2
חבר מתאריך 26.4.08
2436 הודעות
   21:41   23.02.14   
אל הפורום  
  1. כנס  
בתגובה להודעה מספר 0
 
   מדריך לweb-api של מיקרוסופט:
www.asp.net/web-api

לצורך השימוש שלך אתה לא צריך משהו יותר טוב מהמדריך הבסיסי ביותר שלהם.
(יש להם שם מדריך צעד אחר צעד, תתחיל מההתחלה ותבין בוודאות).

לא הייתי הולך על WCF כי הם נותנים לך בWebAPI את כל התשתית במתנה (במיוחד כשמדובר על עבודה עבור הלימודים).

לגבי שאלה 2, כשאתה יוצר מטודה בWebAPI היא אמורה לקבל אובייקט של תמונה ולהחזיר אובייקט אחר.
בC# קל במיוחד להעביר אובייקטים ברשת כי מיקרוסופט עשו לך חיים ממש קלים ומאפשרים את זה כאילו מדובר על תקשורת רגילה של קריאה לפונצ' מתוך אותו exe.

לצורך העניין נניח שיש לך אובייקט מסוג Image ואיזה ENUM אז אתה עושה חתימה כזאת:
ESomeEnum SomeMethodName(Image image)

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


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
Gman
חבר מתאריך 31.3.02
1846 הודעות
   22:35   23.02.14   
אל הפורום  
  2. רצת קצת מהר מידי עבורי לרגע אחד  
בתגובה להודעה מספר 1
 
   נניח ואני אמשיך להשתמש בWebAPI,

ממש בלבלת אותי עם נושא המתודה.

איך שראיתי בController ב WebAPI כל המתודות של ה Post (בהם גם זו שאני אשתמש בשביל להעביר את תהמונה) - מחזירות טיפוס מסוג MessageHttpResponse/

השאלה שלי היא - א', (וזה בטח נמצא בכל מיני Tutorial) - איך אני קורא למתודה הזו מתוך אפליקציית WPF או Windows Phone 8?

ב' - וזה גם קריטי - איך אני מחזיר טיפוסים שונים - בין אם זה סטנדרטיים (למשל בוליאני) ואם זה מחלקות שאני יוצר?

תודה רבה


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
VeNom  לחץ כאן להצגת דירוג המשתמש
חבר מתאריך 7.6.02
7922 הודעות, 1 פידבק
   08:39   24.02.14   
אל הפורום  
  3. בגדול WEB API  
בתגובה להודעה מספר 2
 
   נותן לך להרים סרביס REST בצורה די מהירה ופשוטה.
הרעיון שם הוא שכל controller ידאג לאובייקט(או נושא) מסוים.
לדוגמא, אני צריך לחשוף החוצה סרביס שיטפל לי בסטודנטים(נניח ואני סרביס של האוניברסיטה).
עכשיו אני אבנה קונטרולר של student.
אני צריך לממש ארבע פעולות(לכל היותר).

Get - יחזיר לי את כל הסטודנטים. אם אני אצרף לבקשה ID הוא ידע להביא לי סטודנט אחד.
POST - יעדכן לי סטודנט.
PUT - יכניס לי סטודנט חדש.
DELETE - עם ID ימחק לי סטודנט.
זה בגדול.

עכשיו בוא תחשוב מה אתה יכול לעשות עם זה.
יש לך דף HTML שכשאתה נכנס אליו הוא נותן לך את כל הסטודנטים(GET).
יש לך תיבת חיפוש לפי ID שיכולה להביא לך סטודנט ספציפי(GET עם ID).
לכל סטודנט יהיו 2 לינקים:
עדכן - יקרא ל POST עם נתוני הטופס(אחרי שמילאת).
מחק - יקרא ל DELETE עם ה ID של הסטודנט.
בלי קשר יהיה לך כפתור למעלה של הכנס סטודנט חדש שיקרא ל PUT עם נתוני הטופס שמילאת.

אין שמות לפונקציות בתוך הקונטרול והדבר היחיד שמבדיל ביניהם הוא ה HTTP VERB שאתה שולח.

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

לשאלות שלך:
אתה יכול לקרוא לסרביס מכל מקום בעזרת בקשת HTTP.
הטיפוסים שהוא מחזיר תלויים בך. אתה קובע.


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
Gman
חבר מתאריך 31.3.02
1846 הודעות
   09:23   24.02.14   
אל הפורום  
  4. תודה  
בתגובה להודעה מספר 3
 
   באמת הסבר יותר מפורט.

כמה שאלות -
א') בתוך קונטרולר אחד יכולים להיות שני מתודות Post שכל אחת מחזירה ערך אחר? בוליאני ומחלקה שאני יצרתי - כאשר שניהם מקבלים אותו מידע כאובייקט שעובר אליהם?

ב') אשמח לדוגמה ב C# למשל, מה שלא מצאתי, של העברה של מידע כזה (Stream) ועבודה עם טיפוסים מוחזרים.


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
איציק2
חבר מתאריך 26.4.08
2436 הודעות
   19:49   24.02.14   
אל הפורום  
  5. כנס  
בתגובה להודעה מספר 4
 
   לגבי א' - אותו דבר כמו כל פונק' אחרת. כלומר במקרה שלך אתה לא יכול לבצע העמסת פונק' כי אתה לא רוצה לתת 2 ערכים שונים ב2 הפונק'.
כיוון שרק ערך החזרה אמור להיות שונה תהיה חייב לשנות גם את שם הפונק'.

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

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

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


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד

תגובה מהירה  למכתב מספר: 
 
___________________________________________________________________

___________________________________________________________________
למנהלים:  נעל | תייק בארכיון | מחק | העבר לפורום אחר | מחק תגובות | עגן אשכול
       



© כל הזכויות שמורות ל-רוטר.נט בע"מ rotter.net