ورود

View Full Version : در مورد کارایی



rahami
شنبه 09 مهر 1384, 08:47 صبح
سلام
یک سوال از دوستان با تجربه
در یک برنامه ASP.NET از یک دیتا گرید استفاده شده که در هر رکورد آن فیلدهای مختلفی قرار گرفته که هر رکورد چیزی در حدود 1000 بایت حجم دارد.
با توجه به این که در هر بار استخراج این دیتاگرید از بانک حدود 50 رکورد یا بیشتر استخراج می گردد آیا این امر از نظر کارایی روی سرور تاثیر منفی ندارد؟
این سوال از بابت این است که می خواهم بدانم با توجه به اینکه استفاده از دیتاست بار بیشتری نسبت به دیتا ریدر دارد ما تا چه جد مجاز به این کار هستیم؟
همین سوال در مورد استفاده از Session ها نیز هست.یعنی ما تا چه جد می توانیم از این مورد استفاده کنیم؟
متشکرم
------------------------------------------------

Behrouz_Rad
شنبه 09 مهر 1384, 12:09 عصر
یک نکته ی کلی:
باری که در زمان استخراج رکوردها به سرور متحمل میشه، به طور مستقیم به نحوه ی کدنویسی شما بستگی داره.
به عبارت دیگر، شی ای که شما به منظور استخراج داده ها از آن استفاده می کنید، بار تحمیلی به سرور را مشخص می کند.
اکیدا توصیه می کنم، حتما و حتما برای بازیابی اطلاعات از DataReader استفاده کنید.
سرعتDataReader سی برابر بیش از DataSet است و این سرعت بالا به دلیل نوع مکانیزم خواندن اطلاعات از Database ایجاد می شود.
DataReader در هر زمان تنها یک رکورد را در حافظه نگهداری می کند و پس از استخراج رکورد، آن را بلافاصله از حافظه خارج و رکورد بعدی را در حافظه بارگذاری می کند.
DataSet تمامی رکوردها را یکجا در حافظه بارگذاری می کند که تبعات آن مشخص است.
از DataSet تنها در 2 حالت استفاده کنید:
1) در Desktop Application ها:
در این صورت، DataSet ایجاد شده، در حافظه Client قرار خواهد گرفت و مشکلی از لحاظ کارایی برنامه ایجاد نخواهد شد.
2) در ارتباطات Remote:
به عنوان مثال اگر قصد بازیابی اطلاعات دیتابیس از طریق یک Web Service را دارید.

در مورد Session ها:
استفاده از Session ها مستلزم این هست که شما ابتدا به سوالت زیر پاسخ دهید:
1) میزان اطلاعاتی که قصد نگهداری آنها را دارید به چه میزان است؟
2) آیا مرورگر کاربر، کوکی ها را می پذیرد؟
3) قصد ذخیره سازی اطلاعات در سمت سرور یا سمت کلاینت را دارید؟
4) این اطلاعات تا چه حد مهم هستند؟
گزینه هایی که در سمت سرور برای نگهداری اطلاعات دارید شامل Application State، Session State و Database هستند.
گزینه هایی که در سمت کلاینت برای نگهداری اطلاعات دارید شامل ViewState ،Hidden Fields، Cookies و Query Strings هستند.
هر کدام از گزینه های فوق دارای مزایا و معایبی هستند که از حوصله این تاپیک خارج است.
تنها نکته ی مهم و مبرهن این است که ذخیره داده های با حجم زیاد در سمت سرور، مستلزم صرف وقت و انرژی بیشتری از جانب سرور برای مدیریت آنهاست.
موفق باشید.

rahami
شنبه 09 مهر 1384, 13:04 عصر
جناب راد ، با سلام
بخاطر توضیحات کامل و دقیق شما متشکرم
با این وصف فکر می کنم که باید از DataReader به همراه قابلیت صفحه بندی استفاده کنم.
فقط یک سوال در مورد Session ها
من برای هر کاربر از یک یا حداکثر 2 متغیر Session برای نگهداری یک رشته چند کاراکتری استفاده می کنم که می توانم آن را به int نیز تبدیل کنم. آیا به نظر شما این مقدار که خیلی مشکل ساز نیست؟ هست؟!
تا یادم نرفته بگم که من به صورت زیر کار می کنم:
مثلا: Session["ID"]=12
این همان استفاده از SessionState است یا خیر؟
متشکرم

Behrouz_Rad
شنبه 09 مهر 1384, 22:07 عصر
به هر حال، Session انتخاب محبوب اکثر برنامه نویسان و مخصوصا کسانی است که از ASP کلاسیک به ASP.NET روی آورده اند.
خیلی سخته که بشه کسی رو به چیز جدیدی عادت داد. مثل اکثر پدران و مادران ما که کامپیوتر و موبایل رو جز دوره ی آخر زمونه به حساب می آورند!
تحقیق در مورد مزایا، معایب و زمان صحیح استفاده از هر یک از گزینه هایی که بدانها اشاره کردم، مستلزم مطالعه و تجربه ی کاری برنامه نویس است.
فعلا از Session استفاده کنید.
دستور Session["ID"]=12 نیز همان SessionState است.
موفق باشید.

rahami
یک شنبه 10 مهر 1384, 11:10 صبح
از راهنمایی های شما خیلی ممنونم