PDA

View Full Version : انتقلال اطلاعات بین صفحات در هنگام Redirect شدن



DotNet_King
دوشنبه 20 اسفند 1386, 22:48 عصر
سلام

برای انتقال داده از یه صفحه به صفحه دیگه وقتی که redirect میشه کدوم راه رو پیشنهاد می کنید؟
1 سیشن
2 کوکی
3 دیتابیس
4 url یعنی www.mysite.com/page.aspx?a=my value&b=sec&...

به نظر شما کدومیک از این روشها بهتره و کارایی سایت رو بالا می بره ؟ معایب هر کدومش چیه؟ آیا راه دیگری هم علاوه بر اینها وجود داره؟

Behrouz_Rad
دوشنبه 20 اسفند 1386, 23:15 عصر
هر کدومش به منظور خاصی استفاده میشه.
نمیشه یک قانون کلی رو بیان کرد.
بگو چه کاری می خوای انجام بدی تا راه حل مناسب ارائه بشه.

موفق باشید.

DotNet_King
دوشنبه 20 اسفند 1386, 23:33 عصر
سایت یه فاروم نسبتا ساده بود! سایت رو آپلود کنم و آدرسش رو اینجا می گذارم تا بهتر نظر بدین

ولی اصل سوال من از این جا شروع شد که گفته بودید موتور جستجو ها با url زیاد و زشت مشکل دارند آیا این مدل url شامل این مورد میشه یا نه
www.mysite.com/page.aspx?a=my (http://www.mysite.com/page.aspx?a=my) value&b=sec
سوال من بیشتر کلی بود! من زیاد حرفه ای نیستم که بخوام سایت بزرگی مثل بلاگفا و ... رو راه اندازی کنم! ولی بالاخره یه روزی حرفه ای میشم!!!!

Behrouz_Rad
سه شنبه 21 اسفند 1386, 00:06 صبح
اون فرمی از URL که گذاشتی شامل Query String هست و مشکلی نداره. منظور از URL زشت که در یکی از پست های من خوندی، وجود SID در URL بود که ایندکس کردن صفحات و استفاده از SiteMap رو برای موتورهای جستجو غیر فعال می کنه.

موفق باشید.

DotNet_King
سه شنبه 21 اسفند 1386, 00:19 صبح
من هم از اول همین رو می خواستم! خیلی ممنون.
فقط یه سوال دیگه ؟ شما خودتون تو این مواقع ، از کدوم روش استفاده می کنید ؟

Behrouz_Rad
سه شنبه 21 اسفند 1386, 00:23 صبح
کدوم مواقع؟

DotNet_King
سه شنبه 21 اسفند 1386, 00:37 صبح
وقتی قصد دارید از یه صفحه به صفحه دیگه ریدایرکت بشین، اطلاعات کاربری رو تو ارل ذخیره می کنید(کد شده) یا تو دیتا بیس؟ با روش سومی هم برای این کار وجود داره؟ فرض کنید تعداد مراجعات به سایت زیاد باشه.

Behrouz_Rad
سه شنبه 21 اسفند 1386, 00:51 صبح
متاسفم که همچنان نمی تونم بهت پاسخ قطعی بدم.
اگر تا 1 سال دیگه هم اینجوری سوال بپرسی باز هم میگم بستگی به شرایط داره.
صورت مسئله رو تشریح کن تا راه حل مناسب ارائه بشه.
اطلاعات کاربری شامل چی هست؟

موفق باشی.

DotNet_King
سه شنبه 21 اسفند 1386, 02:06 صبح
از تذکرتون ممنون! فکر کنم این طور مطرح کنم، بهتره!
به همراه url بعد از وارد شدن کاربر به سایتم اینها اضافه شده
نام کاربری+یه تاریخ+ایمیل آدرس+اسم آواتار+شماره صفحه+ساعت ورود که همگی کد شده

کار بالا بهتره یا اینکه

همه دیتا های بالا رو بریزم تو یه بانک و یه نام کاربری ، طرف رو با url یا سیشن به صفحه دوم منتقل کنم و بعدش باقی اطلاعات رو در هر بار لود شدن صفحه از دیتا بیس بخونم! اگه تعداد بازدیدکنندگان زیاد بشه کدوم روش معقول تره

Aidin
سه شنبه 21 اسفند 1386, 03:20 صبح
استفاده از Database روش معقول تر و بهتری هست (اصولا بانک اطلاعاتی برای همین موارد هست)

به جای این همه اطلاعات مختلف تنها ID کاربر رو در URL قرار بده و بقیه اطلاعات رو از Database بخون (در ضمن فشار کمتری هم به Application Server وارد میکنی)

Pouria.NET
سه شنبه 21 اسفند 1386, 17:01 عصر
روش دیگری هم برای انتقال اطلاعات بین فرم ها هست با نام Cross post هم هست که ازش صحبت نکردین :لبخند:

Pouria.NET
سه شنبه 21 اسفند 1386, 17:09 عصر
استفاده از Database روش معقول تر و بهتری هست (اصولا بانک اطلاعاتی برای همین موارد هست)

به جای این همه اطلاعات مختلف تنها ID کاربر رو در URL قرار بده و بقیه اطلاعات رو از Database بخون (در ضمن فشار کمتری هم به Application Server وارد میکنی)

همیشه بهتر نیست. این رو در نظر داشته باش که یکی از Resource هایی که باید یک Web Developer حواسش بهش باشه همین Open ، Read و بعد Close کردن Connection و یا بعبارت ساده استفاده از DB ست. استفاده از DB همیشه لازم نیست.
در موردی که دوستمون مطرح کردن یکی از بهترین راه حل ها نگه داشتن Id و خواندن بقیه اطلاعات از DB استفاده از Cache خواهد بود.
البته راه حل بهتر استفاده از همین QueryString ست. چون حجم داده ای که می خواهد انتقال پیدا کند کم و از نظر Security مشکل دار هم نیست.
استفاده از Session در این سناریو اصلا مناسب نیست چون باعث Waste شدن حافظه Server می شود.

Aidin
سه شنبه 21 اسفند 1386, 18:08 عصر
فراموش نکنید در این پست داریم به سوال دوستمون جواب میدیم و یک روش رو به طور کل بررسی نمیکنیم .

Vahid_moghaddam
پنج شنبه 23 اسفند 1386, 10:33 صبح
پیرو صحبت آقای بهروز راد عزیز:
انتقال اطلاعات بین صفحات، یعنی ذخیره اطلاعات در مکانی و بازیابی اونها در مکانی دیگر.
به طور کلی اطلاعات مربوط به یک صفحه، یک درخواست و یا یک کنترل در دو قسمت می تونه قرار بگیره:
1- در سمت Client
2- در سمت server

در سمت client از امکانات زیر می شه استفاده کرد:


View state
Control state
Hidden fields
Cookies
Query strings


و در سمت server:
Application state
Session state
Profile properties
Database support

حالا بنا بر نوع کاری که قراره انجام بشه، مثلا امنیت اطلاعات چقدر مهمه، یا قراره مقدار مورد نظر برای تمام درخواستها یکسان باشه و یا... از بین این روشها، یک یا چند روش رو انتخاب می کنیم.
توضیحات کامل مربوط به روشهای بالا در msdn به صورت کاملا روشن وجود داره.

با تشکر

dr_csharp
پنج شنبه 23 اسفند 1386, 11:16 صبح
در موردی که دوستمون مطرح کردن یکی از بهترین راه حل ها نگه داشتن Id و خواندن بقیه اطلاعات از DB استفاده از Cache خواهد بود.

سلام . اگه ممکنه در مورد کاربرد Cache که مطرح کردین بیشتر توضیح بدین !

hamedgh
پنج شنبه 23 اسفند 1386, 13:53 عصر
نام کاربری اش را در کوکی ذخیره کن
بقیه را هم در دیتا بیس می توانی بریزی و بخوانی
سیستم سکیورتی خود ای اس پی دات نت از همین روش استفاده می کنه

در مورد کوری استرینگ هم معمولا اطلاعات مربوط به همان صفحه ریخته میشود
می توانی همین فروم را نگاه کنی ببنیی چطوری از کوری استرینگ استفاده می کند

زیاد هم نگران موتور های جستجو نباش هر کاری دلش می خواهد بکند شما سایت
را هر جوری دلت می خواهد بنویس سایت تجاری که نیست که مهم باشد رتبه شما
در دیتا بیس سایتش

به هر حال این مقاله هم بد نیست بخوانی

http://www.srco.ir/Articles/DocView.asp?ID=548

DotNet_King
جمعه 24 اسفند 1386, 19:57 عصر
روش دیگری هم برای انتقال اطلاعات بین فرم ها هست با نام Cross post هم هست که ازش صحبت نکردین :لبخند:

اگه یه کم در باره روش و کاراییش ، بیشتر توضیح بدید. خیلی ممنون میشم

پیرو صحبت آقای بهروز راد عزیز:
انتقال اطلاعات بین صفحات، یعنی ذخیره اطلاعات در مکانی و بازیابی اونها در مکانی دیگر.
به طور کلی اطلاعات مربوط به یک صفحه، یک درخواست و یا یک کنترل در دو قسمت می تونه قرار بگیره:
1- در سمت Client
2- در سمت server

در سمت client از امکانات زیر می شه استفاده کرد:


View state
Control state
Hidden fields
Cookies
Query strings


و در سمت server:
Application state
Session state
Profile properties
Database support



دوست عزیز
من با روش هایی که ارائه دادید، تا اندازه ی کمی آشنایی دارم! سوال من در مورد کارایی هر روش و معایب احتمالی هر کدوم اونها ست در هنگام ریدایرکت شدن و در مواقعی که مراجعات به سایت به بی نهایت میل بکنه!!:لبخند:!! لطفا در این زمینه توضیح بدید؟

نام کاربری اش را در کوکی ذخیره کن
بقیه را هم در دیتا بیس می توانی بریزی و بخوانی
سیستم سکیورتی خود ای اس پی دات نت از همین روش استفاده می کنه

در مورد کوری استرینگ هم معمولا اطلاعات مربوط به همان صفحه ریخته میشود
می توانی همین فروم را نگاه کنی ببنیی چطوری از کوری استرینگ استفاده می کند

زیاد هم نگران موتور های جستجو نباش هر کاری دلش می خواهد بکند شما سایت
را هر جوری دلت می خواهد بنویس سایت تجاری که نیست که مهم باشد رتبه شما
در دیتا بیس سایتش

به هر حال این مقاله هم بد نیست بخوانی

http://www.srco.ir/Articles/DocView.asp?ID=548

به شما پیشنهاد می کنم از کوکی زیاد استفاده نکنید! چون فایروال ها برای کوکی ها محدودیت ایجاد می کنند! مثلا کاربران شما از کافی نت ها نمی تونند وارد سایتتون بشن!

ممنون میشم اگه دوستان ، تجربه هایی که در این زمینه دارند رو اینجا ارائه بدند

hamedgh
شنبه 25 اسفند 1386, 09:06 صبح
شما پیشنهاد می کنم از کوکی زیاد استفاده نکنید! چون فایروال ها برای کوکی ها محدودیت ایجاد می کنند! مثلا کاربران شما از کافی نت ها نمی تونند وارد سایتتون بشن!سیستم سکوریتی ASp.net از روش کوکی استفاده می کنه ولی کاملا محتاطانه
اول چک می کند که کوکی را ساپروت می کند بعد ان را در کوکی ذخیره می کند
اگر که نشد در url ذخیره می کنه که مشکلی پیش نیاید

بالاخره یک ای دی را سمت کلاینت باید داشته باشی
چه در کوکی چه در صفحه و چه در url و با گرفتن ان ای دی اطلاعاتش را از دیتا بیس
بخوانی
در سیشن هم بریزی ان هم باید حداقل یک ای دی سمت کلاینت داشته باشد
دیگر نیازی به بحث کردن نیست