Typed Dataset, היררכיה, etp

בטיטi

New member
../images/Emo41.gif Typed Dataset, היררכיה, etp

1. מה זה בדיוק קובץ מסוך etp ? (הבנתי שזה entry point ?) למה זה משמש ? 2. יש לי Solution, בתוכו יצרתי מספר פרוייקטים - היררכיה רגילה, ראיתי פרוייקטים אחרים (ב VS 2003), שיש רמת ביניים בין ה Solution לבין ה Project, מעיין תיקייה (ב Solution Explorer) עם אייקון כמצורף בתמונה. מה זה בדיוק ? וכיצד יוצרים זאת ? 3. יש לי פרוייקט A, שבתוכו יש Typed Dataset יש לי פרוייקט B שהוא WebService עם Reference לפרוייקט A ש לי פרוייקט C שהוא WebSite עם Reference לפרוייקט A בפרוייקט B יש WebMethod המקבלת כפרמטר את ה Typed Dataset בפרוייקט C אני קורא למתודה הזו, ושולח כפרמטר TypedDataset שיצרתי אני מקבל שגיאה, שאין התאמה בין הפרמטר הנשלח, לזה שאמור להתקבל, מדובר בעצם באותו Typed Dataset, אבל הקומפיילר לא מזהה שכל הדבר, מדוע ? תודה !
 

gewitter

New member
לא זה לא אותו ה Byte

נכון שב WebService אתה משתמש באותו DataSet בו אתה משתמש אח"כ בפרויקט שקורא ל WebService, אבל הקומפיילר צועק עליך, כי הוא מצפה ל-DataSet אחר, שכביכול ה WebService עצמו מגדיר. מה שקורה זה שאתה בטח יצרת Proxy בעזרת האשף של ה WS. מה שהאשף עשה זה קרא XML עם הגדרות של ה WebService (WSDL) ושם כתוב שיש טיפוס מיוחד מסוג DataSet, והאשף יוצר בעקבותיו class משל עצמו: לא אותו ה class שיש לך רפרנס אליו מפרויקט A. שים לב שבתוך ה class שנוצרת בעזרת האשף, יש class מקוננת כנראה שמייצגת את ה-DataSet איתו אתה אמור להשתמש. אין לי מושג מה זה etp והסמל הזה. בטח Microsoft Speak.
 

בטיטi

New member
תגובה..

1. "מה שקורה זה שאתה בטח יצרת Proxy בעזרת האשף של ה WS" : אתה מתכוון לכך שבחרתי ב Add Web Reference, נתתי את ה URL והגדרתי שם ? אם כן, אז אכן כך עשיתי, האם יש דרך אחרת ? 2. חשבתי שצריך להכנס ל Reference.cs, למחוק את הקלאס החדש שנוצר, ולהוסיף Using לפרוייקט A שלי, לא ? (כשאני עושה זאת, הוא מתריע על שגיאות...)
 

gewitter

New member
אתה לא רוצה להפריד?

למה יש לך רפרנס ל-A כשאתה משתמש ב-WebService? חשבתי שאתה רוצה לשכוח מ-A ולעבור רק דרך ה-WS. אתה יכול לכתוב פרוקסי בעצמך, אבל חבל :) האמת שבאחד הספרים על WS ( או Developing Enterprise Web Services An Architects Guide או Expert Service-Oriented Architecture in C#) הראו שם איך להשתמש ב DLL משותף לקליינט ול-WS. אל תמחק סתם בלי שאתה יודע מה אתה עושה. אם זה מעניין אותך תשקיע כמה שעות עם הספרים האלה או מאמרים אחרים.
 

בטיטi

New member
לא... אז מה עשינו בזה ../images/Emo35.gif

כל המטרה היתה, שיהיה DLL תשתיתי, שבתוכו יש אוסף של Typed Datasets, שישמשו פרוייקטים שונים. וביתר פירוט, אני רוצה למשל שיהיה לי Typed Dataset בשם Students, שגם ה WebService יכיר אותו, וגם האפליקציה ה webית תכיר אותו, והם יוכלו להעביר אותו בינהם. כלומר, שהאובייקט הזה יהיה מוכר לשני הצדדים, ואז יוכלו להעביר אותו בינהם בצורה מושלמת, כדי לעבוד Strongly Types בצורה מלאה, ללא הסבות כלשהן.
 

gewitter

New member
תעריך אם זה שווה לך

אם אתה נותן ל Visual Studio או wsdl.exe ליצור עבורך את הפרוקסי, אתה מקבל במתנה קלאס כמעט זהה למה שיש לך ב-DLL. אם הקלאס הזה מגדיר רק מידע (כמו struct ב-c נניח), אז לא אמור להיות לך אכפת אם זה מ-DLL שכתבת או ממה שה-wsdl מכתיב. מכיוון שמדובר ב DataSet (בין אם typed או לא), אני לא חושב שאתה צריך את ה-DLL המקורי שלך, ושמה שה-wsdl מכתיב זה מספיק כדי ליצור העתק מושלם. אם לעומת זאת יש לך class משלך עם מתודות שאתה צריך משני הצדדים (client ו-ws) אז תצטרך או: 1) ללמוד איך לבצע סריאליזציה ולגרום לקלאס שלך להשתלב יפה עם ה-wsdl, או 2) לכתוב קוד "דבק" (איזה adapter או משהו) שיוצר אובייקט מה class שלך, בעזרת מה שמגיע מה-ws (שזה קל יותר מלהשתגע אם סריאליזציה). web services משתמשים לרוב בפרוטוקול SOAP, שזה Simple Object Access Protocol. אם יש לך משהו שצריך לעבור ברשת והוא יותר מ-Simple, אתה צריך להוסיף השקעה. במקרה שלך, אני חושב שחבל, כי מיקרוסופט דאגו להוסיף DataSets לשפת ה-wsdl, וכך האשף בצד השני יוצר אותם בשבילך. זה הקטע של WebServices. אני מפנה אותך שוב לספרים מההודעה הקודמת שלי, או ללמוד על Remoting בתוך אופציה נוספת.
 

בטיטi

New member
../images/Emo51.gif, אבל אני לא חושב שזה

כזה מורכב, למיטב זכרוני צריך להכנס ל Reference.cs, למחוק את הגדרת ה Dataset אוטומטית, ולהוסיף Using ל DLL שמכיל את ה Typed Datasets המשותפים. מחר אבדוק זאת ואעדכן :)
 

בטיטi

New member
../images/Emo26.gifאשמח לשמוע דיעות בנושא

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