PDA

View Full Version : استفاده نکردن از دیتابیس



NIMA_1981
پنج شنبه 27 مرداد 1390, 10:33 صبح
سلام دوستان

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

ASPX
پنج شنبه 27 مرداد 1390, 12:10 عصر
شی دیتا تیبل رو ایجاد کن و هر لحظه میتونی به راحتی به اون ستون و ردیف اضافه کنی در انتها هم اون رو به دیتا بیس اضافه کنی .

Saman Hashemi
پنج شنبه 27 مرداد 1390, 12:31 عصر
شی دیتا تیبل رو ایجاد کن و هر لحظه میتونی به راحتی به اون ستون و ردیف اضافه کنی در انتها هم اون رو به دیتا بیس اضافه کنی .
با یه postback اطلاعات از بین میره...!

من یک صفحه دارم که یک سری اطلاعات ار کاربر پرسیده میشه - میخوام این اطلاعات را بصورت موقتی داشته باشم تا گزارشم ساخته بشه یعنی تا بسته شدن مرورگز یا پایان عملیات به جای دیتابیس از چی می تونم استفاده کنم
اطلاعات مهمی یا نه؟
(پیشاپیش XML گزینه خوبیه...!)

ramin149
پنج شنبه 27 مرداد 1390, 13:09 عصر
آیا xml روی می شه در صفحه دیگر هم استفاده گرد ؟؟؟
یعنی من در یک صفحه اطلاعات را در xml ذخیره کنم و در دو page صفحه بعد از آن اطلاعات استفاده کنم ؟؟؟
یا اینکه QueryString بهتر است ؟؟؟

Saman Hashemi
پنج شنبه 27 مرداد 1390, 13:18 عصر
بله براحتی میتونی xml ایجاد کنی در تمام فسمت های برنامه استفاده کنی و در آخرم پاکش کنی...!
اگر نام یکی نباشه باید ارسال کنی که صفحه بدونه کدوم فایل xml بخونه...!
اما بهتر اونه که یه فایل با نام مشخص استفاده کنی...!

NIMA_1981
پنج شنبه 27 مرداد 1390, 15:53 عصر
دوشا عزیز میشه یک مثال ساده قرار بدید که نحوه کار به جه شکل است

با تشکر

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

NIMA_1981
شنبه 29 مرداد 1390, 00:46 صبح
میشه یک لینک یا منبع برای این معرفی کنید

d_derakhshani
دوشنبه 31 مرداد 1390, 01:04 صبح
مهم نیست از datatable یا xml استفاده کنی مهم اینه که ساختار داده ایت رو تعیین کنی و در شی session قرار بدی که در بین صفحات مشترک باشه و تا زمانی که کار کاربر با سایت تمام نشده باقی بمونه.
نکاتی در مورد ساختار دادهای:
اگه داده هات پویاست یعنی فیلدهای تون تغییر می کنه(فیلدها نه داده ها. فیلدها معادل ستون در DataTable) از خود DataTable استفاده کنی بهتره. کار با xml زحمت بیشتری داره.
اگر فیلدها پویا نیست یک کلاس بساز(و یا لیستی از اون کلاس) و در session ذخیره کن. اگر فیلدها پویا نیست کار اصولی نیست که از xml و DataTable استفاده کنی. چون سربار زیادی به برنامه ات اضافه می کنه و سرعت برنامه کند تر خواهد شد.

