אוביקטים ב- WS

galitgt

New member
אוביקטים ב- WS

האם אני יכולה ליצור ב- WS מתודה "חשופה" web method המחזירה אובייקט ממחלקה שאני יצרתי , למשל Product ? נראה לי שלא... תודה לעונה..
 

galitgt

New member
הבנתי שאפשרי...אבל ....

איך אני מזהה את האובייקט באפליקציה המשתמשת ב- webservice ?
 
למה לא?

ולגבי איך מזהה: לא הבנתי. אתה קורא למתודה, ואתה יודע בדיוק מה היא מחזירה, לא?
 

rnan

New member
../images/Emo189.gif ישנה הגבלה

את לא יכולה להחזיר כל טיפוס שאת רוצה אלא רק טיפוסי יסוד אם אני לא טועה כמו DATASET INT , STRING וכדומה...
 

itzikbs

New member
את יכולה להחזיר "כמעט" הכל

ההגבלה "כמעט" התלוייה במי הוא הצורך את ה WS ואיך הוא יודע "להתמודד" עם "תרגום" טיפוסי הנתונים שה ES שלך חושף. אם הסביבה הצורכת את ה WS היא גם MS \ NET אזי החיים שם קלים והיישום wsdl.exe זה ש"יודע" לעשות Web Reference "מתרגם" ובונה מחדש בצורה די זהה למקור את כל הטיפוסים המורכבים. את יכולה להחזיר אוספים, מחלקות, מבנים, DataSet, TypedDataSet, DataTable ועוד ... אם הסביבה הצורכת יכולה להיות כל דבר כמו נניח Java-J2EE או אחרות אזי (מנסיון) כלי ה WSDL שלהם ברוב המקרים פחות טובים משל MS אבל בהחלט אם ה WS נכתב-פותח על פי סטנדרטיים של XML\SOAP והמתודות חושפות טיפוסים מורכבים שנכתבו בצורה כזאת אזי אין שום בעייה ולא אמורה להיות כזאת (למרות שמנסיון תמיד מומלץ לבדוק בכה סביבות איך זה "נראה"). מצ"ב לינק להתחלה הדגמה פשוטה של Return Various Data Types אני מממיץ לך להתחיל משם: http://quickstarts.asp.net/QuickStartv20/webservices/doc/DataTypes.aspx ביי איציק ב.
 

galitgt

New member
עדיין אני לא מצליחה לחשוף ב client

אני חושבת שהבעייה טמונה ב "סוג המחלקה"...קשור כנראה לסיריליזציה... 1) אני מגדירה מחלקה Card.cs (מחלקה רגילה..) ומחלקת שרות service.asmx שבה יש מתודה web method המחזירה אובייקט Card. 2) ב- client אני מצליחה להפעיל את המתודה המחזירה את האובייקט Card , אבל אף מתודה ו/או תכונה ציבורית לא נחשפת ב client. שאלתי היא: האם גם המחלקה Card אמורה להיות Card.asmx ??? וצריך לציין כי אני צורכת את המחלקה (web reference) ? חשבתי שאם service.asmx משתמש ב- Card.cs , אזי נחשפות התכונות/מתודות הציבוריות באופן אוטומטי .... מה דעתכם ? אודה לעזרתכם
 

itzikbs

New member
WebService "חושף את ה Data"

אם אפשר לקרוא לזה כך ... אמנם, כל WS הוא מחלקה וכל מחלקה - אובייקט הנמצא בשימוש באותו WS (למשל פרמטר למתודה או ערך מוחזר ממתודה) גם הוא "נחשף ונוצר" אצל ה Client הצורך ומשתמש ב WS (ע"י WSDL) אבל מה שה WSDL עושה הוא חושף את רכיבי ה Data של אותם מחלקות, כלומר מאפיינים (רצוי מאוד) , חברים ציבוריים וללא מתודות מכיון שאין לזה משמעות. נראה לי שהשאלה שלך נובעת יותר מעניין של תכנון וארכיטקטורה ופחות מהבנה. אני אנסה (בהלקח בחשבון קוצר היריעה) לתת לך ייעוץ קל לאיך הדברים אמורים להראות על פי תפיסתי: אם יש לךל מחלקה Card (נניח DATA.Card) שהיא יישות מידע, אזי תקבעי שיש לך שכבה בה יש מחלקה Card שהיא לצורך אחסון המידע בלבד, כלומר המחלקה תהווה מן מבנה נתונים המייצד את יישות Card, את המתודות שאליהם כיוונת את בונה במחלקה אחרת שגם תקרא Card נניח (BLL.Card) ושם ישנן המתודות שיחזירו, יקבלו ויבצעו פעולות על DATA.Card ובשכבת ה WS ישנה מחלקה נוספת הנקראת SERVICE.Card והיא זו החושפת מתודות כמו של BLL.Card או שזו מחלקה במקומה (במערכות קטנות ופחות מבוזרות זה בהחלט מומלץ במערכות גדולות ומורכבות מן הראוי לבזר כמה שיותר ... ). כלומר המתודות שאת מחפשת לחשוף באמצעות Card ייחשפו באמצעות ה WS עצמו , מחלקת Card עצמה יכולה "להתפרס" על כמה מחלקות עם הפרדת ה Data מההתנהגות-מתודות. מקווה שעזרתי במשהו, ביי איציק ב.
 
למעלה