Strong Number

Afik17

New member
../images/Emo163.gif Strong Number ../images/Emo163.gif

או בקיצור : sn יש תוכנית קטנה שמגיעה עם ה SDK, בשם sn.exe שמייצרת מספר חזק חזה. 1) כיצד מיוצר המספר הזה (האלגוריתם בכלליות) ? 2) האם הוא יחודי ולעולם לא יחזור על עצמו ? אם כן, היכן ? בכלל בעולם, או רק במחשב שבו חולל ? 3) מה ההבדל בינו לבין GUID שיש ב ASP.Net ? 4) כיצד אני מייצר GUID בקוד ? (זו שאלה שלא קשורה ל sn, אבל נזכרתי בה
) 5) והשאלה הכי חשובה : בשביל מה זה בכלל ? מתי משתמשים בזה ?
 

Afik17

New member
../images/Emo141.gif שאלה שניה בבקשה :../images/Emo141.gif

הבנתי שב ASP.Net יש 2 קלאסים : XMLHttp ו HttpRequest אם הם באמת קיימים ב Asp.Net - מה ההבדל והתפקיד של כל אחד ? (ובבקשה אל תשלחו אותי ל MSDN, אלא תכתבו בעברית ובקיצור
)
 

gooshi

New member
אני מקווה זה יעזור להבנת המושגים...

XMLHttp זה לא ב NET. זה אובייקט COM - י שמאפשר עבודה Server 2 Server , זאת אומרת, מאפשר לך לפנות מדף ASP נניח, באתר שלך, לדף ASP אחר באתר אחר אפילו בשרת אחר. הוא פותח איזשהו Request מולו ואתר ממתין ל Responseשל הדף אליו קראת. זה בכלל שייך ל MSXML2.dll. לגבי WebRequest , ישנה שיטה דומה ב NET. המאפשרת בקשה ותשובה בין עמוד ASPX אחד לאחר, בערך על אותו משקל כמו זו שכתבתי עליה מקודם רק שהיא חלק מסביבת ה NET. במיגוד לאובייקט COM ההוא. ניתן לשרשר פרמטרים, לפנות ב GET או ב POST , וכדומה. כבמובן שיש הרבה מה להרחיב בנושא, אבל זה מספק לפחות בכדי להבין את המונחים.
 

Afik17

New member
המממ...

תודה
מה זה ה DLL שקראת לו MSXML2.dll ? אני מניח שהוא מכיל את האובייקט XMLHttp, אבל מי פיתח אותו, ומה עוד יש בו ? אגב, מדוע רק Server 2 Serer ? אם אינני טועה, בעזרת XMLHttp הלקוח (הגולש) יכול ליזום פנייה לשרת (למשל - למשוך נתונים), לא ? בדט נט - האם בתודהנט זה נקרא WebRequest, HtmlRequest או HttpRequest ? נתקלתי בכל המושיגם הללו, אני לא יודע מי מהם באמת קיים, ומי לא
תודה רבה !!!
 

gooshi

New member
ה DLL הזה פותח על ידי...

מייקרוסופט, למיטב ידיעתי. הוא כולל הרבה מאוד אובייקטים הקשורים לעבודה עם XML, בין השאר XMLDocument הנפוץ ואחרים. אכן, אתה צודק, ניתן ליצור מהדפדפן מופע של ActiveX שיבצע קריאה לשרת על ידי XMLHttp (אותו אובייקט בדיוק). ב NET. האובייקטים המתאימים נקראים : WebRequest ו - WebResponse . HTTPRequest זה בעצם המקביל לאובייקט Request של ASP כמו שהכרנו בסביבת COM הידועה. כיום האובייקטים נקראים ב NET. HTTPRequest , HTTPResponse והם חלק מה HTTPContext בו נמצא המשתמש.
 

Afik17

New member
OK, בינתיים הבנתי מה קשור

