התיעצות

adam222

New member
"ולהקיש אותם נתונים שוב"

קודם כל תודה על ההסכמה
סוף ציטוט. אם הוא יצא באמצע מיוזמתו, ניתן לסרייל את שבעת השלבים עד כה ולשמור אותם ב- עוגיה או DB וברגע שבכניסה הבאה מזוהה הגישה ניתן ב-deSerialize לייצור את האובייקט במצבו הקודם בדיוק!
 
yyy

טוב, לא ציפיתי לכזה בלאגן. לפי דעתי, הרשמה ל-db היא ממש לא בעייתית, ואפשר תמיד לזכור את ה-id של השורה. להריץ job גם לא בעיה. מצד שני, אני מחפשת את הדבר הנכון לעשות ולא את הקל. לא הבנתי: "ב-global.asax ב-OnSessionStart (או משהו כזה - פשוט הכל בע"פ) עבור כל session את יוצרת אינסטנס של Registration." האם זה משהוא שנעשה בזמן ריצה? והאם הסתבכות (מבחינתי) עם session שווה את המאמץ?
 
תגובה

כדי לשמור את ה state, כלומר את הנתונים שהוקלדו במעבר מטופס אחד לשני הוצעו כאן שתי דרכים: * לשמור במסגרת ה Session * לשמור ל DB בצורה כזו או אחרת. שני הפתרונות הגיוניים, השאלה היא מהם האילוצים ומהם היתרונות/החסרונות של כל פתרון. שמירת ה state ב session יכולה להעמיס טיפה על השרת עצמו, אבל היא מהירה ו"נקיה". מצד שני, משתני session נמחקים מתישהו (ע"י timeout למשל), ולכן שמירה ל DB מאפשרת להציג למשתמש את הפרטים כפי שהקליד. זיהוי משתמש חוזר יכול להתבצע ע"י cookie. כתיבה ל DB היא גם "עסק יקר" מבחינת משאבים (יחסית למשתני session). בקיצור, הכל יחסי, אין הרבה קסמים, הבחירה היא בהתאם לאילוצים ולצרכים. אגב, פתרון שלישי: הכל יהיה בדף אחד, כאשר נותנים למשתמש את האשליה שמדובר במספר דפים (מסתירים ומציגים אובייקטים). בהצלחה
 
פתרון 3

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

adam222

New member
...

מי יזכור את ה-ID? מחר הוא רוצה להמשיך את ההרשמה, היכן תשמרי עבורו את ה-ID שעבורו את שומרת את הנתונים?
והדבר הנכון הוא OO ולא לכתוב ל-DB כל פיפס והשימוש ב-טבלאות זמניות גורם יותר נזק מאשר תועלת (אם ניתן להשיג תועלת "טובה" יותר בדרך אחרת) אין סיבוכיות בשימוש ב-session, צריך רק להבין מה הוא וכיצד ניתן להשתמש בו. עכשיו שאני מול מחשב אזי למתודה קוראים Session_Start
protected void Session_Start(Object sender, EventArgs e) { Session[Registration] = new Registration(); }​
מה שמייצר לך אינסטנס עבור כל גולש\session בעת היצירה שלו בשרת אובייקט חדש, כך שאין התנגשויות ביניהם...
 
נקודה למחשבה

אני לא רוצה לזכור את ה-id. למעשה זה אתר של פירסום מודעות (דירות וכו..), אז אם הוא הצליח להרשם הנתונים צריכים להתעדכן באופן מיידי באתר, ואם לא הצליח להרשם למשל מסיבה של כרטיס אשראי - זה בעיה שלו כי מזמין האתר לא רוצה להתעסק עם התשלומים. עכשיו, לגבי שימוש ב-session - יצא לי להשתמש ממש מזמן בצורה הבאה:
Session["userData"]= List; - enter data (System.Array)Session["userData"]).GetValue(0).ToString()- get data​
האם זו דרך טובה? תודה
 

adam222

New member
שימוש ב-session

את הכנסת לתוך משתנה userData אובייקט LIST באותה מידה תכניסי לתוך משתנה Registration את האובייקט Registration
Session["Registration"] = new Registration();​
 
שאלתי היא

האם חייבים?:
protected void Session_Start(Object sender, EventArgs e) { Session[Registration] = new Registration(); }​
פשוט אף פעם לא ניתקלתי בזה. בכל אופן אני אשב ללמוד את הנושא.
 

adam222

New member
שלילי

אפשר
Session[Registration] = null;​
וכשאת צריכה אותו לבצע עליו New, כלומר לייצור אינסטנס חדש, עד אז הוא ריק אך מוגדר.
 
לכל המגיבים../images/Emo24.gif

תודה רבה על כל התגובות, הדיון היה ממש משכיל. בסופו של דבר, שימוש ב-session נראה הדבר הנכון, למרות שלא הקל ביותר עבורי. אבל זאת הזדמנות ללמוד דבר חדש.
 
למעלה