Saman Hashemi
دوشنبه 31 مرداد 1390, 02:16 صبح
مهم نیست از datatable یا xml استفاده کنی مهم اینه که ساختار داده ایت رو تعیین کنی و در شی session قرار بدی که در بین صفحات مشترک باشه و تا زمانی که کار کاربر با سایت تمام نشده باقی بمونه.
نکاتی در مورد ساختار دادهای:
اگه داده هات پویاست یعنی فیلدهای تون تغییر می کنه(فیلدها نه داده ها. فیلدها معادل ستون در DataTable) از خود DataTable استفاده کنی بهتره. کار با xml زحمت بیشتری داره.
اگر فیلدها پویا نیست یک کلاس بساز(و یا لیستی از اون کلاس) و در session ذخیره کن. اگر فیلدها پویا نیست کار اصولی نیست که از xml و DataTable استفاده کنی. چون سربار زیادی به برنامه ات اضافه می کنه و سرعت برنامه کند تر خواهد شد.
اگه ما 100 کاربر در سایت داشته باشیم که هر کدام 100 رکورد انتخاب کنند استفاده از session سرور از کار میندازه...!
قرار دادن ساختارهای پیچیده مثل Datatable حجم session زیاد میکنه و اصلا توصیه نمیشه...!
خوندن و نوشتن xml سرعتش از کار بانک بیشتره و فکر نکنم باعث فشار زیاد به برنامه بشه البته به شرطی که ساختار پیچیده ه ای نداشته باشد...!

mohsen.nsb44
دوشنبه 31 مرداد 1390, 10:30 صبح
دوست عزیز از profile میتونی استفاده بکنی تویه مطلبی خوندم که حتی اگه اتصال کاربر از اینترنت قطع بشه اطلاعات اون از بین نمیره و بعد از اتصال مجدد میتونه ادامه بده
البته صحت این مطلبو دوستان میتونن تایید یا تکذیب بکنن.
در ضمن اگه با پروفایل کار نکردی بگو تا برات یه مثال بزارم

ramin149
دوشنبه 31 مرداد 1390, 16:36 عصر
لطفا یک مثال از پروفایل بگذارید .

mohsen.nsb44
دوشنبه 31 مرداد 1390, 18:41 عصر
لطفا یک مثال از پروفایل بگذارید .
شما باید کد زیر رو در وب کانفیگ بنویسید

<profile enabled="true">

<properties>
<add name="fname"/>
<add name="lname"/>
</properties>
</profile>
بعد تویه صفحه که میخوای اطلاعات کاربر رو بگیری مینویسی

profile.fname=textbox1.text;
profile.lname=textbox2.text;

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

textbox1.tex=profile.fname;
textbox2.tex=profile.lname;

d_derakhshani
دوشنبه 31 مرداد 1390, 20:24 عصر
اگه ما 100 کاربر در سایت داشته باشیم که هر کدام 100 رکورد انتخاب کنند استفاده از session سرور از کار میندازه...!
قرار دادن ساختارهای پیچیده مثل Datatable حجم session زیاد میکنه و اصلا توصیه نمیشه...!
خوندن و نوشتن xml سرعتش از کار بانک بیشتره و فکر نکنم باعث فشار زیاد به برنامه بشه البته به شرطی که ساختار پیچیده ه ای نداشته باشد...!
استفاده از DataTable ارتباطی به session نداره، برای اینکه مقادیر در postBack از بین نره دو راه هست، استفاده از session و viewstate، viewstate با هر postback در صفحه رفت و برگشت می کنه و بار زیادی به صفحه وارد می کنه. از اونجا که ایشون می خوان یک کار موقتی انجام بدن و بعد شی آزاد شه session بار زیادی به سرور وارد نمی کنه(که احتمالا در مورد ایشون صفحه خاصی است که همه کاربران دائما به آن دسترسی ندارند و همه session نمی سازند)
مورد بدی اینکه استفاده از dataTable به معنی استفاده از پایگاه داده نیست. مورد سوم پیشنهاد بنده تعریف کلاس خاص واستفاده از لیستی از آن است.
مورد چهارم پردازش xml هم بار محاسباتی زیادی به سرور وارد می کنه و حجم کمی نداره. dataTable حجم زیادی داره و بار پردازشی کم.
دوست عزیز اگر ستونهای شما پویا می باشد: از مورد زیر استفاده کن که بی شک کمترین بار را برای شما خواهد داشت(طرز استفاده با شما):


public class Column
{
public string Name { get; set; }
public string Caption { get; set; }
public Column() { }
public Column(string name)
{
this.Name = name;
this.Caption = name;
}
public Column(string name,string caption)
{
this.Name = name;
this.Caption = caption;
}
}
public class ColumnCollection : List<Column>
{
}