ל ASP רגיל וצד לקוח (XMLHttp למשל). ומה שייך לדוט נט : WebRequest, WebResponse, HTTPResponse, HTTPRequest אני מניח ש XRequest משמש לשליחת בקשה ב HTTP ו XResponse משמש לשליחת תשובה (?) אבל מדוע יש גם קידומת HTTP גם Web (בדוגמאות שהוזכרו כמה שורות מעלה) ? זה לא כפילות ?
 

gooshi

New member
ממש לא

אני חוזר ומסביר שוב. אתה מכיר אובייקט Request ב ASP ? זה שמשתמשים בו כדי לחלץ פרמטרים מ Form או מ QueryString? (אני מניח שענית: כן) יפה, אז זה נקרא היום ב NET. בשם החדש HTTPRequest , דרכו ניתן לקבל פרמטרים שנשלחו מהדפדפן, COOKIES אחרים(עם שינויים אלה ואחרים מימי COM). כנ"ל נכון אם תחליף את המילה Request שמילה Response (לגביל מתודת Write או ניהול CACHE וכדומה). עכשיף, התיאור שהיה לגבי XMLHttp מעולם ה COM , מקביל (פחות או יותר) לאובייקטים ב NET. הבאים: WebRequest ו WebResponse. זה עושה סדר בראש? אני מקווה, אם לא, אני אאלץ לתת לך לינק ל..... MSDN (כמה נורא...). תהנה.
 

Afik17

New member
לפני שאני אאלץ להתמודד עם...