public class CellCollection : List<object>
{
}

public class Row
{
private CellCollection _cells;
public Row()
{
_cells = new CellCollection();
}
public CellCollection Cells { get { return _cells; } }
}
public class RowCollection : List<Row>
{
private static ColumnCollection _columns;
internal RowCollection(ColumnCollection columns)
{
_columns = columns;
}

public Row this[string columnName]
{
get
{
return this[_columns.FindIndex(x => x.Name == columnName)];
}
set
{
this[_columns.FindIndex(x => x.Name == columnName)]=value;
}
}

}
public class MyTable
{
private RowCollection _rows;
private ColumnCollection _columns;

public MyTable()
{
_columns = new ColumnCollection();
_rows = new RowCollection(_columns);
}
public ColumnCollection Columns { get { return _columns; } }
public RowCollection Rows { get { return _rows; } }
}

اگر کسی راه حل بهتری، بهتر از کد بالا در مورد ساختار داده ای داره مطرح کنه. تا در موردش بحث کنیم

d_derakhshani
دوشنبه 31 مرداد 1390, 20:29 عصر
دوست عزیز از profile میتونی استفاده بکنی تویه مطلبی خوندم که حتی اگه اتصال کاربر از اینترنت قطع بشه اطلاعات اون از بین نمیره و بعد از اتصال مجدد میتونه ادامه بده
البته صحت این مطلبو دوستان میتونن تایید یا تکذیب بکنن.
در ضمن اگه با پروفایل کار نکردی بگو تا برات یه مثال بزارم
در مورد خاص شما، استفاده از پروفایل اصلا توصیه نمی شه چون به طور پیش فرض profile از پایگاه داده پیش فرض ASP.Net به نام aspnetdb استفاده می کنه(به خاطر همینم هست که مقادیرش از بین نمیره) و شما هم نمی خواستید از پایگاه داده استفاده کنید. استفاده از profile به راحتی استفاده از session، viewstate و ... هست اما کندترین محسوب می شه. پس برای مورد شما اصلا این راه توصیه نمی شه.(مگر اینکه بخواهید یک Provider خاص خودتون رو بری profile بنویسید که در این صورت دارید به بی راهه می رید چون راه های بهتر در دسترسه)

NIMA_1981
سه شنبه 01 شهریور 1390, 00:32 صبح
ببنید ممنو ن از راهنمایی همه شما من یک صفحه دارم که 4 تا منو داره که روی هر منو که کلید میشه میره یک user control رو لود میکنه که توی این هر صفحه یک سری اطلاعات پرسیده میشه
1- کلا ار دیتا بیس نمیخوام استفاده بشه پس از profile هم نمیشه استفاده کرد
2- تعداد کاربران که به این صفحه مراجعه میکنن زیاده
3- تعداد اظلاعاتی که در هر صفحه وارد میشه معلوم نیست ممکنه یک جا 1 رکورد داشته باشه یک صفحه دیگه 100 تا رکورد
4- وقتی از این مرحله 1 به مرحله بعدی میره و بر میگره اطلاعات پاک نشه و دوباره لود بشه و بتونن اطلاعات ویرایش کنم
5- اگر از xml استفاده بشه بار ی هر کاربر یک فایل ساخته میشه پس اولا فایل ها باید هم نام نباشند و بعد از اینکه کار به اتمام رسید چطوری این فایل ها رو پاک کنم

74229

حالا با توجه به این مشکلات کدام روش رو باید انتحاب کنم

با تشکر

NIMA_1981
چهارشنبه 02 شهریور 1390, 10:02 صبح
دوستان لطفا راهنمایی کنید :عصبانی++:

mehran_sh_t
چهارشنبه 02 شهریور 1390, 10:16 صبح
سلام
می تونید از همون XML استفاده کنید، و نام فایل XML رو برابر نام Unique کاربر قرار بدید، اینطوری به راحتی قابل دسترسی هستش و هیچگونه تداخلی هم ندارن