MSDN !!!!
נראה אם לפחות את המסגרת הבנתי : HTTPRequest/HTTPResponse = קריאת ערכי Form/QueryString/Cookies וכו'. WebResponse/WebRequest = בקשת HTTP יזומה (למשל, לקבל לתוך משתנה בתוכנית, עמוד HTML מסויים ע"מ לנתח אותו) אם זה נכון, בוא נתקדם
1. מדוע הכל בא בזוגות (מימי נוח ?
- מדוע 2 לכל סוג ? מה ההבדל ? בין מה שמימין לסלאש, לבין מה שמשמאל ? 2. ראיתי שיש גם אובייקטי Response / Request של אובייקט ה Page - היכן הוא משתלב בכל העסק ? (שוב, אין כפילות ?) 3. תודה ותודה
 

yuval k

New member
גורו לכם, אויבי המסדן ../images/Emo11.gif

1. כדי להבין למה זה בא בזוגות, יש להבין מה אומר "Request" ומה אומר "Response". Request מייצג את הבקשה: Request.QueryString, למשל, מכיל את כל הפרמטרים שהדף קיבל. Response, לעומת זאת, מציג את הצד השני של התקשורת: למשל, Response.Write מאפשר לכתוב לתוך הטקסט של ה-Response - הטקסט שנשלח ללקוח. החל זאת על האובייקטים הנ"ל, ופתרת
2. האובייקטים הנ"ל הם מופעים של HttpResponse/Request, בהתאמה, השייכים לדף אותו אתה מעבד. איתם אתה ניגש למשתני ה-QueryString שנשלחו לדף, לדוגמה.
 

Afik17

New member
וואו !! נראה לי שאני מבין !!

לא יכול להיות
1. האם ניתן להצליב את HTTPx ו Webx ? כלומר, לשלוח משהו לצד השני ע"י WebResponse, ובצד השני לקרוא אותו ע"י HTTPREquest ? 2. כלומר האובייקט Page.Response הוא אובייקט שנוצר מהמחלקה HTTPResponse ? היכן זה מוגדר, והיכן נמצא HTTPResponse (באיזה Namespace) ? תודה על ההבהרה
 

gilad g

New member
המממ

1. כן. אבל אתה שולח משהו ע"י WebRequest, ומקבל אותו ע"י WebResponse. 2. כן. Request הוא protected property של Page, כך שהוא זמין בכל מחלקה שיורשת מ-Page. המחלקה HttpResponse מוגדרת, אני חושב, ב-System.Web.
 

Afik17

New member
1. מה כן ? ../images/Emo13.gif

התכוונתי האם ניתן להצליב, לשלוח ע"י WebX לקבל בצד השני ע"י HTTPX.
 

gooshi

New member
לא בדיוק, אבל לפעמים כן

זאת אומרת: אם אני פותח מעמוד a.ASPX קריאה לעמוד b.ASPX על ידי WebRequest , הדרך לעשות זאת היא כך:
private string GetResponseResult() { HttpWebResponse response; //this function will create the request details HttpWebRequest request = CreateRequest(); try { response = (HttpWebResponse)request.GetResponse(); } catch(Exception ex) { response=null; } if (response.StatusCode == HttpStatusCode.OK) { _result = response.StatusCode; response.Close(); return string.Empty; }​
עכשיו, אם הוספת פרמטרים ל WebRequest שלך, אזי בעמוד הנקרא משמע b.aspx ניתן להשתמש ב HTTPRequest כל מנת לחלץ מ QUERYSTRING או מ FORM את המידע הזה. אח"כ, בעזרת HTTPResponse ניתן יהיה לשלוח מידע ל ResponseStream אשר לאחר סיום הריצה של עמוד b.aspx יתקבל באובייקט WebResponse המידע הזה אותו נחלץ על ידי ה ResponseStream שלו.
 

Afik17

New member
../images/Emo41.gif../images/Emo41.gifבילבלת אותי ל-ג-מ-ר-י../images/Emo187.gif

אבל אל תדאג, זה לא בגללך, אני בעייתי
הבנתי שיש את האובייקטים הבאים : HttpRequest WebRequest HttpResponse WebResponse אז מה אתה מביא לי עכשיו אובייקט HttpWebRequest שמשלב את השמות ?!?
זה לא אובייקט מתוך הארבעה שיש 3 שורות מעלי...
לא מבין מה הולך פה... חשבתי שהצלחתי להבין ש : HttpRequest = משמש לקרוא נתונים שנשלחו לעמוד, כמו ערכי FORM שחזרו לעמוד לאחר פוסטבק, ערכים שנשלחו לעמוד ב QueryString וכו'. HttpResponse = משמש לכתיבת ערכים לפלט לפני שהוא נשלח ללקוח. WebRequest = בקשה ייזומה לקבלת נתונים בפרוקוטול HTTP, כמו למשל להחזיק את קוד ה HTML של העמוד הראשי באתר sex4free, בתוך משתנה בתוכנית שלי, (מקביל ל XMLHttp). WebReponse = לא ברור מה התפקיד שלו
עכשיו אני בכלל מתחיל לבכות
 

gooshi

New member
שוב קצת סדר

HTTPWebRequest = WebRequest וכנ"ל אם תחליף את המילים Request ב Response לגבי HTTPRequest ואחיו HTTResponse השווים לגמרי לשמות: Request ו Response בהתאמה, אני חושב שאתה כבר מבין מה הם עושים. לגבי האחים הראשונים, נתתי לך דוגמת קוד שמראה לך איך להשתמש בהם. לא ניתן לבצע סתם קריאה לעמוד ב WebRequest ללא שימוש באובייקט קבלת התגובה מהעמוד הנקרא על ידי שימוש ב WebResponse. הם הולכים יחד! אם שצת לב, הקידומת HTTP אינה משנה הרבה, היא רק שם קבוע לתחיליות של אובייקטים מסביבת HTTP , אם תבדוק את תיקיית System.WEB.UI.HTMLControls תגלה עוד רבים כאלה: HtmlForm : Form HtmlButton : Button HtmlInputHidden : Input type=hidden לשמות נוספו HTML כדי לסווגם. מייקרוסופט מאפשרת לעיתים יתר נוחות, אם תרצה לגשת לאובייקט Request של ASP.NET תצטרך לגשת אליו כך:
HttpContext.Current.Request​
אובייקט זה הוא מסוג HTTPRequest (תוכל לראות את זה ב Intellisense) אני מקווה שאתה מבין טוב יותר עכשיו.
 

Afik17

New member
../images/Emo23.gif ושלישית אם אפשר...../images/Emo23.gif

קראתי בבלוג שלנתי את : "מה עובר ב ViewState כאשר הדף מוגדר כלא תומך ב ViewState" לפי מה שכתוב שם, ב ViewState עובר כל המידע שלא עובר באופן טבעי ע"י ה Form : "הערך או הערכים אשר נבחרו ע"י המשתמש בתחנה ישלחו כחלק מה Form" 1) כלומר, אם נניח יש לי קונטרול המציג את רשימת כל הישובים בארץ, ובמשתמש בחר ישוב מסויים, אז מה שה Form יעביר ויציג לאחר ה PostBack הוא רק את העיר שהמשתמש בחר, ואילו את כל שאר הערים, מנגנון ה ViewState ידאג להתמיד שוב לקונטרול ? 2) קראתי פה בפורום התכתבות ארוכה על הנושא, אבל עדיין לא הבנתי, אם יש לי איזה פקד בתוך Form, ואני רוצה שהוא ישמור את הערכים שהוא מחזיק, גם לאחר שיתבצע PostBack, איך אני כול לדעת אם זה יתבצע אוטומטית ע"י ה Form, או שאני צרי לדאוג ל ViewState=true ? 3) הבנתי מהמאמר בבלוג שמה שקורה בעצם הוא, ש ASP.Net לוקח את כל הפקדים שיש להם EnableViewState=true, עושה להם Serialize, ואת התוצאה שלה הוא שם בשדה נסתר (שאפשר לראות), ובעת הצגת הדף, מתבצעת הפעולה ההפוכה (De-Serialize) - לטובת הצגת הערכים. השאלה היא, מה זה בדיוק ה Serialize הזה ? (בלי MSDN !
), זה בעצם לוקח ערכים, ומקודד אותם (לא לצורך אבטחה, אלא צימצום בנפח מקום) ?
 

gooshi

New member
למיטב הבנתי את הנושא

ולמרות שאני מתנצל מראש שלא יצא לי לקרוא את המאמר מהבלוג של נתי, 1.כן, אם אין VuewState יעבור רק בערך הנבחר. 2.כן, אם אתה אוצה את כל הערכים תקבע ViewState=True 3.כן, הוא מבצע המרה לטקסט מקודד ומכווץ אשר הוא יודע להמירו (Deserialize) בשרת חזרה לאובייקטים מובנים. לא רע, תמלא טוטו...
 

Afik17

New member
זה מהלוטו... ../images/Emo13.gif

תודה רבה על התגובות הרבות ! 1. "יעבור רק הערך הנבחר" בתנאי שהפקד מאוכלס בצד השרת, או יש לי רשימת ערכים שמוגדרת עם ערכיה בתוך ה aspx, אז זה יופיע שוב לאחר ה PostBack גם ללא ViewState, נכון ? 1.1. אם אכן יש לי ListBox כזה, שמאוכלס בנתונים בצד שרת, ויש לו EnaleViewState=false, אז לאחר PostBack, המשמש יפתח את רשימת הערכים, ולא יראה כלום פרט לערך שהוא בחר קודם ? זה באמת מה שיקרה ? (מצחיק משהו
) 2. לא זו היתה השאלה
השאלה היתה : איך אני יכול לדעת מראש לאילו ערכים אני חייב לקבוע EnableViewState=true ? יש כאלה שהערכים עוברים גם ע"י המנגנון של ה Form. איך אני יכול לדעת מה עובר אוטומטית, ומה חייב EnableViewState=true ע"מ לעבור ? 3. כלומר המטרה האמיתית והיחידה של Serialize היא העברה/שמירת מידע תוך צימצום נפח המידע ? תודה רבה שוב
אגב, מילאתי לוטו
 
למעלה